dmFyIGxhbmdEaXIgPSAibGFuZ3MiDQp2YXIgZGVmYXVsdExhbmd1YWdlIHN0cmluZw0KdmFyIGxhbmdzIG1hcFtzdHJpbmddaTE4bi5UcmFuc2xhdGVGdW5jDQoNCmZ1bmMgSW5pdCgpIHsNCglpZiBsYW5ncyA9PSBuaWwgew0KCQlsYW5ncyA9IG1ha2UobWFwW3N0cmluZ11pMThuLlRyYW5zbGF0ZUZ1bmMpDQoJfQ0KDQoJZGlyTGlzdCwgXyA6PSBpb3V0aWwuUmVhZERpcihmbXQuU3ByaW50ZigiJXMlcyIsIGVudi5HZXRQYXRoKCksIGxhbmdEaXIpKQ0KCWRlZmF1bHRMYW5ndWFnZSA9IGNvbmZpZy5HZXREZWZhdWx0TGFuZ3VhZ2UoKQ0KCWhhc0RlZmF1bHRMYW5ndWFnZSA6PSBmYWxzZQ0KDQoJZm9yIF8sIGRpciA6PSByYW5nZSBkaXJMaXN0IHsNCgkJbGFuZyA6PSBkaXIuTmFtZSgpDQoJCWZpbGVzLCBfIDo9IGlvdXRpbC5SZWFkRGlyKGZtdC5TcHJpbnRmKCIlcyVzLyVzIiwgZW52LkdldFBhdGgoKSwgbGFuZ0RpciwgbGFuZykpDQoNCgkJaWYgbGFuZyA9PSBkZWZhdWx0TGFuZ3VhZ2Ugew0KCQkJaGFzRGVmYXVsdExhbmd1YWdlID0gdHJ1ZQ0KCQl9DQoNCgkJZm9yIF8sIGZpbGUgOj0gcmFuZ2UgZmlsZXMgew0KCQkJZmlsZU5hbWUgOj0gZmlsZS5OYW1lKCkNCgkJCWVyciA6PSBpMThuLkxvYWRUcmFuc2xhdGlvbkZpbGUoZm10LlNwcmludGYoIiVzJXMvJXMvJXMiLCBlbnYuR2V0UGF0aCgpLCBsYW5nRGlyLCBsYW5nLCBmaWxlTmFtZSkpDQoNCgkJCWlmIGVyciAhPSBuaWwgew0KCQkJCXBhbmljKGZtdC5TcHJpbnRmKCJFcnJvciBsb2FkaW5nIGxhbmd1YWdlIGZpbGUgLT4gJXMvJXM6ICVzIiwgbGFuZywgZmlsZU5hbWUsIGVycikpDQoJCQl9DQoNCgkJCWxvZy5JbmZvLlByaW50bG4oIkxvYWRlZCB0cmFuc2xhdGlvbiBmaWxlIiwgIi0+IiwgZmlsZU5hbWUpDQoJCX0NCg0KCQl2YXIgZXJyIGVycm9yDQoJCWxhbmdzW2xhbmddLCBlcnIgPSBpMThuLlRmdW5jKGxhbmcpDQoNCgkJaWYgZXJyICE9IG5pbCB7DQoJCQlwYW5pYyhmbXQuU3ByaW50ZigiRXJyb3IgcGFyc2luZyBsYW5ndWFnZSAtPiAlczogJXMiLCBsYW5nLCBlcnIpKQ0KCQl9DQoNCgkJbG9nLkluZm8uUHJpbnRsbigiRmluaXNoZWQgbG9hZGluZyBsYW5ndWFnZSIsICItPiIsIGxhbmcpDQoJfQ0KDQoJaWYgIWhhc0RlZmF1bHRMYW5ndWFnZSB7DQoJCXBhbmljKGZtdC5TcHJpbnRmKCJUaGVyZSBpcyBubyB0cmFuc2xhdGlvbiBmb3IgJXMiLCBkZWZhdWx0TGFuZ3VhZ2UpKQ0KCX0NCn0NCg0KZnVuYyBHZXRVc2VyTGFuZ3VhZ2UociAqaHR0cC5SZXF1ZXN0KSBzdHJpbmcgew0KCXJldCA6PSBjb25maWcuR2V0RGVmYXVsdExhbmd1YWdlKCkNCgl1c2VyTGFuZ3MsIF8sIF8gOj0gbGFuZ3VhZ2UuUGFyc2VBY2NlcHRMYW5ndWFnZShyLkhlYWRlci5HZXQoIkFjY2VwdC1MYW5ndWFnZSIpKQ0KDQoJZm9yIF8sIHVzZXJMYW5nIDo9IHJhbmdlIHVzZXJMYW5ncyB7DQoJCXVzZXJMYW5nU3RyIDo9IHN0cmluZ3MuUmVwbGFjZSh1c2VyTGFuZy5TdHJpbmcoKSwgIi0iLCAiXyIsIC0xKQ0KCQl1c2VyTGFuZ1NwbGl0dGVkIDo9IHN0cmluZ3MuU3BsaXQodXNlckxhbmdTdHIsICJfIikNCg0KCQlpZiBMYW5nRXhpc3RzKHVzZXJMYW5nU3RyKSB7DQoJCQlyZXQgPSB1c2VyTGFuZ1N0cg0KCQkJYnJlYWsNCgkJfSBlbHNlIGlmIGxlbih1c2VyTGFuZ1NwbGl0dGVkKSA+IDEgew0KCQkJaWYgTGFuZ0V4aXN0cyh1c2VyTGFuZ1NwbGl0dGVkWzBdKSB7DQoJCQkJcmV0ID0gdXNlckxhbmdTcGxpdHRlZFswXQ0KCQkJCWJyZWFrDQoJCQl9DQoJCX0NCgl9DQoJcmV0dXJuIHJldA0KfQ0KDQpmdW5jIExhbmdFeGlzdHMobGFuZyBzdHJpbmcpIGJvb2wgew0KCV8sIG9rIDo9IGxhbmdzW2xhbmddDQoJcmV0dXJuIG9rDQp9DQoNCmZ1bmMgR2V0QWxsKCkgW11zdHJpbmcgew0KCXZhciByZXQgW11zdHJpbmcNCglmb3IgbGFuZyA6PSByYW5nZSBsYW5ncyB7DQoJCXJldCA9IGFwcGVuZChyZXQsIGxhbmcpDQoJfQ0KCXJldHVybiByZXQNCn0NCg0KZnVuYyBHZXQobGFuZyBzdHJpbmcsIGtleSBzdHJpbmcpIHN0cmluZyB7DQoJcmV0dXJuIEdldFBsdXJhbChsYW5nLCBrZXksIDEpDQp9DQoNCmZ1bmMgR2V0UGx1cmFsKGxhbmcgc3RyaW5nLCBrZXkgc3RyaW5nLCBhbW91bnQgaW50KSBzdHJpbmcgew0KCXJldCA6PSBrZXkNCg0KCWlmIExhbmdFeGlzdHMobGFuZykgew0KCQlyZXQgPSBsYW5nc1tsYW5nXShrZXksIGFtb3VudCkNCg0KCQlpZiByZXQgPT0ga2V5ICYmIGxhbmcgIT0gZGVmYXVsdExhbmd1YWdlIHsNCgkJCXJldCA9IEdldChkZWZhdWx0TGFuZ3VhZ2UsIGtleSkNCgkJfQ0KCX0NCglyZXR1cm4gcmV0DQp9
Hello, I'm
Philipp König
a software developer based in Stuttgart, Germany.I have created two browser extensions for Google Chrome and Microsoft Edge to improve the user experience by providing some new features within the browser.
I always disliked how bookmarks are managed in these browsers, especially when dealing with many entries and folders.
To circumvent this problem I created a browser extension which displays the bookmarks as a nested list in a togglable and highly user-configurable sidebar.
Currently over 450000 people are benefiting from using my extensions.
Read moreI uploaded some of my projects to Github. Feel free to check them out and contribute by sending feedback, suggestions, or report issues.
Show profile