@plait/mind 0.2.0-next.4 → 0.2.0-next.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/node.component.mjs +2 -2
- package/esm2020/plugins/emoji/emoji-base.component.mjs +13 -3
- package/esm2020/plugins/emoji/emoji.drawer.mjs +4 -7
- package/esm2020/plugins/emoji/emoji.mjs +4 -4
- package/esm2020/plugins/with-abstract.mjs +2 -1
- package/esm2020/plugins/with-dnd.mjs +4 -4
- package/esm2020/utils/draw-placeholder.mjs +5 -4
- package/esm2020/utils/node-style/node.mjs +2 -2
- package/fesm2015/plait-mind.mjs +27 -18
- package/fesm2015/plait-mind.mjs.map +1 -1
- package/fesm2020/plait-mind.mjs +27 -18
- package/fesm2020/plait-mind.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/emoji/emoji-base.component.d.ts +7 -4
- package/plugins/emoji/emoji.d.ts +1 -1
- package/plugins/emoji/emoji.drawer.d.ts +2 -2
- package/styles/styles.scss +6 -0
- package/utils/node-style/node.d.ts +1 -1
|
@@ -59,10 +59,10 @@ export class MindNodeComponent extends PlaitPluginElementComponent {
|
|
|
59
59
|
this.drawShape();
|
|
60
60
|
this.drawLink();
|
|
61
61
|
this.drawRichtext();
|
|
62
|
-
this.drawEmojis();
|
|
63
62
|
this.drawActiveG();
|
|
64
63
|
this.updateActiveClass();
|
|
65
64
|
this.drawMaskG();
|
|
65
|
+
this.drawEmojis();
|
|
66
66
|
this.drawExtend();
|
|
67
67
|
this.drawQuickInsert();
|
|
68
68
|
}
|
|
@@ -564,4 +564,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
564
564
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
565
565
|
}]
|
|
566
566
|
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }]; } });
|
|
567
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFNWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osYUFBYSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxFQUVkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUEwQix3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdC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VztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0Fob0JRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhFQVhoQjs7Ozs7Ozs7S0FRVDsyRkFHUSxpQkFBaUI7a0JBYjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztLQVFUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGNyZWF0ZUcsXG4gICAgY3JlYXRlVGV4dCxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZHJhd1JvdW5kUmVjdGFuZ2xlLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgTk9ERV9UT19JTkRFWCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBpc0JvdHRvbUxheW91dCxcbiAgICBpc0hvcml6b250YWxMYXlvdXQsXG4gICAgaXNJbmRlbnRlZExheW91dCxcbiAgICBpc0xlZnRMYXlvdXQsXG4gICAgQWJzdHJhY3ROb2RlLFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNUb3BMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaGFzRWRpdGFibGVUYXJnZXQsIFBsYWl0UmljaHRleHRDb21wb25lbnQsIHNldEZ1bGxTZWxlY3Rpb25BbmRGb2N1cywgdXBkYXRlUmljaFRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRVhURU5EX09GRlNFVCwgRVhURU5EX1JBRElVUywgTWluZE5vZGVTaGFwZSwgTk9ERV9NSU5fV0lEVEgsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuL2RyYXcvaW5kZW50ZWQtbGluayc7XG5pbXBvcnQgeyBkcmF3TG9naWNMaW5rIH0gZnJvbSAnLi9kcmF3L2xpbmsvbG9naWMtbGluayc7XG5pbXBvcnQgeyBkcmF3TWluZE5vZGVSaWNodGV4dCwgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUgfSBmcm9tICcuL2RyYXcvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd1JlY3RhbmdsZU5vZGUgfSBmcm9tICcuL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRyZW5Db3VudCB9IGZyb20gJy4vdXRpbHMvbWluZCc7XG5pbXBvcnQgeyBnZXROb2RlU2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL3NoYXBlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fTk9ERSB9IGZyb20gJy4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0Q29udGVudFNpemUgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vZHJhdy9saW5rL2Fic3RyYWN0LWxpbmsnO1xuaW1wb3J0IHsgRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL2Vtb2ppLmRyYXdlcic7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuL2RyYXcvYWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBRdWlja0luc2VydERyYXdlciB9IGZyb20gJy4vZHJhd2VyL3F1aWNrLWluc2VydC5kcmF3ZXInO1xuaW1wb3J0IHsgaGFzQWZ0ZXJEcmF3IH0gZnJvbSAnLi9kcmF3ZXIvYmFzZS9iYXNlJztcbmltcG9ydCB7IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LW1pbmQtbm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuXG4gICAgICAgICAgICAqbmdJZj1cIiFlbGVtZW50LmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtib2FyZF09XCJib2FyZFwiXG4gICAgICAgICAgICBbcGFyZW50XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2VmZmVjdF09XCJlZmZlY3RcIlxuICAgICAgICAgICAgW3BhcmVudEddPVwicGFyZW50R1wiXG4gICAgICAgID48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQ8VCBleHRlbmRzIE1pbmRFbGVtZW50ID0gTWluZEVsZW1lbnQ+IGV4dGVuZHMgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PFQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25Db250ZXh0Q2hhbmdlZDxUPiB7XG4gICAgaXNFZGl0YWJsZSA9IGZhbHNlO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIG5vZGUhOiBNaW5kTm9kZTtcblxuICAgIHBhcmVudCE6IE1pbmROb2RlO1xuXG4gICAgaW5kZXghOiBudW1iZXI7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkT3V0bGluZUc/OiBTVkdHRWxlbWVudDtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIGFjdGl2ZUc6IFNWR0dFbGVtZW50W10gPSBbXTtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dEc/OiBTVkdHRWxlbWVudDtcblxuICAgIGZvcmVpZ25PYmplY3Q/OiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDtcblxuICAgIGV4dGVuZEc/OiBTVkdHRWxlbWVudDtcblxuICAgIG1hc2tHITogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dENvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxQbGFpdFJpY2h0ZXh0Q29tcG9uZW50PjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGVtb2ppc0RyYXdlciE6IEVtb2ppc0RyYXdlcjtcblxuICAgIHF1aWNrSW5zZXJ0RHJhd2VyITogUXVpY2tJbnNlcnREcmF3ZXI7XG5cbiAgICBwdWJsaWMgZ2V0IGhhbmRBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLnBvaW50ZXIgPT09IFBsYWl0UG9pbnRlclR5cGUuaGFuZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcjI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtb2ppc0RyYXdlciA9IG5ldyBFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCBhcyBQbGFpdE1pbmRFbW9qaUJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyID0gbmV3IFF1aWNrSW5zZXJ0RHJhd2VyKHRoaXMuYm9hcmQpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5vZGUgPSBFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgYXMgTWluZE5vZGU7XG4gICAgICAgIGlmICghUGxhaXRNaW5kLmlzTWluZCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IE1pbmRFbGVtZW50LmdldE5vZGUoTWluZEVsZW1lbnQuZ2V0UGFyZW50KHRoaXMuZWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgdGhpcy5kcmF3UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVDbGFzcygpO1xuICAgICAgICB0aGlzLmRyYXdNYXNrRygpO1xuICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgdGhpcy5kcmF3UXVpY2tJbnNlcnQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFQ+LCBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxUPikge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0gRUxFTUVOVF9UT19OT0RFLmdldCh0aGlzLmVsZW1lbnQpIGFzIE1pbmROb2RlO1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBNaW5kRWxlbWVudC5nZXROb2RlKE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc29sdmUgbW92ZSBub2RlIHJpY2h0ZXh0IGxvc2UgaXNzdWVcbiAgICAgICAgaWYgKHRoaXMubm9kZSAhPT0gbmV3Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yZWlnbk9iamVjdCAmJiB0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3Q/LmFwcGVuZENoaWxkKHRoaXMucmljaHRleHRDb21wb25lbnRSZWY/Lmluc3RhbmNlLmVkaXRhYmxlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRXF1YWxzID0gTWluZE5vZGUuaXNFcXVhbHModGhpcy5ub2RlLCBuZXdOb2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbmV3Tm9kZTtcbiAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUNsYXNzKCk7XG4gICAgICAgIGlmICghaXNFcXVhbHMpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdNYXNrRygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdRdWlja0luc2VydCgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RW1vamlzKCkge1xuICAgICAgICBjb25zdCBnID0gdGhpcy5lbW9qaXNEcmF3ZXIuZHJhd0Vtb2ppcyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdRdWlja0luc2VydCgpIHtcbiAgICAgICAgdGhpcy5xdWlja0luc2VydERyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyLmNhbkRyYXcodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGhhc0FmdGVyRHJhdyh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuYWZ0ZXJEcmF3KHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEc/LmFwcGVuZENoaWxkKGcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1NoYXBlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTaGFwZSgpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGdldE5vZGVTaGFwZUJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTm9kZVNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIE1pbmROb2RlU2hhcGUucm91bmRSZWN0YW5nbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBkcmF3UmVjdGFuZ2xlTm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZy5wcmVwZW5kKHRoaXMuc2hhcGVHKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U2hhcGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNoYXBlRykge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnNoYXBlRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3TGluaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQodGhpcy5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRoaXMubm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0Fic3RyYWN0TGluayh0aGlzLmJvYXJkLCB0aGlzLm5vZGUsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHRoaXMucGFyZW50Lm9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3SW5kZW50ZWRMaW5rKHRoaXMuYm9hcmQsIHRoaXMucGFyZW50LCB0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdMb2dpY0xpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCB0aGlzLnBhcmVudCwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5saW5rRyk7XG4gICAgfVxuXG4gICAgZGVzdHJveUxpbmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd01hc2tHKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrRygpO1xuICAgICAgICBjb25zdCBsaW5lV2lkdGhPZmZzZXQgPSAyO1xuICAgICAgICBjb25zdCBleHRlbmRPZmZzZXQgPSAxNTtcbiAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgY29uc3QgaXNUb3AgPSBpc1RvcExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgaXNSaWdodCA9IGlzUmlnaHRMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzQm90dG9tID0gaXNCb3R0b21MYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzTGVmdCA9IGlzTGVmdExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcblxuICAgICAgICBsZXQgZHJhd1ggPSB4O1xuICAgICAgICBsZXQgZHJhd1kgPSB5O1xuICAgICAgICBsZXQgZHJhd1dpZHRoID0geCArIHdpZHRoO1xuICAgICAgICBsZXQgZHJhd0hlaWdodCA9IHkgKyBoZWlnaHQ7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIGlzVG9wOlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBleHRlbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc0JvdHRvbTpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaXNMZWZ0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc1JpZ2h0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgZXh0ZW5kT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFza0cgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICB0aGlzLnJvdWdoU1ZHIGFzIFJvdWdoU1ZHLFxuICAgICAgICAgICAgZHJhd1gsXG4gICAgICAgICAgICBkcmF3WSxcbiAgICAgICAgICAgIGRyYXdXaWR0aCxcbiAgICAgICAgICAgIGRyYXdIZWlnaHQsXG4gICAgICAgICAgICB7IHN0cm9rZTogJ25vbmUnLCBmaWxsOiAncmdiYSgyNTUsMjU1LDI1NSwwKScsIGZpbGxTdHlsZTogJ3NvbGlkJyB9LFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1hc2tHLmNsYXNzTGlzdC5hZGQoJ21hc2snKTtcbiAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMubWFza0cpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMubWFza0csICdtb3VzZWVudGVyJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpICYmICF0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQgJiYgIXRoaXMuaGFuZEFjdGl2ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5tYXNrRywgJ21vdXNlbGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCkgJiYgIXRoaXMuZWxlbWVudC5pc0NvbGxhcHNlZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc3Ryb3lNYXNrRygpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0cpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0cucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnaG92ZXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTWFza0coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tHKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tHLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNhYmxlZE1hc2tHKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrRykge1xuICAgICAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3QWN0aXZlRygpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95QWN0aXZlRygpO1xuICAgICAgICB0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRz8ucmVtb3ZlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgeCAtIDIsXG4gICAgICAgICAgICAgICAgeSAtIDIsXG4gICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICB5ICsgaGVpZ2h0ICsgMixcbiAgICAgICAgICAgICAgICB7IHN0cm9rZTogUFJJTUFSWV9DT0xPUiwgc3Ryb2tlV2lkdGg6IDIsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIOW9seWTjSBtYXNrIOenu+WFpeenu+WHuuS6i+S7tlxuICAgICAgICAgICAgc2VsZWN0ZWRTdHJva2VHLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRy5wdXNoKHNlbGVjdGVkU3Ryb2tlRyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yaWNodGV4dENvbXBvbmVudFJlZj8uaW5zdGFuY2UucGxhaXRSZWFkb25seSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZEcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgICAgIHggLSAyLFxuICAgICAgICAgICAgICAgICAgICB5IC0gMixcbiAgICAgICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICAgICAgeSArIGhlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBmaWxsOiBQUklNQVJZX0NPTE9SLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRCYWNrZ3JvdW5kRy5zdHlsZS5vcGFjaXR5ID0gJzAuMTUnO1xuICAgICAgICAgICAgICAgIC8vIOW9seWTjeWPjOWHu+S6i+S7tlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQmFja2dyb3VuZEcuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRCYWNrZ3JvdW5kRyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHLnB1c2goc2VsZWN0ZWRCYWNrZ3JvdW5kRywgc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lBY3RpdmVHKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUcuZm9yRWFjaChnID0+IGcucmVtb3ZlKCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUcgPSBbXTtcbiAgICB9XG5cbiAgICB1cGRhdGVBY3RpdmVDbGFzcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnJlbW92ZUNsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1JpY2h0ZXh0KCkge1xuICAgICAgICBjb25zdCB7IHJpY2h0ZXh0RywgcmljaHRleHRDb21wb25lbnRSZWYsIGZvcmVpZ25PYmplY3QgfSA9IGRyYXdNaW5kTm9kZVJpY2h0ZXh0KHRoaXMubm9kZSBhcyBNaW5kTm9kZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yaWNodGV4dENvbXBvbmVudFJlZiA9IHJpY2h0ZXh0Q29tcG9uZW50UmVmO1xuICAgICAgICB0aGlzLnJpY2h0ZXh0RyA9IHJpY2h0ZXh0RztcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gZm9yZWlnbk9iamVjdDtcbiAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHJpY2h0ZXh0RywgJ3JpY2h0ZXh0Jyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQocmljaHRleHRHKTtcbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcbiAgICAgICAgLy8gY3JlYXRlIGV4dGVuZFxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmNsYXNzTGlzdC5hZGQoJ2V4dGVuZCcpO1xuICAgICAgICBjb2xsYXBzZUcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2UtY29udGFpbmVyJyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5leHRlbmRHKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmFwcGVuZChjb2xsYXBzZUcpO1xuICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbnRlcmFjdGl2ZVxuICAgICAgICBmcm9tRXZlbnQoY29sbGFwc2VHLCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuaGFuZEFjdGl2ZSB8fCB0aGlzLmJvYXJkLm9wdGlvbnMucmVhZG9ubHkpLFxuICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gIXRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5ib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICBjb25zdCBzdHJva2UgPSBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0aGlzLm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGhpcy5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICAgICAgY29uc3QgZXh0ZW5kWSA9IHkgKyBoZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0aGlzLmVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbeCArIHdpZHRoLCBleHRlbmRZXSxcbiAgICAgICAgICAgIFt4ICsgd2lkdGggKyBFWFRFTkRfT0ZGU0VULCBleHRlbmRZXVxuICAgICAgICBdO1xuXG4gICAgICAgIGxldCBhcnJvd1lPZmZzZXQgPSBbLTQsIDEsIC0wLjYsIDRdO1xuICAgICAgICBsZXQgYXJyb3dYT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWE9mZnNldCA9IFswLCAwXTtcbiAgICAgICAgbGV0IGV4dGVuZExpbmVZT2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgICAgIGxldCBjaXJjbGVPZmZzZXQgPSBbRVhURU5EX1JBRElVUyAvIDIsIDBdO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCkgJiYgIWlzSW5kZW50ZWRMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGV4dGVuZExpbmVZT2Zmc2V0ID1cbiAgICAgICAgICAgICAgICAoZ2V0Tm9kZVNoYXBlQnlFbGVtZW50KHRoaXMubm9kZS5vcmlnaW4pIGFzIE1pbmROb2RlU2hhcGUpID09PSBNaW5kTm9kZVNoYXBlLnJvdW5kUmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgID8gWzAsIDBdXG4gICAgICAgICAgICAgICAgICAgIDogW2hlaWdodCAvIDIsIGhlaWdodCAvIDJdO1xuICAgICAgICAgICAgaWYgKGlzTGVmdExheW91dChub2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIC8v5bemXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhPZmZzZXQgPSBbLXdpZHRoLCAtd2lkdGggLSBFWFRFTkRfT0ZGU0VUICogMl07XG4gICAgICAgICAgICAgICAgY2lyY2xlT2Zmc2V0ID0gWy1FWFRFTkRfUkFESVVTIC8gMiwgMF07XG4gICAgICAgICAgICAgICAgYXJyb3dYT2Zmc2V0ID0gWy0xMCwgLTUuNSwgLTUuNSwgLTEwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycm93WE9mZnNldCA9IFstNCwgMC42LCAtMSwgNF07XG4gICAgICAgICAgICBpZiAoaXNUb3BMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAvL+S4ilxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFstaGVpZ2h0IC8gMiwgLWhlaWdodCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBhcnJvd1lPZmZzZXQgPSBbLTEwLCAtNS41LCAtNS41LCAtMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCAtRVhURU5EX1JBRElVUyAvIDJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL+S4i1xuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFtoZWlnaHQgLyAyLCBoZWlnaHQgLyAyICsgRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgYXJyb3dZT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCBFWFRFTkRfUkFESVVTIC8gMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbZXh0ZW5kTGluZVhZWzBdWzBdICsgZXh0ZW5kTGluZVhPZmZzZXRbMF0sIGV4dGVuZExpbmVYWVswXVsxXSArIGV4dGVuZExpbmVZT2Zmc2V0WzBdXSxcbiAgICAgICAgICAgIFtleHRlbmRMaW5lWFlbMV1bMF0gKyBleHRlbmRMaW5lWE9mZnNldFsxXSwgZXh0ZW5kTGluZVhZWzFdWzFdICsgZXh0ZW5kTGluZVlPZmZzZXRbMV1dXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZXh0ZW5kTGluZSA9IHRoaXMucm91Z2hTVkcubGluZShleHRlbmRMaW5lWFlbMF1bMF0sIGV4dGVuZExpbmVYWVswXVsxXSwgZXh0ZW5kTGluZVhZWzFdWzBdLCBleHRlbmRMaW5lWFlbMV1bMV0sIHtcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgc3Ryb2tlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8v57uY5Yi2566t5aS0XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd1RvcExpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMV0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMV0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd0JvdHRvbUxpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbM10sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbM10sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhZGdlID0gdGhpcy5yb3VnaFNWRy5jaXJjbGUoZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLCBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sIEVYVEVORF9SQURJVVMsIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBudW1iZXJPZmZzZXQgPSAwO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPj0gMTApIG51bWJlck9mZnNldCA9IC0yO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPT09IDEpIG51bWJlck9mZnNldCA9IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhZGdlVGV4dCA9IGNyZWF0ZVRleHQoXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdIC0gNCArIG51bWJlck9mZnNldCxcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0gKyA0LFxuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBgJHtnZXRDaGlsZHJlbkNvdW50KHRoaXMubm9kZS5vcmlnaW4pfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgICAgIGJhZGdlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC4xNScpO1xuICAgICAgICAgICAgYmFkZ2VUZXh0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZm9udC1zaXplOiAxMnB4Jyk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoYmFkZ2UpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGJhZGdlVGV4dCk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoZXh0ZW5kTGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnY29sbGFwc2VkJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGlkZUNpcmNsZUcgPSB0aGlzLnJvdWdoU1ZHLmNpcmNsZShcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLFxuICAgICAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sXG4gICAgICAgICAgICAgICAgICAgIEVYVEVORF9SQURJVVMgLSAxLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUNpcmNsZUcpO1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlRy5hcHBlbmRDaGlsZChoaWRlQXJyb3dUb3BMaW5lKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUFycm93Qm90dG9tTGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95RXh0ZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5leHRlbmRHKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95UmljaHRleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJpY2h0ZXh0Rykge1xuICAgICAgICAgICAgdGhpcy5yaWNodGV4dEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoYWN0aXZlSGFuZGxlUG9zaXRpb24/OiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCByZXNpemluZ0xvY2F0aW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5hYnN0cmFjdEluY2x1ZGVkT3V0bGluZUcgPSBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGhpcy5yb3VnaFNWRyxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLFxuICAgICAgICAgICAgcmVzaXppbmdMb2NhdGlvblxuICAgICAgICApO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QodGhpcy5ib2FyZCkuYXBwZW5kKHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSaWNodGV4dCgpIHtcbiAgICAgICAgdXBkYXRlUmljaFRleHQodGhpcy5ub2RlLm9yaWdpbi5kYXRhLnRvcGljLCB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmISk7XG4gICAgICAgIHVwZGF0ZU1pbmROb2RlVG9waWNTaXplKHRoaXMubm9kZSwgdGhpcy5yaWNodGV4dEcgYXMgU1ZHR0VsZW1lbnQsIHRoaXMuaXNFZGl0YWJsZSk7XG4gICAgfVxuXG4gICAgc3RhcnRFZGl0VGV4dChpc0VuZDogYm9vbGVhbiwgaXNDbGVhcjogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5kZWZpbmVkIHJpY2h0ZXh0Q29tcG9uZW50UmVmJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmljaHRleHRJbnN0YW5jZSA9IHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgSVNfVEVYVF9FRElUQUJMRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB1cGRhdGVNaW5kTm9kZVRvcGljU2l6ZSh0aGlzLm5vZGUsIHRoaXMucmljaHRleHRHIGFzIFNWR0dFbGVtZW50LCB0aGlzLmlzRWRpdGFibGUpO1xuICAgICAgICBpZiAocmljaHRleHRJbnN0YW5jZS5wbGFpdFJlYWRvbmx5KSB7XG4gICAgICAgICAgICByaWNodGV4dEluc3RhbmNlLnBsYWl0UmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0VuZCA/IEVkaXRvci5lbmQocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIFswXSkgOiBbMF07XG4gICAgICAgICAgICBzZXRGdWxsU2VsZWN0aW9uQW5kRm9jdXMocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIGxvY2F0aW9uKTtcbiAgICAgICAgICAgIGlmIChpc0NsZWFyKSB7XG4gICAgICAgICAgICAgICAgRWRpdG9yLmRlbGV0ZUJhY2t3YXJkKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBpbnZhbGlkIHdpZHRoIGFuZCBoZWlnaHQgKG9sZCBkYXRhKVxuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5lbGVtZW50LndpZHRoIHx8IGhlaWdodCAhPT0gdGhpcy5lbGVtZW50LmhlaWdodCkge1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByaWNodGV4dCA9IHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRWYWx1ZTtcbiAgICAgICAgLy8gdXNlIGRlYm91bmNlVGltZSB0byB3YWl0IERPTSByZW5kZXIgY29tcGxldGVcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UkID0gcmljaHRleHRJbnN0YW5jZS5wbGFpdENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOi/h+a7pOaOiSBvcGVyYXRpb25zIOS4reWFqOaYryBzZXRfc2VsZWN0aW9uIOeahOaTjeS9nFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWV2ZW50Lm9wZXJhdGlvbnMuZXZlcnkob3AgPT4gT3BlcmF0aW9uLmlzU2VsZWN0aW9uT3BlcmF0aW9uKG9wKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyaWNodGV4dCA9PT0gZXZlbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICAgICAgLy8g5pu05paw5a+M5paH5pys44CB5pu05paw5a696auYXG4gICAgICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIGV2ZW50LnZhbHVlLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21wb3NpdGlvbiQgPSByaWNodGV4dEluc3RhbmNlLnBsYWl0Q29tcG9zaXRpb24ucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSaWNodGV4dENvbnRlbnRTaXplKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdGFibGUpO1xuICAgICAgICAgICAgaWYgKHdpZHRoIDwgTk9ERV9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IE5PREVfTUlOX1dJRFRIO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzQ29tcG9zaW5nICYmICh3aWR0aCAhPT0gdGhpcy5ub2RlLm9yaWdpbi53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMubm9kZS5vcmlnaW4uaGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb20sXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aCh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KHRoaXMuYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KHRoaXMuYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCBjbGlja0luTm9kZSA9IGhpdE1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIHBvaW50LCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNsaWNrSW5Ob2RlICYmICFoYXNFZGl0YWJsZVRhcmdldChyaWNodGV4dEluc3RhbmNlLmVkaXRvciwgZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjbGlja0luTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjb21wb3NpdGlvbiBpbnB1dCBzdGF0ZSwgbGlrZTogQ2hpbmVzZSBJTUUgQ29tcG9zaXRpb24gSW5wdXRcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yO1xuICAgICAgICBjb25zdCB7IGtleWRvd24gfSA9IGVkaXRvcjtcbiAgICAgICAgZWRpdG9yLmtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdEhhbmRsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1hc2tHKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV4aXRIYW5kbGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdBY3RpdmVHKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TWFza0coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXhpdEhhbmRsZSA9ICgpID0+IHtcbiAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbXBvc2l0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgbW91c2Vkb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZWRpdG9yLmtleWRvd24gPSBrZXlkb3duOyAvLyByZXNldCBrZXlkb3duXG4gICAgICAgICAgICAvLyBlZGl0YWJsZSBzdGF0dXNcbiAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRSZWFkb25seSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmPy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUodGhpcy5ub2RlLCB0aGlzLnJpY2h0ZXh0RyBhcyBTVkdHRWxlbWVudCwgdGhpcy5pc0VkaXRhYmxlKTtcbiAgICAgICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIG5vZGU6IE1pbmROb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBub2RlLm9yaWdpbi5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKEVMRU1FTlRfVE9fTk9ERS5nZXQodGhpcy5lbGVtZW50KSA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAgICAgICBFTEVNRU5UX1RPX05PREUuZGVsZXRlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
567
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9ub2RlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFNWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsZ0JBQWdCLEVBQ2hCLE9BQU8sRUFDUCxVQUFVLEVBQ1YsT0FBTyxFQUNQLGNBQWMsRUFDZCxVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLDJCQUEyQixFQUMzQixZQUFZLEVBQ1osYUFBYSxFQUdoQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0gsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsV0FBVyxFQUVkLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLGlCQUFpQixFQUEwQix3QkFBd0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdC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VztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsd0JBQXdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDakQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDOzs4R0Fob0JRLGlCQUFpQjtrR0FBakIsaUJBQWlCLDhFQVhoQjs7Ozs7Ozs7S0FRVDsyRkFHUSxpQkFBaUI7a0JBYjdCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFOzs7Ozs7OztLQVFUO29CQUNELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2lCQUNsRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbXBvbmVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBQbGFpdFBvaW50ZXJUeXBlLFxuICAgIGNyZWF0ZUcsXG4gICAgY3JlYXRlVGV4dCxcbiAgICBJU19URVhUX0VESVRBQkxFLFxuICAgIE1FUkdJTkcsXG4gICAgUGxhaXRCb2FyZCxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZHJhd1JvdW5kUmVjdGFuZ2xlLFxuICAgIFBsYWl0UGx1Z2luRWxlbWVudENvbXBvbmVudCxcbiAgICBQbGFpdEVsZW1lbnQsXG4gICAgTk9ERV9UT19JTkRFWCxcbiAgICBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0LFxuICAgIE9uQ29udGV4dENoYW5nZWRcbn0gZnJvbSAnQHBsYWl0L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBpc0JvdHRvbUxheW91dCxcbiAgICBpc0hvcml6b250YWxMYXlvdXQsXG4gICAgaXNJbmRlbnRlZExheW91dCxcbiAgICBpc0xlZnRMYXlvdXQsXG4gICAgQWJzdHJhY3ROb2RlLFxuICAgIGlzUmlnaHRMYXlvdXQsXG4gICAgaXNUb3BMYXlvdXQsXG4gICAgTWluZExheW91dFR5cGVcbn0gZnJvbSAnQHBsYWl0L2xheW91dHMnO1xuaW1wb3J0IHsgaGFzRWRpdGFibGVUYXJnZXQsIFBsYWl0UmljaHRleHRDb21wb25lbnQsIHNldEZ1bGxTZWxlY3Rpb25BbmRGb2N1cywgdXBkYXRlUmljaFRleHQgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0LCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEVkaXRvciwgT3BlcmF0aW9uIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRVhURU5EX09GRlNFVCwgRVhURU5EX1JBRElVUywgTWluZE5vZGVTaGFwZSwgTk9ERV9NSU5fV0lEVEgsIFBSSU1BUllfQ09MT1IsIFNUUk9LRV9XSURUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGRyYXdJbmRlbnRlZExpbmsgfSBmcm9tICcuL2RyYXcvaW5kZW50ZWQtbGluayc7XG5pbXBvcnQgeyBkcmF3TG9naWNMaW5rIH0gZnJvbSAnLi9kcmF3L2xpbmsvbG9naWMtbGluayc7XG5pbXBvcnQgeyBkcmF3TWluZE5vZGVSaWNodGV4dCwgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUgfSBmcm9tICcuL2RyYXcvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd1JlY3RhbmdsZU5vZGUgfSBmcm9tICcuL2RyYXcvc2hhcGUnO1xuaW1wb3J0IHsgTWluZEVsZW1lbnQsIFBsYWl0TWluZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9lbGVtZW50JztcbmltcG9ydCB7IE1pbmROb2RlIH0gZnJvbSAnLi9pbnRlcmZhY2VzL25vZGUnO1xuaW1wb3J0IHsgTWluZFF1ZXJpZXMgfSBmcm9tICcuL3F1ZXJpZXMnO1xuaW1wb3J0IHsgZ2V0UmVjdGFuZ2xlQnlOb2RlLCBoaXRNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvZ3JhcGgnO1xuaW1wb3J0IHsgZ2V0Q2hpbGRyZW5Db3VudCB9IGZyb20gJy4vdXRpbHMvbWluZCc7XG5pbXBvcnQgeyBnZXROb2RlU2hhcGVCeUVsZW1lbnQgfSBmcm9tICcuL3V0aWxzL3NoYXBlJztcbmltcG9ydCB7IEVMRU1FTlRfVE9fTk9ERSB9IGZyb20gJy4vdXRpbHMvd2Vhay1tYXBzJztcbmltcG9ydCB7IGdldFJpY2h0ZXh0Q29udGVudFNpemUgfSBmcm9tICdAcGxhaXQvcmljaHRleHQnO1xuaW1wb3J0IHsgZHJhd0Fic3RyYWN0TGluayB9IGZyb20gJy4vZHJhdy9saW5rL2Fic3RyYWN0LWxpbmsnO1xuaW1wb3J0IHsgRW1vamlzRHJhd2VyIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL2Vtb2ppLmRyYXdlcic7XG5pbXBvcnQgeyBQbGFpdE1pbmRFbW9qaUJvYXJkIH0gZnJvbSAnLi9wbHVnaW5zL2Vtb2ppL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBNaW5kVHJhbnNmb3JtcyB9IGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUgfSBmcm9tICcuL2RyYXcvYWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBRdWlja0luc2VydERyYXdlciB9IGZyb20gJy4vZHJhd2VyL3F1aWNrLWluc2VydC5kcmF3ZXInO1xuaW1wb3J0IHsgaGFzQWZ0ZXJEcmF3IH0gZnJvbSAnLi9kcmF3ZXIvYmFzZS9iYXNlJztcbmltcG9ydCB7IGdldEJyYW5jaENvbG9yQnlNaW5kRWxlbWVudCB9IGZyb20gJy4vdXRpbHMvbm9kZS1zdHlsZS9icmFuY2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3BsYWl0LW1pbmQtbm9kZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHBsYWl0LWNoaWxkcmVuXG4gICAgICAgICAgICAqbmdJZj1cIiFlbGVtZW50LmlzQ29sbGFwc2VkXCJcbiAgICAgICAgICAgIFtib2FyZF09XCJib2FyZFwiXG4gICAgICAgICAgICBbcGFyZW50XT1cImVsZW1lbnRcIlxuICAgICAgICAgICAgW2VmZmVjdF09XCJlZmZlY3RcIlxuICAgICAgICAgICAgW3BhcmVudEddPVwicGFyZW50R1wiXG4gICAgICAgID48L3BsYWl0LWNoaWxkcmVuPlxuICAgIGAsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTWluZE5vZGVDb21wb25lbnQ8VCBleHRlbmRzIE1pbmRFbGVtZW50ID0gTWluZEVsZW1lbnQ+IGV4dGVuZHMgUGxhaXRQbHVnaW5FbGVtZW50Q29tcG9uZW50PFQ+XG4gICAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25Db250ZXh0Q2hhbmdlZDxUPiB7XG4gICAgaXNFZGl0YWJsZSA9IGZhbHNlO1xuXG4gICAgcm91Z2hTVkchOiBSb3VnaFNWRztcblxuICAgIG5vZGUhOiBNaW5kTm9kZTtcblxuICAgIHBhcmVudCE6IE1pbmROb2RlO1xuXG4gICAgaW5kZXghOiBudW1iZXI7XG5cbiAgICBhYnN0cmFjdEluY2x1ZGVkT3V0bGluZUc/OiBTVkdHRWxlbWVudDtcblxuICAgIHBhcmVudEchOiBTVkdHRWxlbWVudDtcblxuICAgIGFjdGl2ZUc6IFNWR0dFbGVtZW50W10gPSBbXTtcblxuICAgIHNoYXBlRzogU1ZHR0VsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGxpbmtHPzogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dEc/OiBTVkdHRWxlbWVudDtcblxuICAgIGZvcmVpZ25PYmplY3Q/OiBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDtcblxuICAgIGV4dGVuZEc/OiBTVkdHRWxlbWVudDtcblxuICAgIG1hc2tHITogU1ZHR0VsZW1lbnQ7XG5cbiAgICByaWNodGV4dENvbXBvbmVudFJlZj86IENvbXBvbmVudFJlZjxQbGFpdFJpY2h0ZXh0Q29tcG9uZW50PjtcblxuICAgIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGVtb2ppc0RyYXdlciE6IEVtb2ppc0RyYXdlcjtcblxuICAgIHF1aWNrSW5zZXJ0RHJhd2VyITogUXVpY2tJbnNlcnREcmF3ZXI7XG5cbiAgICBwdWJsaWMgZ2V0IGhhbmRBY3RpdmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmJvYXJkLnBvaW50ZXIgPT09IFBsYWl0UG9pbnRlclR5cGUuaGFuZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHJlbmRlcjI6IFJlbmRlcmVyMikge1xuICAgICAgICBzdXBlcihjZHIpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVtb2ppc0RyYXdlciA9IG5ldyBFbW9qaXNEcmF3ZXIodGhpcy5ib2FyZCBhcyBQbGFpdE1pbmRFbW9qaUJvYXJkLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgICAgICB0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyID0gbmV3IFF1aWNrSW5zZXJ0RHJhd2VyKHRoaXMuYm9hcmQpO1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgICAgICB0aGlzLm5vZGUgPSBFTEVNRU5UX1RPX05PREUuZ2V0KHRoaXMuZWxlbWVudCkgYXMgTWluZE5vZGU7XG4gICAgICAgIGlmICghUGxhaXRNaW5kLmlzTWluZCh0aGlzLmVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudCA9IE1pbmRFbGVtZW50LmdldE5vZGUoTWluZEVsZW1lbnQuZ2V0UGFyZW50KHRoaXMuZWxlbWVudCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5kZXggPSBOT0RFX1RPX0lOREVYLmdldCh0aGlzLmVsZW1lbnQpIHx8IDA7XG4gICAgICAgIHRoaXMucm91Z2hTVkcgPSBQbGFpdEJvYXJkLmdldFJvdWdoU1ZHKHRoaXMuYm9hcmQpO1xuICAgICAgICB0aGlzLnBhcmVudEcgPSBQbGFpdEVsZW1lbnQuZ2V0Q29tcG9uZW50KE1pbmRFbGVtZW50LmdldFJvb3QodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KSkucm9vdEcgYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgIHRoaXMuZHJhd0xpbmsoKTtcbiAgICAgICAgdGhpcy5kcmF3UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUNsYXNzKCk7XG4gICAgICAgIHRoaXMuZHJhd01hc2tHKCk7XG4gICAgICAgIHRoaXMuZHJhd0Vtb2ppcygpO1xuICAgICAgICB0aGlzLmRyYXdFeHRlbmQoKTtcbiAgICAgICAgdGhpcy5kcmF3UXVpY2tJbnNlcnQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2VkKHZhbHVlOiBQbGFpdFBsdWdpbkVsZW1lbnRDb250ZXh0PFQ+LCBwcmV2aW91czogUGxhaXRQbHVnaW5FbGVtZW50Q29udGV4dDxUPikge1xuICAgICAgICBjb25zdCBuZXdOb2RlID0gRUxFTUVOVF9UT19OT0RFLmdldCh0aGlzLmVsZW1lbnQpIGFzIE1pbmROb2RlO1xuICAgICAgICBpZiAoIVBsYWl0TWluZC5pc01pbmQodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBNaW5kRWxlbWVudC5nZXROb2RlKE1pbmRFbGVtZW50LmdldFBhcmVudCh0aGlzLmVsZW1lbnQpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlc29sdmUgbW92ZSBub2RlIHJpY2h0ZXh0IGxvc2UgaXNzdWVcbiAgICAgICAgaWYgKHRoaXMubm9kZSAhPT0gbmV3Tm9kZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZm9yZWlnbk9iamVjdCAmJiB0aGlzLmZvcmVpZ25PYmplY3QuY2hpbGRyZW4ubGVuZ3RoIDw9IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmVpZ25PYmplY3Q/LmFwcGVuZENoaWxkKHRoaXMucmljaHRleHRDb21wb25lbnRSZWY/Lmluc3RhbmNlLmVkaXRhYmxlIGFzIEhUTUxFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzRXF1YWxzID0gTWluZE5vZGUuaXNFcXVhbHModGhpcy5ub2RlLCBuZXdOb2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbmV3Tm9kZTtcbiAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICB0aGlzLnVwZGF0ZUFjdGl2ZUNsYXNzKCk7XG4gICAgICAgIGlmICghaXNFcXVhbHMpIHtcbiAgICAgICAgICAgIHRoaXMuZHJhd1NoYXBlKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdMaW5rKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdNYXNrRygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RXh0ZW5kKCk7XG4gICAgICAgICAgICB0aGlzLmRyYXdRdWlja0luc2VydCgpO1xuICAgICAgICAgICAgdGhpcy5kcmF3RW1vamlzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3RW1vamlzKCkge1xuICAgICAgICBjb25zdCBnID0gdGhpcy5lbW9qaXNEcmF3ZXIuZHJhd0Vtb2ppcyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICBpZiAoZykge1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRyYXdRdWlja0luc2VydCgpIHtcbiAgICAgICAgdGhpcy5xdWlja0luc2VydERyYXdlci5kZXN0cm95KCk7XG4gICAgICAgIGlmICh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyLmNhbkRyYXcodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3QgZyA9IHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuZHJhdyh0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGhhc0FmdGVyRHJhdyh0aGlzLnF1aWNrSW5zZXJ0RHJhd2VyKSkge1xuICAgICAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnREcmF3ZXIuYWZ0ZXJEcmF3KHRoaXMuZWxlbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEc/LmFwcGVuZENoaWxkKGcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1NoYXBlKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lTaGFwZSgpO1xuICAgICAgICBjb25zdCBzaGFwZSA9IGdldE5vZGVTaGFwZUJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTm9kZVNoYXBlO1xuICAgICAgICBzd2l0Y2ggKHNoYXBlKSB7XG4gICAgICAgICAgICBjYXNlIE1pbmROb2RlU2hhcGUucm91bmRSZWN0YW5nbGU6XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFwZUcgPSBkcmF3UmVjdGFuZ2xlTm9kZSh0aGlzLmJvYXJkLCB0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgICAgIHRoaXMuZy5wcmVwZW5kKHRoaXMuc2hhcGVHKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95U2hhcGUoKSB7XG4gICAgICAgIGlmICh0aGlzLnNoYXBlRykge1xuICAgICAgICAgICAgdGhpcy5zaGFwZUcucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnNoYXBlRyA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3TGluaygpIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXlvdXQgPSBNaW5kUXVlcmllcy5nZXRMYXlvdXRCeUVsZW1lbnQodGhpcy5wYXJlbnQub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgaWYgKEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KHRoaXMubm9kZS5vcmlnaW4pKSB7XG4gICAgICAgICAgICB0aGlzLmxpbmtHID0gZHJhd0Fic3RyYWN0TGluayh0aGlzLmJvYXJkLCB0aGlzLm5vZGUsIGlzSG9yaXpvbnRhbExheW91dChsYXlvdXQpKTtcbiAgICAgICAgfSBlbHNlIGlmIChNaW5kRWxlbWVudC5pc0luZGVudGVkTGF5b3V0KHRoaXMucGFyZW50Lm9yaWdpbikpIHtcbiAgICAgICAgICAgIHRoaXMubGlua0cgPSBkcmF3SW5kZW50ZWRMaW5rKHRoaXMuYm9hcmQsIHRoaXMucGFyZW50LCB0aGlzLm5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5saW5rRyA9IGRyYXdMb2dpY0xpbmsodGhpcy5ib2FyZCwgdGhpcy5ub2RlLCB0aGlzLnBhcmVudCwgaXNIb3Jpem9udGFsTGF5b3V0KGxheW91dCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5saW5rRyk7XG4gICAgfVxuXG4gICAgZGVzdHJveUxpbmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubGlua0cpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbmtHLnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd01hc2tHKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lNYXNrRygpO1xuICAgICAgICBjb25zdCBsaW5lV2lkdGhPZmZzZXQgPSAyO1xuICAgICAgICBjb25zdCBleHRlbmRPZmZzZXQgPSAxNTtcbiAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudCh0aGlzLm5vZGUub3JpZ2luKSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgY29uc3QgaXNUb3AgPSBpc1RvcExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgaXNSaWdodCA9IGlzUmlnaHRMYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzQm90dG9tID0gaXNCb3R0b21MYXlvdXQobm9kZUxheW91dCk7XG4gICAgICAgIGNvbnN0IGlzTGVmdCA9IGlzTGVmdExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgY29uc3QgeyB4LCB5LCB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSZWN0YW5nbGVCeU5vZGUodGhpcy5ub2RlIGFzIE1pbmROb2RlKTtcblxuICAgICAgICBsZXQgZHJhd1ggPSB4O1xuICAgICAgICBsZXQgZHJhd1kgPSB5O1xuICAgICAgICBsZXQgZHJhd1dpZHRoID0geCArIHdpZHRoO1xuICAgICAgICBsZXQgZHJhd0hlaWdodCA9IHkgKyBoZWlnaHQ7XG5cbiAgICAgICAgc3dpdGNoICh0cnVlKSB7XG4gICAgICAgICAgICBjYXNlIGlzVG9wOlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBleHRlbmRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc0JvdHRvbTpcbiAgICAgICAgICAgICAgICBkcmF3WCA9IHggLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1kgPSB5IC0gbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdXaWR0aCA9IHggKyB3aWR0aCArIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3SGVpZ2h0ID0geSArIGhlaWdodCArIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgaXNMZWZ0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGV4dGVuZE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBpc1JpZ2h0OlxuICAgICAgICAgICAgICAgIGRyYXdYID0geCAtIGxpbmVXaWR0aE9mZnNldDtcbiAgICAgICAgICAgICAgICBkcmF3WSA9IHkgLSBsaW5lV2lkdGhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgZHJhd1dpZHRoID0geCArIHdpZHRoICsgZXh0ZW5kT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGRyYXdIZWlnaHQgPSB5ICsgaGVpZ2h0ICsgbGluZVdpZHRoT2Zmc2V0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFza0cgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICB0aGlzLnJvdWdoU1ZHIGFzIFJvdWdoU1ZHLFxuICAgICAgICAgICAgZHJhd1gsXG4gICAgICAgICAgICBkcmF3WSxcbiAgICAgICAgICAgIGRyYXdXaWR0aCxcbiAgICAgICAgICAgIGRyYXdIZWlnaHQsXG4gICAgICAgICAgICB7IHN0cm9rZTogJ25vbmUnLCBmaWxsOiAncmdiYSgyNTUsMjU1LDI1NSwwKScsIGZpbGxTdHlsZTogJ3NvbGlkJyB9LFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1hc2tHLmNsYXNzTGlzdC5hZGQoJ21hc2snKTtcbiAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpO1xuICAgICAgICB0aGlzLmcuYXBwZW5kKHRoaXMubWFza0cpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRoaXMubWFza0csICdtb3VzZWVudGVyJylcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUGxhaXRCb2FyZC5pc0ZvY3VzKHRoaXMuYm9hcmQpICYmICF0aGlzLmVsZW1lbnQuaXNDb2xsYXBzZWQgJiYgIXRoaXMuaGFuZEFjdGl2ZTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5tYXNrRywgJ21vdXNlbGVhdmUnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQbGFpdEJvYXJkLmlzRm9jdXModGhpcy5ib2FyZCkgJiYgIXRoaXMuZWxlbWVudC5pc0NvbGxhcHNlZDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5yZW1vdmUoJ2hvdmVyZWQnKTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGRlc3Ryb3lNYXNrRygpIHtcbiAgICAgICAgaWYgKHRoaXMubWFza0cpIHtcbiAgICAgICAgICAgIHRoaXMubWFza0cucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnaG92ZXJlZCcpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZW5hYmxlTWFza0coKSB7XG4gICAgICAgIGlmICh0aGlzLm1hc2tHKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tHLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkaXNhYmxlZE1hc2tHKCkge1xuICAgICAgICBpZiAodGhpcy5tYXNrRykge1xuICAgICAgICAgICAgdGhpcy5tYXNrRy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkcmF3QWN0aXZlRygpIHtcbiAgICAgICAgdGhpcy5kZXN0cm95QWN0aXZlRygpO1xuICAgICAgICB0aGlzLmFic3RyYWN0SW5jbHVkZWRPdXRsaW5lRz8ucmVtb3ZlKCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAoQWJzdHJhY3ROb2RlLmlzQWJzdHJhY3QodGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUgYXMgTWluZE5vZGUpO1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRTdHJva2VHID0gZHJhd1JvdW5kUmVjdGFuZ2xlKFxuICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgeCAtIDIsXG4gICAgICAgICAgICAgICAgeSAtIDIsXG4gICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICB5ICsgaGVpZ2h0ICsgMixcbiAgICAgICAgICAgICAgICB7IHN0cm9rZTogUFJJTUFSWV9DT0xPUiwgc3Ryb2tlV2lkdGg6IDIsIGZpbGw6ICcnIH0sXG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIOW9seWTjSBtYXNrIOenu+WFpeenu+WHuuS6i+S7tlxuICAgICAgICAgICAgc2VsZWN0ZWRTdHJva2VHLnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRy5wdXNoKHNlbGVjdGVkU3Ryb2tlRyk7XG4gICAgICAgICAgICBpZiAodGhpcy5yaWNodGV4dENvbXBvbmVudFJlZj8uaW5zdGFuY2UucGxhaXRSZWFkb25seSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQmFja2dyb3VuZEcgPSBkcmF3Um91bmRSZWN0YW5nbGUoXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm91Z2hTVkcgYXMgUm91Z2hTVkcsXG4gICAgICAgICAgICAgICAgICAgIHggLSAyLFxuICAgICAgICAgICAgICAgICAgICB5IC0gMixcbiAgICAgICAgICAgICAgICAgICAgeCArIHdpZHRoICsgMixcbiAgICAgICAgICAgICAgICAgICAgeSArIGhlaWdodCArIDIsXG4gICAgICAgICAgICAgICAgICAgIHsgc3Ryb2tlOiBQUklNQVJZX0NPTE9SLCBmaWxsOiBQUklNQVJZX0NPTE9SLCBmaWxsU3R5bGU6ICdzb2xpZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRCYWNrZ3JvdW5kRy5zdHlsZS5vcGFjaXR5ID0gJzAuMTUnO1xuICAgICAgICAgICAgICAgIC8vIOW9seWTjeWPjOWHu+S6i+S7tlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkQmFja2dyb3VuZEcuc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcbiAgICAgICAgICAgICAgICB0aGlzLmcuYXBwZW5kQ2hpbGQoc2VsZWN0ZWRCYWNrZ3JvdW5kRyk7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHLnB1c2goc2VsZWN0ZWRCYWNrZ3JvdW5kRywgc2VsZWN0ZWRTdHJva2VHKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRlc3Ryb3lBY3RpdmVHKCkge1xuICAgICAgICB0aGlzLmFjdGl2ZUcuZm9yRWFjaChnID0+IGcucmVtb3ZlKCkpO1xuICAgICAgICB0aGlzLmFjdGl2ZUcgPSBbXTtcbiAgICB9XG5cbiAgICB1cGRhdGVBY3RpdmVDbGFzcygpIHtcbiAgICAgICAgaWYgKCF0aGlzLmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIyLnJlbW92ZUNsYXNzKHRoaXMuZywgJ2FjdGl2ZScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHJhd1JpY2h0ZXh0KCkge1xuICAgICAgICBjb25zdCB7IHJpY2h0ZXh0RywgcmljaHRleHRDb21wb25lbnRSZWYsIGZvcmVpZ25PYmplY3QgfSA9IGRyYXdNaW5kTm9kZVJpY2h0ZXh0KHRoaXMubm9kZSBhcyBNaW5kTm9kZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgdGhpcy5yaWNodGV4dENvbXBvbmVudFJlZiA9IHJpY2h0ZXh0Q29tcG9uZW50UmVmO1xuICAgICAgICB0aGlzLnJpY2h0ZXh0RyA9IHJpY2h0ZXh0RztcbiAgICAgICAgdGhpcy5mb3JlaWduT2JqZWN0ID0gZm9yZWlnbk9iamVjdDtcbiAgICAgICAgdGhpcy5yZW5kZXIyLmFkZENsYXNzKHJpY2h0ZXh0RywgJ3JpY2h0ZXh0Jyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQocmljaHRleHRHKTtcbiAgICB9XG5cbiAgICBkcmF3RXh0ZW5kKCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3lFeHRlbmQoKTtcbiAgICAgICAgLy8gY3JlYXRlIGV4dGVuZFxuICAgICAgICB0aGlzLmV4dGVuZEcgPSBjcmVhdGVHKCk7XG4gICAgICAgIGNvbnN0IGNvbGxhcHNlRyA9IGNyZWF0ZUcoKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmNsYXNzTGlzdC5hZGQoJ2V4dGVuZCcpO1xuICAgICAgICBjb2xsYXBzZUcuY2xhc3NMaXN0LmFkZCgnY29sbGFwc2UtY29udGFpbmVyJyk7XG4gICAgICAgIHRoaXMuZy5hcHBlbmQodGhpcy5leHRlbmRHKTtcbiAgICAgICAgdGhpcy5leHRlbmRHLmFwcGVuZChjb2xsYXBzZUcpO1xuICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5pc1Jvb3QpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBpbnRlcmFjdGl2ZVxuICAgICAgICBmcm9tRXZlbnQoY29sbGFwc2VHLCAnbW91c2V1cCcpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKCkgPT4gIXRoaXMuaGFuZEFjdGl2ZSB8fCB0aGlzLmJvYXJkLm9wdGlvbnMucmVhZG9ubHkpLFxuICAgICAgICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29sbGFwc2VkID0gIXRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RWxlbWVudDogUGFydGlhbDxNaW5kRWxlbWVudD4gPSB7IGlzQ29sbGFwc2VkIH07XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGUodGhpcy5ib2FyZCwgbmV3RWxlbWVudCwgcGF0aCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB7IHgsIHksIHdpZHRoLCBoZWlnaHQgfSA9IGdldFJlY3RhbmdsZUJ5Tm9kZSh0aGlzLm5vZGUpO1xuICAgICAgICBjb25zdCBzdHJva2UgPSBnZXRCcmFuY2hDb2xvckJ5TWluZEVsZW1lbnQodGhpcy5ib2FyZCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgY29uc3Qgc3Ryb2tlV2lkdGggPSB0aGlzLm5vZGUub3JpZ2luLmJyYW5jaFdpZHRoID8gdGhpcy5ub2RlLm9yaWdpbi5icmFuY2hXaWR0aCA6IFNUUk9LRV9XSURUSDtcbiAgICAgICAgY29uc3QgZXh0ZW5kWSA9IHkgKyBoZWlnaHQgLyAyO1xuICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudCh0aGlzLmVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbeCArIHdpZHRoLCBleHRlbmRZXSxcbiAgICAgICAgICAgIFt4ICsgd2lkdGggKyBFWFRFTkRfT0ZGU0VULCBleHRlbmRZXVxuICAgICAgICBdO1xuXG4gICAgICAgIGxldCBhcnJvd1lPZmZzZXQgPSBbLTQsIDEsIC0wLjYsIDRdO1xuICAgICAgICBsZXQgYXJyb3dYT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuXG4gICAgICAgIGxldCBleHRlbmRMaW5lWE9mZnNldCA9IFswLCAwXTtcbiAgICAgICAgbGV0IGV4dGVuZExpbmVZT2Zmc2V0ID0gWzAsIDBdO1xuXG4gICAgICAgIGxldCBjaXJjbGVPZmZzZXQgPSBbRVhURU5EX1JBRElVUyAvIDIsIDBdO1xuXG4gICAgICAgIGlmIChpc0hvcml6b250YWxMYXlvdXQobm9kZUxheW91dCkgJiYgIWlzSW5kZW50ZWRMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgIGV4dGVuZExpbmVZT2Zmc2V0ID1cbiAgICAgICAgICAgICAgICAoZ2V0Tm9kZVNoYXBlQnlFbGVtZW50KHRoaXMubm9kZS5vcmlnaW4pIGFzIE1pbmROb2RlU2hhcGUpID09PSBNaW5kTm9kZVNoYXBlLnJvdW5kUmVjdGFuZ2xlXG4gICAgICAgICAgICAgICAgICAgID8gWzAsIDBdXG4gICAgICAgICAgICAgICAgICAgIDogW2hlaWdodCAvIDIsIGhlaWdodCAvIDJdO1xuICAgICAgICAgICAgaWYgKGlzTGVmdExheW91dChub2RlTGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIC8v5bemXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhPZmZzZXQgPSBbLXdpZHRoLCAtd2lkdGggLSBFWFRFTkRfT0ZGU0VUICogMl07XG4gICAgICAgICAgICAgICAgY2lyY2xlT2Zmc2V0ID0gWy1FWFRFTkRfUkFESVVTIC8gMiwgMF07XG4gICAgICAgICAgICAgICAgYXJyb3dYT2Zmc2V0ID0gWy0xMCwgLTUuNSwgLTUuNSwgLTEwXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFycm93WE9mZnNldCA9IFstNCwgMC42LCAtMSwgNF07XG4gICAgICAgICAgICBpZiAoaXNUb3BMYXlvdXQobm9kZUxheW91dCkpIHtcbiAgICAgICAgICAgICAgICAvL+S4ilxuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFstaGVpZ2h0IC8gMiwgLWhlaWdodCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBhcnJvd1lPZmZzZXQgPSBbLTEwLCAtNS41LCAtNS41LCAtMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCAtRVhURU5EX1JBRElVUyAvIDJdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvL+S4i1xuICAgICAgICAgICAgICAgIGV4dGVuZExpbmVYT2Zmc2V0ID0gWy13aWR0aCAvIDIsIC13aWR0aCAvIDIgLSBFWFRFTkRfT0ZGU0VUXTtcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWU9mZnNldCA9IFtoZWlnaHQgLyAyLCBoZWlnaHQgLyAyICsgRVhURU5EX09GRlNFVF07XG4gICAgICAgICAgICAgICAgYXJyb3dZT2Zmc2V0ID0gWzEwLCA1LjUsIDUuNSwgMTBdO1xuICAgICAgICAgICAgICAgIGNpcmNsZU9mZnNldCA9IFswLCBFWFRFTkRfUkFESVVTIC8gMl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBleHRlbmRMaW5lWFkgPSBbXG4gICAgICAgICAgICBbZXh0ZW5kTGluZVhZWzBdWzBdICsgZXh0ZW5kTGluZVhPZmZzZXRbMF0sIGV4dGVuZExpbmVYWVswXVsxXSArIGV4dGVuZExpbmVZT2Zmc2V0WzBdXSxcbiAgICAgICAgICAgIFtleHRlbmRMaW5lWFlbMV1bMF0gKyBleHRlbmRMaW5lWE9mZnNldFsxXSwgZXh0ZW5kTGluZVhZWzFdWzFdICsgZXh0ZW5kTGluZVlPZmZzZXRbMV1dXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgZXh0ZW5kTGluZSA9IHRoaXMucm91Z2hTVkcubGluZShleHRlbmRMaW5lWFlbMF1bMF0sIGV4dGVuZExpbmVYWVswXVsxXSwgZXh0ZW5kTGluZVhZWzFdWzBdLCBleHRlbmRMaW5lWFlbMV1bMV0sIHtcbiAgICAgICAgICAgIHN0cm9rZVdpZHRoLFxuICAgICAgICAgICAgc3Ryb2tlXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8v57uY5Yi2566t5aS0XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd1RvcExpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMF0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMV0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMV0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGhpZGVBcnJvd0JvdHRvbUxpbmUgPSB0aGlzLnJvdWdoU1ZHLmxpbmUoXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbMl0sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMF0gKyBhcnJvd1hPZmZzZXRbM10sXG4gICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBhcnJvd1lPZmZzZXRbM10sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAyXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMubm9kZS5vcmlnaW4uaXNDb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhZGdlID0gdGhpcy5yb3VnaFNWRy5jaXJjbGUoZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLCBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sIEVYVEVORF9SQURJVVMsIHtcbiAgICAgICAgICAgICAgICBmaWxsOiBzdHJva2UsXG4gICAgICAgICAgICAgICAgc3Ryb2tlLFxuICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGxldCBudW1iZXJPZmZzZXQgPSAwO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPj0gMTApIG51bWJlck9mZnNldCA9IC0yO1xuICAgICAgICAgICAgaWYgKGdldENoaWxkcmVuQ291bnQodGhpcy5ub2RlLm9yaWdpbikgPT09IDEpIG51bWJlck9mZnNldCA9IDE7XG5cbiAgICAgICAgICAgIGNvbnN0IGJhZGdlVGV4dCA9IGNyZWF0ZVRleHQoXG4gICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdIC0gNCArIG51bWJlck9mZnNldCxcbiAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0gKyA0LFxuICAgICAgICAgICAgICAgIHN0cm9rZSxcbiAgICAgICAgICAgICAgICBgJHtnZXRDaGlsZHJlbkNvdW50KHRoaXMubm9kZS5vcmlnaW4pfWBcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZy5jbGFzc0xpc3QuYWRkKCdjb2xsYXBzZWQnKTtcbiAgICAgICAgICAgIGJhZGdlLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnb3BhY2l0eTogMC4xNScpO1xuICAgICAgICAgICAgYmFkZ2VUZXh0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZm9udC1zaXplOiAxMnB4Jyk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoYmFkZ2UpO1xuICAgICAgICAgICAgY29sbGFwc2VHLmFwcGVuZENoaWxkKGJhZGdlVGV4dCk7XG4gICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoZXh0ZW5kTGluZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmcuY2xhc3NMaXN0LnJlbW92ZSgnY29sbGFwc2VkJyk7XG4gICAgICAgICAgICBpZiAodGhpcy5ub2RlLm9yaWdpbi5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaGlkZUNpcmNsZUcgPSB0aGlzLnJvdWdoU1ZHLmNpcmNsZShcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5kTGluZVhZWzFdWzBdICsgY2lyY2xlT2Zmc2V0WzBdLFxuICAgICAgICAgICAgICAgICAgICBleHRlbmRMaW5lWFlbMV1bMV0gKyBjaXJjbGVPZmZzZXRbMV0sXG4gICAgICAgICAgICAgICAgICAgIEVYVEVORF9SQURJVVMgLSAxLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiAnI2ZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJva2VXaWR0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGxTdHlsZTogJ3NvbGlkJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUNpcmNsZUcpO1xuICAgICAgICAgICAgICAgIGNvbGxhcHNlRy5hcHBlbmRDaGlsZChoaWRlQXJyb3dUb3BMaW5lKTtcbiAgICAgICAgICAgICAgICBjb2xsYXBzZUcuYXBwZW5kQ2hpbGQoaGlkZUFycm93Qm90dG9tTGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95RXh0ZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5leHRlbmRHKSB7XG4gICAgICAgICAgICB0aGlzLmV4dGVuZEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95UmljaHRleHQoKSB7XG4gICAgICAgIGlmICh0aGlzLnJpY2h0ZXh0Rykge1xuICAgICAgICAgICAgdGhpcy5yaWNodGV4dEcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoYWN0aXZlSGFuZGxlUG9zaXRpb24/OiBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCByZXNpemluZ0xvY2F0aW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5hYnN0cmFjdEluY2x1ZGVkT3V0bGluZUcgPSBkcmF3QWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoXG4gICAgICAgICAgICB0aGlzLmJvYXJkLFxuICAgICAgICAgICAgdGhpcy5yb3VnaFNWRyxcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudCxcbiAgICAgICAgICAgIGFjdGl2ZUhhbmRsZVBvc2l0aW9uLFxuICAgICAgICAgICAgcmVzaXppbmdMb2NhdGlvblxuICAgICAgICApO1xuICAgICAgICBQbGFpdEJvYXJkLmdldEhvc3QodGhpcy5ib2FyZCkuYXBwZW5kKHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHKTtcbiAgICB9XG5cbiAgICB1cGRhdGVSaWNodGV4dCgpIHtcbiAgICAgICAgdXBkYXRlUmljaFRleHQodGhpcy5ub2RlLm9yaWdpbi5kYXRhLnRvcGljLCB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmISk7XG4gICAgICAgIHVwZGF0ZU1pbmROb2RlVG9waWNTaXplKHRoaXMubm9kZSwgdGhpcy5yaWNodGV4dEcgYXMgU1ZHR0VsZW1lbnQsIHRoaXMuaXNFZGl0YWJsZSk7XG4gICAgfVxuXG4gICAgc3RhcnRFZGl0VGV4dChpc0VuZDogYm9vbGVhbiwgaXNDbGVhcjogYm9vbGVhbikge1xuICAgICAgICBpZiAoIXRoaXMucmljaHRleHRDb21wb25lbnRSZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5kZWZpbmVkIHJpY2h0ZXh0Q29tcG9uZW50UmVmJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmljaHRleHRJbnN0YW5jZSA9IHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdHJ1ZTtcbiAgICAgICAgSVNfVEVYVF9FRElUQUJMRS5zZXQodGhpcy5ib2FyZCwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuZGlzYWJsZWRNYXNrRygpO1xuICAgICAgICB1cGRhdGVNaW5kTm9kZVRvcGljU2l6ZSh0aGlzLm5vZGUsIHRoaXMucmljaHRleHRHIGFzIFNWR0dFbGVtZW50LCB0aGlzLmlzRWRpdGFibGUpO1xuICAgICAgICBpZiAocmljaHRleHRJbnN0YW5jZS5wbGFpdFJlYWRvbmx5KSB7XG4gICAgICAgICAgICByaWNodGV4dEluc3RhbmNlLnBsYWl0UmVhZG9ubHkgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmljaHRleHRDb21wb25lbnRSZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgY29uc3QgbG9jYXRpb24gPSBpc0VuZCA/IEVkaXRvci5lbmQocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIFswXSkgOiBbMF07XG4gICAgICAgICAgICBzZXRGdWxsU2VsZWN0aW9uQW5kRm9jdXMocmljaHRleHRJbnN0YW5jZS5lZGl0b3IsIGxvY2F0aW9uKTtcbiAgICAgICAgICAgIGlmIChpc0NsZWFyKSB7XG4gICAgICAgICAgICAgICAgRWRpdG9yLmRlbGV0ZUJhY2t3YXJkKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGhhbmRsZSBpbnZhbGlkIHdpZHRoIGFuZCBoZWlnaHQgKG9sZCBkYXRhKVxuICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgIGlmICh3aWR0aCAhPT0gdGhpcy5lbGVtZW50LndpZHRoIHx8IGhlaWdodCAhPT0gdGhpcy5lbGVtZW50LmhlaWdodCkge1xuICAgICAgICAgICAgICAgIE1pbmRUcmFuc2Zvcm1zLnNldFRvcGljU2l6ZSh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByaWNodGV4dCA9IHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRWYWx1ZTtcbiAgICAgICAgLy8gdXNlIGRlYm91bmNlVGltZSB0byB3YWl0IERPTSByZW5kZXIgY29tcGxldGVcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2UkID0gcmljaHRleHRJbnN0YW5jZS5wbGFpdENoYW5nZVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLFxuICAgICAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOi/h+a7pOaOiSBvcGVyYXRpb25zIOS4reWFqOaYryBzZXRfc2VsZWN0aW9uIOeahOaTjeS9nFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gIWV2ZW50Lm9wZXJhdGlvbnMuZXZlcnkob3AgPT4gT3BlcmF0aW9uLmlzU2VsZWN0aW9uT3BlcmF0aW9uKG9wKSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyaWNodGV4dCA9PT0gZXZlbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVJpY2h0ZXh0KCk7XG4gICAgICAgICAgICAgICAgLy8g5pu05paw5a+M5paH5pys44CB5pu05paw5a696auYXG4gICAgICAgICAgICAgICAgbGV0IHsgd2lkdGgsIGhlaWdodCB9ID0gZ2V0UmljaHRleHRDb250ZW50U2l6ZShyaWNodGV4dEluc3RhbmNlLmVkaXRhYmxlKTtcbiAgICAgICAgICAgICAgICBNaW5kVHJhbnNmb3Jtcy5zZXRUb3BpYyh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQsIGV2ZW50LnZhbHVlLCB3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb21wb3NpdGlvbiQgPSByaWNodGV4dEluc3RhbmNlLnBsYWl0Q29tcG9zaXRpb24ucGlwZShkZWJvdW5jZVRpbWUoMCkpLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICBsZXQgeyB3aWR0aCwgaGVpZ2h0IH0gPSBnZXRSaWNodGV4dENvbnRlbnRTaXplKHJpY2h0ZXh0SW5zdGFuY2UuZWRpdGFibGUpO1xuICAgICAgICAgICAgaWYgKHdpZHRoIDwgTk9ERV9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB3aWR0aCA9IE5PREVfTUlOX1dJRFRIO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmlzQ29tcG9zaW5nICYmICh3aWR0aCAhPT0gdGhpcy5ub2RlLm9yaWdpbi53aWR0aCB8fCBoZWlnaHQgIT09IHRoaXMubm9kZS5vcmlnaW4uaGVpZ2h0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnQ6IFBhcnRpYWw8TWluZEVsZW1lbnQ+ID0ge1xuICAgICAgICAgICAgICAgICAgICB3aWR0aDogd2lkdGggLyB0aGlzLmJvYXJkLnZpZXdwb3J0Lnpvb20sXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0IC8gdGhpcy5ib2FyZC52aWV3cG9ydC56b29tXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXRoID0gUGxhaXRCb2FyZC5maW5kUGF0aCh0aGlzLmJvYXJkLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZSh0aGlzLmJvYXJkLCBuZXdFbGVtZW50LCBwYXRoKTtcbiAgICAgICAgICAgICAgICBNRVJHSU5HLnNldCh0aGlzLmJvYXJkLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IG1vdXNlZG93biQgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZWRvd24nKS5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwb2ludCA9IHRyYW5zZm9ybVBvaW50KHRoaXMuYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgUGxhaXRCb2FyZC5nZXRIb3N0KHRoaXMuYm9hcmQpKSk7XG4gICAgICAgICAgICBjb25zdCBjbGlja0luTm9kZSA9IGhpdE1pbmRFbGVtZW50KHRoaXMuYm9hcmQsIHBvaW50LCB0aGlzLmVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGNsaWNrSW5Ob2RlICYmICFoYXNFZGl0YWJsZVRhcmdldChyaWNodGV4dEluc3RhbmNlLmVkaXRvciwgZXZlbnQudGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjbGlja0luTm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjb21wb3NpdGlvbiBpbnB1dCBzdGF0ZSwgbGlrZTogQ2hpbmVzZSBJTUUgQ29tcG9zaXRpb24gSW5wdXRcbiAgICAgICAgICAgICAgICB0aW1lcigwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVkaXRvciA9IHJpY2h0ZXh0SW5zdGFuY2UuZWRpdG9yO1xuICAgICAgICBjb25zdCB7IGtleWRvd24gfSA9IGVkaXRvcjtcbiAgICAgICAgZWRpdG9yLmtleWRvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBleGl0SGFuZGxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3QWN0aXZlRygpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW5hYmxlTWFza0coKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFldmVudC5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgZXhpdEhhbmRsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZHJhd0FjdGl2ZUcoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVuYWJsZU1hc2tHKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGV4aXRIYW5kbGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXdBY3RpdmVHKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5kcmF3TWFza0coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZXhpdEhhbmRsZSA9ICgpID0+IHtcbiAgICAgICAgICAgIC8vIHVuc3Vic2NyaWJlXG4gICAgICAgICAgICB2YWx1ZUNoYW5nZSQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIGNvbXBvc2l0aW9uJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgbW91c2Vkb3duJC51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgZWRpdG9yLmtleWRvd24gPSBrZXlkb3duOyAvLyByZXNldCBrZXlkb3duXG4gICAgICAgICAgICAvLyBlZGl0YWJsZSBzdGF0dXNcbiAgICAgICAgICAgIE1FUkdJTkcuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgICAgIHJpY2h0ZXh0SW5zdGFuY2UucGxhaXRSZWFkb25seSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnJpY2h0ZXh0Q29tcG9uZW50UmVmPy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIHRoaXMuaXNFZGl0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgdXBkYXRlTWluZE5vZGVUb3BpY1NpemUodGhpcy5ub2RlLCB0aGlzLnJpY2h0ZXh0RyBhcyBTVkdHRWxlbWVudCwgdGhpcy5pc0VkaXRhYmxlKTtcbiAgICAgICAgICAgIElTX1RFWFRfRURJVEFCTEUuc2V0KHRoaXMuYm9hcmQsIGZhbHNlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB0cmFja0J5ID0gKGluZGV4OiBudW1iZXIsIG5vZGU6IE1pbmROb2RlKSA9PiB7XG4gICAgICAgIHJldHVybiBub2RlLm9yaWdpbi5pZDtcbiAgICB9O1xuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuYWJzdHJhY3RJbmNsdWRlZE91dGxpbmVHPy5yZW1vdmUoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95UmljaHRleHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgaWYgKEVMRU1FTlRfVE9fTk9ERS5nZXQodGhpcy5lbGVtZW50KSA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAgICAgICBFTEVNRU5UX1RPX05PREUuZGVsZXRlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -8,16 +8,26 @@ export class MindEmojiBaseComponent {
|
|
|
8
8
|
this.elementRef = elementRef;
|
|
9
9
|
this.fontSize = 14;
|
|
10
10
|
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
this.elementRef.nativeElement.style.fontSize = `${this.fontSize}px`;
|
|
13
|
+
}
|
|
11
14
|
}
|
|
12
15
|
MindEmojiBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
13
|
-
MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board" }, ngImport: i0 });
|
|
16
|
+
MindEmojiBaseComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.5", type: MindEmojiBaseComponent, inputs: { fontSize: "fontSize", emojiItem: "emojiItem", board: "board", element: "element" }, host: { classAttribute: "mind-node-emoji" }, ngImport: i0 });
|
|
14
17
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: MindEmojiBaseComponent, decorators: [{
|
|
15
|
-
type: Directive
|
|
18
|
+
type: Directive,
|
|
19
|
+
args: [{
|
|
20
|
+
host: {
|
|
21
|
+
class: 'mind-node-emoji'
|
|
22
|
+
}
|
|
23
|
+
}]
|
|
16
24
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { fontSize: [{
|
|
17
25
|
type: Input
|
|
18
26
|
}], emojiItem: [{
|
|
19
27
|
type: Input
|
|
20
28
|
}], board: [{
|
|
21
29
|
type: Input
|
|
30
|
+
}], element: [{
|
|
31
|
+
type: Input
|
|
22
32
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamktYmFzZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL2Vtb2ppL2Vtb2ppLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDOztBQVVyRSxNQUFNLE9BQU8sc0JBQXNCO0lBYS9CLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJQUVELFlBQXNCLFVBQW1DO1FBQW5DLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBZnpELGFBQVEsR0FBVyxFQUFFLENBQUM7SUFlc0MsQ0FBQztJQUU3RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQztJQUN4RSxDQUFDOzttSEFyQlEsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLGlCQUFpQjtxQkFDM0I7aUJBQ0o7aUdBR0csUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZWxlbWVudC1kYXRhJztcbmltcG9ydCB7IFBsYWl0Qm9hcmQgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBNaW5kRWxlbWVudCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnbWluZC1ub2RlLWVtb2ppJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgTWluZEVtb2ppQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBmb250U2l6ZTogbnVtYmVyID0gMTQ7XG5cbiAgICBASW5wdXQoKVxuICAgIGVtb2ppSXRlbSE6IEVtb2ppSXRlbTtcblxuICAgIEBJbnB1dCgpXG4gICAgYm9hcmQhOiBQbGFpdEJvYXJkO1xuXG4gICAgQElucHV0KClcbiAgICBlbGVtZW50ITogTWluZEVsZW1lbnQ8RW1vamlEYXRhPjtcblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmZvbnRTaXplID0gYCR7dGhpcy5mb250U2l6ZX1weGA7XG4gICAgfVxufVxuIl19
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MindElement
|
|
1
|
+
import { MindElement } from '../../interfaces';
|
|
2
2
|
import { createForeignObject } from '@plait/richtext';
|
|
3
3
|
import { createG } from '@plait/core';
|
|
4
4
|
import { getRectangleByNode } from '../../utils/graph';
|
|
@@ -16,8 +16,8 @@ export class EmojiDrawer {
|
|
|
16
16
|
this.componentRef = this.viewContainerRef.createComponent(componentType);
|
|
17
17
|
this.componentRef.instance.emojiItem = emoji;
|
|
18
18
|
this.componentRef.instance.board = this.board;
|
|
19
|
-
|
|
20
|
-
this.componentRef.instance.fontSize =
|
|
19
|
+
this.componentRef.instance.element = element;
|
|
20
|
+
this.componentRef.instance.fontSize = getEmojiFontSize(element);
|
|
21
21
|
}
|
|
22
22
|
get nativeElement() {
|
|
23
23
|
if (this.componentRef) {
|
|
@@ -43,19 +43,16 @@ export class EmojisDrawer {
|
|
|
43
43
|
drawEmojis(element) {
|
|
44
44
|
this.destroy();
|
|
45
45
|
if (MindElement.hasEmojis(element)) {
|
|
46
|
-
const node = MindElement.getNode(element);
|
|
47
46
|
this.g = createG();
|
|
48
47
|
this.g.classList.add('emojis');
|
|
49
48
|
let { x, y } = getRectangleByNode(MindElement.getNode(element));
|
|
50
49
|
x = x + NodeSpace.getEmojiHorizontalSpace(element);
|
|
51
50
|
y = y + NodeSpace.getEmojiVerticalSpace(element);
|
|
52
51
|
const { width, height } = getEmojisRectangle(element);
|
|
53
|
-
const fontSize = getEmojiFontSize(element);
|
|
54
52
|
const foreignObject = createForeignObject(x, y, width, height);
|
|
55
53
|
this.g.append(foreignObject);
|
|
56
54
|
const container = document.createElement('div');
|
|
57
55
|
container.classList.add('node-emojis-container');
|
|
58
|
-
container.classList.add(`emoji-font-size-${fontSize}`);
|
|
59
56
|
foreignObject.append(container);
|
|
60
57
|
this.emojiDrawers = element.data.emojis.map(emojiItem => {
|
|
61
58
|
const drawer = new EmojiDrawer(this.board, this.viewContainerRef);
|
|
@@ -77,4 +74,4 @@ export class EmojisDrawer {
|
|
|
77
74
|
this.emojiDrawers = [];
|
|
78
75
|
}
|
|
79
76
|
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuZHJhd2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbWluZC9zcmMvcGx1Z2lucy9lbW9qaS9lbW9qaS5kcmF3ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUF3QixXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkQsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFBb0IsS0FBMEIsRUFBVSxnQkFBa0M7UUFBdEUsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFBVSxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBRjFGLGlCQUFZLEdBQWdELElBQUksQ0FBQztJQUU0QixDQUFDO0lBRTlGLElBQUksQ0FBQyxLQUFnQixFQUFFLE9BQStCO1FBQ2xELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNmLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUM3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtB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O1FBQ0gsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1IsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNuQjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbW9qaURhdGEsIEVtb2ppSXRlbSwgTWluZEVsZW1lbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmRFbW9qaUJhc2VDb21wb25lbnQgfSBmcm9tICcuL2Vtb2ppLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IFBsYWl0TWluZEVtb2ppQm9hcmQgfSBmcm9tICcuL3dpdGgtbWluZC1lbW9qaSc7XG5pbXBvcnQgeyBjcmVhdGVGb3JlaWduT2JqZWN0IH0gZnJvbSAnQHBsYWl0L3JpY2h0ZXh0JztcbmltcG9ydCB7IGNyZWF0ZUcgfSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBnZXRSZWN0YW5nbGVCeU5vZGUgfSBmcm9tICcuLi8uLi91dGlscy9ncmFwaCc7XG5pbXBvcnQgeyBnZXRFbW9qaUZvbnRTaXplLCBnZXRFbW9qaXNSZWN0YW5nbGUgfSBmcm9tICcuL2Vtb2ppJztcbmltcG9ydCB7IE5vZGVTcGFjZSB9IGZyb20gJy4uLy4uL3V0aWxzL25vZGUtc3BhY2UnO1xuXG5leHBvcnQgY2xhc3MgRW1vamlEcmF3ZXIge1xuICAgIGNvbXBvbmVudFJlZjogQ29tcG9uZW50UmVmPE1pbmRFbW9qaUJhc2VDb21wb25lbnQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJvYXJkOiBQbGFpdE1pbmRFbW9qaUJvYXJkLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHt9XG5cbiAgICBkcmF3KGVtb2ppOiBFbW9qaUl0ZW0sIGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT4pIHtcbiAgICAgICAgdGhpcy5kZXN0cm95KCk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGUgPSB0aGlzLmJvYXJkLmRyYXdFbW9qaShlbW9qaSwgZWxlbWVudCk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gdGhpcy52aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRUeXBlKTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZW1vamlJdGVtID0gZW1vamk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmJvYXJkID0gdGhpcy5ib2FyZDtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmZvbnRTaXplID0gZ2V0RW1vamlGb250U2l6ZShlbGVtZW50KTtcbiAgICB9XG5cbiAgICBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubmF0aXZlRWxlbWVudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGVzdHJveSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFbW9qaXNEcmF3ZXIge1xuICAgIGVtb2ppRHJhd2VyczogRW1vamlEcmF3ZXJbXSA9IFtdO1xuXG4gICAgZz86IFNWR0dFbGVtZW50O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBib2FyZDogUGxhaXRNaW5kRW1vamlCb2FyZCwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgZHJhd0Vtb2ppcyhlbGVtZW50OiBNaW5kRWxlbWVudCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3koKTtcbiAgICAgICAgaWYgKE1pbmRFbGVtZW50Lmhhc0Vtb2ppcyhlbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5nID0gY3JlYXRlRygpO1xuICAgICAgICAgICAgdGhpcy5nLmNsYXNzTGlzdC5hZGQoJ2Vtb2ppcycpO1xuICAgICAgICAgICAgbGV0IHsgeCwgeSB9ID0gZ2V0UmVjdGFuZ2xlQnlOb2RlKE1pbmRFbGVtZW50LmdldE5vZGUoZWxlbWVudCkpO1xuICAgICAgICAgICAgeCA9IHggKyBOb2RlU3BhY2UuZ2V0RW1vamlIb3Jpem9udGFsU3BhY2UoZWxlbWVudCk7XG4gICAgICAgICAgICB5ID0geSArIE5vZGVTcGFjZS5nZXRFbW9qaVZlcnRpY2FsU3BhY2UoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGdldEVtb2ppc1JlY3RhbmdsZShlbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGZvcmVpZ25PYmplY3QgPSBjcmVhdGVGb3JlaWduT2JqZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpO1xuICAgICAgICAgICAgdGhpcy5nLmFwcGVuZChmb3JlaWduT2JqZWN0KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ25vZGUtZW1vamlzLWNvbnRhaW5lcicpO1xuICAgICAgICAgICAgZm9yZWlnbk9iamVjdC5hcHBlbmQoY29udGFpbmVyKTtcbiAgICAgICAgICAgIHRoaXMuZW1vamlEcmF3ZXJzID0gZWxlbWVudC5kYXRhLmVtb2ppcy5tYXAoZW1vamlJdGVtID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkcmF3ZXIgPSBuZXcgRW1vamlEcmF3ZXIodGhpcy5ib2FyZCwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICAgICAgICAgICAgICBkcmF3ZXIuZHJhdyhlbW9qaUl0ZW0sIGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHJldHVybiBkcmF3ZXI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZW1vamlEcmF3ZXJzLmZvckVhY2goZHJhd2VyID0+IHtcbiAgICAgICAgICAgICAgICBjb250YWluZXIuYXBwZW5kKGRyYXdlci5uYXRpdmVFbGVtZW50ISk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBkZXN0cm95KCkge1xuICAgICAgICBpZiAodGhpcy5nKSB7XG4gICAgICAgICAgICB0aGlzLmcucmVtb3ZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5lbW9qaURyYXdlcnMuZm9yRWFjaChkcmF3ZXIgPT4gZHJhd2VyLmRlc3Ryb3koKSk7XG4gICAgICAgIHRoaXMuZW1vamlEcmF3ZXJzID0gW107XG4gICAgfVxufVxuIl19
|
|
@@ -2,14 +2,14 @@ import { PlaitMind } from '../../interfaces';
|
|
|
2
2
|
export function getEmojisRectangle(element) {
|
|
3
3
|
const count = element.data.emojis.length;
|
|
4
4
|
const fontSize = getEmojiFontSize(element);
|
|
5
|
-
return { width: fontSize * count, height:
|
|
5
|
+
return { width: fontSize * count + (count - 1) * 4, height: element.height };
|
|
6
6
|
}
|
|
7
7
|
export function getEmojiFontSize(element) {
|
|
8
8
|
if (PlaitMind.isMind(element)) {
|
|
9
|
-
return 18;
|
|
9
|
+
return 18 + 2;
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
return 14;
|
|
12
|
+
return 14 + 2;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1vamkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9taW5kL3NyYy9wbHVnaW5zL2Vtb2ppL2Vtb2ppLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBMEIsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFckUsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE9BQStCO0lBQzlELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsR0FBRyxLQUFLLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDakYsQ0FBQztBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUErQjtJQUM1RCxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDM0IsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO1NBQU07UUFDSCxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7S0FDakI7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW1vamlEYXRhLCBNaW5kRWxlbWVudCwgUGxhaXRNaW5kIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbW9qaXNSZWN0YW5nbGUoZWxlbWVudDogTWluZEVsZW1lbnQ8RW1vamlEYXRhPikge1xuICAgIGNvbnN0IGNvdW50ID0gZWxlbWVudC5kYXRhLmVtb2ppcy5sZW5ndGg7XG4gICAgY29uc3QgZm9udFNpemUgPSBnZXRFbW9qaUZvbnRTaXplKGVsZW1lbnQpO1xuICAgIHJldHVybiB7IHdpZHRoOiBmb250U2l6ZSAqIGNvdW50ICsgKGNvdW50IC0gMSkgKiA0LCBoZWlnaHQ6IGVsZW1lbnQuaGVpZ2h0IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbW9qaUZvbnRTaXplKGVsZW1lbnQ6IE1pbmRFbGVtZW50PEVtb2ppRGF0YT4pIHtcbiAgICBpZiAoUGxhaXRNaW5kLmlzTWluZChlbGVtZW50KSkge1xuICAgICAgICByZXR1cm4gMTggKyAyO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAxNCArIDI7XG4gICAgfVxufVxuIl19
|
|
@@ -35,6 +35,7 @@ export const withAbstract = (board) => {
|
|
|
35
35
|
const endPoint = transformPoint(board, toPoint(event.x, event.y, host));
|
|
36
36
|
touchedAbstract = handleTouchedAbstract(board, touchedAbstract, endPoint);
|
|
37
37
|
if (abstractHandlePosition && activeAbstractElement) {
|
|
38
|
+
event.preventDefault();
|
|
38
39
|
const abstractComponent = PlaitElement.getComponent(activeAbstractElement);
|
|
39
40
|
const element = abstractComponent.element;
|
|
40
41
|
const nodeLayout = MindQueries.getCorrectLayoutByElement(activeAbstractElement);
|
|
@@ -102,4 +103,4 @@ export const withAbstract = (board) => {
|
|
|
102
103
|
};
|
|
103
104
|
return board;
|
|
104
105
|
};
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBR1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBK0MsQ0FBQztJQUNwRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBeUMsQ0FBQztJQUM5QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENB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QUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLGFBQWEsRUFBRSxDQUFDO2FBQ3ZIO1lBRUQsaUJBQWtCLENBQUMsNkJBQTZCLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDdEY7UUFDRCxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckIsQ0FBQyxDQUFDO0lBRUYsS0FBSyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtRQUNsQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQ3ZCLHNCQUFzQixHQUFHLFNBQVMsQ0FBQztRQUNuQyxJQUFJLHFCQUFxQixFQUFFO1lBQ3ZCLElBQUksUUFBUSxFQUFFLGNBQWMsRUFBRTtnQkFDMUIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNwRDtZQUVELElBQUksV0FBVyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLHFCQUFxQixDQUFDLENBQUM7Z0JBQy9ELFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUNoRDtpQkFBTTtnQkFDSCxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMscUJBQXFCLENBQXNCLENBQUM7Z0JBQ2hHLGlCQUFrQixDQUFDLDZCQUE2QixFQUFFLENBQUM7YUFDdEQ7WUFDRCxxQkFBcUIsR0FBRyxTQUFTLENBQUM7U0FDckM7UUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCT0FSRF9UT19IT1NULFxuICAgIFBsYWl0Qm9hcmQsXG4gICAgUGxhaXRFbGVtZW50LFxuICAgIFBsYWl0UGx1Z2luLFxuICAgIFBvaW50LFxuICAgIFRyYW5zZm9ybXMsXG4gICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyxcbiAgICB0b1BvaW50LFxuICAgIHRyYW5zZm9ybVBvaW50XG59IGZyb20gJ0BwbGFpdC9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Tm9kZSwgTGF5b3V0Tm9kZSwgTWluZExheW91dFR5cGUsIGlzSG9yaXpvbnRhbExheW91dCwgaXNTdGFuZGFyZExheW91dCB9IGZyb20gJ0BwbGFpdC9sYXlvdXRzJztcbmltcG9ydCB7IEFic3RyYWN0SGFuZGxlUG9zaXRpb24sIEFic3RyYWN0UmVzaXplU3RhdGUsIE1pbmRFbGVtZW50LCBQbGFpdEFic3RyYWN0Qm9hcmQgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IE1pbmROb2RlQ29tcG9uZW50LCBNaW5kUXVlcmllcyB9IGZyb20gJy4uL3B1YmxpYy1hcGknO1xuaW1wb3J0IHsgZmluZExvY2F0aW9uTGVmdEluZGV4LCBnZXRIaXRBYnN0cmFjdEhhbmRsZSwgZ2V0TG9jYXRpb25TY29wZSwgaGFuZGxlVG91Y2hlZEFic3RyYWN0IH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvcmVzaXplJztcbmltcG9ydCB7IHNlcGFyYXRlQ2hpbGRyZW4gfSBmcm9tICcuLi91dGlscy9hYnN0cmFjdC9jb21tb24nO1xuXG5leHBvcnQgY29uc3Qgd2l0aEFic3RyYWN0OiBQbGFpdFBsdWdpbiA9IChib2FyZDogUGxhaXRCb2FyZCkgPT4ge1xuICAgIGNvbnN0IG5ld0JvYXJkID0gYm9hcmQgYXMgUGxhaXRCb2FyZCAmIFBsYWl0QWJzdHJhY3RCb2FyZDtcblxuICAgIGNvbnN0IHsgbW91c2Vkb3duLCBtb3VzZW1vdmUsIG1vdXNldXAgfSA9IGJvYXJkO1xuICAgIGxldCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQ6IFBsYWl0RWxlbWVudCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbjogQWJzdHJhY3RIYW5kbGVQb3NpdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBsZXQgdG91Y2hlZEFic3RyYWN0OiBQbGFpdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IHN0YXJ0UG9pbnQ6IFBvaW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBuZXdQcm9wZXJ0eTogeyBlbmQ6IG51bWJlciB9IHwgeyBzdGFydDogbnVtYmVyIH0gfCB1bmRlZmluZWQ7XG5cbiAgICBib2FyZC5tb3VzZWRvd24gPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgYWN0aXZlQWJzdHJhY3RFbGVtZW50cyA9IGdldFNlbGVjdGVkRWxlbWVudHMoYm9hcmQpLmZpbHRlcihlbGVtZW50ID0+IEFic3RyYWN0Tm9kZS5pc0Fic3RyYWN0KGVsZW1lbnQpKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgcG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIGFjdGl2ZUFic3RyYWN0RWxlbWVudCA9IGFjdGl2ZUFic3RyYWN0RWxlbWVudHMuZmluZChlbGVtZW50ID0+IHtcbiAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPSBnZXRIaXRBYnN0cmFjdEhhbmRsZShib2FyZCwgZWxlbWVudCBhcyBNaW5kRWxlbWVudCwgcG9pbnQpO1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuc3RhcnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFic3RyYWN0SGFuZGxlUG9zaXRpb247XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSBwb2ludDtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIG1vdXNlZG93bihldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNlbW92ZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKTtcbiAgICAgICAgY29uc3QgaG9zdCA9IEJPQVJEX1RPX0hPU1QuZ2V0KGJvYXJkKTtcbiAgICAgICAgY29uc3QgZW5kUG9pbnQgPSB0cmFuc2Zvcm1Qb2ludChib2FyZCwgdG9Qb2ludChldmVudC54LCBldmVudC55LCBob3N0ISkpO1xuXG4gICAgICAgIHRvdWNoZWRBYnN0cmFjdCA9IGhhbmRsZVRvdWNoZWRBYnN0cmFjdChib2FyZCwgdG91Y2hlZEFic3RyYWN0LCBlbmRQb2ludCk7XG5cbiAgICAgICAgaWYgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gJiYgYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBhYnN0cmFjdENvbXBvbmVudC5lbGVtZW50O1xuICAgICAgICAgICAgY29uc3Qgbm9kZUxheW91dCA9IE1pbmRRdWVyaWVzLmdldENvcnJlY3RMYXlvdXRCeUVsZW1lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KSBhcyBNaW5kTGF5b3V0VHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGlzSG9yaXpvbnRhbExheW91dChub2RlTGF5b3V0KTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudEVsZW1lbnQgPSBNaW5kRWxlbWVudC5nZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGxldCBjaGlsZHJlbiA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW47XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmVudExheW91dCA9IE1pbmRRdWVyaWVzLmdldExheW91dEJ5RWxlbWVudChwYXJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudExheW91dCkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudEVsZW1lbnQucmlnaHROb2RlQ291bnQhO1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgbGVmdENoaWxkcmVuLCByaWdodENoaWxkcmVuIH0gPSBzZXBhcmF0ZUNoaWxkcmVuKHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5lbmQhIDwgcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSByaWdodENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuc3RhcnQhID49IHJpZ2h0Tm9kZUNvdW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkcmVuID0gbGVmdENoaWxkcmVuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUucmVzaXppbmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZXNpemluZ0xvY2F0aW9uID0gaXNIb3Jpem9udGFsID8gZW5kUG9pbnRbMV0gOiBlbmRQb2ludFswXTtcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IChNaW5kRWxlbWVudC5nZXROb2RlKHBhcmVudEVsZW1lbnQpIGFzIHVua25vd24pIGFzIExheW91dE5vZGU7XG4gICAgICAgICAgICBjb25zdCBzY29wZSA9IGdldExvY2F0aW9uU2NvcGUoYm9hcmQsIGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGNoaWxkcmVuLCBlbGVtZW50LCBwYXJlbnQsIGlzSG9yaXpvbnRhbCk7XG4gICAgICAgICAgICBjb25zdCBsb2NhdGlvbiA9IE1hdGgubWluKHNjb3BlLm1heCwgTWF0aC5tYXgoc2NvcGUubWluLCByZXNpemluZ0xvY2F0aW9uKSk7XG5cbiAgICAgICAgICAgIGxldCBsb2NhdGlvbkluZGV4ID0gZmluZExvY2F0aW9uTGVmdEluZGV4KGJvYXJkLCBjaGlsZHJlbiwgbG9jYXRpb24sIGlzSG9yaXpvbnRhbCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzUHJvcGVydHlVbmNoYW5nZWQgPVxuICAgICAgICAgICAgICAgIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID09PSBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLnN0YXJ0ICYmXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKyAxID09PSAoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEpIHx8XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uZW5kICYmIGxvY2F0aW9uSW5kZXggPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9wZXJ0eVVuY2hhbmdlZCkge1xuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNTdGFuZGFyZExheW91dChwYXJlbnQubGF5b3V0KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByaWdodE5vZGVDb3VudCA9IHBhcmVudC5vcmlnaW4ucmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IGVsZW1lbnQuc3RhcnQhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uSW5kZXggKz0gcmlnaHROb2RlQ291bnQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eSA9XG4gICAgICAgICAgICAgICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgPyB7IHN0YXJ0OiBsb2NhdGlvbkluZGV4ICsgMSB9IDogeyBlbmQ6IGxvY2F0aW9uSW5kZXggfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYWJzdHJhY3RDb21wb25lbnQhLnVwZGF0ZUFic3RyYWN0SW5jbHVkZWRPdXRsaW5lKGFic3RyYWN0SGFuZGxlUG9zaXRpb24sIGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZW1vdmUoZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZXVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIHN0YXJ0UG9pbnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLmVuZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdQcm9wZXJ0eSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhdGggPSBQbGFpdEJvYXJkLmZpbmRQYXRoKGJvYXJkLCBhY3RpdmVBYnN0cmFjdEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZShib2FyZCwgbmV3UHJvcGVydHksIHBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhYnN0cmFjdENvbXBvbmVudCA9IFBsYWl0RWxlbWVudC5nZXRDb21wb25lbnQoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSBhcyBNaW5kTm9kZUNvbXBvbmVudDtcbiAgICAgICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFjdGl2ZUFic3RyYWN0RWxlbWVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBtb3VzZXVwKGV2ZW50KTtcbiAgICB9O1xuICAgIHJldHVybiBib2FyZDtcbn07XG4iXX0=
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hYnN0cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL21pbmQvc3JjL3BsdWdpbnMvd2l0aC1hYnN0cmFjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsYUFBYSxFQUNiLFVBQVUsRUFDVixZQUFZLEVBR1osVUFBVSxFQUNWLG1CQUFtQixFQUNuQixPQUFPLEVBQ1AsY0FBYyxFQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsWUFBWSxFQUE4QixrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQzdHLE9BQU8sRUFBcUIsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSxnQkFBZ0IsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hJLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTVELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsQ0FBQyxLQUFpQixFQUFFLEVBQUU7SUFDM0QsTUFBTSxRQUFRLEdBQUcsS0FBd0MsQ0FBQztJQUUxRCxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDaEQsSUFBSSxxQkFBK0MsQ0FBQztJQUNwRCxJQUFJLHNCQUEwRCxDQUFDO0lBQy9ELElBQUksZUFBeUMsQ0FBQztJQUM5QyxJQUFJLFVBQTZCLENBQUM7SUFDbEMsSUFBSSxXQUE0RCxDQUFDO0lBRWpFLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDcEMsTUFBTSxzQkFBc0IsR0FBRyxtQkFBbUIsQ0FBQyxLQUFLLENB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QixLQUFLLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsYUFBYSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQzthQUN2SDtZQUVELGlCQUFrQixDQUFDLDZCQUE2QixDQUFDLHNCQUFzQixFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQ3RGO1FBQ0QsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUVGLEtBQUssQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7UUFDbEMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUN2QixzQkFBc0IsR0FBRyxTQUFTLENBQUM7UUFDbkMsSUFBSSxxQkFBcUIsRUFBRTtZQUN2QixJQUFJLFFBQVEsRUFBRSxjQUFjLEVBQUU7Z0JBQzFCLFFBQVEsQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDcEQ7WUFFRCxJQUFJLFdBQVcsRUFBRTtnQkFDYixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO2dCQUMvRCxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7YUFDaEQ7aUJBQU07Z0JBQ0gsTUFBTSxpQkFBaUIsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFzQixDQUFDO2dCQUNoRyxpQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2FBQ3REO1lBQ0QscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUNGLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQk9BUkRfVE9fSE9TVCxcbiAgICBQbGFpdEJvYXJkLFxuICAgIFBsYWl0RWxlbWVudCxcbiAgICBQbGFpdFBsdWdpbixcbiAgICBQb2ludCxcbiAgICBUcmFuc2Zvcm1zLFxuICAgIGdldFNlbGVjdGVkRWxlbWVudHMsXG4gICAgdG9Qb2ludCxcbiAgICB0cmFuc2Zvcm1Qb2ludFxufSBmcm9tICdAcGxhaXQvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdE5vZGUsIExheW91dE5vZGUsIE1pbmRMYXlvdXRUeXBlLCBpc0hvcml6b250YWxMYXlvdXQsIGlzU3RhbmRhcmRMYXlvdXQgfSBmcm9tICdAcGxhaXQvbGF5b3V0cyc7XG5pbXBvcnQgeyBBYnN0cmFjdEhhbmRsZVBvc2l0aW9uLCBBYnN0cmFjdFJlc2l6ZVN0YXRlLCBNaW5kRWxlbWVudCwgUGxhaXRBYnN0cmFjdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNaW5kTm9kZUNvbXBvbmVudCwgTWluZFF1ZXJpZXMgfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcbmltcG9ydCB7IGZpbmRMb2NhdGlvbkxlZnRJbmRleCwgZ2V0SGl0QWJzdHJhY3RIYW5kbGUsIGdldExvY2F0aW9uU2NvcGUsIGhhbmRsZVRvdWNoZWRBYnN0cmFjdCB9IGZyb20gJy4uL3V0aWxzL2Fic3RyYWN0L3Jlc2l6ZSc7XG5pbXBvcnQgeyBzZXBhcmF0ZUNoaWxkcmVuIH0gZnJvbSAnLi4vdXRpbHMvYWJzdHJhY3QvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IHdpdGhBYnN0cmFjdDogUGxhaXRQbHVnaW4gPSAoYm9hcmQ6IFBsYWl0Qm9hcmQpID0+IHtcbiAgICBjb25zdCBuZXdCb2FyZCA9IGJvYXJkIGFzIFBsYWl0Qm9hcmQgJiBQbGFpdEFic3RyYWN0Qm9hcmQ7XG5cbiAgICBjb25zdCB7IG1vdXNlZG93biwgbW91c2Vtb3ZlLCBtb3VzZXVwIH0gPSBib2FyZDtcbiAgICBsZXQgYWN0aXZlQWJzdHJhY3RFbGVtZW50OiBQbGFpdEVsZW1lbnQgfCB1bmRlZmluZWQ7XG4gICAgbGV0IGFic3RyYWN0SGFuZGxlUG9zaXRpb246IEFic3RyYWN0SGFuZGxlUG9zaXRpb24gfCB1bmRlZmluZWQ7XG4gICAgbGV0IHRvdWNoZWRBYnN0cmFjdDogUGxhaXRFbGVtZW50IHwgdW5kZWZpbmVkO1xuICAgIGxldCBzdGFydFBvaW50OiBQb2ludCB8IHVuZGVmaW5lZDtcbiAgICBsZXQgbmV3UHJvcGVydHk6IHsgZW5kOiBudW1iZXIgfSB8IHsgc3RhcnQ6IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuXG4gICAgYm9hcmQubW91c2Vkb3duID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUFic3RyYWN0RWxlbWVudHMgPSBnZXRTZWxlY3RlZEVsZW1lbnRzKGJvYXJkKS5maWx0ZXIoZWxlbWVudCA9PiBBYnN0cmFjdE5vZGUuaXNBYnN0cmFjdChlbGVtZW50KSk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICBhY3RpdmVBYnN0cmFjdEVsZW1lbnQgPSBhY3RpdmVBYnN0cmFjdEVsZW1lbnRzLmZpbmQoZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uID0gZ2V0SGl0QWJzdHJhY3RIYW5kbGUoYm9hcmQsIGVsZW1lbnQgYXMgTWluZEVsZW1lbnQsIHBvaW50KTtcbiAgICAgICAgICAgIGlmIChuZXdCb2FyZD8uYWJzdHJhY3RSZXNpemUpIHtcbiAgICAgICAgICAgICAgICBuZXdCb2FyZC5hYnN0cmFjdFJlc2l6ZShBYnN0cmFjdFJlc2l6ZVN0YXRlLnN0YXJ0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhYnN0cmFjdEhhbmRsZVBvc2l0aW9uO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoYWN0aXZlQWJzdHJhY3RFbGVtZW50KSB7XG4gICAgICAgICAgICBzdGFydFBvaW50ID0gcG9pbnQ7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBtb3VzZWRvd24oZXZlbnQpO1xuICAgIH07XG5cbiAgICBib2FyZC5tb3VzZW1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZ2V0U2VsZWN0ZWRFbGVtZW50cyhib2FyZCk7XG4gICAgICAgIGNvbnN0IGhvc3QgPSBCT0FSRF9UT19IT1NULmdldChib2FyZCk7XG4gICAgICAgIGNvbnN0IGVuZFBvaW50ID0gdHJhbnNmb3JtUG9pbnQoYm9hcmQsIHRvUG9pbnQoZXZlbnQueCwgZXZlbnQueSwgaG9zdCEpKTtcblxuICAgICAgICB0b3VjaGVkQWJzdHJhY3QgPSBoYW5kbGVUb3VjaGVkQWJzdHJhY3QoYm9hcmQsIHRvdWNoZWRBYnN0cmFjdCwgZW5kUG9pbnQpO1xuXG4gICAgICAgIGlmIChhYnN0cmFjdEhhbmRsZVBvc2l0aW9uICYmIGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGFic3RyYWN0Q29tcG9uZW50LmVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCBub2RlTGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0Q29ycmVjdExheW91dEJ5RWxlbWVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpIGFzIE1pbmRMYXlvdXRUeXBlO1xuICAgICAgICAgICAgY29uc3QgaXNIb3Jpem9udGFsID0gaXNIb3Jpem9udGFsTGF5b3V0KG5vZGVMYXlvdXQpO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50RWxlbWVudCA9IE1pbmRFbGVtZW50LmdldFBhcmVudChlbGVtZW50KTtcblxuICAgICAgICAgICAgbGV0IGNoaWxkcmVuID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbjtcblxuICAgICAgICAgICAgY29uc3QgcGFyZW50TGF5b3V0ID0gTWluZFF1ZXJpZXMuZ2V0TGF5b3V0QnlFbGVtZW50KHBhcmVudEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGlzU3RhbmRhcmRMYXlvdXQocGFyZW50TGF5b3V0KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50RWxlbWVudC5yaWdodE5vZGVDb3VudCE7XG4gICAgICAgICAgICAgICAgY29uc3QgeyBsZWZ0Q2hpbGRyZW4sIHJpZ2h0Q2hpbGRyZW4gfSA9IHNlcGFyYXRlQ2hpbGRyZW4ocGFyZW50RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYgKChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLmVuZCEgPCByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbiA9IHJpZ2h0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICgoYWN0aXZlQWJzdHJhY3RFbGVtZW50IGFzIE1pbmRFbGVtZW50KS5zdGFydCEgPj0gcmlnaHROb2RlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW4gPSBsZWZ0Q2hpbGRyZW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmV3Qm9hcmQ/LmFic3RyYWN0UmVzaXplKSB7XG4gICAgICAgICAgICAgICAgbmV3Qm9hcmQuYWJzdHJhY3RSZXNpemUoQWJzdHJhY3RSZXNpemVTdGF0ZS5yZXNpemluZyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc2l6aW5nTG9jYXRpb24gPSBpc0hvcml6b250YWwgPyBlbmRQb2ludFsxXSA6IGVuZFBvaW50WzBdO1xuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gKE1pbmRFbGVtZW50LmdldE5vZGUocGFyZW50RWxlbWVudCkgYXMgdW5rbm93bikgYXMgTGF5b3V0Tm9kZTtcbiAgICAgICAgICAgIGNvbnN0IHNjb3BlID0gZ2V0TG9jYXRpb25TY29wZShib2FyZCwgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgY2hpbGRyZW4sIGVsZW1lbnQsIHBhcmVudCwgaXNIb3Jpem9udGFsKTtcbiAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uID0gTWF0aC5taW4oc2NvcGUubWF4LCBNYXRoLm1heChzY29wZS5taW4sIHJlc2l6aW5nTG9jYXRpb24pKTtcblxuICAgICAgICAgICAgbGV0IGxvY2F0aW9uSW5kZXggPSBmaW5kTG9jYXRpb25MZWZ0SW5kZXgoYm9hcmQsIGNoaWxkcmVuLCBsb2NhdGlvbiwgaXNIb3Jpem9udGFsKTtcblxuICAgICAgICAgICAgY29uc3QgaXNQcm9wZXJ0eVVuY2hhbmdlZCA9XG4gICAgICAgICAgICAgICAgKGFic3RyYWN0SGFuZGxlUG9zaXRpb24gPT09IEFic3RyYWN0SGFuZGxlUG9zaXRpb24uc3RhcnQgJiZcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25JbmRleCArIDEgPT09IChhY3RpdmVBYnN0cmFjdEVsZW1lbnQgYXMgTWluZEVsZW1lbnQpLnN0YXJ0ISkgfHxcbiAgICAgICAgICAgICAgICAoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5lbmQgJiYgbG9jYXRpb25JbmRleCA9PT0gKGFjdGl2ZUFic3RyYWN0RWxlbWVudCBhcyBNaW5kRWxlbWVudCkuZW5kISk7XG5cbiAgICAgICAgICAgIGlmIChpc1Byb3BlcnR5VW5jaGFuZ2VkKSB7XG4gICAgICAgICAgICAgICAgbmV3UHJvcGVydHkgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1N0YW5kYXJkTGF5b3V0KHBhcmVudC5sYXlvdXQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0Tm9kZUNvdW50ID0gcGFyZW50Lm9yaWdpbi5yaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0ID0gZWxlbWVudC5zdGFydCE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSByaWdodE5vZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25JbmRleCArPSByaWdodE5vZGVDb3VudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIG5ld1Byb3BlcnR5ID1cbiAgICAgICAgICAgICAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9PT0gQWJzdHJhY3RIYW5kbGVQb3NpdGlvbi5zdGFydCA/IHsgc3RhcnQ6IGxvY2F0aW9uSW5kZXggKyAxIH0gOiB7IGVuZDogbG9jYXRpb25JbmRleCB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhYnN0cmFjdENvbXBvbmVudCEudXBkYXRlQWJzdHJhY3RJbmNsdWRlZE91dGxpbmUoYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiwgbG9jYXRpb24pO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNlbW92ZShldmVudCk7XG4gICAgfTtcblxuICAgIGJvYXJkLm1vdXNldXAgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgc3RhcnRQb2ludCA9IHVuZGVmaW5lZDtcbiAgICAgICAgYWJzdHJhY3RIYW5kbGVQb3NpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGFjdGl2ZUFic3RyYWN0RWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG5ld0JvYXJkPy5hYnN0cmFjdFJlc2l6ZSkge1xuICAgICAgICAgICAgICAgIG5ld0JvYXJkLmFic3RyYWN0UmVzaXplKEFic3RyYWN0UmVzaXplU3RhdGUuZW5kKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1Byb3BlcnR5KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9IFBsYWl0Qm9hcmQuZmluZFBhdGgoYm9hcmQsIGFjdGl2ZUFic3RyYWN0RWxlbWVudCk7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlKGJvYXJkLCBuZXdQcm9wZXJ0eSwgcGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFic3RyYWN0Q29tcG9uZW50ID0gUGxhaXRFbGVtZW50LmdldENvbXBvbmVudChhY3RpdmVBYnN0cmFjdEVsZW1lbnQpIGFzIE1pbmROb2RlQ29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGFic3RyYWN0Q29tcG9uZW50IS51cGRhdGVBYnN0cmFjdEluY2x1ZGVkT3V0bGluZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWN0aXZlQWJzdHJhY3RFbGVtZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIG1vdXNldXAoZXZlbnQpO1xuICAgIH07XG4gICAgcmV0dXJuIGJvYXJkO1xufTtcbiJdfQ==
|