@esotericsoftware/spine-core 4.2.98 → 4.2.100

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.
@@ -87,8 +87,8 @@ export declare class Downloader {
87
87
  private callbacks;
88
88
  rawDataUris: StringMap<string>;
89
89
  dataUriToString(dataUri: string): string;
90
- base64ToUint8Array(base64: string): Uint8Array<ArrayBuffer>;
91
- dataUriToUint8Array(dataUri: string): Uint8Array<ArrayBuffer>;
90
+ base64ToUint8Array(base64: string): Uint8Array;
91
+ dataUriToUint8Array(dataUri: string): Uint8Array;
92
92
  downloadText(url: string, success: (data: string) => void, error: (status: number, responseText: string) => void): void;
93
93
  downloadJson(url: string, success: (data: object) => void, error: (status: number, responseText: string) => void): void;
94
94
  downloadBinary(url: string, success: (data: Uint8Array) => void, error: (status: number, responseText: string) => void): void;
@@ -128,7 +128,7 @@ export declare class Skeleton {
128
128
  * {@link #setSlotsToSetupPose()}. Also, often {@link AnimationState#apply()} is called before the next time the
129
129
  * skeleton is rendered to allow any attachment keys in the current animation(s) to hide or show attachments from the new skin.
130
130
  * @param newSkin May be null. */
131
- setSkin(newSkin: Skin): void;
131
+ setSkin(newSkin: Skin | null): void;
132
132
  /** Finds an attachment by looking in the {@link #skin} and {@link SkeletonData#defaultSkin} using the slot name and attachment
133
133
  * name.
134
134
  *
package/dist/Skeleton.js CHANGED
@@ -658,4 +658,4 @@ export var Physics;
658
658
  /** Physics are not updated but the pose from physics is applied. */
659
659
  Physics[Physics["pose"] = 3] = "pose";
660
660
  })(Physics || (Physics = {}));
661
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFL0U7O2tJQUVrSTtBQUNsSSxNQUFNLE9BQU8sUUFBUTtJQUNaLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLHNDQUFzQztJQUN0QyxJQUFJLENBQWU7SUFFbkIseUZBQXlGO0lBQ3pGLEtBQUssQ0FBYztJQUVuQix5REFBeUQ7SUFDekQsS0FBSyxD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LEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Msc0NBQXNDO1FBQ3RDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELElBQUksU0FBUyxHQUFHLFdBQVcs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QUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsK0ZBQStGO0lBQy9GLGFBQWEsQ0FBRSxDQUFTLEVBQUUsQ0FBUyxFQUFFLE9BQWU7UUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDbkQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4RCxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5QyxDQUFDOztBQUdGLDhFQUE4RTtBQUM5RSxNQUFNLENBQU4sSUFBWSxPQVlYO0FBWkQsV0FBWSxPQUFPO0lBQ2xCLDBDQUEwQztJQUMxQyxxQ0FBSSxDQUFBO0lBRUosNkNBQTZDO0lBQzdDLHVDQUFLLENBQUE7SUFFTCxnRUFBZ0U7SUFDaEUseUNBQU0sQ0FBQTtJQUVOLG9FQUFvRTtJQUNwRSxxQ0FBSSxDQUFBO0FBQ0wsQ0FBQyxFQVpXLE9BQU8sS0FBUCxPQUFPLFFBWWxCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiIEFORCBBTllcbiAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEVTT1RFUklDIFNPRlRXQVJFIExMQyBCRSBMSUFCTEUgRk9SIEFOWVxuICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVNcbiAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUyxcbiAqIEJVU0lORVNTIElOVEVSUlVQVElPTiwgT1IgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFMpIEhPV0VWRVIgQ0FVU0VEIEFORFxuICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlRcbiAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRlxuICogVEhFIFNQSU5FIFJVTlRJTUVTLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLlxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5pbXBvcnQgeyBBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQ2xpcHBpbmdBdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvQ2xpcHBpbmdBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBNZXNoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL01lc2hBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBQYXRoQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1BhdGhBdHRhY2htZW50LmpzXCI7XG5pbXBvcnQgeyBSZWdpb25BdHRhY2htZW50IH0gZnJvbSBcIi4vYXR0YWNobWVudHMvUmVnaW9uQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgQm9uZSB9IGZyb20gXCIuL0JvbmUuanNcIjtcbmltcG9ydCB7IElrQ29uc3RyYWludCB9IGZyb20gXCIuL0lrQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGF0aENvbnN0cmFpbnQgfSBmcm9tIFwiLi9QYXRoQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgUGh5c2ljc0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9QaHlzaWNzQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgU2tlbGV0b25DbGlwcGluZyB9IGZyb20gXCIuL1NrZWxldG9uQ2xpcHBpbmcuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uRGF0YSB9IGZyb20gXCIuL1NrZWxldG9uRGF0YS5qc1wiO1xuaW1wb3J0IHsgU2tpbiB9IGZyb20gXCIuL1NraW4uanNcIjtcbmltcG9ydCB7IFNsb3QgfSBmcm9tIFwiLi9TbG90LmpzXCI7XG5pbXBvcnQgeyBUcmFuc2Zvcm1Db25zdHJhaW50IH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludC5qc1wiO1xuaW1wb3J0IHsgVXBkYXRhYmxlIH0gZnJvbSBcIi4vVXBkYXRhYmxlLmpzXCI7XG5pbXBvcnQgeyBDb2xvciwgVXRpbHMsIE1hdGhVdGlscywgVmVjdG9yMiwgTnVtYmVyQXJyYXlMaWtlIH0gZnJvbSBcIi4vVXRpbHMuanNcIjtcblxuLyoqIFN0b3JlcyB0aGUgY3VycmVudCBwb3NlIGZvciBhIHNrZWxldG9uLlxuICpcbiAqIFNlZSBbSW5zdGFuY2Ugb2JqZWN0c10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtYXJjaGl0ZWN0dXJlI0luc3RhbmNlLW9iamVjdHMpIGluIHRoZSBTcGluZSBSdW50aW1lcyBHdWlkZS4gKi9cbmV4cG9ydCBjbGFzcyBTa2VsZXRvbiB7XG5cdHByaXZhdGUgc3RhdGljIHF1YWRUcmlhbmdsZXMgPSBbMCwgMSwgMiwgMiwgMywgMF07XG5cdHN0YXRpYyB5RG93biA9IGZhbHNlO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBzZXR1cCBwb3NlIGRhdGEuICovXG5cdGRhdGE6IFNrZWxldG9uRGF0YTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgYm9uZXMsIHNvcnRlZCBwYXJlbnQgZmlyc3QuIFRoZSByb290IGJvbmUgaXMgYWx3YXlzIHRoZSBmaXJzdCBib25lLiAqL1xuXHRib25lczogQXJyYXk8Qm9uZT47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBzZXR1cCBwb3NlIGRyYXcgb3JkZXIuICovXG5cdHNsb3RzOiBBcnJheTxTbG90PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3Mgc2xvdHMgaW4gdGhlIG9yZGVyIHRoZXkgc2hvdWxkIGJlIGRyYXduLiBUaGUgcmV0dXJuZWQgYXJyYXkgbWF5IGJlIG1vZGlmaWVkIHRvIGNoYW5nZSB0aGUgZHJhdyBvcmRlci4gKi9cblx0ZHJhd09yZGVyOiBBcnJheTxTbG90PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgSUsgY29uc3RyYWludHMuICovXG5cdGlrQ29uc3RyYWludHM6IEFycmF5PElrQ29uc3RyYWludD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHRyYW5zZm9ybSBjb25zdHJhaW50cy4gKi9cblx0dHJhbnNmb3JtQ29uc3RyYWludHM6IEFycmF5PFRyYW5zZm9ybUNvbnN0cmFpbnQ+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBwYXRoIGNvbnN0cmFpbnRzLiAqL1xuXHRwYXRoQ29uc3RyYWludHM6IEFycmF5PFBhdGhDb25zdHJhaW50PjtcblxuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBwaHlzaWNzIGNvbnN0cmFpbnRzLiAqL1xuXHRwaHlzaWNzQ29uc3RyYWludHM6IEFycmF5PFBoeXNpY3NDb25zdHJhaW50PjtcblxuXHQvKiogVGhlIGxpc3Qgb2YgYm9uZXMgYW5kIGNvbnN0cmFpbnRzLCBzb3J0ZWQgaW4gdGhlIG9yZGVyIHRoZXkgc2hvdWxkIGJlIHVwZGF0ZWQsIGFzIGNvbXB1dGVkIGJ5IHtAbGluayAjdXBkYXRlQ2FjaGUoKX0uICovXG5cdF91cGRhdGVDYWNoZSA9IG5ldyBBcnJheTxVcGRhdGFibGU+KCk7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGN1cnJlbnQgc2tpbi4gTWF5IGJlIG51bGwuICovXG5cdHNraW46IFNraW4gfCBudWxsID0gbnVsbDtcblxuXHQvKiogVGhlIGNvbG9yIHRvIHRpbnQgYWxsIHRoZSBza2VsZXRvbidzIGF0dGFjaG1lbnRzLiAqL1xuXHRjb2xvcjogQ29sb3I7XG5cblx0LyoqIFNjYWxlcyB0aGUgZW50aXJlIHNrZWxldG9uIG9uIHRoZSBYIGF4aXMuIFRoaXMgYWZmZWN0cyBhbGwgYm9uZXMsIGV2ZW4gaWYgdGhlIGJvbmUncyB0cmFuc2Zvcm0gbW9kZSBkaXNhbGxvd3Mgc2NhbGVcblx0ICAqIGluaGVyaXRhbmNlLiAqL1xuXHRzY2FsZVggPSAxO1xuXG5cdC8qKiBTY2FsZXMgdGhlIGVudGlyZSBza2VsZXRvbiBvbiB0aGUgWSBheGlzLiBUaGlzIGFmZmVjdHMgYWxsIGJvbmVzLCBldmVuIGlmIHRoZSBib25lJ3MgdHJhbnNmb3JtIG1vZGUgZGlzYWxsb3dzIHNjYWxlXG5cdCAgKiBpbmhlcml0YW5jZS4gKi9cblx0cHJpdmF0ZSBfc2NhbGVZID0gMTtcblxuXHRwdWJsaWMgZ2V0IHNjYWxlWSAoKSB7XG5cdFx0cmV0dXJuIFNrZWxldG9uLnlEb3duID8gLXRoaXMuX3NjYWxlWSA6IHRoaXMuX3NjYWxlWTtcblx0fVxuXG5cdHB1YmxpYyBzZXQgc2NhbGVZIChzY2FsZVk6IG51bWJlcikge1xuXHRcdHRoaXMuX3NjYWxlWSA9IHNjYWxlWTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBza2VsZXRvbiBYIHBvc2l0aW9uLCB3aGljaCBpcyBhZGRlZCB0byB0aGUgcm9vdCBib25lIHdvcmxkWCBwb3NpdGlvbi4gKi9cblx0eCA9IDA7XG5cblx0LyoqIFNldHMgdGhlIHNrZWxldG9uIFkgcG9zaXRpb24sIHdoaWNoIGlzIGFkZGVkIHRvIHRoZSByb290IGJvbmUgd29ybGRZIHBvc2l0aW9uLiAqL1xuXHR5ID0gMDtcblxuXHQvKiogUmV0dXJucyB0aGUgc2tlbGV0b24ncyB0aW1lLiBUaGlzIGlzIHVzZWQgZm9yIHRpbWUtYmFzZWQgbWFuaXB1bGF0aW9ucywgc3VjaCBhcyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnR9LlxuXHQgKiA8cD5cblx0ICogU2VlIHtAbGluayAjdXBkYXRlKGZsb2F0KX0uICovXG5cdHRpbWUgPSAwO1xuXG5cdGNvbnN0cnVjdG9yIChkYXRhOiBTa2VsZXRvbkRhdGEpIHtcblx0XHRpZiAoIWRhdGEpIHRocm93IG5ldyBFcnJvcihcImRhdGEgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHRoaXMuZGF0YSA9IGRhdGE7XG5cblx0XHR0aGlzLmJvbmVzID0gbmV3IEFycmF5PEJvbmU+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmJvbmVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZURhdGEgPSBkYXRhLmJvbmVzW2ldO1xuXHRcdFx0bGV0IGJvbmU6IEJvbmU7XG5cdFx0XHRpZiAoIWJvbmVEYXRhLnBhcmVudClcblx0XHRcdFx0Ym9uZSA9IG5ldyBCb25lKGJvbmVEYXRhLCB0aGlzLCBudWxsKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgcGFyZW50ID0gdGhpcy5ib25lc1tib25lRGF0YS5wYXJlbnQuaW5kZXhdO1xuXHRcdFx0XHRib25lID0gbmV3IEJvbmUoYm9uZURhdGEsIHRoaXMsIHBhcmVudCk7XG5cdFx0XHRcdHBhcmVudC5jaGlsZHJlbi5wdXNoKGJvbmUpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5ib25lcy5wdXNoKGJvbmUpO1xuXHRcdH1cblxuXHRcdHRoaXMuc2xvdHMgPSBuZXcgQXJyYXk8U2xvdD4oKTtcblx0XHR0aGlzLmRyYXdPcmRlciA9IG5ldyBBcnJheTxTbG90PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5zbG90cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHNsb3REYXRhID0gZGF0YS5zbG90c1tpXTtcblx0XHRcdGxldCBib25lID0gdGhpcy5ib25lc1tzbG90RGF0YS5ib25lRGF0YS5pbmRleF07XG5cdFx0XHRsZXQgc2xvdCA9IG5ldyBTbG90KHNsb3REYXRhLCBib25lKTtcblx0XHRcdHRoaXMuc2xvdHMucHVzaChzbG90KTtcblx0XHRcdHRoaXMuZHJhd09yZGVyLnB1c2goc2xvdCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5pa0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PElrQ29uc3RyYWludD4oKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuaWtDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGlrQ29uc3RyYWludERhdGEgPSBkYXRhLmlrQ29uc3RyYWludHNbaV07XG5cdFx0XHR0aGlzLmlrQ29uc3RyYWludHMucHVzaChuZXcgSWtDb25zdHJhaW50KGlrQ29uc3RyYWludERhdGEsIHRoaXMpKTtcblx0XHR9XG5cblx0XHR0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzID0gbmV3IEFycmF5PFRyYW5zZm9ybUNvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdHJhbnNmb3JtQ29uc3RyYWludERhdGEgPSBkYXRhLnRyYW5zZm9ybUNvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cy5wdXNoKG5ldyBUcmFuc2Zvcm1Db25zdHJhaW50KHRyYW5zZm9ybUNvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5wYXRoQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8UGF0aENvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBhdGhDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHBhdGhDb25zdHJhaW50RGF0YSA9IGRhdGEucGF0aENvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5wYXRoQ29uc3RyYWludHMucHVzaChuZXcgUGF0aENvbnN0cmFpbnQocGF0aENvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5waHlzaWNzQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8UGh5c2ljc0NvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLnBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHBoeXNpY3NDb25zdHJhaW50RGF0YSA9IGRhdGEucGh5c2ljc0NvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5waHlzaWNzQ29uc3RyYWludHMucHVzaChuZXcgUGh5c2ljc0NvbnN0cmFpbnQocGh5c2ljc0NvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jb2xvciA9IG5ldyBDb2xvcigxLCAxLCAxLCAxKTtcblx0XHR0aGlzLnVwZGF0ZUNhY2hlKCk7XG5cdH1cblxuXHQvKiogQ2FjaGVzIGluZm9ybWF0aW9uIGFib3V0IGJvbmVzIGFuZCBjb25zdHJhaW50cy4gTXVzdCBiZSBjYWxsZWQgaWYgdGhlIHtAbGluayAjZ2V0U2tpbigpfSBpcyBtb2RpZmllZCBvciBpZiBib25lcyxcblx0ICogY29uc3RyYWludHMsIG9yIHdlaWdodGVkIHBhdGggYXR0YWNobWVudHMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuICovXG5cdHVwZGF0ZUNhY2hlICgpIHtcblx0XHRsZXQgdXBkYXRlQ2FjaGUgPSB0aGlzLl91cGRhdGVDYWNoZTtcblx0XHR1cGRhdGVDYWNoZS5sZW5ndGggPSAwO1xuXG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUuc29ydGVkID0gYm9uZS5kYXRhLnNraW5SZXF1aXJlZDtcblx0XHRcdGJvbmUuYWN0aXZlID0gIWJvbmUuc29ydGVkO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNraW4pIHtcblx0XHRcdGxldCBza2luQm9uZXMgPSB0aGlzLnNraW4uYm9uZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuc2tpbi5ib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0bGV0IGJvbmU6IEJvbmUgfCBudWxsID0gdGhpcy5ib25lc1tza2luQm9uZXNbaV0uaW5kZXhdO1xuXHRcdFx0XHRkbyB7XG5cdFx0XHRcdFx0Ym9uZS5zb3J0ZWQgPSBmYWxzZTtcblx0XHRcdFx0XHRib25lLmFjdGl2ZSA9IHRydWU7XG5cdFx0XHRcdFx0Ym9uZSA9IGJvbmUucGFyZW50O1xuXHRcdFx0XHR9IHdoaWxlIChib25lKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHQvLyBJSyBmaXJzdCwgbG93ZXN0IGhpZXJhcmNoeSBkZXB0aCBmaXJzdC5cblx0XHRsZXQgaWtDb25zdHJhaW50cyA9IHRoaXMuaWtDb25zdHJhaW50cztcblx0XHRsZXQgdHJhbnNmb3JtQ29uc3RyYWludHMgPSB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzO1xuXHRcdGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcblx0XHRsZXQgcGh5c2ljc0NvbnN0cmFpbnRzID0gdGhpcy5waHlzaWNzQ29uc3RyYWludHM7XG5cdFx0bGV0IGlrQ291bnQgPSBpa0NvbnN0cmFpbnRzLmxlbmd0aCwgdHJhbnNmb3JtQ291bnQgPSB0cmFuc2Zvcm1Db25zdHJhaW50cy5sZW5ndGgsIHBhdGhDb3VudCA9IHBhdGhDb25zdHJhaW50cy5sZW5ndGgsIHBoeXNpY3NDb3VudCA9IHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzLmxlbmd0aDtcblx0XHRsZXQgY29uc3RyYWludENvdW50ID0gaWtDb3VudCArIHRyYW5zZm9ybUNvdW50ICsgcGF0aENvdW50ICsgcGh5c2ljc0NvdW50O1xuXG5cdFx0b3V0ZXI6XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjb25zdHJhaW50Q291bnQ7IGkrKykge1xuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IGlrQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBpa0NvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0SWtDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgdHJhbnNmb3JtQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSB0cmFuc2Zvcm1Db25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwYXRoQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0bGV0IGNvbnN0cmFpbnQgPSBwYXRoQ29uc3RyYWludHNbaWldO1xuXHRcdFx0XHRpZiAoY29uc3RyYWludC5kYXRhLm9yZGVyID09IGkpIHtcblx0XHRcdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludChjb25zdHJhaW50KTtcblx0XHRcdFx0XHRjb250aW51ZSBvdXRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHBoeXNpY3NDb3VudDsgaWkrKykge1xuXHRcdFx0XHRjb25zdCBjb25zdHJhaW50ID0gcGh5c2ljc0NvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0UGh5c2ljc0NvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHRoaXMuc29ydEJvbmUoYm9uZXNbaV0pO1xuXHR9XG5cblx0c29ydElrQ29uc3RyYWludCAoY29uc3RyYWludDogSWtDb25zdHJhaW50KSB7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBjb25zdHJhaW50LnRhcmdldC5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgdGFyZ2V0ID0gY29uc3RyYWludC50YXJnZXQ7XG5cdFx0dGhpcy5zb3J0Qm9uZSh0YXJnZXQpO1xuXG5cdFx0bGV0IGNvbnN0cmFpbmVkID0gY29uc3RyYWludC5ib25lcztcblx0XHRsZXQgcGFyZW50ID0gY29uc3RyYWluZWRbMF07XG5cdFx0dGhpcy5zb3J0Qm9uZShwYXJlbnQpO1xuXG5cdFx0aWYgKGNvbnN0cmFpbmVkLmxlbmd0aCA9PSAxKSB7XG5cdFx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXHRcdFx0dGhpcy5zb3J0UmVzZXQocGFyZW50LmNoaWxkcmVuKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGV0IGNoaWxkID0gY29uc3RyYWluZWRbY29uc3RyYWluZWQubGVuZ3RoIC0gMV07XG5cdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkKTtcblxuXHRcdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdFx0dGhpcy5zb3J0UmVzZXQocGFyZW50LmNoaWxkcmVuKTtcblx0XHRcdGNoaWxkLnNvcnRlZCA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0c29ydFBhdGhDb25zdHJhaW50IChjb25zdHJhaW50OiBQYXRoQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuYm9uZS5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHRsZXQgc2xvdCA9IGNvbnN0cmFpbnQudGFyZ2V0O1xuXHRcdGxldCBzbG90SW5kZXggPSBzbG90LmRhdGEuaW5kZXg7XG5cdFx0bGV0IHNsb3RCb25lID0gc2xvdC5ib25lO1xuXHRcdGlmICh0aGlzLnNraW4pIHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLnNraW4sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXHRcdGlmICh0aGlzLmRhdGEuZGVmYXVsdFNraW4gJiYgdGhpcy5kYXRhLmRlZmF1bHRTa2luICE9IHRoaXMuc2tpbilcblx0XHRcdHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLmRhdGEuZGVmYXVsdFNraW4sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdGhpcy5kYXRhLnNraW5zLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHRoaXMuc29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudCh0aGlzLmRhdGEuc2tpbnNbaV0sIHNsb3RJbmRleCwgc2xvdEJvbmUpO1xuXG5cdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFBhdGhBdHRhY2htZW50KSB0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnRXaXRoKGF0dGFjaG1lbnQsIHNsb3RCb25lKTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IGJvbmVDb3VudCA9IGNvbnN0cmFpbmVkLmxlbmd0aDtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW5lZFtpXSk7XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydFJlc2V0KGNvbnN0cmFpbmVkW2ldLmNoaWxkcmVuKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0Y29uc3RyYWluZWRbaV0uc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRUcmFuc2Zvcm1Db25zdHJhaW50IChjb25zdHJhaW50OiBUcmFuc2Zvcm1Db25zdHJhaW50KSB7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBjb25zdHJhaW50LnRhcmdldC5pc0FjdGl2ZSgpICYmICghY29uc3RyYWludC5kYXRhLnNraW5SZXF1aXJlZCB8fCAodGhpcy5za2luICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpITtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHR0aGlzLnNvcnRCb25lKGNvbnN0cmFpbnQudGFyZ2V0KTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IGJvbmVDb3VudCA9IGNvbnN0cmFpbmVkLmxlbmd0aDtcblx0XHRpZiAoY29uc3RyYWludC5kYXRhLmxvY2FsKSB7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKSB7XG5cdFx0XHRcdGxldCBjaGlsZCA9IGNvbnN0cmFpbmVkW2ldO1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkLnBhcmVudCEpO1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNoaWxkKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKykge1xuXHRcdFx0XHR0aGlzLnNvcnRCb25lKGNvbnN0cmFpbmVkW2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydFJlc2V0KGNvbnN0cmFpbmVkW2ldLmNoaWxkcmVuKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGJvbmVDb3VudDsgaSsrKVxuXHRcdFx0Y29uc3RyYWluZWRbaV0uc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQgKHNraW46IFNraW4sIHNsb3RJbmRleDogbnVtYmVyLCBzbG90Qm9uZTogQm9uZSkge1xuXHRcdGxldCBhdHRhY2htZW50cyA9IHNraW4uYXR0YWNobWVudHNbc2xvdEluZGV4XTtcblx0XHRpZiAoIWF0dGFjaG1lbnRzKSByZXR1cm47XG5cdFx0Zm9yIChsZXQga2V5IGluIGF0dGFjaG1lbnRzKSB7XG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnRXaXRoKGF0dGFjaG1lbnRzW2tleV0sIHNsb3RCb25lKTtcblx0XHR9XG5cdH1cblxuXHRzb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aCAoYXR0YWNobWVudDogQXR0YWNobWVudCwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIShhdHRhY2htZW50IGluc3RhbmNlb2YgUGF0aEF0dGFjaG1lbnQpKSByZXR1cm47XG5cdFx0bGV0IHBhdGhCb25lcyA9ICg8UGF0aEF0dGFjaG1lbnQ+YXR0YWNobWVudCkuYm9uZXM7XG5cdFx0aWYgKCFwYXRoQm9uZXMpXG5cdFx0XHR0aGlzLnNvcnRCb25lKHNsb3RCb25lKTtcblx0XHRlbHNlIHtcblx0XHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBhdGhCb25lcy5sZW5ndGg7IGkgPCBuOykge1xuXHRcdFx0XHRsZXQgbm4gPSBwYXRoQm9uZXNbaSsrXTtcblx0XHRcdFx0bm4gKz0gaTtcblx0XHRcdFx0d2hpbGUgKGkgPCBubilcblx0XHRcdFx0XHR0aGlzLnNvcnRCb25lKGJvbmVzW3BhdGhCb25lc1tpKytdXSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0c29ydFBoeXNpY3NDb25zdHJhaW50IChjb25zdHJhaW50OiBQaHlzaWNzQ29uc3RyYWludCkge1xuXHRcdGNvbnN0IGJvbmUgPSBjb25zdHJhaW50LmJvbmU7XG5cdFx0Y29uc3RyYWludC5hY3RpdmUgPSBib25lLmFjdGl2ZSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAhPSBudWxsICYmIFV0aWxzLmNvbnRhaW5zKHRoaXMuc2tpbi5jb25zdHJhaW50cywgY29uc3RyYWludC5kYXRhLCB0cnVlKSkpO1xuXHRcdGlmICghY29uc3RyYWludC5hY3RpdmUpIHJldHVybjtcblxuXHRcdHRoaXMuc29ydEJvbmUoYm9uZSk7XG5cblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGNvbnN0cmFpbnQpO1xuXG5cdFx0dGhpcy5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0Ym9uZS5zb3J0ZWQgPSB0cnVlO1xuXHR9XG5cblx0c29ydEJvbmUgKGJvbmU6IEJvbmUpIHtcblx0XHRpZiAoIWJvbmUpIHJldHVybjtcblx0XHRpZiAoYm9uZS5zb3J0ZWQpIHJldHVybjtcblx0XHRsZXQgcGFyZW50ID0gYm9uZS5wYXJlbnQ7XG5cdFx0aWYgKHBhcmVudCkgdGhpcy5zb3J0Qm9uZShwYXJlbnQpO1xuXHRcdGJvbmUuc29ydGVkID0gdHJ1ZTtcblx0XHR0aGlzLl91cGRhdGVDYWNoZS5wdXNoKGJvbmUpO1xuXHR9XG5cblx0c29ydFJlc2V0IChib25lczogQXJyYXk8Qm9uZT4pIHtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGlmICghYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0aWYgKGJvbmUuc29ydGVkKSB0aGlzLnNvcnRSZXNldChib25lLmNoaWxkcmVuKTtcblx0XHRcdGJvbmUuc29ydGVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFVwZGF0ZXMgdGhlIHdvcmxkIHRyYW5zZm9ybSBmb3IgZWFjaCBib25lIGFuZCBhcHBsaWVzIGFsbCBjb25zdHJhaW50cy5cblx0ICpcblx0ICogU2VlIFtXb3JsZCB0cmFuc2Zvcm1zXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcnVudGltZS1za2VsZXRvbnMjV29ybGQtdHJhbnNmb3JtcykgaW4gdGhlIFNwaW5lXG5cdCAqIFJ1bnRpbWVzIEd1aWRlLiAqL1xuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybSAocGh5c2ljczogUGh5c2ljcykge1xuXHRcdGlmIChwaHlzaWNzID09PSB1bmRlZmluZWQgfHwgcGh5c2ljcyA9PT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwicGh5c2ljcyBpcyB1bmRlZmluZWRcIik7XG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGJvbmUuYXggPSBib25lLng7XG5cdFx0XHRib25lLmF5ID0gYm9uZS55O1xuXHRcdFx0Ym9uZS5hcm90YXRpb24gPSBib25lLnJvdGF0aW9uO1xuXHRcdFx0Ym9uZS5hc2NhbGVYID0gYm9uZS5zY2FsZVg7XG5cdFx0XHRib25lLmFzY2FsZVkgPSBib25lLnNjYWxlWTtcblx0XHRcdGJvbmUuYXNoZWFyWCA9IGJvbmUuc2hlYXJYO1xuXHRcdFx0Ym9uZS5hc2hlYXJZID0gYm9uZS5zaGVhclk7XG5cdFx0fVxuXG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB1cGRhdGVDYWNoZS5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR1cGRhdGVDYWNoZVtpXS51cGRhdGUocGh5c2ljcyk7XG5cdH1cblxuXHR1cGRhdGVXb3JsZFRyYW5zZm9ybVdpdGggKHBoeXNpY3M6IFBoeXNpY3MsIHBhcmVudDogQm9uZSkge1xuXHRcdGlmICghcGFyZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJwYXJlbnQgY2Fubm90IGJlIG51bGwuXCIpO1xuXG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMSwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykgeyAvLyBTa2lwIHJvb3QgYm9uZS5cblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLmF4ID0gYm9uZS54O1xuXHRcdFx0Ym9uZS5heSA9IGJvbmUueTtcblx0XHRcdGJvbmUuYXJvdGF0aW9uID0gYm9uZS5yb3RhdGlvbjtcblx0XHRcdGJvbmUuYXNjYWxlWCA9IGJvbmUuc2NhbGVYO1xuXHRcdFx0Ym9uZS5hc2NhbGVZID0gYm9uZS5zY2FsZVk7XG5cdFx0XHRib25lLmFzaGVhclggPSBib25lLnNoZWFyWDtcblx0XHRcdGJvbmUuYXNoZWFyWSA9IGJvbmUuc2hlYXJZO1xuXHRcdH1cblxuXHRcdC8vIEFwcGx5IHRoZSBwYXJlbnQgYm9uZSB0cmFuc2Zvcm0gdG8gdGhlIHJvb3QgYm9uZS4gVGhlIHJvb3QgYm9uZSBhbHdheXMgaW5oZXJpdHMgc2NhbGUsIHJvdGF0aW9uIGFuZCByZWZsZWN0aW9uLlxuXHRcdGxldCByb290Qm9uZSA9IHRoaXMuZ2V0Um9vdEJvbmUoKTtcblx0XHRpZiAoIXJvb3RCb25lKSB0aHJvdyBuZXcgRXJyb3IoXCJSb290IGJvbmUgbXVzdCBub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IHBhID0gcGFyZW50LmEsIHBiID0gcGFyZW50LmIsIHBjID0gcGFyZW50LmMsIHBkID0gcGFyZW50LmQ7XG5cdFx0cm9vdEJvbmUud29ybGRYID0gcGEgKiB0aGlzLnggKyBwYiAqIHRoaXMueSArIHBhcmVudC53b3JsZFg7XG5cdFx0cm9vdEJvbmUud29ybGRZID0gcGMgKiB0aGlzLnggKyBwZCAqIHRoaXMueSArIHBhcmVudC53b3JsZFk7XG5cblx0XHRjb25zdCByeCA9IChyb290Qm9uZS5yb3RhdGlvbiArIHJvb3RCb25lLnNoZWFyWCkgKiBNYXRoVXRpbHMuZGVnUmFkO1xuXHRcdGNvbnN0IHJ5ID0gKHJvb3RCb25lLnJvdGF0aW9uICsgOTAgKyByb290Qm9uZS5zaGVhclkpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCBsYSA9IE1hdGguY29zKHJ4KSAqIHJvb3RCb25lLnNjYWxlWDtcblx0XHRjb25zdCBsYiA9IE1hdGguY29zKHJ5KSAqIHJvb3RCb25lLnNjYWxlWTtcblx0XHRjb25zdCBsYyA9IE1hdGguc2luKHJ4KSAqIHJvb3RCb25lLnNjYWxlWDtcblx0XHRjb25zdCBsZCA9IE1hdGguc2luKHJ5KSAqIHJvb3RCb25lLnNjYWxlWTtcblx0XHRyb290Qm9uZS5hID0gKHBhICogbGEgKyBwYiAqIGxjKSAqIHRoaXMuc2NhbGVYO1xuXHRcdHJvb3RCb25lLmIgPSAocGEgKiBsYiArIHBiICogbGQpICogdGhpcy5zY2FsZVg7XG5cdFx0cm9vdEJvbmUuYyA9IChwYyAqIGxhICsgcGQgKiBsYykgKiB0aGlzLnNjYWxlWTtcblx0XHRyb290Qm9uZS5kID0gKHBjICogbGIgKyBwZCAqIGxkKSAqIHRoaXMuc2NhbGVZO1xuXG5cdFx0Ly8gVXBkYXRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHJvb3QgYm9uZS5cblx0XHRsZXQgdXBkYXRlQ2FjaGUgPSB0aGlzLl91cGRhdGVDYWNoZTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHVwZGF0ZUNhY2hlLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHVwZGF0YWJsZSA9IHVwZGF0ZUNhY2hlW2ldO1xuXHRcdFx0aWYgKHVwZGF0YWJsZSAhPSByb290Qm9uZSkgdXBkYXRhYmxlLnVwZGF0ZShwaHlzaWNzKTtcblx0XHR9XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYm9uZXMsIGNvbnN0cmFpbnRzLCBhbmQgc2xvdHMgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldFRvU2V0dXBQb3NlICgpIHtcblx0XHR0aGlzLnNldEJvbmVzVG9TZXR1cFBvc2UoKTtcblx0XHR0aGlzLnNldFNsb3RzVG9TZXR1cFBvc2UoKTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBib25lcyBhbmQgY29uc3RyYWludHMgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldEJvbmVzVG9TZXR1cFBvc2UgKCkge1xuXHRcdGZvciAoY29uc3QgYm9uZSBvZiB0aGlzLmJvbmVzKSBib25lLnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMuaWtDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMucGF0aENvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdFx0Zm9yIChjb25zdCBjb25zdHJhaW50IG9mIHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzKSBjb25zdHJhaW50LnNldFRvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2xvdHMgYW5kIGRyYXcgb3JkZXIgdG8gdGhlaXIgc2V0dXAgcG9zZSB2YWx1ZXMuICovXG5cdHNldFNsb3RzVG9TZXR1cFBvc2UgKCkge1xuXHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0VXRpbHMuYXJyYXlDb3B5KHNsb3RzLCAwLCB0aGlzLmRyYXdPcmRlciwgMCwgc2xvdHMubGVuZ3RoKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHNsb3RzW2ldLnNldFRvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogQHJldHVybnMgTWF5IHJldHVybiBudWxsLiAqL1xuXHRnZXRSb290Qm9uZSAoKSB7XG5cdFx0aWYgKHRoaXMuYm9uZXMubGVuZ3RoID09IDApIHJldHVybiBudWxsO1xuXHRcdHJldHVybiB0aGlzLmJvbmVzWzBdO1xuXHR9XG5cblx0LyoqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kQm9uZSAoYm9uZU5hbWU6IHN0cmluZykge1xuXHRcdGlmICghYm9uZU5hbWUpIHRocm93IG5ldyBFcnJvcihcImJvbmVOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0aWYgKGJvbmUuZGF0YS5uYW1lID09IGJvbmVOYW1lKSByZXR1cm4gYm9uZTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBzbG90IGJ5IGNvbXBhcmluZyBlYWNoIHNsb3QncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXRcblx0ICogcmVwZWF0ZWRseS5cblx0ICogQHJldHVybnMgTWF5IGJlIG51bGwuICovXG5cdGZpbmRTbG90IChzbG90TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFzbG90TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwic2xvdE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBzbG90ID0gc2xvdHNbaV07XG5cdFx0XHRpZiAoc2xvdC5kYXRhLm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBzbG90O1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBTZXRzIGEgc2tpbiBieSBuYW1lLlxuXHQgKlxuXHQgKiBTZWUge0BsaW5rICNzZXRTa2luKCl9LiAqL1xuXHRzZXRTa2luQnlOYW1lIChza2luTmFtZTogc3RyaW5nKSB7XG5cdFx0bGV0IHNraW4gPSB0aGlzLmRhdGEuZmluZFNraW4oc2tpbk5hbWUpO1xuXHRcdGlmICghc2tpbikgdGhyb3cgbmV3IEVycm9yKFwiU2tpbiBub3QgZm91bmQ6IFwiICsgc2tpbk5hbWUpO1xuXHRcdHRoaXMuc2V0U2tpbihza2luKTtcblx0fVxuXG5cdC8qKiBTZXRzIHRoZSBza2luIHVzZWQgdG8gbG9vayB1cCBhdHRhY2htZW50cyBiZWZvcmUgbG9va2luZyBpbiB0aGUge0BsaW5rIFNrZWxldG9uRGF0YSNkZWZhdWx0U2tpbiBkZWZhdWx0IHNraW59LiBJZiB0aGVcblx0ICogc2tpbiBpcyBjaGFuZ2VkLCB7QGxpbmsgI3VwZGF0ZUNhY2hlKCl9IGlzIGNhbGxlZC5cblx0ICpcblx0ICogQXR0YWNobWVudHMgZnJvbSB0aGUgbmV3IHNraW4gYXJlIGF0dGFjaGVkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGF0dGFjaG1lbnQgZnJvbSB0aGUgb2xkIHNraW4gd2FzIGF0dGFjaGVkLiBJZiB0aGVyZSB3YXMgbm9cblx0ICogb2xkIHNraW4sIGVhY2ggc2xvdCdzIHNldHVwIG1vZGUgYXR0YWNobWVudCBpcyBhdHRhY2hlZCBmcm9tIHRoZSBuZXcgc2tpbi5cblx0ICpcblx0ICogQWZ0ZXIgY2hhbmdpbmcgdGhlIHNraW4sIHRoZSB2aXNpYmxlIGF0dGFjaG1lbnRzIGNhbiBiZSByZXNldCB0byB0aG9zZSBhdHRhY2hlZCBpbiB0aGUgc2V0dXAgcG9zZSBieSBjYWxsaW5nXG5cdCAqIHtAbGluayAjc2V0U2xvdHNUb1NldHVwUG9zZSgpfS4gQWxzbywgb2Z0ZW4ge0BsaW5rIEFuaW1hdGlvblN0YXRlI2FwcGx5KCl9IGlzIGNhbGxlZCBiZWZvcmUgdGhlIG5leHQgdGltZSB0aGVcblx0ICogc2tlbGV0b24gaXMgcmVuZGVyZWQgdG8gYWxsb3cgYW55IGF0dGFjaG1lbnQga2V5cyBpbiB0aGUgY3VycmVudCBhbmltYXRpb24ocykgdG8gaGlkZSBvciBzaG93IGF0dGFjaG1lbnRzIGZyb20gdGhlIG5ldyBza2luLlxuXHQgKiBAcGFyYW0gbmV3U2tpbiBNYXkgYmUgbnVsbC4gKi9cblx0c2V0U2tpbiAobmV3U2tpbjogU2tpbikge1xuXHRcdGlmIChuZXdTa2luID09IHRoaXMuc2tpbikgcmV0dXJuO1xuXHRcdGlmIChuZXdTa2luKSB7XG5cdFx0XHRpZiAodGhpcy5za2luKVxuXHRcdFx0XHRuZXdTa2luLmF0dGFjaEFsbCh0aGlzLCB0aGlzLnNraW4pO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdFx0XHRsZXQgbmFtZSA9IHNsb3QuZGF0YS5hdHRhY2htZW50TmFtZTtcblx0XHRcdFx0XHRpZiAobmFtZSkge1xuXHRcdFx0XHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBuZXdTa2luLmdldEF0dGFjaG1lbnQoaSwgbmFtZSk7XG5cdFx0XHRcdFx0XHRpZiAoYXR0YWNobWVudCkgc2xvdC5zZXRBdHRhY2htZW50KGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHR0aGlzLnNraW4gPSBuZXdTa2luO1xuXHRcdHRoaXMudXBkYXRlQ2FjaGUoKTtcblx0fVxuXG5cblx0LyoqIEZpbmRzIGFuIGF0dGFjaG1lbnQgYnkgbG9va2luZyBpbiB0aGUge0BsaW5rICNza2lufSBhbmQge0BsaW5rIFNrZWxldG9uRGF0YSNkZWZhdWx0U2tpbn0gdXNpbmcgdGhlIHNsb3QgbmFtZSBhbmQgYXR0YWNobWVudFxuXHQgKiBuYW1lLlxuXHQgKlxuXHQgKiBTZWUge0BsaW5rICNnZXRBdHRhY2htZW50KCl9LlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0Z2V0QXR0YWNobWVudEJ5TmFtZSAoc2xvdE5hbWU6IHN0cmluZywgYXR0YWNobWVudE5hbWU6IHN0cmluZyk6IEF0dGFjaG1lbnQgfCBudWxsIHtcblx0XHRsZXQgc2xvdCA9IHRoaXMuZGF0YS5maW5kU2xvdChzbG90TmFtZSk7XG5cdFx0aWYgKCFzbG90KSB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgc2xvdCB3aXRoIG5hbWUgJHtzbG90TmFtZX1gKTtcblx0XHRyZXR1cm4gdGhpcy5nZXRBdHRhY2htZW50KHNsb3QuaW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0fVxuXG5cdC8qKiBGaW5kcyBhbiBhdHRhY2htZW50IGJ5IGxvb2tpbmcgaW4gdGhlIHtAbGluayAjc2tpbn0gYW5kIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW59IHVzaW5nIHRoZSBzbG90IGluZGV4IGFuZFxuXHQgKiBhdHRhY2htZW50IG5hbWUuIEZpcnN0IHRoZSBza2luIGlzIGNoZWNrZWQgYW5kIGlmIHRoZSBhdHRhY2htZW50IHdhcyBub3QgZm91bmQsIHRoZSBkZWZhdWx0IHNraW4gaXMgY2hlY2tlZC5cblx0ICpcblx0ICogU2VlIFtSdW50aW1lIHNraW5zXShodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtcnVudGltZS1za2lucykgaW4gdGhlIFNwaW5lIFJ1bnRpbWVzIEd1aWRlLlxuXHQgKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0Z2V0QXR0YWNobWVudCAoc2xvdEluZGV4OiBudW1iZXIsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcpOiBBdHRhY2htZW50IHwgbnVsbCB7XG5cdFx0aWYgKCFhdHRhY2htZW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiYXR0YWNobWVudE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICh0aGlzLnNraW4pIHtcblx0XHRcdGxldCBhdHRhY2htZW50ID0gdGhpcy5za2luLmdldEF0dGFjaG1lbnQoc2xvdEluZGV4LCBhdHRhY2htZW50TmFtZSk7XG5cdFx0XHRpZiAoYXR0YWNobWVudCkgcmV0dXJuIGF0dGFjaG1lbnQ7XG5cdFx0fVxuXHRcdGlmICh0aGlzLmRhdGEuZGVmYXVsdFNraW4pIHJldHVybiB0aGlzLmRhdGEuZGVmYXVsdFNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKiBBIGNvbnZlbmllbmNlIG1ldGhvZCB0byBzZXQgYW4gYXR0YWNobWVudCBieSBmaW5kaW5nIHRoZSBzbG90IHdpdGgge0BsaW5rICNmaW5kU2xvdCgpfSwgZmluZGluZyB0aGUgYXR0YWNobWVudCB3aXRoXG5cdCAqIHtAbGluayAjZ2V0QXR0YWNobWVudCgpfSwgdGhlbiBzZXR0aW5nIHRoZSBzbG90J3Mge0BsaW5rIFNsb3QjYXR0YWNobWVudH0uXG5cdCAqIEBwYXJhbSBhdHRhY2htZW50TmFtZSBNYXkgYmUgbnVsbCB0byBjbGVhciB0aGUgc2xvdCdzIGF0dGFjaG1lbnQuICovXG5cdHNldEF0dGFjaG1lbnQgKHNsb3ROYW1lOiBzdHJpbmcsIGF0dGFjaG1lbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIXNsb3ROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJzbG90TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IHNsb3RzID0gdGhpcy5zbG90cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBzbG90c1tpXTtcblx0XHRcdGlmIChzbG90LmRhdGEubmFtZSA9PSBzbG90TmFtZSkge1xuXHRcdFx0XHRsZXQgYXR0YWNobWVudDogQXR0YWNobWVudCB8IG51bGwgPSBudWxsO1xuXHRcdFx0XHRpZiAoYXR0YWNobWVudE5hbWUpIHtcblx0XHRcdFx0XHRhdHRhY2htZW50ID0gdGhpcy5nZXRBdHRhY2htZW50KGksIGF0dGFjaG1lbnROYW1lKTtcblx0XHRcdFx0XHRpZiAoIWF0dGFjaG1lbnQpIHRocm93IG5ldyBFcnJvcihcIkF0dGFjaG1lbnQgbm90IGZvdW5kOiBcIiArIGF0dGFjaG1lbnROYW1lICsgXCIsIGZvciBzbG90OiBcIiArIHNsb3ROYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzbG90LnNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiU2xvdCBub3QgZm91bmQ6IFwiICsgc2xvdE5hbWUpO1xuXHR9XG5cblxuXHQvKiogRmluZHMgYW4gSUsgY29uc3RyYWludCBieSBjb21wYXJpbmcgZWFjaCBJSyBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2Rcblx0ICogdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm4gTWF5IGJlIG51bGwuICovXG5cdGZpbmRJa0NvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWNvbnN0cmFpbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMuaWtDb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBGaW5kcyBhIHRyYW5zZm9ybSBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHRyYW5zZm9ybSBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2Zcblx0ICogdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm4gTWF5IGJlIG51bGwuICovXG5cdGZpbmRUcmFuc2Zvcm1Db25zdHJhaW50IChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XG5cdFx0aWYgKCFjb25zdHJhaW50TmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLnRyYW5zZm9ybUNvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgcGF0aCBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHBhdGggY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXMgbWV0aG9kXG5cdCAqIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LlxuXHQgKiBAcmV0dXJuIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kUGF0aENvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWNvbnN0cmFpbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMucGF0aENvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgcGh5c2ljcyBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIHBoeXNpY3MgY29uc3RyYWludCdzIG5hbWUuIEl0IGlzIG1vcmUgZWZmaWNpZW50IHRvIGNhY2hlIHRoZSByZXN1bHRzIG9mIHRoaXNcblx0ICogbWV0aG9kIHRoYW4gdG8gY2FsbCBpdCByZXBlYXRlZGx5LiAqL1xuXHRmaW5kUGh5c2ljc0NvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoY29uc3RyYWludE5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdHJldHVybiB0aGlzLnBoeXNpY3NDb25zdHJhaW50cy5maW5kKChjb25zdHJhaW50KSA9PiBjb25zdHJhaW50LmRhdGEubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgPz8gbnVsbDtcblx0fVxuXG5cdC8qKiBSZXR1cm5zIHRoZSBheGlzIGFsaWduZWQgYm91bmRpbmcgYm94IChBQUJCKSBvZiB0aGUgcmVnaW9uIGFuZCBtZXNoIGF0dGFjaG1lbnRzIGZvciB0aGUgY3VycmVudCBwb3NlIGFzIGB7IHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9YC5cblx0ICogTm90ZSB0aGF0IHRoaXMgbWV0aG9kIHdpbGwgY3JlYXRlIHRlbXBvcmFyeSBvYmplY3RzIHdoaWNoIGNhbiBhZGQgdG8gZ2FyYmFnZSBjb2xsZWN0aW9uIHByZXNzdXJlLiBVc2UgYGdldEJvdW5kcygpYCBpZiBnYXJiYWdlIGNvbGxlY3Rpb24gaXMgYSBjb25jZXJuLiAqL1xuXHRnZXRCb3VuZHNSZWN0IChjbGlwcGVyPzogU2tlbGV0b25DbGlwcGluZykge1xuXHRcdGxldCBvZmZzZXQgPSBuZXcgVmVjdG9yMigpO1xuXHRcdGxldCBzaXplID0gbmV3IFZlY3RvcjIoKTtcblx0XHR0aGlzLmdldEJvdW5kcyhvZmZzZXQsIHNpemUsIHVuZGVmaW5lZCwgY2xpcHBlcik7XG5cdFx0cmV0dXJuIHsgeDogb2Zmc2V0LngsIHk6IG9mZnNldC55LCB3aWR0aDogc2l6ZS54LCBoZWlnaHQ6IHNpemUueSB9O1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggKEFBQkIpIG9mIHRoZSByZWdpb24gYW5kIG1lc2ggYXR0YWNobWVudHMgZm9yIHRoZSBjdXJyZW50IHBvc2UuXG5cdCAqIEBwYXJhbSBvZmZzZXQgQW4gb3V0cHV0IHZhbHVlLCB0aGUgZGlzdGFuY2UgZnJvbSB0aGUgc2tlbGV0b24gb3JpZ2luIHRvIHRoZSBib3R0b20gbGVmdCBjb3JuZXIgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSBzaXplIEFuIG91dHB1dCB2YWx1ZSwgdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIEFBQkIuXG5cdCAqIEBwYXJhbSB0ZW1wIFdvcmtpbmcgbWVtb3J5IHRvIHRlbXBvcmFyaWx5IHN0b3JlIGF0dGFjaG1lbnRzJyBjb21wdXRlZCB3b3JsZCB2ZXJ0aWNlcy5cblx0ICogQHBhcmFtIGNsaXBwZXIge0BsaW5rIFNrZWxldG9uQ2xpcHBpbmd9IHRvIHVzZS4gSWYgPGNvZGU+bnVsbDwvY29kZT4sIG5vIGNsaXBwaW5nIGlzIGFwcGxpZWQuICovXG5cdGdldEJvdW5kcyAob2Zmc2V0OiBWZWN0b3IyLCBzaXplOiBWZWN0b3IyLCB0ZW1wOiBBcnJheTxudW1iZXI+ID0gbmV3IEFycmF5PG51bWJlcj4oMiksIGNsaXBwZXI6IFNrZWxldG9uQ2xpcHBpbmcgfCBudWxsID0gbnVsbCkge1xuXHRcdGlmICghb2Zmc2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJvZmZzZXQgY2Fubm90IGJlIG51bGwuXCIpO1xuXHRcdGlmICghc2l6ZSkgdGhyb3cgbmV3IEVycm9yKFwic2l6ZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IGRyYXdPcmRlciA9IHRoaXMuZHJhd09yZGVyO1xuXHRcdGxldCBtaW5YID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtaW5ZID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZLCBtYXhYID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLCBtYXhZID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gZHJhd09yZGVyLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IHNsb3QgPSBkcmF3T3JkZXJbaV07XG5cdFx0XHRpZiAoIXNsb3QuYm9uZS5hY3RpdmUpIGNvbnRpbnVlO1xuXHRcdFx0bGV0IHZlcnRpY2VzTGVuZ3RoID0gMDtcblx0XHRcdGxldCB2ZXJ0aWNlczogTnVtYmVyQXJyYXlMaWtlIHwgbnVsbCA9IG51bGw7XG5cdFx0XHRsZXQgdHJpYW5nbGVzOiBOdW1iZXJBcnJheUxpa2UgfCBudWxsID0gbnVsbDtcblx0XHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0XHRpZiAoYXR0YWNobWVudCBpbnN0YW5jZW9mIFJlZ2lvbkF0dGFjaG1lbnQpIHtcblx0XHRcdFx0dmVydGljZXNMZW5ndGggPSA4O1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0ZW1wLCB2ZXJ0aWNlc0xlbmd0aCwgMCk7XG5cdFx0XHRcdGF0dGFjaG1lbnQuY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgdmVydGljZXMsIDAsIDIpO1xuXHRcdFx0XHR0cmlhbmdsZXMgPSBTa2VsZXRvbi5xdWFkVHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgTWVzaEF0dGFjaG1lbnQpIHtcblx0XHRcdFx0bGV0IG1lc2ggPSAoPE1lc2hBdHRhY2htZW50PmF0dGFjaG1lbnQpO1xuXHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IG1lc2gud29ybGRWZXJ0aWNlc0xlbmd0aDtcblx0XHRcdFx0dmVydGljZXMgPSBVdGlscy5zZXRBcnJheVNpemUodGVtcCwgdmVydGljZXNMZW5ndGgsIDApO1xuXHRcdFx0XHRtZXNoLmNvbXB1dGVXb3JsZFZlcnRpY2VzKHNsb3QsIDAsIHZlcnRpY2VzTGVuZ3RoLCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdHRyaWFuZ2xlcyA9IG1lc2gudHJpYW5nbGVzO1xuXHRcdFx0fSBlbHNlIGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgQ2xpcHBpbmdBdHRhY2htZW50ICYmIGNsaXBwZXIgIT0gbnVsbCkge1xuXHRcdFx0XHRjbGlwcGVyLmNsaXBTdGFydChzbG90LCBhdHRhY2htZW50KTtcblx0XHRcdFx0Y29udGludWU7XG5cdFx0XHR9XG5cdFx0XHRpZiAodmVydGljZXMgJiYgdHJpYW5nbGVzKSB7XG5cdFx0XHRcdGlmIChjbGlwcGVyICE9IG51bGwgJiYgY2xpcHBlci5pc0NsaXBwaW5nKCkpIHtcblx0XHRcdFx0XHRjbGlwcGVyLmNsaXBUcmlhbmdsZXModmVydGljZXMsIHRyaWFuZ2xlcywgdHJpYW5nbGVzLmxlbmd0aCk7XG5cdFx0XHRcdFx0dmVydGljZXMgPSBjbGlwcGVyLmNsaXBwZWRWZXJ0aWNlcztcblx0XHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzLmxlbmd0aDtcblx0XHRcdFx0fVxuXHRcdFx0XHRmb3IgKGxldCBpaSA9IDAsIG5uID0gdmVydGljZXMubGVuZ3RoOyBpaSA8IG5uOyBpaSArPSAyKSB7XG5cdFx0XHRcdFx0bGV0IHggPSB2ZXJ0aWNlc1tpaV0sIHkgPSB2ZXJ0aWNlc1tpaSArIDFdO1xuXHRcdFx0XHRcdG1pblggPSBNYXRoLm1pbihtaW5YLCB4KTtcblx0XHRcdFx0XHRtaW5ZID0gTWF0aC5taW4obWluWSwgeSk7XG5cdFx0XHRcdFx0bWF4WCA9IE1hdGgubWF4KG1heFgsIHgpO1xuXHRcdFx0XHRcdG1heFkgPSBNYXRoLm1heChtYXhZLCB5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGNsaXBwZXIgIT0gbnVsbCkgY2xpcHBlci5jbGlwRW5kV2l0aFNsb3Qoc2xvdCk7XG5cdFx0fVxuXHRcdGlmIChjbGlwcGVyICE9IG51bGwpIGNsaXBwZXIuY2xpcEVuZCgpO1xuXHRcdG9mZnNldC5zZXQobWluWCwgbWluWSk7XG5cdFx0c2l6ZS5zZXQobWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKTtcblx0fVxuXG5cdC8qKiBJbmNyZW1lbnRzIHRoZSBza2VsZXRvbidzIHtAbGluayAjdGltZX0uICovXG5cdHVwZGF0ZSAoZGVsdGE6IG51bWJlcikge1xuXHRcdHRoaXMudGltZSArPSBkZWx0YTtcblx0fVxuXG5cdHBoeXNpY3NUcmFuc2xhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG5cdFx0Y29uc3QgcGh5c2ljc0NvbnN0cmFpbnRzID0gdGhpcy5waHlzaWNzQ29uc3RyYWludHM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwaHlzaWNzQ29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0cGh5c2ljc0NvbnN0cmFpbnRzW2ldLnRyYW5zbGF0ZSh4LCB5KTtcblx0fVxuXG5cdC8qKiBDYWxscyB7QGxpbmsgUGh5c2ljc0NvbnN0cmFpbnQjcm90YXRlKGZsb2F0LCBmbG9hdCwgZmxvYXQpfSBmb3IgZWFjaCBwaHlzaWNzIGNvbnN0cmFpbnQuICovXG5cdHBoeXNpY3NSb3RhdGUgKHg6IG51bWJlciwgeTogbnVtYmVyLCBkZWdyZWVzOiBudW1iZXIpIHtcblx0XHRjb25zdCBwaHlzaWNzQ29uc3RyYWludHMgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRwaHlzaWNzQ29uc3RyYWludHNbaV0ucm90YXRlKHgsIHksIGRlZ3JlZXMpO1xuXHR9XG59XG5cbi8qKiBEZXRlcm1pbmVzIGhvdyBwaHlzaWNzIGFuZCBvdGhlciBub24tZGV0ZXJtaW5pc3RpYyB1cGRhdGVzIGFyZSBhcHBsaWVkLiAqL1xuZXhwb3J0IGVudW0gUGh5c2ljcyB7XG5cdC8qKiBQaHlzaWNzIGFyZSBub3QgdXBkYXRlZCBvciBhcHBsaWVkLiAqL1xuXHRub25lLFxuXG5cdC8qKiBQaHlzaWNzIGFyZSByZXNldCB0byB0aGUgY3VycmVudCBwb3NlLiAqL1xuXHRyZXNldCxcblxuXHQvKiogUGh5c2ljcyBhcmUgdXBkYXRlZCBhbmQgdGhlIHBvc2UgZnJvbSBwaHlzaWNzIGlzIGFwcGxpZWQuICovXG5cdHVwZGF0ZSxcblxuXHQvKiogUGh5c2ljcyBhcmUgbm90IHVwZGF0ZWQgYnV0IHRoZSBwb3NlIGZyb20gcGh5c2ljcyBpcyBhcHBsaWVkLiAqL1xuXHRwb3NlXG59XG4iXX0=
661
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvU2tlbGV0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsrRUEyQitFO0FBRy9FLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSTNELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBbUIsTUFBTSxZQUFZLENBQUM7QUFFL0U7O2tJQUVrSTtBQUNsSSxNQUFNLE9BQU8sUUFBUTtJQUNaLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRXJCLHNDQUFzQztJQUN0QyxJQUFJLENBQWU7SUFFbkIseUZBQXlGO0lBQ3pGLEtBQUssQ0FBYztJQUVuQix5REFBeUQ7SUFDekQsS0FBSyxD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LEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQztRQUN6RSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDMUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDL0MsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFL0Msc0NBQXNDO1FBQ3RDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELElBQUksU0FBUyxHQUFHLFdBQVcs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Q0FBQyxrQkFBa0IsQ0FBQztRQUNuRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQ3hELGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELCtGQUErRjtJQUMvRixhQUFhLENBQUUsQ0FBUyxFQUFFLENBQVMsRUFBRSxPQUFlO1FBQ25ELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDeEQsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUFHRiw4RUFBOEU7QUFDOUUsTUFBTSxDQUFOLElBQVksT0FZWDtBQVpELFdBQVksT0FBTztJQUNsQiwwQ0FBMEM7SUFDMUMscUNBQUksQ0FBQTtJQUVKLDZDQUE2QztJQUM3Qyx1Q0FBSyxDQUFBO0lBRUwsZ0VBQWdFO0lBQ2hFLHlDQUFNLENBQUE7SUFFTixvRUFBb0U7SUFDcEUscUNBQUksQ0FBQTtBQUNMLENBQUMsRUFaVyxPQUFPLEtBQVAsT0FBTyxRQVlsQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XG4gKiBMYXN0IHVwZGF0ZWQgQXByaWwgNSwgMjAyNS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMy0yMDI1LCBFc290ZXJpYyBTb2Z0d2FyZSBMTENcbiAqXG4gKiBJbnRlZ3JhdGlvbiBvZiB0aGUgU3BpbmUgUnVudGltZXMgaW50byBzb2Z0d2FyZSBvciBvdGhlcndpc2UgY3JlYXRpbmdcbiAqIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIGlzIHBlcm1pdHRlZCB1bmRlciB0aGUgdGVybXMgYW5kXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxuICogaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLWVkaXRvci1saWNlbnNlXG4gKlxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXG4gKiBvciBvdGhlcndpc2UgY3JlYXRlIGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFNwaW5lIFJ1bnRpbWVzIChjb2xsZWN0aXZlbHksXG4gKiBcIlByb2R1Y3RzXCIpLCBwcm92aWRlZCB0aGF0IGVhY2ggdXNlciBvZiB0aGUgUHJvZHVjdHMgbXVzdCBvYnRhaW4gdGhlaXIgb3duXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcbiAqIGluY2x1ZGUgdGhpcyBsaWNlbnNlIGFuZCBjb3B5cmlnaHQgbm90aWNlLlxuICpcbiAqIFRIRSBTUElORSBSVU5USU1FUyBBUkUgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEXG4gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFXG4gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTllcbiAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTXG4gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVMsXG4gKiBCVVNJTkVTUyBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkRcbiAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0ZcbiAqIFRIRSBTUElORSBSVU5USU1FUywgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0F0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IENsaXBwaW5nQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL0NsaXBwaW5nQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgTWVzaEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9NZXNoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUGF0aEF0dGFjaG1lbnQgfSBmcm9tIFwiLi9hdHRhY2htZW50cy9QYXRoQXR0YWNobWVudC5qc1wiO1xuaW1wb3J0IHsgUmVnaW9uQXR0YWNobWVudCB9IGZyb20gXCIuL2F0dGFjaG1lbnRzL1JlZ2lvbkF0dGFjaG1lbnQuanNcIjtcbmltcG9ydCB7IEJvbmUgfSBmcm9tIFwiLi9Cb25lLmpzXCI7XG5pbXBvcnQgeyBJa0NvbnN0cmFpbnQgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBhdGhDb25zdHJhaW50IH0gZnJvbSBcIi4vUGF0aENvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFBoeXNpY3NDb25zdHJhaW50IH0gZnJvbSBcIi4vUGh5c2ljc0NvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFNrZWxldG9uQ2xpcHBpbmcgfSBmcm9tIFwiLi9Ta2VsZXRvbkNsaXBwaW5nLmpzXCI7XG5pbXBvcnQgeyBTa2VsZXRvbkRhdGEgfSBmcm9tIFwiLi9Ta2VsZXRvbkRhdGEuanNcIjtcbmltcG9ydCB7IFNraW4gfSBmcm9tIFwiLi9Ta2luLmpzXCI7XG5pbXBvcnQgeyBTbG90IH0gZnJvbSBcIi4vU2xvdC5qc1wiO1xuaW1wb3J0IHsgVHJhbnNmb3JtQ29uc3RyYWludCB9IGZyb20gXCIuL1RyYW5zZm9ybUNvbnN0cmFpbnQuanNcIjtcbmltcG9ydCB7IFVwZGF0YWJsZSB9IGZyb20gXCIuL1VwZGF0YWJsZS5qc1wiO1xuaW1wb3J0IHsgQ29sb3IsIFV0aWxzLCBNYXRoVXRpbHMsIFZlY3RvcjIsIE51bWJlckFycmF5TGlrZSB9IGZyb20gXCIuL1V0aWxzLmpzXCI7XG5cbi8qKiBTdG9yZXMgdGhlIGN1cnJlbnQgcG9zZSBmb3IgYSBza2VsZXRvbi5cbiAqXG4gKiBTZWUgW0luc3RhbmNlIG9iamVjdHNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLWFyY2hpdGVjdHVyZSNJbnN0YW5jZS1vYmplY3RzKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuICovXG5leHBvcnQgY2xhc3MgU2tlbGV0b24ge1xuXHRwcml2YXRlIHN0YXRpYyBxdWFkVHJpYW5nbGVzID0gWzAsIDEsIDIsIDIsIDMsIDBdO1xuXHRzdGF0aWMgeURvd24gPSBmYWxzZTtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3Mgc2V0dXAgcG9zZSBkYXRhLiAqL1xuXHRkYXRhOiBTa2VsZXRvbkRhdGE7XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIGJvbmVzLCBzb3J0ZWQgcGFyZW50IGZpcnN0LiBUaGUgcm9vdCBib25lIGlzIGFsd2F5cyB0aGUgZmlyc3QgYm9uZS4gKi9cblx0Ym9uZXM6IEFycmF5PEJvbmU+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBzbG90cyBpbiB0aGUgc2V0dXAgcG9zZSBkcmF3IG9yZGVyLiAqL1xuXHRzbG90czogQXJyYXk8U2xvdD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIHNsb3RzIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSBkcmF3bi4gVGhlIHJldHVybmVkIGFycmF5IG1heSBiZSBtb2RpZmllZCB0byBjaGFuZ2UgdGhlIGRyYXcgb3JkZXIuICovXG5cdGRyYXdPcmRlcjogQXJyYXk8U2xvdD47XG5cblx0LyoqIFRoZSBza2VsZXRvbidzIElLIGNvbnN0cmFpbnRzLiAqL1xuXHRpa0NvbnN0cmFpbnRzOiBBcnJheTxJa0NvbnN0cmFpbnQ+O1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyB0cmFuc2Zvcm0gY29uc3RyYWludHMuICovXG5cdHRyYW5zZm9ybUNvbnN0cmFpbnRzOiBBcnJheTxUcmFuc2Zvcm1Db25zdHJhaW50PjtcblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgcGF0aCBjb25zdHJhaW50cy4gKi9cblx0cGF0aENvbnN0cmFpbnRzOiBBcnJheTxQYXRoQ29uc3RyYWludD47XG5cblxuXHQvKiogVGhlIHNrZWxldG9uJ3MgcGh5c2ljcyBjb25zdHJhaW50cy4gKi9cblx0cGh5c2ljc0NvbnN0cmFpbnRzOiBBcnJheTxQaHlzaWNzQ29uc3RyYWludD47XG5cblx0LyoqIFRoZSBsaXN0IG9mIGJvbmVzIGFuZCBjb25zdHJhaW50cywgc29ydGVkIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSB1cGRhdGVkLCBhcyBjb21wdXRlZCBieSB7QGxpbmsgI3VwZGF0ZUNhY2hlKCl9LiAqL1xuXHRfdXBkYXRlQ2FjaGUgPSBuZXcgQXJyYXk8VXBkYXRhYmxlPigpO1xuXG5cdC8qKiBUaGUgc2tlbGV0b24ncyBjdXJyZW50IHNraW4uIE1heSBiZSBudWxsLiAqL1xuXHRza2luOiBTa2luIHwgbnVsbCA9IG51bGw7XG5cblx0LyoqIFRoZSBjb2xvciB0byB0aW50IGFsbCB0aGUgc2tlbGV0b24ncyBhdHRhY2htZW50cy4gKi9cblx0Y29sb3I6IENvbG9yO1xuXG5cdC8qKiBTY2FsZXMgdGhlIGVudGlyZSBza2VsZXRvbiBvbiB0aGUgWCBheGlzLiBUaGlzIGFmZmVjdHMgYWxsIGJvbmVzLCBldmVuIGlmIHRoZSBib25lJ3MgdHJhbnNmb3JtIG1vZGUgZGlzYWxsb3dzIHNjYWxlXG5cdCAgKiBpbmhlcml0YW5jZS4gKi9cblx0c2NhbGVYID0gMTtcblxuXHQvKiogU2NhbGVzIHRoZSBlbnRpcmUgc2tlbGV0b24gb24gdGhlIFkgYXhpcy4gVGhpcyBhZmZlY3RzIGFsbCBib25lcywgZXZlbiBpZiB0aGUgYm9uZSdzIHRyYW5zZm9ybSBtb2RlIGRpc2FsbG93cyBzY2FsZVxuXHQgICogaW5oZXJpdGFuY2UuICovXG5cdHByaXZhdGUgX3NjYWxlWSA9IDE7XG5cblx0cHVibGljIGdldCBzY2FsZVkgKCkge1xuXHRcdHJldHVybiBTa2VsZXRvbi55RG93biA/IC10aGlzLl9zY2FsZVkgOiB0aGlzLl9zY2FsZVk7XG5cdH1cblxuXHRwdWJsaWMgc2V0IHNjYWxlWSAoc2NhbGVZOiBudW1iZXIpIHtcblx0XHR0aGlzLl9zY2FsZVkgPSBzY2FsZVk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2tlbGV0b24gWCBwb3NpdGlvbiwgd2hpY2ggaXMgYWRkZWQgdG8gdGhlIHJvb3QgYm9uZSB3b3JsZFggcG9zaXRpb24uICovXG5cdHggPSAwO1xuXG5cdC8qKiBTZXRzIHRoZSBza2VsZXRvbiBZIHBvc2l0aW9uLCB3aGljaCBpcyBhZGRlZCB0byB0aGUgcm9vdCBib25lIHdvcmxkWSBwb3NpdGlvbi4gKi9cblx0eSA9IDA7XG5cblx0LyoqIFJldHVybnMgdGhlIHNrZWxldG9uJ3MgdGltZS4gVGhpcyBpcyB1c2VkIGZvciB0aW1lLWJhc2VkIG1hbmlwdWxhdGlvbnMsIHN1Y2ggYXMge0BsaW5rIFBoeXNpY3NDb25zdHJhaW50fS5cblx0ICogPHA+XG5cdCAqIFNlZSB7QGxpbmsgI3VwZGF0ZShmbG9hdCl9LiAqL1xuXHR0aW1lID0gMDtcblxuXHRjb25zdHJ1Y3RvciAoZGF0YTogU2tlbGV0b25EYXRhKSB7XG5cdFx0aWYgKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoXCJkYXRhIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHR0aGlzLmRhdGEgPSBkYXRhO1xuXG5cdFx0dGhpcy5ib25lcyA9IG5ldyBBcnJheTxCb25lPigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5ib25lcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGJvbmVEYXRhID0gZGF0YS5ib25lc1tpXTtcblx0XHRcdGxldCBib25lOiBCb25lO1xuXHRcdFx0aWYgKCFib25lRGF0YS5wYXJlbnQpXG5cdFx0XHRcdGJvbmUgPSBuZXcgQm9uZShib25lRGF0YSwgdGhpcywgbnVsbCk7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IHBhcmVudCA9IHRoaXMuYm9uZXNbYm9uZURhdGEucGFyZW50LmluZGV4XTtcblx0XHRcdFx0Ym9uZSA9IG5ldyBCb25lKGJvbmVEYXRhLCB0aGlzLCBwYXJlbnQpO1xuXHRcdFx0XHRwYXJlbnQuY2hpbGRyZW4ucHVzaChib25lKTtcblx0XHRcdH1cblx0XHRcdHRoaXMuYm9uZXMucHVzaChib25lKTtcblx0XHR9XG5cblx0XHR0aGlzLnNsb3RzID0gbmV3IEFycmF5PFNsb3Q+KCk7XG5cdFx0dGhpcy5kcmF3T3JkZXIgPSBuZXcgQXJyYXk8U2xvdD4oKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEuc2xvdHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBzbG90RGF0YSA9IGRhdGEuc2xvdHNbaV07XG5cdFx0XHRsZXQgYm9uZSA9IHRoaXMuYm9uZXNbc2xvdERhdGEuYm9uZURhdGEuaW5kZXhdO1xuXHRcdFx0bGV0IHNsb3QgPSBuZXcgU2xvdChzbG90RGF0YSwgYm9uZSk7XG5cdFx0XHR0aGlzLnNsb3RzLnB1c2goc2xvdCk7XG5cdFx0XHR0aGlzLmRyYXdPcmRlci5wdXNoKHNsb3QpO1xuXHRcdH1cblxuXHRcdHRoaXMuaWtDb25zdHJhaW50cyA9IG5ldyBBcnJheTxJa0NvbnN0cmFpbnQ+KCk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmlrQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBpa0NvbnN0cmFpbnREYXRhID0gZGF0YS5pa0NvbnN0cmFpbnRzW2ldO1xuXHRcdFx0dGhpcy5pa0NvbnN0cmFpbnRzLnB1c2gobmV3IElrQ29uc3RyYWludChpa0NvbnN0cmFpbnREYXRhLCB0aGlzKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cyA9IG5ldyBBcnJheTxUcmFuc2Zvcm1Db25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS50cmFuc2Zvcm1Db25zdHJhaW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IHRyYW5zZm9ybUNvbnN0cmFpbnREYXRhID0gZGF0YS50cmFuc2Zvcm1Db25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMudHJhbnNmb3JtQ29uc3RyYWludHMucHVzaChuZXcgVHJhbnNmb3JtQ29uc3RyYWludCh0cmFuc2Zvcm1Db25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMucGF0aENvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBhdGhDb25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5wYXRoQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBwYXRoQ29uc3RyYWludERhdGEgPSBkYXRhLnBhdGhDb25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMucGF0aENvbnN0cmFpbnRzLnB1c2gobmV3IFBhdGhDb25zdHJhaW50KHBhdGhDb25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBoeXNpY3NDb25zdHJhaW50PigpO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5waHlzaWNzQ29uc3RyYWludHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdGxldCBwaHlzaWNzQ29uc3RyYWludERhdGEgPSBkYXRhLnBoeXNpY3NDb25zdHJhaW50c1tpXTtcblx0XHRcdHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzLnB1c2gobmV3IFBoeXNpY3NDb25zdHJhaW50KHBoeXNpY3NDb25zdHJhaW50RGF0YSwgdGhpcykpO1xuXHRcdH1cblxuXHRcdHRoaXMuY29sb3IgPSBuZXcgQ29sb3IoMSwgMSwgMSwgMSk7XG5cdFx0dGhpcy51cGRhdGVDYWNoZSgpO1xuXHR9XG5cblx0LyoqIENhY2hlcyBpbmZvcm1hdGlvbiBhYm91dCBib25lcyBhbmQgY29uc3RyYWludHMuIE11c3QgYmUgY2FsbGVkIGlmIHRoZSB7QGxpbmsgI2dldFNraW4oKX0gaXMgbW9kaWZpZWQgb3IgaWYgYm9uZXMsXG5cdCAqIGNvbnN0cmFpbnRzLCBvciB3ZWlnaHRlZCBwYXRoIGF0dGFjaG1lbnRzIGFyZSBhZGRlZCBvciByZW1vdmVkLiAqL1xuXHR1cGRhdGVDYWNoZSAoKSB7XG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0dXBkYXRlQ2FjaGUubGVuZ3RoID0gMDtcblxuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLnNvcnRlZCA9IGJvbmUuZGF0YS5za2luUmVxdWlyZWQ7XG5cdFx0XHRib25lLmFjdGl2ZSA9ICFib25lLnNvcnRlZDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5za2luKSB7XG5cdFx0XHRsZXQgc2tpbkJvbmVzID0gdGhpcy5za2luLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB0aGlzLnNraW4uYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRcdGxldCBib25lOiBCb25lIHwgbnVsbCA9IHRoaXMuYm9uZXNbc2tpbkJvbmVzW2ldLmluZGV4XTtcblx0XHRcdFx0ZG8ge1xuXHRcdFx0XHRcdGJvbmUuc29ydGVkID0gZmFsc2U7XG5cdFx0XHRcdFx0Ym9uZS5hY3RpdmUgPSB0cnVlO1xuXHRcdFx0XHRcdGJvbmUgPSBib25lLnBhcmVudDtcblx0XHRcdFx0fSB3aGlsZSAoYm9uZSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ly8gSUsgZmlyc3QsIGxvd2VzdCBoaWVyYXJjaHkgZGVwdGggZmlyc3QuXG5cdFx0bGV0IGlrQ29uc3RyYWludHMgPSB0aGlzLmlrQ29uc3RyYWludHM7XG5cdFx0bGV0IHRyYW5zZm9ybUNvbnN0cmFpbnRzID0gdGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cztcblx0XHRsZXQgcGF0aENvbnN0cmFpbnRzID0gdGhpcy5wYXRoQ29uc3RyYWludHM7XG5cdFx0bGV0IHBoeXNpY3NDb25zdHJhaW50cyA9IHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzO1xuXHRcdGxldCBpa0NvdW50ID0gaWtDb25zdHJhaW50cy5sZW5ndGgsIHRyYW5zZm9ybUNvdW50ID0gdHJhbnNmb3JtQ29uc3RyYWludHMubGVuZ3RoLCBwYXRoQ291bnQgPSBwYXRoQ29uc3RyYWludHMubGVuZ3RoLCBwaHlzaWNzQ291bnQgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7XG5cdFx0bGV0IGNvbnN0cmFpbnRDb3VudCA9IGlrQ291bnQgKyB0cmFuc2Zvcm1Db3VudCArIHBhdGhDb3VudCArIHBoeXNpY3NDb3VudDtcblxuXHRcdG91dGVyOlxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY29uc3RyYWludENvdW50OyBpKyspIHtcblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBpa0NvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gaWtDb25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydElrQ29uc3RyYWludChjb25zdHJhaW50KTtcblx0XHRcdFx0XHRjb250aW51ZSBvdXRlcjtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Zm9yIChsZXQgaWkgPSAwOyBpaSA8IHRyYW5zZm9ybUNvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gdHJhbnNmb3JtQ29uc3RyYWludHNbaWldO1xuXHRcdFx0XHRpZiAoY29uc3RyYWludC5kYXRhLm9yZGVyID09IGkpIHtcblx0XHRcdFx0XHR0aGlzLnNvcnRUcmFuc2Zvcm1Db25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGxldCBpaSA9IDA7IGlpIDwgcGF0aENvdW50OyBpaSsrKSB7XG5cdFx0XHRcdGxldCBjb25zdHJhaW50ID0gcGF0aENvbnN0cmFpbnRzW2lpXTtcblx0XHRcdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5vcmRlciA9PSBpKSB7XG5cdFx0XHRcdFx0dGhpcy5zb3J0UGF0aENvbnN0cmFpbnQoY29uc3RyYWludCk7XG5cdFx0XHRcdFx0Y29udGludWUgb3V0ZXI7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAobGV0IGlpID0gMDsgaWkgPCBwaHlzaWNzQ291bnQ7IGlpKyspIHtcblx0XHRcdFx0Y29uc3QgY29uc3RyYWludCA9IHBoeXNpY3NDb25zdHJhaW50c1tpaV07XG5cdFx0XHRcdGlmIChjb25zdHJhaW50LmRhdGEub3JkZXIgPT0gaSkge1xuXHRcdFx0XHRcdHRoaXMuc29ydFBoeXNpY3NDb25zdHJhaW50KGNvbnN0cmFpbnQpO1xuXHRcdFx0XHRcdGNvbnRpbnVlIG91dGVyO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLnNvcnRCb25lKGJvbmVzW2ldKTtcblx0fVxuXG5cdHNvcnRJa0NvbnN0cmFpbnQgKGNvbnN0cmFpbnQ6IElrQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IHRhcmdldCA9IGNvbnN0cmFpbnQudGFyZ2V0O1xuXHRcdHRoaXMuc29ydEJvbmUodGFyZ2V0KTtcblxuXHRcdGxldCBjb25zdHJhaW5lZCA9IGNvbnN0cmFpbnQuYm9uZXM7XG5cdFx0bGV0IHBhcmVudCA9IGNvbnN0cmFpbmVkWzBdO1xuXHRcdHRoaXMuc29ydEJvbmUocGFyZW50KTtcblxuXHRcdGlmIChjb25zdHJhaW5lZC5sZW5ndGggPT0gMSkge1xuXHRcdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblx0XHRcdHRoaXMuc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxldCBjaGlsZCA9IGNvbnN0cmFpbmVkW2NvbnN0cmFpbmVkLmxlbmd0aCAtIDFdO1xuXHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZCk7XG5cblx0XHRcdHRoaXMuX3VwZGF0ZUNhY2hlLnB1c2goY29uc3RyYWludCk7XG5cblx0XHRcdHRoaXMuc29ydFJlc2V0KHBhcmVudC5jaGlsZHJlbik7XG5cdFx0XHRjaGlsZC5zb3J0ZWQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHNvcnRQYXRoQ29uc3RyYWludCAoY29uc3RyYWludDogUGF0aENvbnN0cmFpbnQpIHtcblx0XHRjb25zdHJhaW50LmFjdGl2ZSA9IGNvbnN0cmFpbnQudGFyZ2V0LmJvbmUuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0bGV0IHNsb3QgPSBjb25zdHJhaW50LnRhcmdldDtcblx0XHRsZXQgc2xvdEluZGV4ID0gc2xvdC5kYXRhLmluZGV4O1xuXHRcdGxldCBzbG90Qm9uZSA9IHNsb3QuYm9uZTtcblx0XHRpZiAodGhpcy5za2luKSB0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5za2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRpZiAodGhpcy5kYXRhLmRlZmF1bHRTa2luICYmIHRoaXMuZGF0YS5kZWZhdWx0U2tpbiAhPSB0aGlzLnNraW4pXG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5kYXRhLmRlZmF1bHRTa2luLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHRoaXMuZGF0YS5za2lucy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHR0aGlzLnNvcnRQYXRoQ29uc3RyYWludEF0dGFjaG1lbnQodGhpcy5kYXRhLnNraW5zW2ldLCBzbG90SW5kZXgsIHNsb3RCb25lKTtcblxuXHRcdGxldCBhdHRhY2htZW50ID0gc2xvdC5nZXRBdHRhY2htZW50KCk7XG5cdFx0aWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBQYXRoQXR0YWNobWVudCkgdGhpcy5zb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aChhdHRhY2htZW50LCBzbG90Qm9uZSk7XG5cblx0XHRsZXQgY29uc3RyYWluZWQgPSBjb25zdHJhaW50LmJvbmVzO1xuXHRcdGxldCBib25lQ291bnQgPSBjb25zdHJhaW5lZC5sZW5ndGg7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdHRoaXMuc29ydEJvbmUoY29uc3RyYWluZWRbaV0pO1xuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHR0aGlzLnNvcnRSZXNldChjb25zdHJhaW5lZFtpXS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGNvbnN0cmFpbmVkW2ldLnNvcnRlZCA9IHRydWU7XG5cdH1cblxuXHRzb3J0VHJhbnNmb3JtQ29uc3RyYWludCAoY29uc3RyYWludDogVHJhbnNmb3JtQ29uc3RyYWludCkge1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gY29uc3RyYWludC50YXJnZXQuaXNBY3RpdmUoKSAmJiAoIWNvbnN0cmFpbnQuZGF0YS5za2luUmVxdWlyZWQgfHwgKHRoaXMuc2tpbiAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKSE7XG5cdFx0aWYgKCFjb25zdHJhaW50LmFjdGl2ZSkgcmV0dXJuO1xuXG5cdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW50LnRhcmdldCk7XG5cblx0XHRsZXQgY29uc3RyYWluZWQgPSBjb25zdHJhaW50LmJvbmVzO1xuXHRcdGxldCBib25lQ291bnQgPSBjb25zdHJhaW5lZC5sZW5ndGg7XG5cdFx0aWYgKGNvbnN0cmFpbnQuZGF0YS5sb2NhbCkge1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKykge1xuXHRcdFx0XHRsZXQgY2hpbGQgPSBjb25zdHJhaW5lZFtpXTtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZC5wYXJlbnQhKTtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjaGlsZCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspIHtcblx0XHRcdFx0dGhpcy5zb3J0Qm9uZShjb25zdHJhaW5lZFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgYm9uZUNvdW50OyBpKyspXG5cdFx0XHR0aGlzLnNvcnRSZXNldChjb25zdHJhaW5lZFtpXS5jaGlsZHJlbik7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBib25lQ291bnQ7IGkrKylcblx0XHRcdGNvbnN0cmFpbmVkW2ldLnNvcnRlZCA9IHRydWU7XG5cdH1cblxuXHRzb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50IChza2luOiBTa2luLCBzbG90SW5kZXg6IG51bWJlciwgc2xvdEJvbmU6IEJvbmUpIHtcblx0XHRsZXQgYXR0YWNobWVudHMgPSBza2luLmF0dGFjaG1lbnRzW3Nsb3RJbmRleF07XG5cdFx0aWYgKCFhdHRhY2htZW50cykgcmV0dXJuO1xuXHRcdGZvciAobGV0IGtleSBpbiBhdHRhY2htZW50cykge1xuXHRcdFx0dGhpcy5zb3J0UGF0aENvbnN0cmFpbnRBdHRhY2htZW50V2l0aChhdHRhY2htZW50c1trZXldLCBzbG90Qm9uZSk7XG5cdFx0fVxuXHR9XG5cblx0c29ydFBhdGhDb25zdHJhaW50QXR0YWNobWVudFdpdGggKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQsIHNsb3RCb25lOiBCb25lKSB7XG5cdFx0aWYgKCEoYXR0YWNobWVudCBpbnN0YW5jZW9mIFBhdGhBdHRhY2htZW50KSkgcmV0dXJuO1xuXHRcdGxldCBwYXRoQm9uZXMgPSAoPFBhdGhBdHRhY2htZW50PmF0dGFjaG1lbnQpLmJvbmVzO1xuXHRcdGlmICghcGF0aEJvbmVzKVxuXHRcdFx0dGhpcy5zb3J0Qm9uZShzbG90Qm9uZSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRsZXQgYm9uZXMgPSB0aGlzLmJvbmVzO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBwYXRoQm9uZXMubGVuZ3RoOyBpIDwgbjspIHtcblx0XHRcdFx0bGV0IG5uID0gcGF0aEJvbmVzW2krK107XG5cdFx0XHRcdG5uICs9IGk7XG5cdFx0XHRcdHdoaWxlIChpIDwgbm4pXG5cdFx0XHRcdFx0dGhpcy5zb3J0Qm9uZShib25lc1twYXRoQm9uZXNbaSsrXV0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNvcnRQaHlzaWNzQ29uc3RyYWludCAoY29uc3RyYWludDogUGh5c2ljc0NvbnN0cmFpbnQpIHtcblx0XHRjb25zdCBib25lID0gY29uc3RyYWludC5ib25lO1xuXHRcdGNvbnN0cmFpbnQuYWN0aXZlID0gYm9uZS5hY3RpdmUgJiYgKCFjb25zdHJhaW50LmRhdGEuc2tpblJlcXVpcmVkIHx8ICh0aGlzLnNraW4gIT0gbnVsbCAmJiBVdGlscy5jb250YWlucyh0aGlzLnNraW4uY29uc3RyYWludHMsIGNvbnN0cmFpbnQuZGF0YSwgdHJ1ZSkpKTtcblx0XHRpZiAoIWNvbnN0cmFpbnQuYWN0aXZlKSByZXR1cm47XG5cblx0XHR0aGlzLnNvcnRCb25lKGJvbmUpO1xuXG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChjb25zdHJhaW50KTtcblxuXHRcdHRoaXMuc29ydFJlc2V0KGJvbmUuY2hpbGRyZW4pO1xuXHRcdGJvbmUuc29ydGVkID0gdHJ1ZTtcblx0fVxuXG5cdHNvcnRCb25lIChib25lOiBCb25lKSB7XG5cdFx0aWYgKCFib25lKSByZXR1cm47XG5cdFx0aWYgKGJvbmUuc29ydGVkKSByZXR1cm47XG5cdFx0bGV0IHBhcmVudCA9IGJvbmUucGFyZW50O1xuXHRcdGlmIChwYXJlbnQpIHRoaXMuc29ydEJvbmUocGFyZW50KTtcblx0XHRib25lLnNvcnRlZCA9IHRydWU7XG5cdFx0dGhpcy5fdXBkYXRlQ2FjaGUucHVzaChib25lKTtcblx0fVxuXG5cdHNvcnRSZXNldCAoYm9uZXM6IEFycmF5PEJvbmU+KSB7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRpZiAoIWJvbmUuYWN0aXZlKSBjb250aW51ZTtcblx0XHRcdGlmIChib25lLnNvcnRlZCkgdGhpcy5zb3J0UmVzZXQoYm9uZS5jaGlsZHJlbik7XG5cdFx0XHRib25lLnNvcnRlZCA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXG5cdC8qKiBVcGRhdGVzIHRoZSB3b3JsZCB0cmFuc2Zvcm0gZm9yIGVhY2ggYm9uZSBhbmQgYXBwbGllcyBhbGwgY29uc3RyYWludHMuXG5cdCAqXG5cdCAqIFNlZSBbV29ybGQgdHJhbnNmb3Jtc10oaHR0cDovL2Vzb3Rlcmljc29mdHdhcmUuY29tL3NwaW5lLXJ1bnRpbWUtc2tlbGV0b25zI1dvcmxkLXRyYW5zZm9ybXMpIGluIHRoZSBTcGluZVxuXHQgKiBSdW50aW1lcyBHdWlkZS4gKi9cblx0dXBkYXRlV29ybGRUcmFuc2Zvcm0gKHBoeXNpY3M6IFBoeXNpY3MpIHtcblx0XHRpZiAocGh5c2ljcyA9PT0gdW5kZWZpbmVkIHx8IHBoeXNpY3MgPT09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInBoeXNpY3MgaXMgdW5kZWZpbmVkXCIpO1xuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCBib25lID0gYm9uZXNbaV07XG5cdFx0XHRib25lLmF4ID0gYm9uZS54O1xuXHRcdFx0Ym9uZS5heSA9IGJvbmUueTtcblx0XHRcdGJvbmUuYXJvdGF0aW9uID0gYm9uZS5yb3RhdGlvbjtcblx0XHRcdGJvbmUuYXNjYWxlWCA9IGJvbmUuc2NhbGVYO1xuXHRcdFx0Ym9uZS5hc2NhbGVZID0gYm9uZS5zY2FsZVk7XG5cdFx0XHRib25lLmFzaGVhclggPSBib25lLnNoZWFyWDtcblx0XHRcdGJvbmUuYXNoZWFyWSA9IGJvbmUuc2hlYXJZO1xuXHRcdH1cblxuXHRcdGxldCB1cGRhdGVDYWNoZSA9IHRoaXMuX3VwZGF0ZUNhY2hlO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gdXBkYXRlQ2FjaGUubGVuZ3RoOyBpIDwgbjsgaSsrKVxuXHRcdFx0dXBkYXRlQ2FjaGVbaV0udXBkYXRlKHBoeXNpY3MpO1xuXHR9XG5cblx0dXBkYXRlV29ybGRUcmFuc2Zvcm1XaXRoIChwaHlzaWNzOiBQaHlzaWNzLCBwYXJlbnQ6IEJvbmUpIHtcblx0XHRpZiAoIXBhcmVudCkgdGhyb3cgbmV3IEVycm9yKFwicGFyZW50IGNhbm5vdCBiZSBudWxsLlwiKTtcblxuXHRcdGxldCBib25lcyA9IHRoaXMuYm9uZXM7XG5cdFx0Zm9yIChsZXQgaSA9IDEsIG4gPSBib25lcy5sZW5ndGg7IGkgPCBuOyBpKyspIHsgLy8gU2tpcCByb290IGJvbmUuXG5cdFx0XHRsZXQgYm9uZSA9IGJvbmVzW2ldO1xuXHRcdFx0Ym9uZS5heCA9IGJvbmUueDtcblx0XHRcdGJvbmUuYXkgPSBib25lLnk7XG5cdFx0XHRib25lLmFyb3RhdGlvbiA9IGJvbmUucm90YXRpb247XG5cdFx0XHRib25lLmFzY2FsZVggPSBib25lLnNjYWxlWDtcblx0XHRcdGJvbmUuYXNjYWxlWSA9IGJvbmUuc2NhbGVZO1xuXHRcdFx0Ym9uZS5hc2hlYXJYID0gYm9uZS5zaGVhclg7XG5cdFx0XHRib25lLmFzaGVhclkgPSBib25lLnNoZWFyWTtcblx0XHR9XG5cblx0XHQvLyBBcHBseSB0aGUgcGFyZW50IGJvbmUgdHJhbnNmb3JtIHRvIHRoZSByb290IGJvbmUuIFRoZSByb290IGJvbmUgYWx3YXlzIGluaGVyaXRzIHNjYWxlLCByb3RhdGlvbiBhbmQgcmVmbGVjdGlvbi5cblx0XHRsZXQgcm9vdEJvbmUgPSB0aGlzLmdldFJvb3RCb25lKCk7XG5cdFx0aWYgKCFyb290Qm9uZSkgdGhyb3cgbmV3IEVycm9yKFwiUm9vdCBib25lIG11c3Qgbm90IGJlIG51bGwuXCIpO1xuXHRcdGxldCBwYSA9IHBhcmVudC5hLCBwYiA9IHBhcmVudC5iLCBwYyA9IHBhcmVudC5jLCBwZCA9IHBhcmVudC5kO1xuXHRcdHJvb3RCb25lLndvcmxkWCA9IHBhICogdGhpcy54ICsgcGIgKiB0aGlzLnkgKyBwYXJlbnQud29ybGRYO1xuXHRcdHJvb3RCb25lLndvcmxkWSA9IHBjICogdGhpcy54ICsgcGQgKiB0aGlzLnkgKyBwYXJlbnQud29ybGRZO1xuXG5cdFx0Y29uc3QgcnggPSAocm9vdEJvbmUucm90YXRpb24gKyByb290Qm9uZS5zaGVhclgpICogTWF0aFV0aWxzLmRlZ1JhZDtcblx0XHRjb25zdCByeSA9IChyb290Qm9uZS5yb3RhdGlvbiArIDkwICsgcm9vdEJvbmUuc2hlYXJZKSAqIE1hdGhVdGlscy5kZWdSYWQ7XG5cdFx0Y29uc3QgbGEgPSBNYXRoLmNvcyhyeCkgKiByb290Qm9uZS5zY2FsZVg7XG5cdFx0Y29uc3QgbGIgPSBNYXRoLmNvcyhyeSkgKiByb290Qm9uZS5zY2FsZVk7XG5cdFx0Y29uc3QgbGMgPSBNYXRoLnNpbihyeCkgKiByb290Qm9uZS5zY2FsZVg7XG5cdFx0Y29uc3QgbGQgPSBNYXRoLnNpbihyeSkgKiByb290Qm9uZS5zY2FsZVk7XG5cdFx0cm9vdEJvbmUuYSA9IChwYSAqIGxhICsgcGIgKiBsYykgKiB0aGlzLnNjYWxlWDtcblx0XHRyb290Qm9uZS5iID0gKHBhICogbGIgKyBwYiAqIGxkKSAqIHRoaXMuc2NhbGVYO1xuXHRcdHJvb3RCb25lLmMgPSAocGMgKiBsYSArIHBkICogbGMpICogdGhpcy5zY2FsZVk7XG5cdFx0cm9vdEJvbmUuZCA9IChwYyAqIGxiICsgcGQgKiBsZCkgKiB0aGlzLnNjYWxlWTtcblxuXHRcdC8vIFVwZGF0ZSBldmVyeXRoaW5nIGV4Y2VwdCByb290IGJvbmUuXG5cdFx0bGV0IHVwZGF0ZUNhY2hlID0gdGhpcy5fdXBkYXRlQ2FjaGU7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSB1cGRhdGVDYWNoZS5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdGxldCB1cGRhdGFibGUgPSB1cGRhdGVDYWNoZVtpXTtcblx0XHRcdGlmICh1cGRhdGFibGUgIT0gcm9vdEJvbmUpIHVwZGF0YWJsZS51cGRhdGUocGh5c2ljcyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqIFNldHMgdGhlIGJvbmVzLCBjb25zdHJhaW50cywgYW5kIHNsb3RzIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRUb1NldHVwUG9zZSAoKSB7XG5cdFx0dGhpcy5zZXRCb25lc1RvU2V0dXBQb3NlKCk7XG5cdFx0dGhpcy5zZXRTbG90c1RvU2V0dXBQb3NlKCk7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgYm9uZXMgYW5kIGNvbnN0cmFpbnRzIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRCb25lc1RvU2V0dXBQb3NlICgpIHtcblx0XHRmb3IgKGNvbnN0IGJvbmUgb2YgdGhpcy5ib25lcykgYm9uZS5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLmlrQ29uc3RyYWludHMpIGNvbnN0cmFpbnQuc2V0VG9TZXR1cFBvc2UoKTtcblx0XHRmb3IgKGNvbnN0IGNvbnN0cmFpbnQgb2YgdGhpcy50cmFuc2Zvcm1Db25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnBhdGhDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHRcdGZvciAoY29uc3QgY29uc3RyYWludCBvZiB0aGlzLnBoeXNpY3NDb25zdHJhaW50cykgY29uc3RyYWludC5zZXRUb1NldHVwUG9zZSgpO1xuXHR9XG5cblx0LyoqIFNldHMgdGhlIHNsb3RzIGFuZCBkcmF3IG9yZGVyIHRvIHRoZWlyIHNldHVwIHBvc2UgdmFsdWVzLiAqL1xuXHRzZXRTbG90c1RvU2V0dXBQb3NlICgpIHtcblx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdFV0aWxzLmFycmF5Q29weShzbG90cywgMCwgdGhpcy5kcmF3T3JkZXIsIDAsIHNsb3RzLmxlbmd0aCk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRzbG90c1tpXS5zZXRUb1NldHVwUG9zZSgpO1xuXHR9XG5cblx0LyoqIEByZXR1cm5zIE1heSByZXR1cm4gbnVsbC4gKi9cblx0Z2V0Um9vdEJvbmUgKCkge1xuXHRcdGlmICh0aGlzLmJvbmVzLmxlbmd0aCA9PSAwKSByZXR1cm4gbnVsbDtcblx0XHRyZXR1cm4gdGhpcy5ib25lc1swXTtcblx0fVxuXG5cdC8qKiBAcmV0dXJucyBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZEJvbmUgKGJvbmVOYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWJvbmVOYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJib25lTmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0bGV0IGJvbmVzID0gdGhpcy5ib25lcztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuXHRcdFx0bGV0IGJvbmUgPSBib25lc1tpXTtcblx0XHRcdGlmIChib25lLmRhdGEubmFtZSA9PSBib25lTmFtZSkgcmV0dXJuIGJvbmU7XG5cdFx0fVxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgc2xvdCBieSBjb21wYXJpbmcgZWFjaCBzbG90J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QgdGhhbiB0byBjYWxsIGl0XG5cdCAqIHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRmaW5kU2xvdCAoc2xvdE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghc2xvdE5hbWUpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0aWYgKHNsb3QuZGF0YS5uYW1lID09IHNsb3ROYW1lKSByZXR1cm4gc2xvdDtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHQvKiogU2V0cyBhIHNraW4gYnkgbmFtZS5cblx0ICpcblx0ICogU2VlIHtAbGluayAjc2V0U2tpbigpfS4gKi9cblx0c2V0U2tpbkJ5TmFtZSAoc2tpbk5hbWU6IHN0cmluZykge1xuXHRcdGxldCBza2luID0gdGhpcy5kYXRhLmZpbmRTa2luKHNraW5OYW1lKTtcblx0XHRpZiAoIXNraW4pIHRocm93IG5ldyBFcnJvcihcIlNraW4gbm90IGZvdW5kOiBcIiArIHNraW5OYW1lKTtcblx0XHR0aGlzLnNldFNraW4oc2tpbik7XG5cdH1cblxuXHQvKiogU2V0cyB0aGUgc2tpbiB1c2VkIHRvIGxvb2sgdXAgYXR0YWNobWVudHMgYmVmb3JlIGxvb2tpbmcgaW4gdGhlIHtAbGluayBTa2VsZXRvbkRhdGEjZGVmYXVsdFNraW4gZGVmYXVsdCBza2lufS4gSWYgdGhlXG5cdCAqIHNraW4gaXMgY2hhbmdlZCwge0BsaW5rICN1cGRhdGVDYWNoZSgpfSBpcyBjYWxsZWQuXG5cdCAqXG5cdCAqIEF0dGFjaG1lbnRzIGZyb20gdGhlIG5ldyBza2luIGFyZSBhdHRhY2hlZCBpZiB0aGUgY29ycmVzcG9uZGluZyBhdHRhY2htZW50IGZyb20gdGhlIG9sZCBza2luIHdhcyBhdHRhY2hlZC4gSWYgdGhlcmUgd2FzIG5vXG5cdCAqIG9sZCBza2luLCBlYWNoIHNsb3QncyBzZXR1cCBtb2RlIGF0dGFjaG1lbnQgaXMgYXR0YWNoZWQgZnJvbSB0aGUgbmV3IHNraW4uXG5cdCAqXG5cdCAqIEFmdGVyIGNoYW5naW5nIHRoZSBza2luLCB0aGUgdmlzaWJsZSBhdHRhY2htZW50cyBjYW4gYmUgcmVzZXQgdG8gdGhvc2UgYXR0YWNoZWQgaW4gdGhlIHNldHVwIHBvc2UgYnkgY2FsbGluZ1xuXHQgKiB7QGxpbmsgI3NldFNsb3RzVG9TZXR1cFBvc2UoKX0uIEFsc28sIG9mdGVuIHtAbGluayBBbmltYXRpb25TdGF0ZSNhcHBseSgpfSBpcyBjYWxsZWQgYmVmb3JlIHRoZSBuZXh0IHRpbWUgdGhlXG5cdCAqIHNrZWxldG9uIGlzIHJlbmRlcmVkIHRvIGFsbG93IGFueSBhdHRhY2htZW50IGtleXMgaW4gdGhlIGN1cnJlbnQgYW5pbWF0aW9uKHMpIHRvIGhpZGUgb3Igc2hvdyBhdHRhY2htZW50cyBmcm9tIHRoZSBuZXcgc2tpbi5cblx0ICogQHBhcmFtIG5ld1NraW4gTWF5IGJlIG51bGwuICovXG5cdHNldFNraW4gKG5ld1NraW46IFNraW4gfCBudWxsKSB7XG5cdFx0aWYgKG5ld1NraW4gPT0gdGhpcy5za2luKSByZXR1cm47XG5cdFx0aWYgKG5ld1NraW4pIHtcblx0XHRcdGlmICh0aGlzLnNraW4pXG5cdFx0XHRcdG5ld1NraW4uYXR0YWNoQWxsKHRoaXMsIHRoaXMuc2tpbik7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IHNsb3RzID0gdGhpcy5zbG90cztcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBzbG90cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcblx0XHRcdFx0XHRsZXQgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0XHRcdGxldCBuYW1lID0gc2xvdC5kYXRhLmF0dGFjaG1lbnROYW1lO1xuXHRcdFx0XHRcdGlmIChuYW1lKSB7XG5cdFx0XHRcdFx0XHRsZXQgYXR0YWNobWVudCA9IG5ld1NraW4uZ2V0QXR0YWNobWVudChpLCBuYW1lKTtcblx0XHRcdFx0XHRcdGlmIChhdHRhY2htZW50KSBzbG90LnNldEF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHRoaXMuc2tpbiA9IG5ld1NraW47XG5cdFx0dGhpcy51cGRhdGVDYWNoZSgpO1xuXHR9XG5cblxuXHQvKiogRmluZHMgYW4gYXR0YWNobWVudCBieSBsb29raW5nIGluIHRoZSB7QGxpbmsgI3NraW59IGFuZCB7QGxpbmsgU2tlbGV0b25EYXRhI2RlZmF1bHRTa2lufSB1c2luZyB0aGUgc2xvdCBuYW1lIGFuZCBhdHRhY2htZW50XG5cdCAqIG5hbWUuXG5cdCAqXG5cdCAqIFNlZSB7QGxpbmsgI2dldEF0dGFjaG1lbnQoKX0uXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRnZXRBdHRhY2htZW50QnlOYW1lIChzbG90TmFtZTogc3RyaW5nLCBhdHRhY2htZW50TmFtZTogc3RyaW5nKTogQXR0YWNobWVudCB8IG51bGwge1xuXHRcdGxldCBzbG90ID0gdGhpcy5kYXRhLmZpbmRTbG90KHNsb3ROYW1lKTtcblx0XHRpZiAoIXNsb3QpIHRocm93IG5ldyBFcnJvcihgQ2FuJ3QgZmluZCBzbG90IHdpdGggbmFtZSAke3Nsb3ROYW1lfWApO1xuXHRcdHJldHVybiB0aGlzLmdldEF0dGFjaG1lbnQoc2xvdC5pbmRleCwgYXR0YWNobWVudE5hbWUpO1xuXHR9XG5cblx0LyoqIEZpbmRzIGFuIGF0dGFjaG1lbnQgYnkgbG9va2luZyBpbiB0aGUge0BsaW5rICNza2lufSBhbmQge0BsaW5rIFNrZWxldG9uRGF0YSNkZWZhdWx0U2tpbn0gdXNpbmcgdGhlIHNsb3QgaW5kZXggYW5kXG5cdCAqIGF0dGFjaG1lbnQgbmFtZS4gRmlyc3QgdGhlIHNraW4gaXMgY2hlY2tlZCBhbmQgaWYgdGhlIGF0dGFjaG1lbnQgd2FzIG5vdCBmb3VuZCwgdGhlIGRlZmF1bHQgc2tpbiBpcyBjaGVja2VkLlxuXHQgKlxuXHQgKiBTZWUgW1J1bnRpbWUgc2tpbnNdKGh0dHA6Ly9lc290ZXJpY3NvZnR3YXJlLmNvbS9zcGluZS1ydW50aW1lLXNraW5zKSBpbiB0aGUgU3BpbmUgUnVudGltZXMgR3VpZGUuXG5cdCAqIEByZXR1cm5zIE1heSBiZSBudWxsLiAqL1xuXHRnZXRBdHRhY2htZW50IChzbG90SW5kZXg6IG51bWJlciwgYXR0YWNobWVudE5hbWU6IHN0cmluZyk6IEF0dGFjaG1lbnQgfCBudWxsIHtcblx0XHRpZiAoIWF0dGFjaG1lbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJhdHRhY2htZW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0aWYgKHRoaXMuc2tpbikge1xuXHRcdFx0bGV0IGF0dGFjaG1lbnQgPSB0aGlzLnNraW4uZ2V0QXR0YWNobWVudChzbG90SW5kZXgsIGF0dGFjaG1lbnROYW1lKTtcblx0XHRcdGlmIChhdHRhY2htZW50KSByZXR1cm4gYXR0YWNobWVudDtcblx0XHR9XG5cdFx0aWYgKHRoaXMuZGF0YS5kZWZhdWx0U2tpbikgcmV0dXJuIHRoaXMuZGF0YS5kZWZhdWx0U2tpbi5nZXRBdHRhY2htZW50KHNsb3RJbmRleCwgYXR0YWNobWVudE5hbWUpO1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqIEEgY29udmVuaWVuY2UgbWV0aG9kIHRvIHNldCBhbiBhdHRhY2htZW50IGJ5IGZpbmRpbmcgdGhlIHNsb3Qgd2l0aCB7QGxpbmsgI2ZpbmRTbG90KCl9LCBmaW5kaW5nIHRoZSBhdHRhY2htZW50IHdpdGhcblx0ICoge0BsaW5rICNnZXRBdHRhY2htZW50KCl9LCB0aGVuIHNldHRpbmcgdGhlIHNsb3QncyB7QGxpbmsgU2xvdCNhdHRhY2htZW50fS5cblx0ICogQHBhcmFtIGF0dGFjaG1lbnROYW1lIE1heSBiZSBudWxsIHRvIGNsZWFyIHRoZSBzbG90J3MgYXR0YWNobWVudC4gKi9cblx0c2V0QXR0YWNobWVudCAoc2xvdE5hbWU6IHN0cmluZywgYXR0YWNobWVudE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghc2xvdE5hbWUpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgc2xvdHMgPSB0aGlzLnNsb3RzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgc2xvdCA9IHNsb3RzW2ldO1xuXHRcdFx0aWYgKHNsb3QuZGF0YS5uYW1lID09IHNsb3ROYW1lKSB7XG5cdFx0XHRcdGxldCBhdHRhY2htZW50OiBBdHRhY2htZW50IHwgbnVsbCA9IG51bGw7XG5cdFx0XHRcdGlmIChhdHRhY2htZW50TmFtZSkge1xuXHRcdFx0XHRcdGF0dGFjaG1lbnQgPSB0aGlzLmdldEF0dGFjaG1lbnQoaSwgYXR0YWNobWVudE5hbWUpO1xuXHRcdFx0XHRcdGlmICghYXR0YWNobWVudCkgdGhyb3cgbmV3IEVycm9yKFwiQXR0YWNobWVudCBub3QgZm91bmQ6IFwiICsgYXR0YWNobWVudE5hbWUgKyBcIiwgZm9yIHNsb3Q6IFwiICsgc2xvdE5hbWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHNsb3Quc2V0QXR0YWNobWVudChhdHRhY2htZW50KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJTbG90IG5vdCBmb3VuZDogXCIgKyBzbG90TmFtZSk7XG5cdH1cblxuXG5cdC8qKiBGaW5kcyBhbiBJSyBjb25zdHJhaW50IGJ5IGNvbXBhcmluZyBlYWNoIElLIGNvbnN0cmFpbnQncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZiB0aGlzIG1ldGhvZFxuXHQgKiB0aGFuIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS5cblx0ICogQHJldHVybiBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZElrQ29uc3RyYWludCAoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghY29uc3RyYWludE5hbWUpIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRyZXR1cm4gdGhpcy5pa0NvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIEZpbmRzIGEgdHJhbnNmb3JtIGNvbnN0cmFpbnQgYnkgY29tcGFyaW5nIGVhY2ggdHJhbnNmb3JtIGNvbnN0cmFpbnQncyBuYW1lLiBJdCBpcyBtb3JlIGVmZmljaWVudCB0byBjYWNoZSB0aGUgcmVzdWx0cyBvZlxuXHQgKiB0aGlzIG1ldGhvZCB0aGFuIHRvIGNhbGwgaXQgcmVwZWF0ZWRseS5cblx0ICogQHJldHVybiBNYXkgYmUgbnVsbC4gKi9cblx0ZmluZFRyYW5zZm9ybUNvbnN0cmFpbnQgKGNvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcblx0XHRpZiAoIWNvbnN0cmFpbnROYW1lKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMudHJhbnNmb3JtQ29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4gY29uc3RyYWludC5kYXRhLm5hbWUgPT0gY29uc3RyYWludE5hbWUpID8/IG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBwYXRoIGNvbnN0cmFpbnQgYnkgY29tcGFyaW5nIGVhY2ggcGF0aCBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2Rcblx0ICogdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuXG5cdCAqIEByZXR1cm4gTWF5IGJlIG51bGwuICovXG5cdGZpbmRQYXRoQ29uc3RyYWludCAoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xuXHRcdGlmICghY29uc3RyYWludE5hbWUpIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRyZXR1cm4gdGhpcy5wYXRoQ29uc3RyYWludHMuZmluZCgoY29uc3RyYWludCkgPT4gY29uc3RyYWludC5kYXRhLm5hbWUgPT0gY29uc3RyYWludE5hbWUpID8/IG51bGw7XG5cdH1cblxuXHQvKiogRmluZHMgYSBwaHlzaWNzIGNvbnN0cmFpbnQgYnkgY29tcGFyaW5nIGVhY2ggcGh5c2ljcyBjb25zdHJhaW50J3MgbmFtZS4gSXQgaXMgbW9yZSBlZmZpY2llbnQgdG8gY2FjaGUgdGhlIHJlc3VsdHMgb2YgdGhpc1xuXHQgKiBtZXRob2QgdGhhbiB0byBjYWxsIGl0IHJlcGVhdGVkbHkuICovXG5cdGZpbmRQaHlzaWNzQ29uc3RyYWludCAoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xuXHRcdGlmIChjb25zdHJhaW50TmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJjb25zdHJhaW50TmFtZSBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0cmV0dXJuIHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzLmZpbmQoKGNvbnN0cmFpbnQpID0+IGNvbnN0cmFpbnQuZGF0YS5uYW1lID09IGNvbnN0cmFpbnROYW1lKSA/PyBudWxsO1xuXHR9XG5cblx0LyoqIFJldHVybnMgdGhlIGF4aXMgYWxpZ25lZCBib3VuZGluZyBib3ggKEFBQkIpIG9mIHRoZSByZWdpb24gYW5kIG1lc2ggYXR0YWNobWVudHMgZm9yIHRoZSBjdXJyZW50IHBvc2UgYXMgYHsgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyIH1gLlxuXHQgKiBOb3RlIHRoYXQgdGhpcyBtZXRob2Qgd2lsbCBjcmVhdGUgdGVtcG9yYXJ5IG9iamVjdHMgd2hpY2ggY2FuIGFkZCB0byBnYXJiYWdlIGNvbGxlY3Rpb24gcHJlc3N1cmUuIFVzZSBgZ2V0Qm91bmRzKClgIGlmIGdhcmJhZ2UgY29sbGVjdGlvbiBpcyBhIGNvbmNlcm4uICovXG5cdGdldEJvdW5kc1JlY3QgKGNsaXBwZXI/OiBTa2VsZXRvbkNsaXBwaW5nKSB7XG5cdFx0bGV0IG9mZnNldCA9IG5ldyBWZWN0b3IyKCk7XG5cdFx0bGV0IHNpemUgPSBuZXcgVmVjdG9yMigpO1xuXHRcdHRoaXMuZ2V0Qm91bmRzKG9mZnNldCwgc2l6ZSwgdW5kZWZpbmVkLCBjbGlwcGVyKTtcblx0XHRyZXR1cm4geyB4OiBvZmZzZXQueCwgeTogb2Zmc2V0LnksIHdpZHRoOiBzaXplLngsIGhlaWdodDogc2l6ZS55IH07XG5cdH1cblxuXHQvKiogUmV0dXJucyB0aGUgYXhpcyBhbGlnbmVkIGJvdW5kaW5nIGJveCAoQUFCQikgb2YgdGhlIHJlZ2lvbiBhbmQgbWVzaCBhdHRhY2htZW50cyBmb3IgdGhlIGN1cnJlbnQgcG9zZS5cblx0ICogQHBhcmFtIG9mZnNldCBBbiBvdXRwdXQgdmFsdWUsIHRoZSBkaXN0YW5jZSBmcm9tIHRoZSBza2VsZXRvbiBvcmlnaW4gdG8gdGhlIGJvdHRvbSBsZWZ0IGNvcm5lciBvZiB0aGUgQUFCQi5cblx0ICogQHBhcmFtIHNpemUgQW4gb3V0cHV0IHZhbHVlLCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgQUFCQi5cblx0ICogQHBhcmFtIHRlbXAgV29ya2luZyBtZW1vcnkgdG8gdGVtcG9yYXJpbHkgc3RvcmUgYXR0YWNobWVudHMnIGNvbXB1dGVkIHdvcmxkIHZlcnRpY2VzLlxuXHQgKiBAcGFyYW0gY2xpcHBlciB7QGxpbmsgU2tlbGV0b25DbGlwcGluZ30gdG8gdXNlLiBJZiA8Y29kZT5udWxsPC9jb2RlPiwgbm8gY2xpcHBpbmcgaXMgYXBwbGllZC4gKi9cblx0Z2V0Qm91bmRzIChvZmZzZXQ6IFZlY3RvcjIsIHNpemU6IFZlY3RvcjIsIHRlbXA6IEFycmF5PG51bWJlcj4gPSBuZXcgQXJyYXk8bnVtYmVyPigyKSwgY2xpcHBlcjogU2tlbGV0b25DbGlwcGluZyB8IG51bGwgPSBudWxsKSB7XG5cdFx0aWYgKCFvZmZzZXQpIHRocm93IG5ldyBFcnJvcihcIm9mZnNldCBjYW5ub3QgYmUgbnVsbC5cIik7XG5cdFx0aWYgKCFzaXplKSB0aHJvdyBuZXcgRXJyb3IoXCJzaXplIGNhbm5vdCBiZSBudWxsLlwiKTtcblx0XHRsZXQgZHJhd09yZGVyID0gdGhpcy5kcmF3T3JkZXI7XG5cdFx0bGV0IG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksIG1heFggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksIG1heFkgPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG5cdFx0Zm9yIChsZXQgaSA9IDAsIG4gPSBkcmF3T3JkZXIubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG5cdFx0XHRsZXQgc2xvdCA9IGRyYXdPcmRlcltpXTtcblx0XHRcdGlmICghc2xvdC5ib25lLmFjdGl2ZSkgY29udGludWU7XG5cdFx0XHRsZXQgdmVydGljZXNMZW5ndGggPSAwO1xuXHRcdFx0bGV0IHZlcnRpY2VzOiBOdW1iZXJBcnJheUxpa2UgfCBudWxsID0gbnVsbDtcblx0XHRcdGxldCB0cmlhbmdsZXM6IE51bWJlckFycmF5TGlrZSB8IG51bGwgPSBudWxsO1xuXHRcdFx0bGV0IGF0dGFjaG1lbnQgPSBzbG90LmdldEF0dGFjaG1lbnQoKTtcblx0XHRcdGlmIChhdHRhY2htZW50IGluc3RhbmNlb2YgUmVnaW9uQXR0YWNobWVudCkge1xuXHRcdFx0XHR2ZXJ0aWNlc0xlbmd0aCA9IDg7XG5cdFx0XHRcdHZlcnRpY2VzID0gVXRpbHMuc2V0QXJyYXlTaXplKHRlbXAsIHZlcnRpY2VzTGVuZ3RoLCAwKTtcblx0XHRcdFx0YXR0YWNobWVudC5jb21wdXRlV29ybGRWZXJ0aWNlcyhzbG90LCB2ZXJ0aWNlcywgMCwgMik7XG5cdFx0XHRcdHRyaWFuZ2xlcyA9IFNrZWxldG9uLnF1YWRUcmlhbmdsZXM7XG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBNZXNoQXR0YWNobWVudCkge1xuXHRcdFx0XHRsZXQgbWVzaCA9ICg8TWVzaEF0dGFjaG1lbnQ+YXR0YWNobWVudCk7XG5cdFx0XHRcdHZlcnRpY2VzTGVuZ3RoID0gbWVzaC53b3JsZFZlcnRpY2VzTGVuZ3RoO1xuXHRcdFx0XHR2ZXJ0aWNlcyA9IFV0aWxzLnNldEFycmF5U2l6ZSh0ZW1wLCB2ZXJ0aWNlc0xlbmd0aCwgMCk7XG5cdFx0XHRcdG1lc2guY29tcHV0ZVdvcmxkVmVydGljZXMoc2xvdCwgMCwgdmVydGljZXNMZW5ndGgsIHZlcnRpY2VzLCAwLCAyKTtcblx0XHRcdFx0dHJpYW5nbGVzID0gbWVzaC50cmlhbmdsZXM7XG5cdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnQgaW5zdGFuY2VvZiBDbGlwcGluZ0F0dGFjaG1lbnQgJiYgY2xpcHBlciAhPSBudWxsKSB7XG5cdFx0XHRcdGNsaXBwZXIuY2xpcFN0YXJ0KHNsb3QsIGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblx0XHRcdGlmICh2ZXJ0aWNlcyAmJiB0cmlhbmdsZXMpIHtcblx0XHRcdFx0aWYgKGNsaXBwZXIgIT0gbnVsbCAmJiBjbGlwcGVyLmlzQ2xpcHBpbmcoKSkge1xuXHRcdFx0XHRcdGNsaXBwZXIuY2xpcFRyaWFuZ2xlcyh2ZXJ0aWNlcywgdHJpYW5nbGVzLCB0cmlhbmdsZXMubGVuZ3RoKTtcblx0XHRcdFx0XHR2ZXJ0aWNlcyA9IGNsaXBwZXIuY2xpcHBlZFZlcnRpY2VzO1xuXHRcdFx0XHRcdHZlcnRpY2VzTGVuZ3RoID0gY2xpcHBlci5jbGlwcGVkVmVydGljZXMubGVuZ3RoO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvciAobGV0IGlpID0gMCwgbm4gPSB2ZXJ0aWNlcy5sZW5ndGg7IGlpIDwgbm47IGlpICs9IDIpIHtcblx0XHRcdFx0XHRsZXQgeCA9IHZlcnRpY2VzW2lpXSwgeSA9IHZlcnRpY2VzW2lpICsgMV07XG5cdFx0XHRcdFx0bWluWCA9IE1hdGgubWluKG1pblgsIHgpO1xuXHRcdFx0XHRcdG1pblkgPSBNYXRoLm1pbihtaW5ZLCB5KTtcblx0XHRcdFx0XHRtYXhYID0gTWF0aC5tYXgobWF4WCwgeCk7XG5cdFx0XHRcdFx0bWF4WSA9IE1hdGgubWF4KG1heFksIHkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAoY2xpcHBlciAhPSBudWxsKSBjbGlwcGVyLmNsaXBFbmRXaXRoU2xvdChzbG90KTtcblx0XHR9XG5cdFx0aWYgKGNsaXBwZXIgIT0gbnVsbCkgY2xpcHBlci5jbGlwRW5kKCk7XG5cdFx0b2Zmc2V0LnNldChtaW5YLCBtaW5ZKTtcblx0XHRzaXplLnNldChtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpO1xuXHR9XG5cblx0LyoqIEluY3JlbWVudHMgdGhlIHNrZWxldG9uJ3Mge0BsaW5rICN0aW1lfS4gKi9cblx0dXBkYXRlIChkZWx0YTogbnVtYmVyKSB7XG5cdFx0dGhpcy50aW1lICs9IGRlbHRhO1xuXHR9XG5cblx0cGh5c2ljc1RyYW5zbGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcblx0XHRjb25zdCBwaHlzaWNzQ29uc3RyYWludHMgPSB0aGlzLnBoeXNpY3NDb25zdHJhaW50cztcblx0XHRmb3IgKGxldCBpID0gMCwgbiA9IHBoeXNpY3NDb25zdHJhaW50cy5sZW5ndGg7IGkgPCBuOyBpKyspXG5cdFx0XHRwaHlzaWNzQ29uc3RyYWludHNbaV0udHJhbnNsYXRlKHgsIHkpO1xuXHR9XG5cblx0LyoqIENhbGxzIHtAbGluayBQaHlzaWNzQ29uc3RyYWludCNyb3RhdGUoZmxvYXQsIGZsb2F0LCBmbG9hdCl9IGZvciBlYWNoIHBoeXNpY3MgY29uc3RyYWludC4gKi9cblx0cGh5c2ljc1JvdGF0ZSAoeDogbnVtYmVyLCB5OiBudW1iZXIsIGRlZ3JlZXM6IG51bWJlcikge1xuXHRcdGNvbnN0IHBoeXNpY3NDb25zdHJhaW50cyA9IHRoaXMucGh5c2ljc0NvbnN0cmFpbnRzO1xuXHRcdGZvciAobGV0IGkgPSAwLCBuID0gcGh5c2ljc0NvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKylcblx0XHRcdHBoeXNpY3NDb25zdHJhaW50c1tpXS5yb3RhdGUoeCwgeSwgZGVncmVlcyk7XG5cdH1cbn1cblxuLyoqIERldGVybWluZXMgaG93IHBoeXNpY3MgYW5kIG90aGVyIG5vbi1kZXRlcm1pbmlzdGljIHVwZGF0ZXMgYXJlIGFwcGxpZWQuICovXG5leHBvcnQgZW51bSBQaHlzaWNzIHtcblx0LyoqIFBoeXNpY3MgYXJlIG5vdCB1cGRhdGVkIG9yIGFwcGxpZWQuICovXG5cdG5vbmUsXG5cblx0LyoqIFBoeXNpY3MgYXJlIHJlc2V0IHRvIHRoZSBjdXJyZW50IHBvc2UuICovXG5cdHJlc2V0LFxuXG5cdC8qKiBQaHlzaWNzIGFyZSB1cGRhdGVkIGFuZCB0aGUgcG9zZSBmcm9tIHBoeXNpY3MgaXMgYXBwbGllZC4gKi9cblx0dXBkYXRlLFxuXG5cdC8qKiBQaHlzaWNzIGFyZSBub3QgdXBkYXRlZCBidXQgdGhlIHBvc2UgZnJvbSBwaHlzaWNzIGlzIGFwcGxpZWQuICovXG5cdHBvc2Vcbn1cbiJdfQ==
@@ -55,7 +55,7 @@ export declare class BinaryInput {
55
55
  strings: string[];
56
56
  private index;
57
57
  private buffer;
58
- constructor(data: Uint8Array | ArrayBuffer, strings?: string[], index?: number, buffer?: DataView<ArrayBufferLike>);
58
+ constructor(data: Uint8Array | ArrayBuffer, strings?: string[], index?: number, buffer?: DataView);
59
59
  readByte(): number;
60
60
  readUnsignedByte(): number;
61
61
  readShort(): number;
package/dist/Utils.d.ts CHANGED
@@ -116,7 +116,7 @@ export declare class Utils {
116
116
  static newArray<T>(size: number, defaultValue: T): Array<T>;
117
117
  static newFloatArray(size: number): NumberArrayLike;
118
118
  static newShortArray(size: number): IntArrayLike;
119
- static toFloatArray(array: Array<number>): number[] | Float32Array<ArrayBuffer>;
119
+ static toFloatArray(array: Array<number>): number[] | Float32Array;
120
120
  static toSinglePrecision(value: number): number;
121
121
  static webkit602BugfixHelper(alpha: number, blend: MixBlend): void;
122
122
  static contains<T>(array: Array<T>, element: T, identity?: boolean): boolean;