@witnet/sdk 1.2.1 → 1.2.3

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.
Files changed (53) hide show
  1. package/.env_witnet +2 -1
  2. package/dist/package.json +5 -3
  3. package/dist/src/bin/helpers.js +1 -1
  4. package/dist/src/index.js +1 -1
  5. package/dist/src/lib/crypto/account.js +1 -1
  6. package/dist/src/lib/crypto/coinbase.js +1 -1
  7. package/dist/src/lib/crypto/index.js +1 -1
  8. package/dist/src/lib/crypto/interfaces.js +1 -1
  9. package/dist/src/lib/crypto/payloads/DataRequestPayload.js +1 -1
  10. package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
  11. package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
  12. package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
  13. package/dist/src/lib/crypto/payloads.js +1 -1
  14. package/dist/src/lib/crypto/signer.js +1 -1
  15. package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -1
  16. package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
  17. package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
  18. package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
  19. package/dist/src/lib/crypto/transmitters.js +1 -1
  20. package/dist/src/lib/crypto/types.js +1 -1
  21. package/dist/src/lib/crypto/utils.js +1 -1
  22. package/dist/src/lib/crypto/wallet.js +1 -1
  23. package/dist/src/lib/index.js +1 -1
  24. package/dist/src/lib/radon/ccdr/eth.js +1 -1
  25. package/dist/src/lib/radon/ccdr/index.js +1 -1
  26. package/dist/src/lib/radon/ccdr/wit.js +1 -1
  27. package/dist/src/lib/radon/filters.js +1 -1
  28. package/dist/src/lib/radon/index.js +1 -1
  29. package/dist/src/lib/radon/reducers.js +1 -1
  30. package/dist/src/lib/radon/types.js +1 -1
  31. package/dist/src/lib/radon/utils.d.ts.map +1 -1
  32. package/dist/src/lib/radon/utils.js +1 -1
  33. package/dist/src/lib/rest/kermit.d.ts.map +1 -1
  34. package/dist/src/lib/rest/kermit.js +2 -4
  35. package/dist/src/lib/rest/types.js +1 -1
  36. package/dist/src/lib/rpc/index.js +1 -1
  37. package/dist/src/lib/rpc/nodes.js +1 -1
  38. package/dist/src/lib/rpc/provider.js +1 -1
  39. package/dist/src/lib/rpc/types.js +1 -1
  40. package/dist/src/lib/types.js +1 -1
  41. package/dist/src/lib/utils.js +1 -1
  42. package/package.json +5 -3
  43. package/scripts/clean.cjs +21 -0
  44. package/scripts/postinstall.cjs +9 -0
  45. package/src/bin/bots/watcher.cjs +365 -354
  46. package/src/bin/cli/history.cjs +31 -31
  47. package/src/bin/cli/inspect.js +581 -581
  48. package/src/bin/cli/network.js +695 -695
  49. package/src/bin/cli/nodes.js +424 -424
  50. package/src/bin/cli/radon.js +1124 -1122
  51. package/src/bin/cli/wallet.js +1362 -1362
  52. package/src/bin/helpers.js +974 -974
  53. package/src/bin/index.js +328 -328
@@ -945,4 +945,4 @@ export class RadonString extends RadonAny {
945
945
  return this._pushOperator(RadonString, []);
946
946
  }
947
947
  }
948
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFNMUMsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN6Qiw2REFBYSxDQUFBO0lBQ2IsdURBQVUsQ0FBQTtJQUNWLG1EQUFRLENBQUE7QUFDVCxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxJQUFLLGtCQW1CSjtBQW5CRCxXQUFLLGtCQUFrQjtJQUN0QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsb0VBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUN4QixDQUFDLEVBbkJJLGtCQUFrQixLQUFsQixrQkFBa0IsUUFtQnRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FxRVg7QUFyRUQsV0FBWSxjQUFjO0lBQ3pCLGtFQUFrQixDQUFBO0lBQ2xCLGtFQUFrQixDQUFBO0lBQ2xCLG9CQUFvQjtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixzRUFBb0IsQ0FBQTtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixrRUFBa0IsQ0FBQTtJQUNsQix3RUFBcUIsQ0FBQTtJQUNyQiw0REFBZSxD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Q0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBZ0IsSUFBSTtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQSxVQUF1QixDQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2JvciBmcm9tIFwiY2JvclwiO1xyXG5cclxuaW1wb3J0ICogYXMgaGVscGVycyBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnMuanNcIjtcclxuaW1wb3J0IHsgdG9IZXhTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcclxuXHJcbmltcG9ydCB0eXBlIHsgT3Bjb2RlcyBhcyBSYWRvblJlZHVjZXJPcGNvZGVzIH0gZnJvbSBcIi4vcmVkdWNlcnMuanNcIjtcclxuXHJcbmV4cG9ydCB7IEhleFN0cmluZyBhcyBSYWRvbkJ5dGVjb2RlIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XHJcblxyXG5leHBvcnQgZW51bSBSYWRvbkVuY29kaW5ncyB7XHJcblx0SGV4U3RyaW5nID0gMCxcclxuXHRCYXNlNjQgPSAxLFxyXG5cdFV0ZjggPSAyLFxyXG59XHJcblxyXG5lbnVtIFJhZG9uSGFzaEZ1bmN0aW9ucyB7XHJcblx0Ly8gQmxha2UyNTYgPSAweDAwLFxyXG5cdC8vIEJsYWtlNTEyID0gMHgwMSxcclxuXHQvLyBCbGFrZTJzMjU2ID0gMHgwMixcclxuXHQvLyBCbGFrZTJiNTEyID0gMHgwMyxcclxuXHQvLyBNRDVfMTI4ID0gMHgwNCxcclxuXHQvLyBSaXBlbWQxMjggPSAweDA1LFxyXG5cdC8vIFJpcGVtZDE2MCA9IDB4MDYsXHJcblx0Ly8gUmlwZW1kMzIwID0gMHgwNyxcclxuXHQvLyBTSEExXzE2MCA9IDB4MDgsXHJcblx0Ly8gU0hBMl8yMjQgPSAweDA5LFxyXG5cdFNIQTJfMjU2ID0gMHgwYSxcclxuXHQvLyBTSEEyXzM4NCA9IDB4MEIsXHJcblx0Ly8gU0hBMl81MTIgPSAweDBDLFxyXG5cdC8vIFNIQTNfMjI0ID0gMHgwRCxcclxuXHQvLyBTSEEzXzI1NiA9IDB4MEUsXHJcblx0Ly8gU0hBM18zODQgPSAweDBGLFxyXG5cdC8vIFNIQTNfNTEyID0gMHgxMCxcclxuXHQvLyBXaGlybHBvb2w1MTIgPSAweDExLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBSYWRvbk9wZXJhdG9ycyB7XHJcblx0QXJyYXlMZW5ndGggPSAweDEwLFxyXG5cdEFycmF5RmlsdGVyID0gMHgxMSxcclxuXHQvLyBBcnJheUpvaW4gPSAweDEyLFxyXG5cdEFycmF5R2V0QXJyYXkgPSAweDEzLFxyXG5cdEFycmF5R2V0Qm9vbGVhbiA9IDB4MTQsXHJcblx0QXJyYXlHZXRCeXRlcyA9IDB4MTUsXHJcblx0QXJyYXlHZXRGbG9hdCA9IDB4MTYsXHJcblx0QXJyYXlHZXRJbnRlZ2VyID0gMHgxNyxcclxuXHRBcnJheUdldE1hcCA9IDB4MTgsXHJcblx0QXJyYXlHZXRTdHJpbmcgPSAweDE5LFxyXG5cdEFycmF5TWFwID0gMHgxYSxcclxuXHRBcnJheVJlZHVjZSA9IDB4MWIsXHJcblx0QXJyYXlTb3J0ID0gMHgxZCxcclxuXHQvLyBBcnJheVBpY2sgPSAweDFlLFxyXG5cdEJvb2xlYW5Ub1N0cmluZyA9IDB4MjAsXHJcblx0Qm9vbGVhbk5lZ2F0ZSA9IDB4MjIsXHJcblx0Qnl0ZXNUb1N0cmluZyA9IDB4MzAsXHJcblx0Qnl0ZXNIYXNoID0gMHgzMSxcclxuXHRCeXRlc0FzSW50ZWdlciA9IDB4MzIsXHJcblx0Qnl0ZXNMZW5ndGggPSAweDM0LFxyXG5cdEJ5dGVzU2xpY2UgPSAweDNjLFxyXG5cdEZsb2F0QWJzb2x1dGUgPSAweDUwLFxyXG5cdEZsb2F0VG9TdHJpbmcgPSAweDUxLFxyXG5cdEZsb2F0Q2VpbGluZyA9IDB4NTIsXHJcblx0RmxvYXRHcmVhdGVyVGhhbiA9IDB4NTMsXHJcblx0RmxvYXRGbG9vciA9IDB4NTQsXHJcblx0RmxvYXRMZXNzVGhhbiA9IDB4NTUsXHJcblx0RmxvYXRNb2R1bGUgPSAweDU2LFxyXG5cdEZsb2F0TXVsdGlwbHkgPSAweDU3LFxyXG5cdEZsb2F0TmVnYXRlID0gMHg1OCxcclxuXHRGbG9hdFBvd2VyID0gMHg1OSxcclxuXHRGbG9hdFJvdW5kID0gMHg1YixcclxuXHRGbG9hdFRydW5jYXRlID0gMHg1ZCxcclxuXHRJbnRlZ2VyQWJzb2x1dGUgPSAweDQwLFxyXG5cdEludGVnZXJUb0Zsb2F0ID0gMHg0MSxcclxuXHRJbnRlZ2VyVG9TdHJpbmcgPSAweDQyLFxyXG5cdEludGVnZXJHcmVhdGVyVGhhbiA9IDB4NDMsXHJcblx0SW50ZWdlckxlc3NUaGFuID0gMHg0NCxcclxuXHRJbnRlZ2VyTW9kdWxvID0gMHg0NixcclxuXHRJbnRlZ2VyTXVsdGlwbHkgPSAweDQ3LFxyXG5cdEludGVnZXJOZWdhdGUgPSAweDQ4LFxyXG5cdEludGVnZXJQb3dlciA9IDB4NDksXHJcblx0SW50ZWdlclRvQnl0ZXMgPSAweDRhLFxyXG5cdE1hcFRvU3RyaW5nID0gMHg2MCxcclxuXHRNYXBHZXRBcnJheSA9IDB4NjEsXHJcblx0TWFwR2V0Qm9vbGVhbiA9IDB4NjIsXHJcblx0TWFwR2V0RmxvYXQgPSAweDY0LFxyXG5cdE1hcEdldEludGVnZXIgPSAweDY1LFxyXG5cdE1hcEdldE1hcCA9IDB4NjYsXHJcblx0TWFwR2V0U3RyaW5nID0gMHg2NyxcclxuXHRNYXBLZXlzID0gMHg2OCxcclxuXHRNYXBWYWx1ZXMgPSAweDY5LFxyXG5cdE1hcEFsdGVyID0gMHg2YixcclxuXHRNYXBQaWNrID0gMHg2ZSxcclxuXHRTdHJpbmdBc0Jvb2xlYW4gPSAweDcwLFxyXG5cdFN0cmluZ0FzQnl0ZXMgPSAweDcxLFxyXG5cdFN0cmluZ0FzRmxvYXQgPSAweDcyLFxyXG5cdFN0cmluZ0FzSW50ZWdlciA9IDB4NzMsXHJcblx0U3RyaW5nTGVuZ3RoID0gMHg3NCxcclxuXHRTdHJpbmdNYXRjaCA9IDB4NzUsXHJcblx0U3RyaW5nUGFyc2VKU09OQXJyYXkgPSAweDc2LFxyXG5cdFN0cmluZ1BhcnNlSlNPTk1hcCA9IDB4NzcsXHJcblx0U3RyaW5nUGFyc2VYTUxNYXAgPSAweDc4LFxyXG5cdFN0cmluZ1RvTG93ZXJDYXNlID0gMHg3OSxcclxuXHRTdHJpbmdUb1VwcHNlckNhc2UgPSAweDdhLFxyXG5cdFN0cmluZ1JlcGxhY2UgPSAweDdiLFxyXG5cdFN0cmluZ1NsaWNlID0gMHg3YyxcclxuXHRTdHJpbmdTcGxpdCA9IDB4N2QsXHJcbn1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFJhZG9uQ2xhc3Mge1xyXG5cdHJlYWRvbmx5IHByZXY/OiBSYWRvbk9wZXJhdG9yO1xyXG5cdGNvbnN0cnVjdG9yKHByZXY/OiBSYWRvbk9wZXJhdG9yKSB7XHJcblx0XHR0aGlzLnByZXYgPSBwcmV2O1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uT3BlcmF0b3IgZXh0ZW5kcyBSYWRvbkNsYXNzIHtcclxuXHRyZWFkb25seSBvcGNvZGU6IFJhZG9uT3BlcmF0b3JzO1xyXG5cdHJlYWRvbmx5IHBhcmFtcz86IGFueVtdO1xyXG5cdGNvbnN0cnVjdG9yKG9wY29kZTogUmFkb25PcGVyYXRvcnMsIHBhcmFtcz86IGFueVtdLCBvcHM/OiBSYWRvbk9wZXJhdG9yKSB7XHJcblx0XHRzdXBlcihvcHMpO1xyXG5cdFx0dGhpcy5vcGNvZGUgPSBvcGNvZGU7XHJcblx0XHR0aGlzLnBhcmFtcyA9IHBhcmFtcyB8fCBbXTtcclxuXHR9XHJcblx0cHVibGljIGFyZ3NDb3VudCgpOiBudW1iZXIge1xyXG5cdFx0bGV0IG1heENvdW50OiBudW1iZXIgPSAwO1xyXG5cdFx0dGhpcy5wYXJhbXM/LmZvckVhY2goKHBhcmFtKSA9PiB7XHJcblx0XHRcdGlmICh0eXBlb2YgcGFyYW0gPT09IFwic3RyaW5nXCIpIHtcclxuXHRcdFx0XHRjb25zdCBjb3VudCA9IGhlbHBlcnMuZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHBhcmFtKTtcclxuXHRcdFx0XHRpZiAoY291bnQgPiBtYXhDb3VudCkgbWF4Q291bnQgPSBjb3VudDtcclxuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW0gPT09IFwib2JqZWN0XCIgJiYgcGFyYW0gaW5zdGFuY2VvZiBSYWRvblNjcmlwdCkge1xyXG5cdFx0XHRcdGNvbnN0IGNvdW50ID0gcGFyYW0uYXJnc0NvdW50KCk7XHJcblx0XHRcdFx0aWYgKGNvdW50ID4gbWF4Q291bnQpIG1heENvdW50ID0gY291bnQ7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIE1hdGgubWF4KG1heENvdW50LCB0aGlzLnByZXY/LmFyZ3NDb3VudCgpIHx8IDApO1xyXG5cdH1cclxuXHRwdWJsaWMgZGlzZWN0KGxldmVsID0gMCk6IFtudW1iZXIsIHN0cmluZywgc3RyaW5nXVtdIHtcclxuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXM/LnByZXY/LmRpc2VjdChsZXZlbCkgfHwgW107XHJcblx0XHRjb25zdCBvcGVyYXRvciA9IFJhZG9uT3BlcmF0b3JzW3RoaXMub3Bjb2RlXTtcclxuXHRcdGNvbnN0IGlucHV0VHlwZSA9IGBSYWRvbiR7b3BlcmF0b3Iuc3BsaXQoLyg/PVtBLVpdKS8pWzBdfWA7XHJcblx0XHRsZXQgcmFkb25DYWxsID0gb3BlcmF0b3JcclxuXHRcdFx0LnNwbGl0KC8oPz1bQS1aXSkvKVxyXG5cdFx0XHQuc2xpY2UoMSlcclxuXHRcdFx0LmpvaW4oXCJcIik7XHJcblx0XHRyYWRvbkNhbGwgPSByYWRvbkNhbGwuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyByYWRvbkNhbGwuc2xpY2UoMSk7XHJcblx0XHRsZXQgYXJncyA9IFwiXCI7XHJcblx0XHRsZXQgc2NyaXB0O1xyXG5cdFx0aWYgKHRoaXMucGFyYW1zICYmIHRoaXMucGFyYW1zWzBdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0dGhpcy5wYXJhbXMubWFwKChwYXJhbSkgPT4ge1xyXG5cdFx0XHRcdGlmICh0eXBlb2YgcGFyYW0gIT09IFwib2JqZWN0XCIgfHwgIShwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSkge1xyXG5cdFx0XHRcdFx0YXJncyArPSBgJHt0eXBlb2YgcGFyYW0gPT09IFwic3RyaW5nXCIgPyBgXCIke3BhcmFtfVwiYCA6IEpTT04uc3RyaW5naWZ5KHBhcmFtKX0sIGA7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHNjcmlwdCA9IHBhcmFtO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHRcdGlmIChzY3JpcHQpIGFyZ3MgKz0gXCJSYWRvbk9wZXJhdG9yIHtcIjtcclxuXHRcdFx0ZWxzZSBhcmdzID0gYXJncy5zbGljZSgwLCAtMik7XHJcblx0XHR9XHJcblx0XHRpZiAoc2NyaXB0KSB7XHJcblx0XHRcdGNvbnN0IG91dHB1dFR5cGUgPSBgJHsoc2NyaXB0IGFzIFJhZG9uU2NyaXB0KS5vdXRwdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lIHx8IFwiUmFkb25BbnlcIn1gO1xyXG5cdFx0XHRyYWRvbkNhbGwgKz0gYCgke2FyZ3N9YDtcclxuXHRcdFx0cmVzdWx0LnB1c2goW2xldmVsLCBpbnB1dFR5cGUsIHJhZG9uQ2FsbF0pO1xyXG5cdFx0XHRyZXN1bHQucHVzaCguLi4oc2NyaXB0IGFzIFJhZG9uU2NyaXB0KS5kaXNlY3QobGV2ZWwgKyAxKSk7XHJcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgb3V0cHV0VHlwZSwgXCJ9KVwiXSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRyYWRvbkNhbGwgKz0gYCgke2FyZ3N9KWA7XHJcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgaW5wdXRUeXBlLCByYWRvbkNhbGxdKTtcclxuXHRcdH1cclxuXHRcdHJldHVybiByZXN1bHQ7XHJcblx0fVxyXG5cdHB1YmxpYyBlbmNvZGUoKTogYW55W10ge1xyXG5cdFx0bGV0IGVuY29kZWQ7XHJcblx0XHRpZiAodGhpcz8ucGFyYW1zICYmIHRoaXMucGFyYW1zWzBdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0Y29uc3QgYXJncyA9IHRoaXMucGFyYW1zLm1hcCgocGFyYW0pID0+IHtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiKSB7XHJcblx0XHRcdFx0XHRpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvbkFueSkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0ucHJldj8uZW5jb2RlKCk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25PcGVyYXRvcikge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0uZW5jb2RlKCk7XHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtLmVuY29kZSgpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcGFyYW07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0ZW5jb2RlZCA9IFt0aGlzLm9wY29kZSwgLi4uYXJnc107XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRlbmNvZGVkID0gdGhpcy5vcGNvZGU7XHJcblx0XHR9XHJcblx0XHRpZiAodGhpcy5wcmV2KSB7XHJcblx0XHRcdHJldHVybiBbLi4udGhpcy5wcmV2LmVuY29kZSgpLCBlbmNvZGVkXTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBbZW5jb2RlZF07XHJcblx0XHR9XHJcblx0fVxyXG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKGFyZ3M6IHN0cmluZ1tdKTogUmFkb25PcGVyYXRvciB7XHJcblx0XHRpZiAoYXJncy5sZW5ndGggPCB0aGlzLmFyZ3NDb3VudCgpKSB7XHJcblx0XHRcdHRocm93IEV2YWxFcnJvcihcclxuXHRcdFx0XHRgSW5zdWZmaWNlbnQgYXJncyB3ZXJlIHByb3ZpZGVkICgke2FyZ3MubGVuZ3RofSA8ICR7dGhpcy5hcmdzQ291bnQoKX0pYCxcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUmFkb25PcGVyYXRvcihcclxuXHRcdFx0dGhpcy5vcGNvZGUsXHJcblx0XHRcdHRoaXMucGFyYW1zPy5tYXAoKHBhcmFtKSA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMucmVwbGFjZVdpbGRjYXJkcyhwYXJhbSwgYXJncyk7XHJcblx0XHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcGFyYW0gPT09IFwib2JqZWN0XCIpIHtcclxuXHRcdFx0XHRcdGlmIChwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XHJcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbS5yZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3MpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMucmVwbGFjZVdpbGRjYXJkcyhwYXJhbSwgYXJncyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiBwYXJhbTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pLFxyXG5cdFx0XHR0aGlzPy5wcmV2Py5yZXBsYWNlV2lsZGNhcmRzKGFyZ3MpLFxyXG5cdFx0KTtcclxuXHR9XHJcblx0cHVibGljIHNwbGljZVdpbGRjYXJkKGFyZ0luZGV4OiBudW1iZXIsIGFyZ1ZhbHVlOiBzdHJpbmcpOiBSYWRvbk9wZXJhdG9yIHtcclxuXHRcdHJldHVybiBuZXcgUmFkb25PcGVyYXRvcihcclxuXHRcdFx0dGhpcy5vcGNvZGUsXHJcblx0XHRcdHRoaXMucGFyYW1zPy5tYXAoKHBhcmFtKSA9PiB7XHJcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMuc3BsaWNlV2lsZGNhcmQoXHJcblx0XHRcdFx0XHRcdHBhcmFtLFxyXG5cdFx0XHRcdFx0XHRhcmdJbmRleCxcclxuXHRcdFx0XHRcdFx0YXJnVmFsdWUsXHJcblx0XHRcdFx0XHRcdHRoaXMuYXJnc0NvdW50KCksXHJcblx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiICYmIHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcclxuXHRcdFx0XHRcdHJldHVybiBwYXJhbS5zcGxpY2VXaWxkY2FyZChhcmdJbmRleCwgYXJnVmFsdWUpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gcGFyYW07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KSxcclxuXHRcdFx0dGhpcz8ucHJldj8uc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXgsIGFyZ1ZhbHVlKSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHB1YmxpYyB0b1N0cmluZyhsZWZ0ID0gXCJcIiwgaW5kZW50ID0gNCwgbGV2ZWwgPSAwKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGxmID0gbGVmdCAhPT0gXCJcIiA/IFwiXFxuXCIgOiBcIlwiO1xyXG5cdFx0bGV0IHN0ciA9IHRoaXM/LnByZXY/LnRvU3RyaW5nKGxlZnQsIGluZGVudCwgbGV2ZWwpIHx8IFwiXCI7XHJcblx0XHRsZXQgbWV0aG9kTmFtZSA9IFJhZG9uT3BlcmF0b3JzW3RoaXMub3Bjb2RlXVxyXG5cdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXHJcblx0XHRcdC5zbGljZSgxKVxyXG5cdFx0XHQuam9pbihcIlwiKTtcclxuXHRcdG1ldGhvZE5hbWUgPSBtZXRob2ROYW1lLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgbWV0aG9kTmFtZS5zbGljZSgxKTtcclxuXHRcdHN0ciArPSBgJHtsZWZ0fSR7XCIgXCIucmVwZWF0KGluZGVudCAqIGxldmVsKX0uJHttZXRob2ROYW1lfShgO1xyXG5cdFx0aWYgKHRoaXMucGFyYW1zICYmIHRoaXMucGFyYW1zWzBdICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0dGhpcy5wYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcclxuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XHJcblx0XHRcdFx0XHRzdHIgKz0gYFwiJHtwYXJhbX1cIiwgYDtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XHJcblx0XHRcdFx0XHRzdHIgKz0gYCR7cGFyYW0udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfSR7bGVmdH0ke1wiIFwiLnJlcGVhdChpbmRlbnQgKiBsZXZlbCl9LCBgO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRzdHIgKz0gYCR7cGFyYW0udG9TdHJpbmcoKX0sIGA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdFx0c3RyID0gc3RyLnNsaWNlKDAsIC0yKTtcclxuXHRcdH1cclxuXHRcdHN0ciArPSBgKSR7bGZ9YDtcclxuXHRcdHJldHVybiBzdHI7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25TY3JpcHQge1xyXG5cdHByb3RlY3RlZCByZWFkb25seSBvcHM/OiBSYWRvbk9wZXJhdG9yO1xyXG5cdHB1YmxpYyByZWFkb25seSBpbnB1dFR5cGU/OiBSYWRvbkFueTtcclxuXHRwdWJsaWMgcmVhZG9ubHkgb3V0cHV0VHlwZT86IFJhZG9uQW55O1xyXG5cdGNvbnN0cnVjdG9yKG91dHB1dDogUmFkb25BbnkpIHtcclxuXHRcdHRoaXMub3BzID0gb3V0cHV0Py5wcmV2O1xyXG5cdFx0Y29uc3QgcmFkb25UeXBlcyA9IHtcclxuXHRcdFx0QXJyYXk6IFJhZG9uQXJyYXksXHJcblx0XHRcdEJvb2xlYW46IFJhZG9uQm9vbGVhbixcclxuXHRcdFx0Qnl0ZXM6IFJhZG9uQnl0ZXMsXHJcblx0XHRcdEZsb2F0OiBSYWRvbkZsb2F0LFxyXG5cdFx0XHRJbnRlZ2VyOiBSYWRvbkludGVnZXIsXHJcblx0XHRcdE1hcDogUmFkb25NYXAsXHJcblx0XHRcdFN0cmluZzogUmFkb25TdHJpbmcsXHJcblx0XHR9O1xyXG5cdFx0bGV0IGlucHV0ID0gb3V0cHV0Py5wcmV2O1xyXG5cdFx0d2hpbGUgKGlucHV0Py5wcmV2KSBpbnB1dCA9IGlucHV0Py5wcmV2O1xyXG5cdFx0Y29uc3QgaW5wdXRUeXBlID0gT2JqZWN0LmVudHJpZXMocmFkb25UeXBlcykuZmluZChcclxuXHRcdFx0KFtwcmVmaXgsIF9dKSA9PiBpbnB1dCAmJiBSYWRvbk9wZXJhdG9yc1tpbnB1dC5vcGNvZGVdLnN0YXJ0c1dpdGgocHJlZml4KSxcclxuXHRcdCk7XHJcblx0XHRpZiAoaW5wdXRUeXBlPy5bMV0pIHRoaXMuaW5wdXRUeXBlID0gbmV3IGlucHV0VHlwZVsxXSgpO1xyXG5cdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IE9iamVjdC52YWx1ZXMocmFkb25UeXBlcykuZmluZChcclxuXHRcdFx0KG91dHB1dFR5cGUpID0+IG91dHB1dCBpbnN0YW5jZW9mIG91dHB1dFR5cGUsXHJcblx0XHQpO1xyXG5cdFx0aWYgKG91dHB1dFR5cGUpIHRoaXMub3V0cHV0VHlwZSA9IG5ldyBvdXRwdXRUeXBlKCk7XHJcblx0fVxyXG5cdHB1YmxpYyBhcmdzQ291bnQoKTogbnVtYmVyIHtcclxuXHRcdHJldHVybiB0aGlzLm9wcz8uYXJnc0NvdW50KCkgfHwgMDtcclxuXHR9XHJcblx0cHVibGljIGNsb25lKCk6IFJhZG9uQW55IHtcclxuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbXHJcblx0XHRcdFJhZG9uQXJyYXksXHJcblx0XHRcdFJhZG9uQm9vbGVhbixcclxuXHRcdFx0UmFkb25CeXRlcyxcclxuXHRcdFx0UmFkb25GbG9hdCxcclxuXHRcdFx0UmFkb25JbnRlZ2VyLFxyXG5cdFx0XHRSYWRvbk1hcCxcclxuXHRcdFx0UmFkb25TdHJpbmcsXHJcblx0XHRdLmZpbmQoKE91dHB1dFR5cGUpID0+IHRoaXMub3V0cHV0VHlwZSBpbnN0YW5jZW9mIE91dHB1dFR5cGUpO1xyXG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBPdXRwdXRUeXBlKHRoaXMub3BzKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IGNsb25lIGZyb20gZW1wdHkgc2NyaXB0YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHB1YmxpYyBkaXNlY3QobGV2ZWwgPSAwKTogW251bWJlciwgc3RyaW5nLCBzdHJpbmddW10ge1xyXG5cdFx0cmV0dXJuIHRoaXMub3BzPy5kaXNlY3QobGV2ZWwpIHx8IFtbbGV2ZWwsIFwiUmFkb25BbnlcIiwgXCJcIl1dO1xyXG5cdH1cclxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcclxuXHRcdHJldHVybiB0aGlzLm9wcz8uZW5jb2RlKCkgfHwgW107XHJcblx0fVxyXG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3M6IHN0cmluZ1tdKTogUmFkb25Bbnkge1xyXG5cdFx0Y29uc3QgT3V0cHV0VHlwZSA9IFtcclxuXHRcdFx0UmFkb25BcnJheSxcclxuXHRcdFx0UmFkb25Cb29sZWFuLFxyXG5cdFx0XHRSYWRvbkJ5dGVzLFxyXG5cdFx0XHRSYWRvbkZsb2F0LFxyXG5cdFx0XHRSYWRvbkludGVnZXIsXHJcblx0XHRcdFJhZG9uTWFwLFxyXG5cdFx0XHRSYWRvblN0cmluZyxcclxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XHJcblx0XHRpZiAoT3V0cHV0VHlwZSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IE91dHB1dFR5cGUodGhpcy5vcHM/LnJlcGxhY2VXaWxkY2FyZHMoYXJncykpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgRXZhbEVycm9yKGBDYW5ub3QgcmVwbGFjZSB3aWxkY2FyZHMgb24gZW1wdHkgc2NyaXB0YCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdHB1YmxpYyBzcGxpY2VXaWxkY2FyZChhcmdJbmRleDogbnVtYmVyLCBhcmdWYWx1ZTogc3RyaW5nKTogUmFkb25Bbnkge1xyXG5cdFx0Y29uc3QgT3V0cHV0VHlwZSA9IFtcclxuXHRcdFx0UmFkb25BcnJheSxcclxuXHRcdFx0UmFkb25Cb29sZWFuLFxyXG5cdFx0XHRSYWRvbkJ5dGVzLFxyXG5cdFx0XHRSYWRvbkZsb2F0LFxyXG5cdFx0XHRSYWRvbkludGVnZXIsXHJcblx0XHRcdFJhZG9uTWFwLFxyXG5cdFx0XHRSYWRvblN0cmluZyxcclxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XHJcblx0XHRpZiAoT3V0cHV0VHlwZSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IE91dHB1dFR5cGUodGhpcy5vcHM/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhyb3cgRXZhbEVycm9yKGBDYW5ub3Qgc3BsaWNlIHdpbGRjYXJkcyBvbiBlbXB0eSBzY3JpcHRgKTtcclxuXHRcdH1cclxuXHR9XHJcblx0cHVibGljIHRvQnl0ZWNvZGUoKTogc3RyaW5nIHtcclxuXHRcdHJldHVybiB0b0hleFN0cmluZyhcclxuXHRcdFx0T2JqZWN0LnZhbHVlcyhVaW50OEFycmF5LmZyb20oY2Jvci5lbmNvZGUodGhpcy5lbmNvZGUoKSkpKSxcclxuXHRcdFx0dHJ1ZSxcclxuXHRcdCk7XHJcblx0fVxyXG5cdHB1YmxpYyB0b1N0cmluZyhsZWZ0ID0gXCJcIiwgaW5kZW50ID0gMCwgbGV2ZWwgPSAwKTogc3RyaW5nIHtcclxuXHRcdGNvbnN0IGxmID0gbGVmdCAhPT0gXCJcIiA/IFwiXFxuXCIgOiBcIlwiO1xyXG5cdFx0cmV0dXJuIGBSYWRvbk9wZXJhdG9yKCR7dGhpcy5pbnB1dFR5cGU/LmNvbnN0cnVjdG9yLm5hbWUgfHwgXCJcIn0pJHtsZn0ke3RoaXMub3BzPy50b1N0cmluZyhsZWZ0LCBpbmRlbnQsIGxldmVsICsgMSl9YDtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSYWRvbkFueSBleHRlbmRzIFJhZG9uQ2xhc3Mge1xyXG5cdHByb3RlY3RlZCBfcHVzaE9wZXJhdG9yPE91dHB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueT4oXHJcblx0XHRvdXRwdXRUeXBlOiB7IG5ldyAob3BzPzogUmFkb25PcGVyYXRvcik6IE91dHB1dFR5cGUgfSxcclxuXHRcdHBhcmFtczogYW55W10sXHJcblx0KTogT3V0cHV0VHlwZSB7XHJcblx0XHRsZXQgbmFtZTtcclxuXHRcdHRyeSB7XHJcblx0XHRcdHRocm93IG5ldyBFcnJvcigpO1xyXG5cdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGVyciBhcyBFcnJvcjtcclxuXHRcdFx0bmFtZSA9IHJlc3VsdC5zdGFja1xyXG5cdFx0XHRcdD8uc3BsaXQoXCIgYXQgXCIpWzJdXHJcblx0XHRcdFx0LnNwbGl0KFwiIFwiKVswXVxyXG5cdFx0XHRcdC5zcGxpdChcIi5cIilcclxuXHRcdFx0XHQubWFwKChwYXJ0KSA9PiBoZWxwZXJzLnRvVXBwZXJDYW1lbENhc2UocGFydCkpXHJcblx0XHRcdFx0LmpvaW4oXCJcIilcclxuXHRcdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXHJcblx0XHRcdFx0LnNsaWNlKDEpXHJcblx0XHRcdFx0LmpvaW4oXCJcIik7XHJcblx0XHR9XHJcblx0XHRjb25zdCBvcGNvZGUgPSBSYWRvbk9wZXJhdG9yc1tuYW1lIGFzIGtleW9mIHR5cGVvZiBSYWRvbk9wZXJhdG9yc107XHJcblx0XHRpZiAoIW9wY29kZSkge1xyXG5cdFx0XHR0aHJvdyBFcnJvcihgRmF0YWw6IHVua25vd24gUmFkb24gT3BlcmF0b3Igb3Bjb2RlICcke25hbWV9J2ApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBvdXRwdXRUeXBlKG5ldyBSYWRvbk9wZXJhdG9yKG9wY29kZSwgWy4uLnBhcmFtc10sIHRoaXM/LnByZXYpKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmFkb25BcnJheTxJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueT4ge1xyXG5cdGl0ZW1zVHlwZTogSXRlbXNUeXBlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25BcnJheTxcclxuXHRJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uQW55LFxyXG4+IGV4dGVuZHMgUmFkb25Bbnkge1xyXG5cdC8qKlxyXG5cdCAqIERpc2NhcmQgdGhlIGl0ZW1zIGluIHRoZSBpbnB1dCBhcnJheSB0aGF0IG1ha2UgdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAgdG8gcmV0dXJuIGEgYGZhbHNlYCB2YWx1ZS5cclxuXHQgKiBAcGFyYW0gc2NyaXB0IEZpbHRlcmluZyBzY3JpcHQgdWx0aW1hdGVseSByZXR1cm5pbmcgYSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXHJcblx0ICogTXVzdCBhY2NlcHQgYXMgaW5wdXQgdGhlIHNhbWUgZGF0YSB0eXBlcyBhcyB0aGUgb25lcyBvZiB0aGUgaXRlbXMgYmVpbmcgaXRlcmF0ZWQuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgaXRlbXMgdGhhdCBtYWtlIHRoZSBgaW5uZXJTY3JpcHRgIHRvIHJldHVybiBhIGB0cnVlYCB2YWx1ZS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZmlsdGVyKGlubmVyU2NyaXB0OiBSYWRvbkJvb2xlYW4pIHtcclxuXHRcdGlmICghKGlubmVyU2NyaXB0IGluc3RhbmNlb2YgUmFkb25Cb29sZWFuKSkge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXZhbEVycm9yKGBJbm5lciBzY3JpcHQgbXVzdCBmZXRjaCBhIFJhZG9uQm9vbGVhbiB2YWx1ZWApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtcclxuXHRcdFx0bmV3IFJhZG9uU2NyaXB0KGlubmVyU2NyaXB0KSxcclxuXHRcdF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBhcyBhIGBSYWRvbkFycmF5YCBvYmplY3QuXHJcblx0ICogQHBhcmFtIGluZGV4XHJcblx0ICovXHJcblx0cHVibGljIGdldEFycmF5PFN1Ykl0ZW1zVHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25Bbnk+KGluZGV4OiBudW1iZXIpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxTdWJJdGVtc1R5cGU+LCBbaW5kZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXHJcblx0ICogQHBhcmFtIGluZGV4XHJcblx0ICovXHJcblx0cHVibGljIGdldEJvb2xlYW4oaW5kZXg6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbmRleF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBhcyBhIGBSYWRvbkJ5dGVzYCBvYmplY3QuXHJcblx0ICogQHBhcmFtIGluZGV4XHJcblx0ICovXHJcblx0cHVibGljIGdldEJ5dGVzKGluZGV4OiBudW1iZXIpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW2luZGV4XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uRmxvYXRgIG9iamVjdC5cclxuXHQgKiBAcGFyYW0gaW5kZXhcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0RmxvYXQoaW5kZXg6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbaW5kZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICogQHBhcmFtIGluZGV4XHJcblx0ICovXHJcblx0cHVibGljIGdldEludGVnZXIoaW5kZXg6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtpbmRleF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgaXRlbSBhdCB0aGUgZ2l2ZW4gYGluZGV4YCBhcyBhIGBSYWRvbk1hcGAgb2JqZWN0LlxyXG5cdCAqIEBwYXJhbSBpbmRleFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRNYXAoaW5kZXg6IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2luZGV4XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXHJcblx0ICogQHBhcmFtIGluZGV4XHJcblx0ICovXHJcblx0cHVibGljIGdldFN0cmluZyhpbmRleDogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbaW5kZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogSm9pbiBhbGwgaXRlbXMgb2YgdGhlIGFycmF5IGludG8gYSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gdHlwZS4gVGhlIGFycmF5IG11c3QgYmUgaG9tb2dlbmVvdXMsXHJcblx0ICogYWxsIGl0ZW1zIGJlaW5nIG9mIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG91dHB1dFR5cGVgLCBpZiBzcGVjaWZpZWQsIG9yIHRoZSBBcnJheSdzIGl0ZW1zVHlwZSBvdGhlcndpc2UuXHJcblx0ICogQHBhcmFtIHNlcGFyYXRvciBTZXBhcmF0b3IgdG8gYmUgdXNlZCB3aGVuIGpvaW5pbmcgc3RyaW5ncy4gV2hlbiBqb2luaW5nIFJhZG9uTWFwcywgaXQgY2FuIGJlIHVzZWQgdG8gc2V0dGxlIGJhc2Ugc2NoZW1hIG9uIHJlc3VsdGluZyBvYmplY3QuXHJcblx0ICogQHBhcmFtIG91dHB1dFR5cGUgUmFkb24gdHlwZSBvZiB0aGUgb3V0cHV0IHZhbHVlLlxyXG5cdCAqL1xyXG5cdC8vIHB1YmxpYyBqb2luPE91dHB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uQW55PihzZXBhcmF0b3IgPSBcIlwiLCBvdXRwdXRUeXBlPzogeyBuZXcoKTogSXRlbXNUeXBlOyB9KSB7XHJcblx0Ly8gICAgIGlmIChvdXRwdXRUeXBlKSB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxPdXRwdXRUeXBlPiwgW3NlcGFyYXRvcl0pXHJcblx0Ly8gICAgIGVsc2UgdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgW3NlcGFyYXRvcl0pXHJcblx0Ly8gfVxyXG5cdC8qKlxyXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgaXRlbXMuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIGxlbmd0aCgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE1hcCBhbGwgaXRlbXMgaW4gdGhlIGFycmF5IHdpdGggdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAuXHJcblx0ICogQHBhcmFtIGlubmVyU2NyaXB0IE1hcHBpbmcgc2NyaXB0IHJldHVybmluZyBzb21lIGBSYWRvbkFueWAgb2JqZWN0LlxyXG5cdCAqIE11c3QgYWNjZXB0IGFzIGlucHV0IHRoZSBzYW1lIGRhdGEgdHlwZSBhcyB0aGUgb25lIG9mIHRoZSBpdGVtcyBiZWluZyBpdGVyYXRlZC5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QgY29udGFpbmluZyB0aGUgbWFwcGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgbWFwKGlubmVyU2NyaXB0OiBSYWRvbk9wZXJhdG9yKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXksIFtpbm5lclNjcmlwdF0pO1xyXG5cdH1cclxuXHQvLyBwdWJsaWMgbWFwPE91dHB1dEl0ZW1zVHlwZSBleHRlbmRzIFJhZG9uQW55Pihpbm5lclNjcmlwdDogUmFkb25PcGVyYXRvcjxPdXRwdXRJdGVtc1R5cGU+KSB7XHJcblx0Ly8gICAgIC8vIHRvZG86IGNoZWNrIHNjcmlwdCdzIGlucHV0IHR5cGUgbWF0Y2hlcyBhcnJheSdzIGl0ZW1zIHR5cGUsIGlmIGFueSA/P1xyXG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8T3V0cHV0SXRlbXNUeXBlPiwgW2lubmVyU2NyaXB0XSlcclxuXHQvLyB9XHJcblx0LyoqXHJcblx0ICogUmVkdWNlIGFsbCBpdGVtcyBpbiB0aGUgYXJyYXkgaW50byBhIHNpbmdsZSB2YWx1ZS5cclxuXHQgKiBAcGFyYW0gcmVkdWN0b3IgVGhlIHJlZHVjdG9yIG1ldGhvZCB0byBiZSBhcHBsaWVkLiBBbGwgYXJyYXkgaXRlbXMgbXVzdCBiZVxyXG5cdCAqIGNvbnZlcnRhYmxlIGludG8gZmxvYXQgdmFsdWVzLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgcmVkdWNlKHJlZHVjdG9yOiBSYWRvblJlZHVjZXJPcGNvZGVzKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtyZWR1Y3Rvcl0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBPcmRlciB0aGUgYXJyYXkgaXRlbXMgYmFzZWQgZWl0aGVyIG9uIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgIHRvIGV2ZXJ5IGl0ZW0sIG9yIG9uIHRoZVxyXG5cdCAqIGFjdHVhbCBpdGVtIHZhbHVlcyAoYXMgbG9uZyBhcyB0aGVzZSBhcmUgZWl0aGVyIGludGVnZXJzIG9yIHN0cmluZ3MpLlxyXG5cdCAqIEZhaWxzIGlmIGFwcGxpZWQgb24gbm9uLWhvbWVnZW5vdXMgYXJyYXlzIChpLmUuIG5vdCBhbGwgaXRlbXMgc2hhcmluZyB0aGUgc2FtZSBgUmFkb25BbnlgKS5cclxuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHQgKE9wdGlvbmFsKSBTb3J0aW5nIHNjcmlwdCByZXR1cm5pbmcgZWl0aGVyIGEgYFJhZG9uSW50ZWdlcmAgb3IgYSBgUmFkb25TdHJpbmdgIG9iamVjdC5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHNvcnQoaW5uZXJTY3JpcHQ/OiBSYWRvbk9wZXJhdG9yKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgW2lubmVyU2NyaXB0XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRha2UgYSBzZWxlY3Rpb24gb2YgaXRlbXMgZnJvbSB0aGUgaW5wdXQgYXJyYXkuXHJcblx0ICogQHBhcmFtIGluZGV4ZXMgSW5kZXhlcyBvZiB0aGUgaW5wdXQgaXRlbXMgdG8gdGFrZSBpbnRvIHRoZSBvdXRwdXQgYXJyYXkuXHJcblx0ICogQHJldHVybiBBIGBSYWRvbkFycmF5YCBvYmplY3QuXHJcblx0ICovXHJcblx0Ly8gcHVibGljIHBpY2soLi4uaW5kZXhlczogbnVtYmVyW10pIHtcclxuXHQvLyAgICAgaWYgKEFycmF5KGluZGV4ZXMpLmxlbmd0aCA9PSAwKSB7XHJcblx0Ly8gICAgICAgICB0aHJvdyBuZXcgRXZhbEVycm9yKGBcXHgxYlsxOzMzbVJhZG9uQXJyYXk6OnBpY2s6IGEgbm9uLWVtcHR5IGFycmF5IG9mIG51bWJlcnMgbXVzdCBiZSBwcm92aWRlZFxceDFiWzBtYClcclxuXHQvLyAgICAgfVxyXG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgWy4uLmluZGV4ZXNdKVxyXG5cdC8vIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uQm9vbGVhbiBleHRlbmRzIFJhZG9uQW55IHtcclxuXHQvKipcclxuXHQgKiBSZXZlcnNlIHZhbHVlLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZWdhdGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYXN0IHZhbHVlIGludG8gYSBzdHJpbmcuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9TdHJpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUmFkb25CeXRlcyBleHRlbmRzIFJhZG9uQW55IHtcclxuXHRzdGF0aWMgcmVhZG9ubHkgRW5jb2RpbmdzID0gUmFkb25FbmNvZGluZ3M7XHJcblx0c3RhdGljIHJlYWRvbmx5IEhhc2hlcnMgPSBSYWRvbkhhc2hGdW5jdGlvbnM7XHJcblx0LyoqXHJcblx0ICogQ29udmVydCBidWZmZXIgaW50byAoYmlnLWVuZGlhbikgaW50ZWdlci5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYXNJbnRlZ2VyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQXBwbHkgdGhlIFNIQTItMjU2IGhhc2ggZnVuY3Rpb24uXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYXNoKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbUmFkb25CeXRlcy5IYXNoZXJzLlNIQTJfMjU2XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIGxlbmd0aCgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgYSBzbGljZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW5wdXQgYnVmZmVyLlxyXG5cdCAqIEEgYHN0YXJ0SW5kZXhgIG9mIDAgcmVmZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IGJ1ZmZlci4gSWYgbm8gYGVuZEluZGV4YCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkXHJcblx0ICogdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXIuXHJcblx0ICogQHBhcmFtIHN0YXJ0SW5kZXggUG9zaXRpb24gd2l0aGluIGlucHV0IGJ1ZmZlciB3aGVyZSB0aGUgb3V0cHV0IGJ1ZmZlciB3aWxsIHN0YXJ0LlxyXG5cdCAqIEBwYXJhbSBlbmRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgYnVmZmVyIHdoZXJlIHRoZSBvdXRwdXQgYnVmZmVyIHdpbGwgZW5kXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBzbGljZShzdGFydEluZGV4OiBudW1iZXIgPSAwLCBlbmRJbmRleD86IG51bWJlcikge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbc3RhcnRJbmRleCwgZW5kSW5kZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29udmVydCB0aGUgaW5wdXQgYnVmZmVyIGludG8gYSBzdHJpbmcuXHJcblx0ICogQHBhcmFtIGVuY29kaW5nIEVudW0gaW50ZWdlciB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSBlbmNvZGluZyBzY2hlbWEgb24gdGhlIG91dHB1dCBzdHJpbmcsIHN0YW5kaW5nOlxyXG5cdCAqICAgMCAtPiBIZXggc3RyaW5nIChkZWZhdWx0LCBpZiBub25lIHdhcyBzcGVjaWZpZWQpXHJcblx0ICogICAxIC0+IEJhc2U2NCBzdHJpbmdcclxuXHQgKiAgIDIgLT4gVXRmLTggc3RyaW5nXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9TdHJpbmcoZW5jb2RpbmcgPSBSYWRvbkVuY29kaW5ncy5IZXhTdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtlbmNvZGluZ10pO1xyXG5cdH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFJhZG9uRmxvYXQgZXh0ZW5kcyBSYWRvbkFueSB7XHJcblx0LyoqXHJcblx0ICogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhYnNvbHV0ZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb21wdXRlIHRoZSBsb3dlc3QgaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGZsb2F0IHZhbHVlLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBjZWlsaW5nKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbXB1dGUgdGhlIGdyZWF0ZXN0IGludGVnZXIgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBmbG9hdCB2YWx1ZS5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZmxvb3IoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGZsb2F0IHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cclxuXHQgKiBAcGFyYW0gaW5wdXRcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGZsb2F0IHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cclxuXHQgKiBAcGFyYW0gaW5wdXRcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbGVzc1RoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb21wdXRlIHRoZSBmbG9hdCByZW1haW5kZXIgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXHJcblx0ICogQHBhcmFtIGludGVnZXJcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIG1vZHVsbyhpbnRlZ2VyOiBudW1iZXIgfCBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2ludGVnZXJdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTXVsdGlwbHkgdGhlIGZsb2F0IHZhbHVlIGJ5IHRoZSBnaXZlbiBgZmFjdG9yYC5cclxuXHQgKiBAcGFyYW0gZmFjdG9yXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBtdWx0aXBseShmYWN0b3I6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbZmFjdG9yXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE5lZ2F0ZSB0aGUgZmxvYXQgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBuZWdhdGUoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ29tcHV0ZSB0aGUgZmxvYXQgdmFsdWUgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiBnaXZlbiBgZXhwb25lbnRgXHJcblx0ICogQHBhcmFtIGV4cG9uZW50XHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtleHBvbmVudF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSb3VuZCB0byB0aGUgY2xvc2VzdCBpbnRlZ2VyIHZhbHVlLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyByb3VuZCgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFN0cmluZ2lmeSB0aGUgZmxvYXQgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9TdHJpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFRha2UgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgZmxvYXQgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHRydW5jYXRlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvbkludGVnZXIgZXh0ZW5kcyBSYWRvbkFueSB7XHJcblx0LyoqXHJcblx0ICogQ29tcHV0ZSB0aGUgYWJzb2x1dGUgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIGFic29sdXRlKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBpbnRlZ2VyIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cclxuXHQgKiBAcGFyYW0gaW5wdXRcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGludGVnZXIgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxyXG5cdCAqIEBwYXJhbSBpbnB1dFxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsZXNzVGhhbihpbnB1dDogbnVtYmVyIHwgc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2lucHV0XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbXB1dGUgdGhlIHJlbWFpbmRlciBvZiBkaXZpZGluZyB0aGUgdmFsdWUgYnkgdGhlIGdpdmVuIGBpbnRlZ2VyYC5cclxuXHQgKiBAcGFyYW0gaW50ZWdlclxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbW9kdWxvKGludGVnZXI6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtpbnRlZ2VyXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE11bHRpcGx5IHRoZSB2YWx1ZSBieSB0aGUgZ2l2ZW4gYGludGVnZXJgLlxyXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIG11bHRpcGx5KGludGVnZXI6IG51bWJlciB8IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtpbnRlZ2VyXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIE5lZ2F0ZSB0aGUgaW50ZWdlciB2YWx1ZS5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIG5lZ2F0ZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENvbXB1dGUgdGhlIHZhbHVlIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgZ2l2ZW4gYGV4cG9uZW50YFxyXG5cdCAqIEBwYXJhbSBleHBvbmVudFxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW2V4cG9uZW50XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFN0cmluZ2lmeSB0aGUgdmFsdWUuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9TdHJpbmcoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENhc3QgaW50byBhIGJpZy1lbmRpYW4gYnl0ZXMgYnVmZmVyLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdG9CeXRlcygpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYXN0IGludG8gYSBmbG9hdCB2YWx1ZS5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHRvRmxvYXQoKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtdKTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvbk1hcCBleHRlbmRzIFJhZG9uQW55IHtcclxuXHQvKipcclxuXHQgKiBBbHRlciB0aGUgdmFsdWUgb2YgdGhlIGl0ZW0ocykgaWRlbnRpZmllZCBieSBga2V5c2AsIGFwcGx5aW5nIHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgIHRvIGVhY2ggb25lIG9mIHRoZW0uXHJcblx0ICogQHBhcmFtIGtleXNcclxuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHRcclxuXHQgKiBAcmV0dXJucyBUaGUgc2FtZSBSYWRvbk1hcCB1cG9uIHdoaWNoIHRoaXMgb3BlcmF0b3IgaXMgZXhlY3V0ZWQsIHdpdGggdGhlIHNwZWNpZmllZCBpdGVtKHMpIGFsdGVyZWRcclxuXHQgKiBieSB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYWx0ZXIoaW5uZXJTY3JpcHQ6IFJhZG9uT3BlcmF0b3IsIC4uLmtleXM6IHN0cmluZ1tdKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbWy4uLmtleXNdLCBpbm5lclNjcmlwdF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgYXJyYXkgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXHJcblx0ICogQHBhcmFtIGtleVxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0QXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4oXHJcblx0XHRrZXk6IHN0cmluZyxcclxuXHRcdF9pdGVtc1R5cGU/OiB7IG5ldyAoKTogSXRlbXNUeXBlIH0sXHJcblx0KSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgW2tleV0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgYm9vbGVhbiB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cclxuXHQgKiBAcGFyYW0ga2V5XHJcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIGdldEJvb2xlYW4oa2V5OiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBba2V5XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZldGNoIHRoZSBmbG9hdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cclxuXHQgKiBAcGFyYW0ga2V5XHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRGbG9hdChrZXk6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBba2V5XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIEZldGNoIHRoZSBpbnRlZ2VyIHZhbHVlIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxyXG5cdCAqIEBwYXJhbSBrZXlcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0SW50ZWdlcihrZXk6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtrZXldKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRmV0Y2ggdGhlIG1hcCBvYmplY3Qgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXHJcblx0ICogQHBhcmFtIGtleVxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uTWFwYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIGdldE1hcChrZXk6IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2tleV0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBGZXRjaCB0aGUgc3RyaW5nIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxyXG5cdCAqIEBwYXJhbSBrZXlcclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRTdHJpbmcoa2V5OiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtrZXldKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXh0cmFjdCBrZXkgbmFtZXMgb2YgdGhlIG1hcCBpbnRvIGFuIGFycmF5IG9mIHN0cmluZ3MuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBrZXlzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uU3RyaW5nPiwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IG1hcC4gRmFpbHMgaWYgdW5leGlzdGVudCBpdGVtcyBhcmUgcmVmZXJyZWQuXHJcblx0ICogQHBhcmFtIGtleXMgS2V5IHN0cmluZyBvZiB0aGUgaW5wdXQgaXRlbXMgdG8gdGFrZSBpbnRvIHRoZSBvdXRwdXQgbWFwLlxyXG5cdCAqIEByZXR1cm4gQSBgUmFkb25NYXBgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGljayguLi5rZXlzOiBzdHJpbmdbXSkge1xyXG5cdFx0aWYgKEFycmF5KGtleXMpLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHR0aHJvdyBuZXcgRXZhbEVycm9yKFxyXG5cdFx0XHRcdGBcXHgxYlsxOzMzbVJhZG9uTWFwOjpwaWNrOiBhIG5vbi1lbXB0eSBhcnJheSBvZiBrZXkgc3RyaW5ncyBtdXN0IGJlIHByb3ZpZGVkXFx4MWJbMG1gLFxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgWy4uLmtleXNdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRXh0cmFjdCB0aGUgbWFwIHZhbHVlcyBpbnRvIGFuIGFycmF5LlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgdmFsdWVzKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5LCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFN0cmluZ2lmeSBpbnB1dCBgUmFkb25NYXBgIG9iamVjdCBpbnRvIGEgSlNPTiBzdHJpbmcuXHJcblx0ICogQHJldHVybiBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b1N0cmluZygpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSYWRvblN0cmluZyBleHRlbmRzIFJhZG9uQW55IHtcclxuXHQvKipcclxuXHQgKiBDYXN0IGludG8gYSBib29sZWFuIHZhbHVlLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhc0Jvb2xlYW4oKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IHRoZSBpbnB1dCBzdHJpbmcgaW50byBhIGJ5dGVzIGJ1ZmZlci5cclxuXHQgKiBAcGFyYW0gZW5jb2RpbmcgRW51bSBpbnRlZ2VyIHZhbHVlIHNwZWNpZnlpbmcgdGhlIGVuY29kaW5nIHNjaGVtYSBvbiB0aGUgaW5wdXQgc3RyaW5nLCBzdGFuZGluZzpcclxuXHQgKiAgIDAgLT4gSGV4IHN0cmluZyAoZGVmYXVsdCwgaWYgbm9uZSB3YXMgc3BlY2lmaWVkKVxyXG5cdCAqICAgMSAtPiBCYXNlNjQgc3RyaW5nXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhc0J5dGVzKGVuY29kaW5nID0gUmFkb25FbmNvZGluZ3MuSGV4U3RyaW5nKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQnl0ZXMsIFtlbmNvZGluZ10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBDYXN0IGludG8gYSBmbG9hdCBudW1iZXIuXHJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBhc0Zsb2F0KCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIENhc3QgaW50byBhbiBpbnRlZ2VyIG51bWJlci5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgYXNJbnRlZ2VyKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogQ291bnQgdGhlIG51bWJlciBvZiBjaGFycy5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgbGVuZ3RoKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUmVwbGFjZSB0aGUgc3RyaW5nIGJ5IGEgdmFsdWUgb2YgdHlwZSBgb3V0cHV0VHlwZWAsIGRldGVybWluZWQgb24gd2hldGhlciB0aGUgc3RyaW5nIHZhbHVlIG1hdGNoZXNcclxuXHQgKiBhbnkgb2YgdGhlIGtleXMgd2l0aGluIHRoZSBwcm92aWRlZCBgbWF0Y2hpbmdNYXBgLCBvciBzZXQgdG8gYSBgZGVmYXVsdFZhbHVlYCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cclxuXHQgKiBAcGFyYW0gb3V0cHV0VHlwZSBSYWRvbiB0eXBlIG9mIHRoZSBvdXRwdXQgdmFsdWUuXHJcblx0ICogQHBhcmFtIG1hdGNoaW5nTWFwIE1hcCBkZXRlcm1pbmluZyB0aGUgb3V0cHV0IHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgc3RyaW5nIHZhbHVlLlxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUgcmV0dXJuZWQgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXHJcblx0ICogQHJldHVybnNcclxuXHQgKi9cclxuXHRwdWJsaWMgbWF0Y2g8T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25TdHJpbmc+KFxyXG5cdFx0b3V0cHV0VHlwZTogeyBuZXcgKHByZXY/OiBSYWRvbk9wZXJhdG9yKTogT3V0cHV0VHlwZSB9LFxyXG5cdFx0bWF0Y2hpbmdNYXA6IE1hcDxzdHJpbmcsIGFueT4sXHJcblx0XHRkZWZhdWx0VmFsdWU6IGFueSxcclxuXHQpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3Iob3V0cHV0VHlwZSwgW21hdGNoaW5nTWFwLCBkZWZhdWx0VmFsdWVdKTtcclxuXHRcdC8vIHRoaXMuX2J5dGVjb2RlID0gW1xyXG5cdFx0Ly8gICAgIDB4NzUsXHJcblx0XHQvLyAgICAgbWF0Y2hpbmdNYXAsXHJcblx0XHQvLyAgICAgZGVmYXVsdFZhbHVlXHJcblx0XHQvLyBdXHJcblx0XHQvLyB0aGlzLl9tZXRob2QgPSBcIm1hdGNoXCJcclxuXHRcdC8vIHRoaXMuX3BhcmFtcyA9IGB7ICR7T2JqZWN0LmVudHJpZXMobWF0Y2hpbmdNYXApLm1hcCgoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+IGBcXFwiJHtlbnRyeVswXX1cXFwiOiAke2VudHJ5WzFdfSwgYCl9fSwgJHtkZWZhdWx0VmFsdWV9YFxyXG5cdFx0Ly8gbGV0IGtleXM6IHN0cmluZyA9IFwiXCJcclxuXHRcdC8vIE9iamVjdC5rZXlzKG1hdGNoaW5nTWFwKS5tYXAoKGtleTogc3RyaW5nKSA9PiBrZXlzICs9IGtleSArIFwiO1wiKVxyXG5cdFx0Ly8gcmV0dXJuIG5ldyBvdXRwdXRUeXBlKHRoaXMsIGtleXMpXHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFBhcnNlIGlucHV0IHN0cmluZyBhcyBhbiBhcnJheSBvZiBKU09OIGl0ZW1zLlxyXG5cdCAqIEBwYXJhbSBqc29uUGF0aHMgKG9wdGlvbmFsKSBBcnJheSBvZiBKU09OIHBhdGhzIHdpdGhpbiBpbnB1dCBgUmFkb25TdHJpbmdgIGZyb20gd2hlcmUgdG8gZmV0Y2ggaXRlbXMgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBvdXRwdXQgYFJhZG9uQXJyYXlgLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdC5cclxuXHQgKi9cclxuXHRwdWJsaWMgcGFyc2VKU09OQXJyYXkoLi4uanNvblBhdGhzOiBzdHJpbmdbXSk6IFJhZG9uQXJyYXk8UmFkb25Bbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxSYWRvbkFueT4sIFsuLi5qc29uUGF0aHNdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogUGFyc2Ugc3RyaW5nIGFzIGEgSlNPTi1lbmNvZGVkIG1hcC5cclxuXHQgKiBAcGFyYW0ganNvblBhdGggKG9wdGlvbmFsKSBKU09OIHBhdGggd2l0aGluIGlucHV0IGBSYWRvblN0cmluZ2AgZnJvbSB3aGVyZSB0byBleHRyYWN0IHRoZSBvdXRwdXQgYFJhZG9uTWFwYC5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbk1hcGAgb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBwYXJzZUpTT05NYXAoanNvblBhdGg/OiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFtqc29uUGF0aF0pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBQYXJzZSBzdHJpbmcgYXMgYW4gWE1MLWVuY29kZWQgbWFwLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uTWFwYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHBhcnNlWE1MTWFwKCkge1xyXG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW10pO1xyXG5cdH1cclxuXHQvKipcclxuXHQgKiBSZXBsYWNlIHdpdGggZ2l2ZW4gYHJlcGxhY2VtZW50YCBzdHJpbmcsIGFsbCBwYXJ0cyBvZiB0aGUgaW5wdXQgc3RyaW5nIHRoYXQgbWF0Y2ggd2l0aCBnaXZlbiByZWd1bGFyIGV4cHJlc3Npb24uXHJcblx0ICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBtYXRjaGVkLlxyXG5cdCAqIEBwYXJhbSByZXBsYWNlbWVudCBUZXh0IHRoYXQgd2lsbCByZXBsYWNlIGFsbCBvY2N1cmVuY2VzLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHJlcGxhY2UocmVnZXg6IHN0cmluZyA9IFwiXCIsIHJlcGxhY2VtZW50OiBzdHJpbmcgPSBcIlwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbcmVnZXgsIHJlcGxhY2VtZW50XSk7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgYSBzbGljZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW5wdXQgc3RyaW5nLlxyXG5cdCAqIEEgYHN0YXJ0SW5kZXhgIG9mIDAgcmVmZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHN0cmluZy4gSWYgbm8gYGVuZEluZGV4YCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkXHJcblx0ICogdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgc3RyaW5nLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBzdHJpbmcuXHJcblx0ICogQHBhcmFtIHN0YXJ0SW5kZXggUG9zaXRpb24gd2l0aGluIGlucHV0IHN0cmluZyB3aGVyZSB0aGUgb3V0cHV0IHN0cmluZyB3aWxsIHN0YXJ0LlxyXG5cdCAqIEBwYXJhbSBlbmRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgc3RyaW5nIHdoZXJlIHRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgZW5kLlxyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHNsaWNlKHN0YXJ0SW5kZXg6IG51bWJlciA9IDAsIGVuZEluZGV4PzogbnVtYmVyKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbc3RhcnRJbmRleCwgZW5kSW5kZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogRGl2aWRlcyBpbnB1dCBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBzdWJzdHJpbmdzLFxyXG5cdCAqIEBwYXJhbSByZWdleCBUaGUgc3RyaW5nIG9yIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB1c2UgZm9yIHNwbGl0dGluZy5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXHJcblx0ICovXHJcblx0cHVibGljIHNwbGl0KHJlZ2V4OiBzdHJpbmcgPSBcIlxcclwiKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8UmFkb25TdHJpbmc+LCBbcmVnZXhdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogTG93ZXIgY2FzZSBhbGwgY2hhcmFjdGVycy5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b0xvd2VyY2FzZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogVXBwZXIgY2FzZSBhbGwgY2hhcmFjdGVycy5cclxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxyXG5cdCAqL1xyXG5cdHB1YmxpYyB0b1VwcGVyQ2FzZSgpIHtcclxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcclxuXHR9XHJcbn1cclxuIl19
948
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUV4QixPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFNMUMsTUFBTSxDQUFOLElBQVksY0FJWDtBQUpELFdBQVksY0FBYztJQUN6Qiw2REFBYSxDQUFBO0lBQ2IsdURBQVUsQ0FBQTtJQUNWLG1EQUFRLENBQUE7QUFDVCxDQUFDLEVBSlcsY0FBYyxLQUFkLGNBQWMsUUFJekI7QUFFRCxJQUFLLGtCQW1CSjtBQW5CRCxXQUFLLGtCQUFrQjtJQUN0QixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHFCQUFxQjtJQUNyQixxQkFBcUI7SUFDckIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsb0VBQWUsQ0FBQTtJQUNmLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFDbkIsbUJBQW1CO0lBQ25CLHVCQUF1QjtBQUN4QixDQUFDLEVBbkJJLGtCQUFrQixLQUFsQixrQkFBa0IsUUFtQnRCO0FBRUQsTUFBTSxDQUFOLElBQVksY0FxRVg7QUFyRUQsV0FBWSxjQUFjO0lBQ3pCLGtFQUFrQixDQUFBO0lBQ2xCLGtFQUFrQixDQUFBO0lBQ2xCLG9CQUFvQjtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixzRUFBb0IsQ0FBQTtJQUNwQixzRUFBb0IsQ0FBQTtJQUNwQiwwRUFBc0IsQ0FBQTtJQUN0QixrRUFBa0IsQ0FBQTtJQUNsQix3RUFBcUIsQ0FBQTtJQUNyQiw0REFBZSxD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Q0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSSxLQUFLLENBQUMsUUFBZ0IsSUFBSTtRQUNoQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQSxVQUF1QixDQUFBLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFDRDs7O09BR0c7SUFDSSxXQUFXO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNEOzs7T0FHRztJQUNJLFdBQVc7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2JvciBmcm9tIFwiY2JvclwiO1xuXG5pbXBvcnQgKiBhcyBoZWxwZXJzIGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xuaW1wb3J0IHsgdG9IZXhTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuaW1wb3J0IHR5cGUgeyBPcGNvZGVzIGFzIFJhZG9uUmVkdWNlck9wY29kZXMgfSBmcm9tIFwiLi9yZWR1Y2Vycy5qc1wiO1xuXG5leHBvcnQgeyBIZXhTdHJpbmcgYXMgUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xuXG5leHBvcnQgZW51bSBSYWRvbkVuY29kaW5ncyB7XG5cdEhleFN0cmluZyA9IDAsXG5cdEJhc2U2NCA9IDEsXG5cdFV0ZjggPSAyLFxufVxuXG5lbnVtIFJhZG9uSGFzaEZ1bmN0aW9ucyB7XG5cdC8vIEJsYWtlMjU2ID0gMHgwMCxcblx0Ly8gQmxha2U1MTIgPSAweDAxLFxuXHQvLyBCbGFrZTJzMjU2ID0gMHgwMixcblx0Ly8gQmxha2UyYjUxMiA9IDB4MDMsXG5cdC8vIE1ENV8xMjggPSAweDA0LFxuXHQvLyBSaXBlbWQxMjggPSAweDA1LFxuXHQvLyBSaXBlbWQxNjAgPSAweDA2LFxuXHQvLyBSaXBlbWQzMjAgPSAweDA3LFxuXHQvLyBTSEExXzE2MCA9IDB4MDgsXG5cdC8vIFNIQTJfMjI0ID0gMHgwOSxcblx0U0hBMl8yNTYgPSAweDBhLFxuXHQvLyBTSEEyXzM4NCA9IDB4MEIsXG5cdC8vIFNIQTJfNTEyID0gMHgwQyxcblx0Ly8gU0hBM18yMjQgPSAweDBELFxuXHQvLyBTSEEzXzI1NiA9IDB4MEUsXG5cdC8vIFNIQTNfMzg0ID0gMHgwRixcblx0Ly8gU0hBM181MTIgPSAweDEwLFxuXHQvLyBXaGlybHBvb2w1MTIgPSAweDExLFxufVxuXG5leHBvcnQgZW51bSBSYWRvbk9wZXJhdG9ycyB7XG5cdEFycmF5TGVuZ3RoID0gMHgxMCxcblx0QXJyYXlGaWx0ZXIgPSAweDExLFxuXHQvLyBBcnJheUpvaW4gPSAweDEyLFxuXHRBcnJheUdldEFycmF5ID0gMHgxMyxcblx0QXJyYXlHZXRCb29sZWFuID0gMHgxNCxcblx0QXJyYXlHZXRCeXRlcyA9IDB4MTUsXG5cdEFycmF5R2V0RmxvYXQgPSAweDE2LFxuXHRBcnJheUdldEludGVnZXIgPSAweDE3LFxuXHRBcnJheUdldE1hcCA9IDB4MTgsXG5cdEFycmF5R2V0U3RyaW5nID0gMHgxOSxcblx0QXJyYXlNYXAgPSAweDFhLFxuXHRBcnJheVJlZHVjZSA9IDB4MWIsXG5cdEFycmF5U29ydCA9IDB4MWQsXG5cdC8vIEFycmF5UGljayA9IDB4MWUsXG5cdEJvb2xlYW5Ub1N0cmluZyA9IDB4MjAsXG5cdEJvb2xlYW5OZWdhdGUgPSAweDIyLFxuXHRCeXRlc1RvU3RyaW5nID0gMHgzMCxcblx0Qnl0ZXNIYXNoID0gMHgzMSxcblx0Qnl0ZXNBc0ludGVnZXIgPSAweDMyLFxuXHRCeXRlc0xlbmd0aCA9IDB4MzQsXG5cdEJ5dGVzU2xpY2UgPSAweDNjLFxuXHRGbG9hdEFic29sdXRlID0gMHg1MCxcblx0RmxvYXRUb1N0cmluZyA9IDB4NTEsXG5cdEZsb2F0Q2VpbGluZyA9IDB4NTIsXG5cdEZsb2F0R3JlYXRlclRoYW4gPSAweDUzLFxuXHRGbG9hdEZsb29yID0gMHg1NCxcblx0RmxvYXRMZXNzVGhhbiA9IDB4NTUsXG5cdEZsb2F0TW9kdWxlID0gMHg1Nixcblx0RmxvYXRNdWx0aXBseSA9IDB4NTcsXG5cdEZsb2F0TmVnYXRlID0gMHg1OCxcblx0RmxvYXRQb3dlciA9IDB4NTksXG5cdEZsb2F0Um91bmQgPSAweDViLFxuXHRGbG9hdFRydW5jYXRlID0gMHg1ZCxcblx0SW50ZWdlckFic29sdXRlID0gMHg0MCxcblx0SW50ZWdlclRvRmxvYXQgPSAweDQxLFxuXHRJbnRlZ2VyVG9TdHJpbmcgPSAweDQyLFxuXHRJbnRlZ2VyR3JlYXRlclRoYW4gPSAweDQzLFxuXHRJbnRlZ2VyTGVzc1RoYW4gPSAweDQ0LFxuXHRJbnRlZ2VyTW9kdWxvID0gMHg0Nixcblx0SW50ZWdlck11bHRpcGx5ID0gMHg0Nyxcblx0SW50ZWdlck5lZ2F0ZSA9IDB4NDgsXG5cdEludGVnZXJQb3dlciA9IDB4NDksXG5cdEludGVnZXJUb0J5dGVzID0gMHg0YSxcblx0TWFwVG9TdHJpbmcgPSAweDYwLFxuXHRNYXBHZXRBcnJheSA9IDB4NjEsXG5cdE1hcEdldEJvb2xlYW4gPSAweDYyLFxuXHRNYXBHZXRGbG9hdCA9IDB4NjQsXG5cdE1hcEdldEludGVnZXIgPSAweDY1LFxuXHRNYXBHZXRNYXAgPSAweDY2LFxuXHRNYXBHZXRTdHJpbmcgPSAweDY3LFxuXHRNYXBLZXlzID0gMHg2OCxcblx0TWFwVmFsdWVzID0gMHg2OSxcblx0TWFwQWx0ZXIgPSAweDZiLFxuXHRNYXBQaWNrID0gMHg2ZSxcblx0U3RyaW5nQXNCb29sZWFuID0gMHg3MCxcblx0U3RyaW5nQXNCeXRlcyA9IDB4NzEsXG5cdFN0cmluZ0FzRmxvYXQgPSAweDcyLFxuXHRTdHJpbmdBc0ludGVnZXIgPSAweDczLFxuXHRTdHJpbmdMZW5ndGggPSAweDc0LFxuXHRTdHJpbmdNYXRjaCA9IDB4NzUsXG5cdFN0cmluZ1BhcnNlSlNPTkFycmF5ID0gMHg3Nixcblx0U3RyaW5nUGFyc2VKU09OTWFwID0gMHg3Nyxcblx0U3RyaW5nUGFyc2VYTUxNYXAgPSAweDc4LFxuXHRTdHJpbmdUb0xvd2VyQ2FzZSA9IDB4NzksXG5cdFN0cmluZ1RvVXBwc2VyQ2FzZSA9IDB4N2EsXG5cdFN0cmluZ1JlcGxhY2UgPSAweDdiLFxuXHRTdHJpbmdTbGljZSA9IDB4N2MsXG5cdFN0cmluZ1NwbGl0ID0gMHg3ZCxcbn1cblxuYWJzdHJhY3QgY2xhc3MgUmFkb25DbGFzcyB7XG5cdHJlYWRvbmx5IHByZXY/OiBSYWRvbk9wZXJhdG9yO1xuXHRjb25zdHJ1Y3RvcihwcmV2PzogUmFkb25PcGVyYXRvcikge1xuXHRcdHRoaXMucHJldiA9IHByZXY7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uT3BlcmF0b3IgZXh0ZW5kcyBSYWRvbkNsYXNzIHtcblx0cmVhZG9ubHkgb3Bjb2RlOiBSYWRvbk9wZXJhdG9ycztcblx0cmVhZG9ubHkgcGFyYW1zPzogYW55W107XG5cdGNvbnN0cnVjdG9yKG9wY29kZTogUmFkb25PcGVyYXRvcnMsIHBhcmFtcz86IGFueVtdLCBvcHM/OiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0c3VwZXIob3BzKTtcblx0XHR0aGlzLm9wY29kZSA9IG9wY29kZTtcblx0XHR0aGlzLnBhcmFtcyA9IHBhcmFtcyB8fCBbXTtcblx0fVxuXHRwdWJsaWMgYXJnc0NvdW50KCk6IG51bWJlciB7XG5cdFx0bGV0IG1heENvdW50OiBudW1iZXIgPSAwO1xuXHRcdHRoaXMucGFyYW1zPy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRjb25zdCBjb3VudCA9IGhlbHBlcnMuZ2V0V2lsZGNhcmRzQ291bnRGcm9tU3RyaW5nKHBhcmFtKTtcblx0XHRcdFx0aWYgKGNvdW50ID4gbWF4Q291bnQpIG1heENvdW50ID0gY291bnQ7XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdGNvbnN0IGNvdW50ID0gcGFyYW0uYXJnc0NvdW50KCk7XG5cdFx0XHRcdGlmIChjb3VudCA+IG1heENvdW50KSBtYXhDb3VudCA9IGNvdW50O1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBNYXRoLm1heChtYXhDb3VudCwgdGhpcy5wcmV2Py5hcmdzQ291bnQoKSB8fCAwKTtcblx0fVxuXHRwdWJsaWMgZGlzZWN0KGxldmVsID0gMCk6IFtudW1iZXIsIHN0cmluZywgc3RyaW5nXVtdIHtcblx0XHRjb25zdCByZXN1bHQgPSB0aGlzPy5wcmV2Py5kaXNlY3QobGV2ZWwpIHx8IFtdO1xuXHRcdGNvbnN0IG9wZXJhdG9yID0gUmFkb25PcGVyYXRvcnNbdGhpcy5vcGNvZGVdO1xuXHRcdGNvbnN0IGlucHV0VHlwZSA9IGBSYWRvbiR7b3BlcmF0b3Iuc3BsaXQoLyg/PVtBLVpdKS8pWzBdfWA7XG5cdFx0bGV0IHJhZG9uQ2FsbCA9IG9wZXJhdG9yXG5cdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHQuc2xpY2UoMSlcblx0XHRcdC5qb2luKFwiXCIpO1xuXHRcdHJhZG9uQ2FsbCA9IHJhZG9uQ2FsbC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIHJhZG9uQ2FsbC5zbGljZSgxKTtcblx0XHRsZXQgYXJncyA9IFwiXCI7XG5cdFx0bGV0IHNjcmlwdDtcblx0XHRpZiAodGhpcy5wYXJhbXMgJiYgdGhpcy5wYXJhbXNbMF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0dGhpcy5wYXJhbXMubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtICE9PSBcIm9iamVjdFwiIHx8ICEocGFyYW0gaW5zdGFuY2VvZiBSYWRvblNjcmlwdCkpIHtcblx0XHRcdFx0XHRhcmdzICs9IGAke3R5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIiA/IGBcIiR7cGFyYW19XCJgIDogSlNPTi5zdHJpbmdpZnkocGFyYW0pfSwgYDtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzY3JpcHQgPSBwYXJhbTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRpZiAoc2NyaXB0KSBhcmdzICs9IFwiUmFkb25PcGVyYXRvciB7XCI7XG5cdFx0XHRlbHNlIGFyZ3MgPSBhcmdzLnNsaWNlKDAsIC0yKTtcblx0XHR9XG5cdFx0aWYgKHNjcmlwdCkge1xuXHRcdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IGAkeyhzY3JpcHQgYXMgUmFkb25TY3JpcHQpLm91dHB1dFR5cGU/LmNvbnN0cnVjdG9yLm5hbWUgfHwgXCJSYWRvbkFueVwifWA7XG5cdFx0XHRyYWRvbkNhbGwgKz0gYCgke2FyZ3N9YDtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgaW5wdXRUeXBlLCByYWRvbkNhbGxdKTtcblx0XHRcdHJlc3VsdC5wdXNoKC4uLihzY3JpcHQgYXMgUmFkb25TY3JpcHQpLmRpc2VjdChsZXZlbCArIDEpKTtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgb3V0cHV0VHlwZSwgXCJ9KVwiXSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJhZG9uQ2FsbCArPSBgKCR7YXJnc30pYDtcblx0XHRcdHJlc3VsdC5wdXNoKFtsZXZlbCwgaW5wdXRUeXBlLCByYWRvbkNhbGxdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcblx0XHRsZXQgZW5jb2RlZDtcblx0XHRpZiAodGhpcz8ucGFyYW1zICYmIHRoaXMucGFyYW1zWzBdICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGFyZ3MgPSB0aGlzLnBhcmFtcy5tYXAoKHBhcmFtKSA9PiB7XG5cdFx0XHRcdGlmICh0eXBlb2YgcGFyYW0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvbkFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHBhcmFtLnByZXY/LmVuY29kZSgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAocGFyYW0gaW5zdGFuY2VvZiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0uZW5jb2RlKCk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gcGFyYW0uZW5jb2RlKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdGVuY29kZWQgPSBbdGhpcy5vcGNvZGUsIC4uLmFyZ3NdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbmNvZGVkID0gdGhpcy5vcGNvZGU7XG5cdFx0fVxuXHRcdGlmICh0aGlzLnByZXYpIHtcblx0XHRcdHJldHVybiBbLi4udGhpcy5wcmV2LmVuY29kZSgpLCBlbmNvZGVkXTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIFtlbmNvZGVkXTtcblx0XHR9XG5cdH1cblx0cHVibGljIHJlcGxhY2VXaWxkY2FyZHMoYXJnczogc3RyaW5nW10pOiBSYWRvbk9wZXJhdG9yIHtcblx0XHRpZiAoYXJncy5sZW5ndGggPCB0aGlzLmFyZ3NDb3VudCgpKSB7XG5cdFx0XHR0aHJvdyBFdmFsRXJyb3IoXG5cdFx0XHRcdGBJbnN1ZmZpY2VudCBhcmdzIHdlcmUgcHJvdmlkZWQgKCR7YXJncy5sZW5ndGh9IDwgJHt0aGlzLmFyZ3NDb3VudCgpfSlgLFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBSYWRvbk9wZXJhdG9yKFxuXHRcdFx0dGhpcy5vcGNvZGUsXG5cdFx0XHR0aGlzLnBhcmFtcz8ubWFwKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGhlbHBlcnMucmVwbGFjZVdpbGRjYXJkcyhwYXJhbSwgYXJncyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRcdFx0aWYgKHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBwYXJhbS5yZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3MpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gaGVscGVycy5yZXBsYWNlV2lsZGNhcmRzKHBhcmFtLCBhcmdzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnJlcGxhY2VXaWxkY2FyZHMoYXJncyksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uT3BlcmF0b3Ige1xuXHRcdHJldHVybiBuZXcgUmFkb25PcGVyYXRvcihcblx0XHRcdHRoaXMub3Bjb2RlLFxuXHRcdFx0dGhpcy5wYXJhbXM/Lm1hcCgocGFyYW0pID0+IHtcblx0XHRcdFx0aWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJzdHJpbmdcIikge1xuXHRcdFx0XHRcdHJldHVybiBoZWxwZXJzLnNwbGljZVdpbGRjYXJkKFxuXHRcdFx0XHRcdFx0cGFyYW0sXG5cdFx0XHRcdFx0XHRhcmdJbmRleCxcblx0XHRcdFx0XHRcdGFyZ1ZhbHVlLFxuXHRcdFx0XHRcdFx0dGhpcy5hcmdzQ291bnQoKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJvYmplY3RcIiAmJiBwYXJhbSBpbnN0YW5jZW9mIFJhZG9uU2NyaXB0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtLnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcmFtO1xuXHRcdFx0XHR9XG5cdFx0XHR9KSxcblx0XHRcdHRoaXM/LnByZXY/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSksXG5cdFx0KTtcblx0fVxuXHRwdWJsaWMgdG9TdHJpbmcobGVmdCA9IFwiXCIsIGluZGVudCA9IDQsIGxldmVsID0gMCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgbGYgPSBsZWZ0ICE9PSBcIlwiID8gXCJcXG5cIiA6IFwiXCI7XG5cdFx0bGV0IHN0ciA9IHRoaXM/LnByZXY/LnRvU3RyaW5nKGxlZnQsIGluZGVudCwgbGV2ZWwpIHx8IFwiXCI7XG5cdFx0bGV0IG1ldGhvZE5hbWUgPSBSYWRvbk9wZXJhdG9yc1t0aGlzLm9wY29kZV1cblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmpvaW4oXCJcIik7XG5cdFx0bWV0aG9kTmFtZSA9IG1ldGhvZE5hbWUuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBtZXRob2ROYW1lLnNsaWNlKDEpO1xuXHRcdHN0ciArPSBgJHtsZWZ0fSR7XCIgXCIucmVwZWF0KGluZGVudCAqIGxldmVsKX0uJHttZXRob2ROYW1lfShgO1xuXHRcdGlmICh0aGlzLnBhcmFtcyAmJiB0aGlzLnBhcmFtc1swXSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aGlzLnBhcmFtcy5mb3JFYWNoKChwYXJhbSkgPT4ge1xuXHRcdFx0XHRpZiAodHlwZW9mIHBhcmFtID09PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0c3RyICs9IGBcIiR7cGFyYW19XCIsIGA7XG5cdFx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBhcmFtID09PSBcIm9iamVjdFwiICYmIHBhcmFtIGluc3RhbmNlb2YgUmFkb25TY3JpcHQpIHtcblx0XHRcdFx0XHRzdHIgKz0gYCR7cGFyYW0udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfSR7bGVmdH0ke1wiIFwiLnJlcGVhdChpbmRlbnQgKiBsZXZlbCl9LCBgO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHN0ciArPSBgJHtwYXJhbS50b1N0cmluZygpfSwgYDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0XHRzdHIgPSBzdHIuc2xpY2UoMCwgLTIpO1xuXHRcdH1cblx0XHRzdHIgKz0gYCkke2xmfWA7XG5cdFx0cmV0dXJuIHN0cjtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25TY3JpcHQge1xuXHRwcm90ZWN0ZWQgcmVhZG9ubHkgb3BzPzogUmFkb25PcGVyYXRvcjtcblx0cHVibGljIHJlYWRvbmx5IGlucHV0VHlwZT86IFJhZG9uQW55O1xuXHRwdWJsaWMgcmVhZG9ubHkgb3V0cHV0VHlwZT86IFJhZG9uQW55O1xuXHRjb25zdHJ1Y3RvcihvdXRwdXQ6IFJhZG9uQW55KSB7XG5cdFx0dGhpcy5vcHMgPSBvdXRwdXQ/LnByZXY7XG5cdFx0Y29uc3QgcmFkb25UeXBlcyA9IHtcblx0XHRcdEFycmF5OiBSYWRvbkFycmF5LFxuXHRcdFx0Qm9vbGVhbjogUmFkb25Cb29sZWFuLFxuXHRcdFx0Qnl0ZXM6IFJhZG9uQnl0ZXMsXG5cdFx0XHRGbG9hdDogUmFkb25GbG9hdCxcblx0XHRcdEludGVnZXI6IFJhZG9uSW50ZWdlcixcblx0XHRcdE1hcDogUmFkb25NYXAsXG5cdFx0XHRTdHJpbmc6IFJhZG9uU3RyaW5nLFxuXHRcdH07XG5cdFx0bGV0IGlucHV0ID0gb3V0cHV0Py5wcmV2O1xuXHRcdHdoaWxlIChpbnB1dD8ucHJldikgaW5wdXQgPSBpbnB1dD8ucHJldjtcblx0XHRjb25zdCBpbnB1dFR5cGUgPSBPYmplY3QuZW50cmllcyhyYWRvblR5cGVzKS5maW5kKFxuXHRcdFx0KFtwcmVmaXgsIF9dKSA9PiBpbnB1dCAmJiBSYWRvbk9wZXJhdG9yc1tpbnB1dC5vcGNvZGVdLnN0YXJ0c1dpdGgocHJlZml4KSxcblx0XHQpO1xuXHRcdGlmIChpbnB1dFR5cGU/LlsxXSkgdGhpcy5pbnB1dFR5cGUgPSBuZXcgaW5wdXRUeXBlWzFdKCk7XG5cdFx0Y29uc3Qgb3V0cHV0VHlwZSA9IE9iamVjdC52YWx1ZXMocmFkb25UeXBlcykuZmluZChcblx0XHRcdChvdXRwdXRUeXBlKSA9PiBvdXRwdXQgaW5zdGFuY2VvZiBvdXRwdXRUeXBlLFxuXHRcdCk7XG5cdFx0aWYgKG91dHB1dFR5cGUpIHRoaXMub3V0cHV0VHlwZSA9IG5ldyBvdXRwdXRUeXBlKCk7XG5cdH1cblx0cHVibGljIGFyZ3NDb3VudCgpOiBudW1iZXIge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uYXJnc0NvdW50KCkgfHwgMDtcblx0fVxuXHRwdWJsaWMgY2xvbmUoKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbXG5cdFx0XHRSYWRvbkFycmF5LFxuXHRcdFx0UmFkb25Cb29sZWFuLFxuXHRcdFx0UmFkb25CeXRlcyxcblx0XHRcdFJhZG9uRmxvYXQsXG5cdFx0XHRSYWRvbkludGVnZXIsXG5cdFx0XHRSYWRvbk1hcCxcblx0XHRcdFJhZG9uU3RyaW5nLFxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IGNsb25lIGZyb20gZW1wdHkgc2NyaXB0YCk7XG5cdFx0fVxuXHR9XG5cdHB1YmxpYyBkaXNlY3QobGV2ZWwgPSAwKTogW251bWJlciwgc3RyaW5nLCBzdHJpbmddW10ge1xuXHRcdHJldHVybiB0aGlzLm9wcz8uZGlzZWN0KGxldmVsKSB8fCBbW2xldmVsLCBcIlJhZG9uQW55XCIsIFwiXCJdXTtcblx0fVxuXHRwdWJsaWMgZW5jb2RlKCk6IGFueVtdIHtcblx0XHRyZXR1cm4gdGhpcy5vcHM/LmVuY29kZSgpIHx8IFtdO1xuXHR9XG5cdHB1YmxpYyByZXBsYWNlV2lsZGNhcmRzKC4uLmFyZ3M6IHN0cmluZ1tdKTogUmFkb25Bbnkge1xuXHRcdGNvbnN0IE91dHB1dFR5cGUgPSBbXG5cdFx0XHRSYWRvbkFycmF5LFxuXHRcdFx0UmFkb25Cb29sZWFuLFxuXHRcdFx0UmFkb25CeXRlcyxcblx0XHRcdFJhZG9uRmxvYXQsXG5cdFx0XHRSYWRvbkludGVnZXIsXG5cdFx0XHRSYWRvbk1hcCxcblx0XHRcdFJhZG9uU3RyaW5nLFxuXHRcdF0uZmluZCgoT3V0cHV0VHlwZSkgPT4gdGhpcy5vdXRwdXRUeXBlIGluc3RhbmNlb2YgT3V0cHV0VHlwZSk7XG5cdFx0aWYgKE91dHB1dFR5cGUpIHtcblx0XHRcdHJldHVybiBuZXcgT3V0cHV0VHlwZSh0aGlzLm9wcz8ucmVwbGFjZVdpbGRjYXJkcyhhcmdzKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRocm93IEV2YWxFcnJvcihgQ2Fubm90IHJlcGxhY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgc3BsaWNlV2lsZGNhcmQoYXJnSW5kZXg6IG51bWJlciwgYXJnVmFsdWU6IHN0cmluZyk6IFJhZG9uQW55IHtcblx0XHRjb25zdCBPdXRwdXRUeXBlID0gW1xuXHRcdFx0UmFkb25BcnJheSxcblx0XHRcdFJhZG9uQm9vbGVhbixcblx0XHRcdFJhZG9uQnl0ZXMsXG5cdFx0XHRSYWRvbkZsb2F0LFxuXHRcdFx0UmFkb25JbnRlZ2VyLFxuXHRcdFx0UmFkb25NYXAsXG5cdFx0XHRSYWRvblN0cmluZyxcblx0XHRdLmZpbmQoKE91dHB1dFR5cGUpID0+IHRoaXMub3V0cHV0VHlwZSBpbnN0YW5jZW9mIE91dHB1dFR5cGUpO1xuXHRcdGlmIChPdXRwdXRUeXBlKSB7XG5cdFx0XHRyZXR1cm4gbmV3IE91dHB1dFR5cGUodGhpcy5vcHM/LnNwbGljZVdpbGRjYXJkKGFyZ0luZGV4LCBhcmdWYWx1ZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBFdmFsRXJyb3IoYENhbm5vdCBzcGxpY2Ugd2lsZGNhcmRzIG9uIGVtcHR5IHNjcmlwdGApO1xuXHRcdH1cblx0fVxuXHRwdWJsaWMgdG9CeXRlY29kZSgpOiBzdHJpbmcge1xuXHRcdHJldHVybiB0b0hleFN0cmluZyhcblx0XHRcdE9iamVjdC52YWx1ZXMoVWludDhBcnJheS5mcm9tKGNib3IuZW5jb2RlKHRoaXMuZW5jb2RlKCkpKSksXG5cdFx0XHR0cnVlLFxuXHRcdCk7XG5cdH1cblx0cHVibGljIHRvU3RyaW5nKGxlZnQgPSBcIlwiLCBpbmRlbnQgPSAwLCBsZXZlbCA9IDApOiBzdHJpbmcge1xuXHRcdGNvbnN0IGxmID0gbGVmdCAhPT0gXCJcIiA/IFwiXFxuXCIgOiBcIlwiO1xuXHRcdHJldHVybiBgUmFkb25PcGVyYXRvcigke3RoaXMuaW5wdXRUeXBlPy5jb25zdHJ1Y3Rvci5uYW1lIHx8IFwiXCJ9KSR7bGZ9JHt0aGlzLm9wcz8udG9TdHJpbmcobGVmdCwgaW5kZW50LCBsZXZlbCArIDEpfWA7XG5cdH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJhZG9uQW55IGV4dGVuZHMgUmFkb25DbGFzcyB7XG5cdHByb3RlY3RlZCBfcHVzaE9wZXJhdG9yPE91dHB1dFR5cGUgZXh0ZW5kcyBSYWRvbkFueT4oXG5cdFx0b3V0cHV0VHlwZTogeyBuZXcgKG9wcz86IFJhZG9uT3BlcmF0b3IpOiBPdXRwdXRUeXBlIH0sXG5cdFx0cGFyYW1zOiBhbnlbXSxcblx0KTogT3V0cHV0VHlwZSB7XG5cdFx0bGV0IG5hbWU7XG5cdFx0dHJ5IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcigpO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZXJyIGFzIEVycm9yO1xuXHRcdFx0bmFtZSA9IHJlc3VsdC5zdGFja1xuXHRcdFx0XHQ/LnNwbGl0KFwiIGF0IFwiKVsyXVxuXHRcdFx0XHQuc3BsaXQoXCIgXCIpWzBdXG5cdFx0XHRcdC5zcGxpdChcIi5cIilcblx0XHRcdFx0Lm1hcCgocGFydCkgPT4gaGVscGVycy50b1VwcGVyQ2FtZWxDYXNlKHBhcnQpKVxuXHRcdFx0XHQuam9pbihcIlwiKVxuXHRcdFx0XHQuc3BsaXQoLyg/PVtBLVpdKS8pXG5cdFx0XHRcdC5zbGljZSgxKVxuXHRcdFx0XHQuam9pbihcIlwiKTtcblx0XHR9XG5cdFx0Y29uc3Qgb3Bjb2RlID0gUmFkb25PcGVyYXRvcnNbbmFtZSBhcyBrZXlvZiB0eXBlb2YgUmFkb25PcGVyYXRvcnNdO1xuXHRcdGlmICghb3Bjb2RlKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihgRmF0YWw6IHVua25vd24gUmFkb24gT3BlcmF0b3Igb3Bjb2RlICcke25hbWV9J2ApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gbmV3IG91dHB1dFR5cGUobmV3IFJhZG9uT3BlcmF0b3Iob3Bjb2RlLCBbLi4ucGFyYW1zXSwgdGhpcz8ucHJldikpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZG9uQXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25Bbnk+IHtcblx0aXRlbXNUeXBlOiBJdGVtc1R5cGU7XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkFycmF5PFxuXHRJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueSA9IFJhZG9uQW55LFxuPiBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIERpc2NhcmQgdGhlIGl0ZW1zIGluIHRoZSBpbnB1dCBhcnJheSB0aGF0IG1ha2UgdGhlIGdpdmVuIGBpbm5lclNjcmlwdGAgdG8gcmV0dXJuIGEgYGZhbHNlYCB2YWx1ZS5cblx0ICogQHBhcmFtIHNjcmlwdCBGaWx0ZXJpbmcgc2NyaXB0IHVsdGltYXRlbHkgcmV0dXJuaW5nIGEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKiBNdXN0IGFjY2VwdCBhcyBpbnB1dCB0aGUgc2FtZSBkYXRhIHR5cGVzIGFzIHRoZSBvbmVzIG9mIHRoZSBpdGVtcyBiZWluZyBpdGVyYXRlZC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0IGNvbnRhaW5pbmcgb25seSB0aGUgaXRlbXMgdGhhdCBtYWtlIHRoZSBgaW5uZXJTY3JpcHRgIHRvIHJldHVybiBhIGB0cnVlYCB2YWx1ZS5cblx0ICovXG5cdHB1YmxpYyBmaWx0ZXIoaW5uZXJTY3JpcHQ6IFJhZG9uQm9vbGVhbikge1xuXHRcdGlmICghKGlubmVyU2NyaXB0IGluc3RhbmNlb2YgUmFkb25Cb29sZWFuKSkge1xuXHRcdFx0dGhyb3cgbmV3IEV2YWxFcnJvcihgSW5uZXIgc2NyaXB0IG11c3QgZmV0Y2ggYSBSYWRvbkJvb2xlYW4gdmFsdWVgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtcblx0XHRcdG5ldyBSYWRvblNjcmlwdChpbm5lclNjcmlwdCksXG5cdFx0XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBpdGVtIGF0IHRoZSBnaXZlbiBgaW5kZXhgIGFzIGEgYFJhZG9uQXJyYXlgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0QXJyYXk8U3ViSXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4oaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxTdWJJdGVtc1R5cGU+LCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldEJvb2xlYW4oaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRCeXRlcyhpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKiBAcGFyYW0gaW5kZXhcblx0ICovXG5cdHB1YmxpYyBnZXRGbG9hdChpbmRleDogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqIEBwYXJhbSBpbmRleFxuXHQgKi9cblx0cHVibGljIGdldEludGVnZXIoaW5kZXg6IG51bWJlcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWFwKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGl0ZW0gYXQgdGhlIGdpdmVuIGBpbmRleGAgYXMgYSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICogQHBhcmFtIGluZGV4XG5cdCAqL1xuXHRwdWJsaWMgZ2V0U3RyaW5nKGluZGV4OiBudW1iZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbaW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogSm9pbiBhbGwgaXRlbXMgb2YgdGhlIGFycmF5IGludG8gYSB2YWx1ZSBvZiB0aGUgZ2l2ZW4gdHlwZS4gVGhlIGFycmF5IG11c3QgYmUgaG9tb2dlbmVvdXMsXG5cdCAqIGFsbCBpdGVtcyBiZWluZyBvZiB0aGUgc2FtZSB0eXBlIGFzIHRoZSBvdXRwdXRUeXBlYCwgaWYgc3BlY2lmaWVkLCBvciB0aGUgQXJyYXkncyBpdGVtc1R5cGUgb3RoZXJ3aXNlLlxuXHQgKiBAcGFyYW0gc2VwYXJhdG9yIFNlcGFyYXRvciB0byBiZSB1c2VkIHdoZW4gam9pbmluZyBzdHJpbmdzLiBXaGVuIGpvaW5pbmcgUmFkb25NYXBzLCBpdCBjYW4gYmUgdXNlZCB0byBzZXR0bGUgYmFzZSBzY2hlbWEgb24gcmVzdWx0aW5nIG9iamVjdC5cblx0ICogQHBhcmFtIG91dHB1dFR5cGUgUmFkb24gdHlwZSBvZiB0aGUgb3V0cHV0IHZhbHVlLlxuXHQgKi9cblx0Ly8gcHVibGljIGpvaW48T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25Bbnk+KHNlcGFyYXRvciA9IFwiXCIsIG91dHB1dFR5cGU/OiB7IG5ldygpOiBJdGVtc1R5cGU7IH0pIHtcblx0Ly8gICAgIGlmIChvdXRwdXRUeXBlKSB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheTxPdXRwdXRUeXBlPiwgW3NlcGFyYXRvcl0pXG5cdC8vICAgICBlbHNlIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtzZXBhcmF0b3JdKVxuXHQvLyB9XG5cdC8qKlxuXHQgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGl0ZW1zLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZW5ndGgoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogTWFwIGFsbCBpdGVtcyBpbiB0aGUgYXJyYXkgd2l0aCB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YC5cblx0ICogQHBhcmFtIGlubmVyU2NyaXB0IE1hcHBpbmcgc2NyaXB0IHJldHVybmluZyBzb21lIGBSYWRvbkFueWAgb2JqZWN0LlxuXHQgKiBNdXN0IGFjY2VwdCBhcyBpbnB1dCB0aGUgc2FtZSBkYXRhIHR5cGUgYXMgdGhlIG9uZSBvZiB0aGUgaXRlbXMgYmVpbmcgaXRlcmF0ZWQuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQXJyYXlgIG9iamVjdCBjb250YWluaW5nIHRoZSBtYXBwZWQgdmFsdWVzLlxuXHQgKi9cblx0cHVibGljIG1hcChpbm5lclNjcmlwdDogUmFkb25PcGVyYXRvcikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25BcnJheSwgW2lubmVyU2NyaXB0XSk7XG5cdH1cblx0Ly8gcHVibGljIG1hcDxPdXRwdXRJdGVtc1R5cGUgZXh0ZW5kcyBSYWRvbkFueT4oaW5uZXJTY3JpcHQ6IFJhZG9uT3BlcmF0b3I8T3V0cHV0SXRlbXNUeXBlPikge1xuXHQvLyAgICAgLy8gdG9kbzogY2hlY2sgc2NyaXB0J3MgaW5wdXQgdHlwZSBtYXRjaGVzIGFycmF5J3MgaXRlbXMgdHlwZSwgaWYgYW55ID8/XG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8T3V0cHV0SXRlbXNUeXBlPiwgW2lubmVyU2NyaXB0XSlcblx0Ly8gfVxuXHQvKipcblx0ICogUmVkdWNlIGFsbCBpdGVtcyBpbiB0aGUgYXJyYXkgaW50byBhIHNpbmdsZSB2YWx1ZS5cblx0ICogQHBhcmFtIHJlZHVjdG9yIFRoZSByZWR1Y3RvciBtZXRob2QgdG8gYmUgYXBwbGllZC4gQWxsIGFycmF5IGl0ZW1zIG11c3QgYmVcblx0ICogY29udmVydGFibGUgaW50byBmbG9hdCB2YWx1ZXMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyByZWR1Y2UocmVkdWN0b3I6IFJhZG9uUmVkdWNlck9wY29kZXMpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtyZWR1Y3Rvcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBPcmRlciB0aGUgYXJyYXkgaXRlbXMgYmFzZWQgZWl0aGVyIG9uIHRoZSByZXN1bHRzIG9mIGFwcGx5aW5nIHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgIHRvIGV2ZXJ5IGl0ZW0sIG9yIG9uIHRoZVxuXHQgKiBhY3R1YWwgaXRlbSB2YWx1ZXMgKGFzIGxvbmcgYXMgdGhlc2UgYXJlIGVpdGhlciBpbnRlZ2VycyBvciBzdHJpbmdzKS5cblx0ICogRmFpbHMgaWYgYXBwbGllZCBvbiBub24taG9tZWdlbm91cyBhcnJheXMgKGkuZS4gbm90IGFsbCBpdGVtcyBzaGFyaW5nIHRoZSBzYW1lIGBSYWRvbkFueWApLlxuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHQgKE9wdGlvbmFsKSBTb3J0aW5nIHNjcmlwdCByZXR1cm5pbmcgZWl0aGVyIGEgYFJhZG9uSW50ZWdlcmAgb3IgYSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNvcnQoaW5uZXJTY3JpcHQ/OiBSYWRvbk9wZXJhdG9yKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtpbm5lclNjcmlwdF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IGFycmF5LlxuXHQgKiBAcGFyYW0gaW5kZXhlcyBJbmRleGVzIG9mIHRoZSBpbnB1dCBpdGVtcyB0byB0YWtlIGludG8gdGhlIG91dHB1dCBhcnJheS5cblx0ICogQHJldHVybiBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHQvLyBwdWJsaWMgcGljayguLi5pbmRleGVzOiBudW1iZXJbXSkge1xuXHQvLyAgICAgaWYgKEFycmF5KGluZGV4ZXMpLmxlbmd0aCA9PSAwKSB7XG5cdC8vICAgICAgICAgdGhyb3cgbmV3IEV2YWxFcnJvcihgXFx4MWJbMTszM21SYWRvbkFycmF5OjpwaWNrOiBhIG5vbi1lbXB0eSBhcnJheSBvZiBudW1iZXJzIG11c3QgYmUgcHJvdmlkZWRcXHgxYlswbWApXG5cdC8vICAgICB9XG5cdC8vICAgICByZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8SXRlbXNUeXBlPiwgWy4uLmluZGV4ZXNdKVxuXHQvLyB9XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRvbkJvb2xlYW4gZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBSZXZlcnNlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBuZWdhdGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCB2YWx1ZSBpbnRvIGEgc3RyaW5nLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25CeXRlcyBleHRlbmRzIFJhZG9uQW55IHtcblx0c3RhdGljIHJlYWRvbmx5IEVuY29kaW5ncyA9IFJhZG9uRW5jb2RpbmdzO1xuXHRzdGF0aWMgcmVhZG9ubHkgSGFzaGVycyA9IFJhZG9uSGFzaEZ1bmN0aW9ucztcblx0LyoqXG5cdCAqIENvbnZlcnQgYnVmZmVyIGludG8gKGJpZy1lbmRpYW4pIGludGVnZXIuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFzSW50ZWdlcigpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBBcHBseSB0aGUgU0hBMi0yNTYgaGFzaCBmdW5jdGlvbi5cblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGhhc2goKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbUmFkb25CeXRlcy5IYXNoZXJzLlNIQTJfMjU2XSk7XG5cdH1cblx0LyoqXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgYnl0ZXMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlbmd0aCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXR1cm5zIGEgc2xpY2UgZXh0cmFjdGVkIGZyb20gdGhlIGlucHV0IGJ1ZmZlci5cblx0ICogQSBgc3RhcnRJbmRleGAgb2YgMCByZWZlcnMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQgYnVmZmVyLiBJZiBubyBgZW5kSW5kZXhgIGlzIHByb3ZpZGVkLCBpdCB3aWxsIGJlIGFzc3VtZWRcblx0ICogdGhlIGxlbmd0aCBvZiB0aGUgaW5wdXQgYnVmZmVyLiBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBiZSByZWxhdGl2ZSB0byB0aGUgZW5kIG9mIHRoZSBpbnB1dCBidWZmZXIuXG5cdCAqIEBwYXJhbSBzdGFydEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBidWZmZXIgd2hlcmUgdGhlIG91dHB1dCBidWZmZXIgd2lsbCBzdGFydC5cblx0ICogQHBhcmFtIGVuZEluZGV4IFBvc2l0aW9uIHdpdGhpbiBpbnB1dCBidWZmZXIgd2hlcmUgdGhlIG91dHB1dCBidWZmZXIgd2lsbCBlbmRcblx0ICogQHJldHVybnMgQSBgUmFkb25CeXRlc2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNsaWNlKHN0YXJ0SW5kZXg6IG51bWJlciA9IDAsIGVuZEluZGV4PzogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJ5dGVzLCBbc3RhcnRJbmRleCwgZW5kSW5kZXhdKTtcblx0fVxuXHQvKipcblx0ICogQ29udmVydCB0aGUgaW5wdXQgYnVmZmVyIGludG8gYSBzdHJpbmcuXG5cdCAqIEBwYXJhbSBlbmNvZGluZyBFbnVtIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgZW5jb2Rpbmcgc2NoZW1hIG9uIHRoZSBvdXRwdXQgc3RyaW5nLCBzdGFuZGluZzpcblx0ICogICAwIC0+IEhleCBzdHJpbmcgKGRlZmF1bHQsIGlmIG5vbmUgd2FzIHNwZWNpZmllZClcblx0ICogICAxIC0+IEJhc2U2NCBzdHJpbmdcblx0ICogICAyIC0+IFV0Zi04IHN0cmluZ1xuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKGVuY29kaW5nID0gUmFkb25FbmNvZGluZ3MuSGV4U3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2VuY29kaW5nXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uRmxvYXQgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBhYnNvbHV0ZSB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFic29sdXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBsb3dlc3QgaW50ZWdlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBjZWlsaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBncmVhdGVzdCBpbnRlZ2VyIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGZsb29yKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIERldGVybWluZSBpZiB0aGUgZmxvYXQgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxuXHQgKiBAcGFyYW0gaW5wdXRcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5wdXRdKTtcblx0fVxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBmbG9hdCB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIGdpdmVuIGBpbnB1dGAuXG5cdCAqIEBwYXJhbSBpbnB1dFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBsZXNzVGhhbihpbnB1dDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtpbnB1dF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBmbG9hdCByZW1haW5kZXIgb2YgZGl2aWRpbmcgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtb2R1bG8oaW50ZWdlcjogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbaW50ZWdlcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBNdWx0aXBseSB0aGUgZmxvYXQgdmFsdWUgYnkgdGhlIGdpdmVuIGBmYWN0b3JgLlxuXHQgKiBAcGFyYW0gZmFjdG9yXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBtdWx0aXBseShmYWN0b3I6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW2ZhY3Rvcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBOZWdhdGUgdGhlIGZsb2F0IHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgbmVnYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25GbG9hdCwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDb21wdXRlIHRoZSBmbG9hdCB2YWx1ZSByYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGdpdmVuIGBleHBvbmVudGBcblx0ICogQHBhcmFtIGV4cG9uZW50XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbZXhwb25lbnRdKTtcblx0fVxuXHQvKipcblx0ICogUm91bmQgdG8gdGhlIGNsb3Nlc3QgaW50ZWdlciB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgcm91bmQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogU3RyaW5naWZ5IHRoZSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b1N0cmluZygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFRha2UgdGhlIGludGVnZXIgcGFydCBvZiB0aGUgZmxvYXQgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRydW5jYXRlKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uSW50ZWdlciBleHRlbmRzIFJhZG9uQW55IHtcblx0LyoqXG5cdCAqIENvbXB1dGUgdGhlIGFic29sdXRlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhYnNvbHV0ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBEZXRlcm1pbmUgaWYgdGhlIGludGVnZXIgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBnaXZlbiBgaW5wdXRgLlxuXHQgKiBAcGFyYW0gaW5wdXRcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ3JlYXRlclRoYW4oaW5wdXQ6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBbaW5wdXRdKTtcblx0fVxuXHQvKipcblx0ICogRGV0ZXJtaW5lIGlmIHRoZSBpbnRlZ2VyIHZhbHVlIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gYGlucHV0YC5cblx0ICogQHBhcmFtIGlucHV0XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQm9vbGVhbmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlc3NUaGFuKGlucHV0OiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQm9vbGVhbiwgW2lucHV0XSk7XG5cdH1cblx0LyoqXG5cdCAqIENvbXB1dGUgdGhlIHJlbWFpbmRlciBvZiBkaXZpZGluZyB0aGUgdmFsdWUgYnkgdGhlIGdpdmVuIGBpbnRlZ2VyYC5cblx0ICogQHBhcmFtIGludGVnZXJcblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIG1vZHVsbyhpbnRlZ2VyOiBudW1iZXIgfCBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW2ludGVnZXJdKTtcblx0fVxuXHQvKipcblx0ICogTXVsdGlwbHkgdGhlIHZhbHVlIGJ5IHRoZSBnaXZlbiBgaW50ZWdlcmAuXG5cdCAqIEBwYXJhbSBpbnRlZ2VyXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIG11bHRpcGx5KGludGVnZXI6IG51bWJlciB8IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbaW50ZWdlcl0pO1xuXHR9XG5cdC8qKlxuXHQgKiBOZWdhdGUgdGhlIGludGVnZXIgdmFsdWUuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uRmxvYXRgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBuZWdhdGUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29tcHV0ZSB0aGUgdmFsdWUgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiBnaXZlbiBgZXhwb25lbnRgXG5cdCAqIEBwYXJhbSBleHBvbmVudFxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkludGVnZXJgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwb3dlcihleHBvbmVudDogbnVtYmVyIHwgc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkludGVnZXIsIFtleHBvbmVudF0pO1xuXHR9XG5cdC8qKlxuXHQgKiBTdHJpbmdpZnkgdGhlIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ2FzdCBpbnRvIGEgYmlnLWVuZGlhbiBieXRlcyBidWZmZXIuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uQnl0ZXNgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b0J5dGVzKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBDYXN0IGludG8gYSBmbG9hdCB2YWx1ZS5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvRmxvYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XG5cdH1cbn1cblxuZXhwb3J0IGNsYXNzIFJhZG9uTWFwIGV4dGVuZHMgUmFkb25Bbnkge1xuXHQvKipcblx0ICogQWx0ZXIgdGhlIHZhbHVlIG9mIHRoZSBpdGVtKHMpIGlkZW50aWZpZWQgYnkgYGtleXNgLCBhcHBseWluZyB0aGUgZ2l2ZW4gYGlubmVyU2NyaXB0YCB0byBlYWNoIG9uZSBvZiB0aGVtLlxuXHQgKiBAcGFyYW0ga2V5c1xuXHQgKiBAcGFyYW0gaW5uZXJTY3JpcHRcblx0ICogQHJldHVybnMgVGhlIHNhbWUgUmFkb25NYXAgdXBvbiB3aGljaCB0aGlzIG9wZXJhdG9yIGlzIGV4ZWN1dGVkLCB3aXRoIHRoZSBzcGVjaWZpZWQgaXRlbShzKSBhbHRlcmVkXG5cdCAqIGJ5IHRoZSBnaXZlbiBgaW5uZXJTY3JpcHRgLlxuXHQgKi9cblx0cHVibGljIGFsdGVyKGlubmVyU2NyaXB0OiBSYWRvbk9wZXJhdG9yLCAuLi5rZXlzOiBzdHJpbmdbXSkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFtbLi4ua2V5c10sIGlubmVyU2NyaXB0XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBhcnJheSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0QXJyYXk8SXRlbXNUeXBlIGV4dGVuZHMgUmFkb25BbnkgPSBSYWRvbkFueT4oXG5cdFx0a2V5OiBzdHJpbmcsXG5cdFx0X2l0ZW1zVHlwZT86IHsgbmV3ICgpOiBJdGVtc1R5cGUgfSxcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PEl0ZW1zVHlwZT4sIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGJvb2xlYW4gd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25Cb29sZWFuYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0Qm9vbGVhbihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25Cb29sZWFuLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBmbG9hdCB2YWx1ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCBga2V5YCBmaWVsZC5cblx0ICogQHBhcmFtIGtleVxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkZsb2F0YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0RmxvYXQoa2V5OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uRmxvYXQsIFtrZXldKTtcblx0fVxuXHQvKipcblx0ICogRmV0Y2ggdGhlIGludGVnZXIgdmFsdWUgd2l0aGluIHRoZSBzcGVjaWZpZWQgYGtleWAgZmllbGQuXG5cdCAqIEBwYXJhbSBrZXlcblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0SW50ZWdlcihrZXk6IHN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBba2V5XSk7XG5cdH1cblx0LyoqXG5cdCAqIEZldGNoIHRoZSBtYXAgb2JqZWN0IHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uTWFwYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0TWFwKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbk1hcCwgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBGZXRjaCB0aGUgc3RyaW5nIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGBrZXlgIGZpZWxkLlxuXHQgKiBAcGFyYW0ga2V5XG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgZ2V0U3RyaW5nKGtleTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW2tleV0pO1xuXHR9XG5cdC8qKlxuXHQgKiBFeHRyYWN0IGtleSBuYW1lcyBvZiB0aGUgbWFwIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5ncy5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGtleXMoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uU3RyaW5nPiwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBUYWtlIGEgc2VsZWN0aW9uIG9mIGl0ZW1zIGZyb20gdGhlIGlucHV0IG1hcC4gRmFpbHMgaWYgdW5leGlzdGVudCBpdGVtcyBhcmUgcmVmZXJyZWQuXG5cdCAqIEBwYXJhbSBrZXlzIEtleSBzdHJpbmcgb2YgdGhlIGlucHV0IGl0ZW1zIHRvIHRha2UgaW50byB0aGUgb3V0cHV0IG1hcC5cblx0ICogQHJldHVybiBBIGBSYWRvbk1hcGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBpY2soLi4ua2V5czogc3RyaW5nW10pIHtcblx0XHRpZiAoQXJyYXkoa2V5cykubGVuZ3RoID09PSAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgRXZhbEVycm9yKFxuXHRcdFx0XHRgXFx4MWJbMTszM21SYWRvbk1hcDo6cGljazogYSBub24tZW1wdHkgYXJyYXkgb2Yga2V5IHN0cmluZ3MgbXVzdCBiZSBwcm92aWRlZFxceDFiWzBtYCxcblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25NYXAsIFsuLi5rZXlzXSk7XG5cdH1cblx0LyoqXG5cdCAqIEV4dHJhY3QgdGhlIG1hcCB2YWx1ZXMgaW50byBhbiBhcnJheS5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHZhbHVlcygpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXksIFtdKTtcblx0fVxuXHQvKipcblx0ICogU3RyaW5naWZ5IGlucHV0IGBSYWRvbk1hcGAgb2JqZWN0IGludG8gYSBKU09OIHN0cmluZy5cblx0ICogQHJldHVybiBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtdKTtcblx0fVxufVxuXG5leHBvcnQgY2xhc3MgUmFkb25TdHJpbmcgZXh0ZW5kcyBSYWRvbkFueSB7XG5cdC8qKlxuXHQgKiBDYXN0IGludG8gYSBib29sZWFuIHZhbHVlLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJvb2xlYW5gIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBhc0Jvb2xlYW4oKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkJvb2xlYW4sIFtdKTtcblx0fVxuXHQvKipcblx0ICogQ29udmVydCB0aGUgaW5wdXQgc3RyaW5nIGludG8gYSBieXRlcyBidWZmZXIuXG5cdCAqIEBwYXJhbSBlbmNvZGluZyBFbnVtIGludGVnZXIgdmFsdWUgc3BlY2lmeWluZyB0aGUgZW5jb2Rpbmcgc2NoZW1hIG9uIHRoZSBpbnB1dCBzdHJpbmcsIHN0YW5kaW5nOlxuXHQgKiAgIDAgLT4gSGV4IHN0cmluZyAoZGVmYXVsdCwgaWYgbm9uZSB3YXMgc3BlY2lmaWVkKVxuXHQgKiAgIDEgLT4gQmFzZTY0IHN0cmluZ1xuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkJ5dGVzYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYXNCeXRlcyhlbmNvZGluZyA9IFJhZG9uRW5jb2RpbmdzLkhleFN0cmluZykge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25CeXRlcywgW2VuY29kaW5nXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgaW50byBhIGZsb2F0IG51bWJlci5cblx0ICogQHJldHVybnMgQSBgUmFkb25GbG9hdGAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGFzRmxvYXQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkZsb2F0LCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENhc3QgaW50byBhbiBpbnRlZ2VyIG51bWJlci5cblx0ICogQHJldHVybnMgQSBgUmFkb25JbnRlZ2VyYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgYXNJbnRlZ2VyKCkge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25JbnRlZ2VyLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIENvdW50IHRoZSBudW1iZXIgb2YgY2hhcnMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uSW50ZWdlcmAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIGxlbmd0aCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uSW50ZWdlciwgW10pO1xuXHR9XG5cdC8qKlxuXHQgKiBSZXBsYWNlIHRoZSBzdHJpbmcgYnkgYSB2YWx1ZSBvZiB0eXBlIGBvdXRwdXRUeXBlYCwgZGV0ZXJtaW5lZCBvbiB3aGV0aGVyIHRoZSBzdHJpbmcgdmFsdWUgbWF0Y2hlc1xuXHQgKiBhbnkgb2YgdGhlIGtleXMgd2l0aGluIHRoZSBwcm92aWRlZCBgbWF0Y2hpbmdNYXBgLCBvciBzZXQgdG8gYSBgZGVmYXVsdFZhbHVlYCBpZiBubyBtYXRjaCBpcyBmb3VuZC5cblx0ICogQHBhcmFtIG91dHB1dFR5cGUgUmFkb24gdHlwZSBvZiB0aGUgb3V0cHV0IHZhbHVlLlxuXHQgKiBAcGFyYW0gbWF0Y2hpbmdNYXAgTWFwIGRldGVybWluaW5nIHRoZSBvdXRwdXQgdmFsdWUgZGVwZW5kaW5nIG9uIHRoZSBzdHJpbmcgdmFsdWUuXG5cdCAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVmFsdWUgcmV0dXJuZWQgaWYgbm8gbWF0Y2ggaXMgZm91bmQuXG5cdCAqIEByZXR1cm5zXG5cdCAqL1xuXHRwdWJsaWMgbWF0Y2g8T3V0cHV0VHlwZSBleHRlbmRzIFJhZG9uQW55ID0gUmFkb25TdHJpbmc+KFxuXHRcdG91dHB1dFR5cGU6IHsgbmV3IChwcmV2PzogUmFkb25PcGVyYXRvcik6IE91dHB1dFR5cGUgfSxcblx0XHRtYXRjaGluZ01hcDogTWFwPHN0cmluZywgYW55Pixcblx0XHRkZWZhdWx0VmFsdWU6IGFueSxcblx0KSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihvdXRwdXRUeXBlLCBbbWF0Y2hpbmdNYXAsIGRlZmF1bHRWYWx1ZV0pO1xuXHRcdC8vIHRoaXMuX2J5dGVjb2RlID0gW1xuXHRcdC8vICAgICAweDc1LFxuXHRcdC8vICAgICBtYXRjaGluZ01hcCxcblx0XHQvLyAgICAgZGVmYXVsdFZhbHVlXG5cdFx0Ly8gXVxuXHRcdC8vIHRoaXMuX21ldGhvZCA9IFwibWF0Y2hcIlxuXHRcdC8vIHRoaXMuX3BhcmFtcyA9IGB7ICR7T2JqZWN0LmVudHJpZXMobWF0Y2hpbmdNYXApLm1hcCgoZW50cnk6IFtzdHJpbmcsIGFueV0pID0+IGBcXFwiJHtlbnRyeVswXX1cXFwiOiAke2VudHJ5WzFdfSwgYCl9fSwgJHtkZWZhdWx0VmFsdWV9YFxuXHRcdC8vIGxldCBrZXlzOiBzdHJpbmcgPSBcIlwiXG5cdFx0Ly8gT2JqZWN0LmtleXMobWF0Y2hpbmdNYXApLm1hcCgoa2V5OiBzdHJpbmcpID0+IGtleXMgKz0ga2V5ICsgXCI7XCIpXG5cdFx0Ly8gcmV0dXJuIG5ldyBvdXRwdXRUeXBlKHRoaXMsIGtleXMpXG5cdH1cblx0LyoqXG5cdCAqIFBhcnNlIGlucHV0IHN0cmluZyBhcyBhbiBhcnJheSBvZiBKU09OIGl0ZW1zLlxuXHQgKiBAcGFyYW0ganNvblBhdGhzIChvcHRpb25hbCkgQXJyYXkgb2YgSlNPTiBwYXRocyB3aXRoaW4gaW5wdXQgYFJhZG9uU3RyaW5nYCBmcm9tIHdoZXJlIHRvIGZldGNoIGl0ZW1zIHRoYXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUgb3V0cHV0IGBSYWRvbkFycmF5YC5cblx0ICogQHJldHVybnMgQSBgUmFkb25BcnJheWAgb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHBhcnNlSlNPTkFycmF5KC4uLmpzb25QYXRoczogc3RyaW5nW10pOiBSYWRvbkFycmF5PFJhZG9uQW55PiB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvbkFycmF5PFJhZG9uQW55PiwgWy4uLmpzb25QYXRoc10pO1xuXHR9XG5cdC8qKlxuXHQgKiBQYXJzZSBzdHJpbmcgYXMgYSBKU09OLWVuY29kZWQgbWFwLlxuXHQgKiBAcGFyYW0ganNvblBhdGggKG9wdGlvbmFsKSBKU09OIHBhdGggd2l0aGluIGlucHV0IGBSYWRvblN0cmluZ2AgZnJvbSB3aGVyZSB0byBleHRyYWN0IHRoZSBvdXRwdXQgYFJhZG9uTWFwYC5cblx0ICogQHJldHVybnMgQSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwYXJzZUpTT05NYXAoanNvblBhdGg/OiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbanNvblBhdGhdKTtcblx0fVxuXHQvKipcblx0ICogUGFyc2Ugc3RyaW5nIGFzIGFuIFhNTC1lbmNvZGVkIG1hcC5cblx0ICogQHJldHVybnMgQSBgUmFkb25NYXBgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyBwYXJzZVhNTE1hcCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uTWFwLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFJlcGxhY2Ugd2l0aCBnaXZlbiBgcmVwbGFjZW1lbnRgIHN0cmluZywgYWxsIHBhcnRzIG9mIHRoZSBpbnB1dCBzdHJpbmcgdGhhdCBtYXRjaCB3aXRoIGdpdmVuIHJlZ3VsYXIgZXhwcmVzc2lvbi5cblx0ICogQHBhcmFtIHJlZ2V4IFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBiZSBtYXRjaGVkLlxuXHQgKiBAcGFyYW0gcmVwbGFjZW1lbnQgVGV4dCB0aGF0IHdpbGwgcmVwbGFjZSBhbGwgb2NjdXJlbmNlcy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyByZXBsYWNlKHJlZ2V4OiBzdHJpbmcgPSBcIlwiLCByZXBsYWNlbWVudDogc3RyaW5nID0gXCJcIikge1xuXHRcdHJldHVybiB0aGlzLl9wdXNoT3BlcmF0b3IoUmFkb25TdHJpbmcsIFtyZWdleCwgcmVwbGFjZW1lbnRdKTtcblx0fVxuXHQvKipcblx0ICogUmV0dXJucyBhIHNsaWNlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbnB1dCBzdHJpbmcuXG5cdCAqIEEgYHN0YXJ0SW5kZXhgIG9mIDAgcmVmZXJzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGlucHV0IHN0cmluZy4gSWYgbm8gYGVuZEluZGV4YCBpcyBwcm92aWRlZCwgaXQgd2lsbCBiZSBhc3N1bWVkXG5cdCAqIHRoZSBsZW5ndGggb2YgdGhlIGlucHV0IHN0cmluZy4gTmVnYXRpdmUgdmFsdWVzIHdpbGwgYmUgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgaW5wdXQgc3RyaW5nLlxuXHQgKiBAcGFyYW0gc3RhcnRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgc3RyaW5nIHdoZXJlIHRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgc3RhcnQuXG5cdCAqIEBwYXJhbSBlbmRJbmRleCBQb3NpdGlvbiB3aXRoaW4gaW5wdXQgc3RyaW5nIHdoZXJlIHRoZSBvdXRwdXQgc3RyaW5nIHdpbGwgZW5kLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvblN0cmluZ2Agb2JqZWN0LlxuXHQgKi9cblx0cHVibGljIHNsaWNlKHN0YXJ0SW5kZXg6IG51bWJlciA9IDAsIGVuZEluZGV4PzogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW3N0YXJ0SW5kZXgsIGVuZEluZGV4XSk7XG5cdH1cblx0LyoqXG5cdCAqIERpdmlkZXMgaW5wdXQgc3RyaW5nIGludG8gYW4gYXJyYXkgb2Ygc3Vic3RyaW5ncyxcblx0ICogQHBhcmFtIHJlZ2V4IFRoZSBzdHJpbmcgb3IgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSBmb3Igc3BsaXR0aW5nLlxuXHQgKiBAcmV0dXJucyBBIGBSYWRvbkFycmF5YCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgc3BsaXQocmVnZXg6IHN0cmluZyA9IFwiXFxyXCIpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uQXJyYXk8UmFkb25TdHJpbmc+LCBbcmVnZXhdKTtcblx0fVxuXHQvKipcblx0ICogTG93ZXIgY2FzZSBhbGwgY2hhcmFjdGVycy5cblx0ICogQHJldHVybnMgQSBgUmFkb25TdHJpbmdgIG9iamVjdC5cblx0ICovXG5cdHB1YmxpYyB0b0xvd2VyY2FzZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5fcHVzaE9wZXJhdG9yKFJhZG9uU3RyaW5nLCBbXSk7XG5cdH1cblx0LyoqXG5cdCAqIFVwcGVyIGNhc2UgYWxsIGNoYXJhY3RlcnMuXG5cdCAqIEByZXR1cm5zIEEgYFJhZG9uU3RyaW5nYCBvYmplY3QuXG5cdCAqL1xuXHRwdWJsaWMgdG9VcHBlckNhc2UoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3B1c2hPcGVyYXRvcihSYWRvblN0cmluZywgW10pO1xuXHR9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/utils.ts"],"names":[],"mappings":"AASA,OAAO,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,KAAK,QAAQ,EASb,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,CAaxD;AAED,wBAAgB,kBAAkB,CACjC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EAEpE,IAAI,EAAE,GAAG,EACT,IAAI,CAAC,EAAE;IAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;CAAE,EAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAqBvC;AAED,wBAAgB,iBAAiB,CAChC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EACnE,KAAK,EAAE;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAC/B,GAAG,CAAC,CAYJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAChC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EAEpE,OAAO,EAAE;IACR;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE;QAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAC/B,EACD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,GAClD,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAenC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/radon/utils.ts"],"names":[],"mappings":"AAUA,OAAO,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,aAAa,EACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EACN,KAAK,QAAQ,EASb,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,CAaxD;AAED,wBAAgB,kBAAkB,CACjC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EAEpE,IAAI,EAAE,GAAG,EACT,IAAI,CAAC,EAAE;IAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;CAAE,EAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,GAChB,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC,CAqBvC;AAED,wBAAgB,iBAAiB,CAChC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EACnE,KAAK,EAAE;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE;QAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAC/B,GAAG,CAAC,CAYJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAChC,CAAC,SAAS,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,cAAc,EAEpE,OAAO,EAAE;IACR;;OAEG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IACb;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,IAAI,CAAC,EAAE;QAAE,KAAK,KAAK,EAAE,GAAG,GAAG,CAAC,CAAA;KAAE,CAAC;CAC/B,EACD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,GAClD,KAAK,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAenC"}
@@ -147,4 +147,4 @@ function parseScriptOperator(script, opcode, args) {
147
147
  }
148
148
  }
149
149
  }
150
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFFOUIsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxHQUNiLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFFTixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxHQUNYLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sa0JBQWtCLEdBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLElBQUksOEJBQThCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFhO0lBQzdDLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFN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LE1BQU0sRUFBRSxDQUFDO1FBQ1osSUFBSSxRQUFRLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQzthQUNuQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ2xCLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDUixJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDWCxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hFLFFBQVEsUUFBUSxFQUFFLENBQUM7WUFDbEIsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLEtBQUssQ0FBQztZQUNYLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNkLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdEMsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELENBQUM7WUFFRCxnQkFBZ0I7WUFDaEIsOEVBQThFO1lBRTlFO2dCQUNDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hDLENBQUM7SUFDRixDQUFDO0FBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibm9kZTptb2R1bGVcIjtcclxuaW1wb3J0IGNib3IgZnJvbSBcImNib3JcIjtcclxuaW1wb3J0IGRvdGVudiBmcm9tIFwiZG90ZW52XCI7XHJcbmRvdGVudi5jb25maWcoeyBxdWlldDogdHJ1ZSB9KVxyXG5cclxuY29uc3QgcmVxdWlyZSA9IGNyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKTtcclxuXHJcbmltcG9ydCB7IGZyb21IZXhTdHJpbmcsIGlzSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzLmpzXCI7XHJcblxyXG5pbXBvcnQge1xyXG5cdFJhZG9uTW9kYWwsXHJcblx0UmFkb25SZXF1ZXN0LFxyXG5cdFJhZG9uUmV0cmlldmFsLFxyXG5cdFJhZG9uVGVtcGxhdGUsXHJcbn0gZnJvbSBcIi4vaW5kZXguanNcIjtcclxuXHJcbmltcG9ydCB7XHJcblx0dHlwZSBSYWRvbkFueSxcclxuXHRSYWRvbkFycmF5LFxyXG5cdFJhZG9uQm9vbGVhbixcclxuXHRSYWRvbkJ5dGVzLFxyXG5cdFJhZG9uRmxvYXQsXHJcblx0UmFkb25JbnRlZ2VyLFxyXG5cdFJhZG9uTWFwLFxyXG5cdFJhZG9uT3BlcmF0b3JzLFxyXG5cdFJhZG9uU3RyaW5nLFxyXG59IGZyb20gXCIuL3R5cGVzLmpzXCI7XHJcblxyXG5jb25zdCBXSVRORVRfQVNTRVRTX1BBVEggPVxyXG5cdHByb2Nlc3MuZW52LldJVE5FVF9TREtfUkFET05fQVNTRVRTX1BBVEggfHwgXCIuLi8uLi8uLi8uLi8uLi93aXRuZXQvYXNzZXRzXCI7XHJcblxyXG5leHBvcnQgeyBleGVjUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xyXG5cclxuLyoqXHJcbiAqIERlY29kZXMgYSBSYWRvbiBzY3JpcHQgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxyXG4gKiBAcGFyYW0gaGV4U3RyaW5nIFJhZG9uIHNjcmlwdCBieXRlY29kZS5cclxuICogQHJldHVybnMgUmFkb24gc2NyaXB0IG9iamVjdCAoaS5lLiBjaGFpbiBvZiBSYWRvbiBvcGVyYXRvcnMgd2l0aCBhIGRldGVybWluaXN0aWMgb3V0cHV0IFJhZG9uIHR5cGUpLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFkb25TY3JpcHQoYnl0ZWNvZGU6IGFueSk6IFJhZG9uQW55IHtcclxuXHRsZXQgYnVmZmVyO1xyXG5cdGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcclxuXHRcdGJ1ZmZlciA9IGZyb21IZXhTdHJpbmcoYnl0ZWNvZGUpO1xyXG5cdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcblx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSk7XHJcblx0fSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG5cdFx0YnVmZmVyID0gYnl0ZWNvZGU7XHJcblx0fSBlbHNlIHtcclxuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIFJhZG9uU2NyaXB0IGJ5dGVjb2RlIGZvcm1hdDogJHtieXRlY29kZX1gKTtcclxuXHR9XHJcblx0Y29uc3QgYXJyYXkgPSBjYm9yLmRlY29kZShidWZmZXIpO1xyXG5cdHJldHVybiBwYXJzZVNjcmlwdChhcnJheSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuUmFkb25Bc3NldHM8XHJcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXHJcbj4oXHJcblx0dHJlZTogYW55LFxyXG5cdHR5cGU/OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfSxcclxuXHRoZWFkZXJzPzogc3RyaW5nW10sXHJcbik6IEFycmF5PHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfT4ge1xyXG5cdGlmICghaGVhZGVycykgaGVhZGVycyA9IFtdO1xyXG5cdGNvbnN0IGVudHJpZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfT4gPSBbXTtcclxuXHRmb3IgKGNvbnN0IGtleSBpbiB0cmVlKSB7XHJcblx0XHRpZiAoXHJcblx0XHRcdCh0eXBlICYmIHRyZWVba2V5XSBpbnN0YW5jZW9mIHR5cGUpIHx8XHJcblx0XHRcdCghdHlwZSAmJlxyXG5cdFx0XHRcdCh0cmVlW2tleV0gaW5zdGFuY2VvZiBSYWRvblJlcXVlc3QgfHxcclxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUgfHxcclxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uTW9kYWwgfHxcclxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uUmV0cmlldmFsKSlcclxuXHRcdCkge1xyXG5cdFx0XHRlbnRyaWVzLnB1c2goe1xyXG5cdFx0XHRcdGtleSxcclxuXHRcdFx0XHRhcnRpZmFjdDogdHJlZVtrZXldLFxyXG5cdFx0XHR9KTtcclxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIHRyZWVba2V5XSA9PT0gXCJvYmplY3RcIikge1xyXG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZmxhdHRlblJhZG9uQXNzZXRzKHRyZWVba2V5XSwgdHlwZSwgWy4uLmhlYWRlcnMsIGtleV0pKTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGVudHJpZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUmFkb25Bc3NldDxcclxuXHRUIGV4dGVuZHMgUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSB8IFJhZG9uTW9kYWwgfCBSYWRvblJldHJpZXZhbCxcclxuPihzcGVjczoge1xyXG5cdGFydGlmYWN0OiBzdHJpbmc7XHJcblx0YXNzZXRzPzogYW55O1xyXG5cdHR5cGU/OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfTtcclxufSk6IFQge1xyXG5cdGNvbnN0IHN0dWZmID0gc3BlY3M/LmFzc2V0c1xyXG5cdFx0PyBmbGF0dGVuUmFkb25Bc3NldHMoc3BlY3MuYXNzZXRzLCBzcGVjcz8udHlwZSlcclxuXHRcdDogbG9hZE1vZHVsZUFzc2V0cyh7IGZsYXR0ZW5lZDogdHJ1ZSwgdHlwZTogc3BlY3M/LnR5cGUgfSk7XHJcblx0Y29uc3QgZm91bmQgPSBzdHVmZi5maW5kKFxyXG5cdFx0KGVudHJ5OiB7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IH0pID0+IGVudHJ5LmtleSA9PT0gc3BlY3MuYXJ0aWZhY3QsXHJcblx0KTtcclxuXHRpZiAoZm91bmQ/LmFydGlmYWN0KSB7XHJcblx0XHRyZXR1cm4gZm91bmQuYXJ0aWZhY3Q7XHJcblx0fSBlbHNlIHtcclxuXHRcdHRocm93IEVycm9yKGBSYWRvbiBhc3NldCBcIiR7c3BlY3MuYXJ0aWZhY3R9XCIgbm90IGF2YWlsYWJsZS5gKTtcclxuXHR9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBTZWFyY2ggV2l0bmV0IFJhZG9uIGFzc2V0cyBkZWNsYXJlZCBvciBpbXBvcnRlZCB3aXRoaW4gY3VycmVudCByZXBvc2l0b3J5LFxyXG4gKiB3aG9zZSBuYW1lcyBjb21wbGllcyB3aXRoIHRoZSBwcm92aWRlZCBgcGF0dGVybmAgYW5kIGBmaWx0ZXJGbmAuXHJcbiAqIElmIG5vIGBmaWx0ZXJGbmAgaXMgc3BlY2lmaWVkLCBzZWFyY2ggd2lsbCBpbmNsdWRlIGFzc2V0cyB3aG9zZSBuYW1lc1xyXG4gKiBhcmUgc3VmZml4ZWQgYnkgZ2l2ZW4gYHBhdHRlcm5gIChjYXNlIGluc2Vuc2l0aXZlKS5cclxuICogQHBhcmFtIG9wdGlvbnMgU2VhcmNoIG9wdGlvbnNcclxuICogQHBhcmFtIGZpbHRlckZuIEZpbHRlcmluZyBmdW5jdGlvbi5cclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgUmFkb24gYXNzZXRzIG9mIHRoZSBzcGVjaWZpZWQga2luZCBjb21wbHlpbmcgd2l0aCB0aGUgc2VhcmNoIHBhdHRlcm4uXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gc2VhcmNoUmFkb25Bc3NldHM8XHJcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXHJcbj4oXHJcblx0b3B0aW9uczoge1xyXG5cdFx0LyoqXHJcblx0XHQgKiBPYmplY3QgY29udGFpbmluZyBzdHJ1Y3R1cmVkIGhlcmlhcmNoeSBvZiBSYWRvbiBhc3NldHMuIElmIG5vdCBwcm92aWRlZCwgUmFkb24gYXNzZXRzIGRlY2xhcmVkIHdpdGhpbiBwcm9qZWN0J3MgZW52aXJvbm1lbnQuXHJcblx0XHQgKi9cclxuXHRcdGFzc2V0cz86IGFueTtcclxuXHRcdC8qKlxyXG5cdFx0ICogTGltaXRzIG51bWJlciBvZiByZXR1cm5lZCBSYWRvbiBhc3NldHMuXHJcblx0XHQgKi9cclxuXHRcdGxpbWl0PzogbnVtYmVyO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBPZmZzZXRzIHJldHVybmVkIGFycmF5IG9mIFJhZG9uIGFzc2V0cy5cclxuXHRcdCAqL1xyXG5cdFx0b2Zmc2V0PzogbnVtYmVyO1xyXG5cdFx0LyoqXHJcblx0XHQgKiBOYW1lIHBhdHRlcm4gc2VhcmNoZWQgZm9yLlxyXG5cdFx0ICovXHJcblx0XHRwYXR0ZXJuOiBzdHJpbmc7XHJcblx0XHQvKipcclxuXHRcdCAqIFNwZWNpZmljIHR5cGUgb2YgUmFkb24gYXNzZXQgdG8gc2VhcmNoIGZvcjogYFJhZG9uUmVxdWVzdGAsIGBSYWRvblJlcXVlc3RgLCBgUmFkb25SZXRyaWV2YWxgIG9yIGBSYWRvbkNDRFJgLlxyXG5cdFx0ICovXHJcblx0XHR0eXBlPzogeyBuZXcgKHNwZWNzOiBhbnkpOiBUIH07XHJcblx0fSxcclxuXHRmaWx0ZXJGbj86IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PiBib29sZWFuLFxyXG4pOiBBcnJheTxba2V5OiBzdHJpbmcsIGFydGlmYWN0OiBUXT4ge1xyXG5cdGNvbnN0IGRlZmF1bHRGaWx0ZXIgPSAoa2V5OiBzdHJpbmcsIHBhdHRlcm46IHN0cmluZykgPT5cclxuXHRcdGtleS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHBhdHRlcm4udG9Mb3dlckNhc2UoKSk7XHJcblx0Y29uc3Qgc3R1ZmYgPSBvcHRpb25zPy5hc3NldHNcclxuXHRcdD8gZmxhdHRlblJhZG9uQXNzZXRzKG9wdGlvbnMuYXNzZXRzLCBvcHRpb25zPy50eXBlKVxyXG5cdFx0OiBsb2FkTW9kdWxlQXNzZXRzKHsgZmxhdHRlbmVkOiB0cnVlLCB0eXBlOiBvcHRpb25zPy50eXBlIH0pO1xyXG5cdHJldHVybiBzdHVmZlxyXG5cdFx0LmZpbHRlcigoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfSkgPT5cclxuXHRcdFx0KGZpbHRlckZuIHx8IGRlZmF1bHRGaWx0ZXIpKGVudHJ5LmtleSwgb3B0aW9ucy5wYXR0ZXJuIHx8IFwiXCIpLFxyXG5cdFx0KVxyXG5cdFx0LnNsaWNlKG9wdGlvbnM/Lm9mZnNldCB8fCAwLCBvcHRpb25zPy5saW1pdClcclxuXHRcdC5tYXAoKGVudHJ5OiB7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IHwgVCB9KSA9PiBbXHJcblx0XHRcdGVudHJ5LmtleSxcclxuXHRcdFx0ZW50cnkuYXJ0aWZhY3QsXHJcblx0XHRdKTtcclxufVxyXG5cclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gLS0tIElOVEVSTkFMIE1FVEhPRFMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbmZ1bmN0aW9uIGxvYWRNb2R1bGVBc3NldHM8XHJcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXHJcbj4ob3B0aW9uczoge1xyXG5cdGZsYXR0ZW5lZD86IGJvb2xlYW47XHJcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xyXG59KTogYW55IHtcclxuXHRjb25zdCBzdHVmZiA9IHJlcXVpcmUoYCR7V0lUTkVUX0FTU0VUU19QQVRIfS9pbmRleC5janNgKTtcclxuXHRyZXR1cm4gb3B0aW9ucz8uZmxhdHRlbmVkID8gZmxhdHRlblJhZG9uQXNzZXRzKHN0dWZmLCBvcHRpb25zPy50eXBlKSA6IHN0dWZmO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVNjcmlwdChhcnJheTogYW55LCBzY3JpcHQ/OiBhbnkpOiBhbnkge1xyXG5cdGlmIChBcnJheS5pc0FycmF5KGFycmF5KSkge1xyXG5cdFx0YXJyYXkuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG5cdFx0XHRcdHNjcmlwdCA9IHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBpdGVtWzBdLCAuLi5pdGVtLnNsaWNlKDEpKTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzY3JpcHQgPSBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdCwgaXRlbSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdFx0cmV0dXJuIHNjcmlwdDtcclxuXHR9IGVsc2Uge1xyXG5cdFx0cmV0dXJuIHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBhcnJheSk7XHJcblx0fVxyXG59XHJcblxyXG5mdW5jdGlvbiBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdDogYW55LCBvcGNvZGU6IGFueSwgYXJncz86IGFueSk6IGFueSB7XHJcblx0aWYgKCFzY3JpcHQpIHtcclxuXHRcdGNvbnN0IGZvdW5kID0gT2JqZWN0LmVudHJpZXMoe1xyXG5cdFx0XHRcIjEwXCI6IFJhZG9uQXJyYXksXHJcblx0XHRcdFwiMjBcIjogUmFkb25Cb29sZWFuLFxyXG5cdFx0XHRcIjMwXCI6IFJhZG9uQnl0ZXMsXHJcblx0XHRcdFwiNDBcIjogUmFkb25JbnRlZ2VyLFxyXG5cdFx0XHRcIjUwXCI6IFJhZG9uRmxvYXQsXHJcblx0XHRcdFwiNjBcIjogUmFkb25NYXAsXHJcblx0XHRcdFwiNzBcIjogUmFkb25TdHJpbmcsXHJcblx0XHR9KS5maW5kKChlbnRyeSkgPT4gZW50cnlbMF0gPT09IChwYXJzZUludChvcGNvZGUsIDEwKSAmIDB4ZjApLnRvU3RyaW5nKDE2KSk7XHJcblx0XHRpZiAoZm91bmQpIHtcclxuXHRcdFx0c2NyaXB0ID0gbmV3IGZvdW5kWzFdKCk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aHJvdyBUeXBlRXJyb3IoYHVua25vd24gUmFkb24gb3BlcmF0b3I6ICR7b3Bjb2RlfWApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRpZiAob3Bjb2RlKSB7XHJcblx0XHRsZXQgb3BlcmF0b3IgPSBSYWRvbk9wZXJhdG9yc1tvcGNvZGVdXHJcblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcclxuXHRcdFx0LnNsaWNlKDEpXHJcblx0XHRcdC5qb2luKFwiXCIpO1xyXG5cdFx0b3BlcmF0b3IgPSBvcGVyYXRvci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG9wZXJhdG9yLnNsaWNlKDEpO1xyXG5cdFx0c3dpdGNoIChvcGVyYXRvcikge1xyXG5cdFx0XHRjYXNlIFwiZmlsdGVyXCI6XHJcblx0XHRcdGNhc2UgXCJtYXBcIjpcclxuXHRcdFx0Y2FzZSBcInNvcnRcIjpcclxuXHRcdFx0Y2FzZSBcImFsdGVyXCI6IHtcclxuXHRcdFx0XHRjb25zdCBpbm5lclNjcmlwdCA9IHBhcnNlU2NyaXB0KGFyZ3MpO1xyXG5cdFx0XHRcdHJldHVybiBzY3JpcHRbb3BlcmF0b3JdKGlubmVyU2NyaXB0LCAuLi5hcmdzLnNsaWNlKDEpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Ly8gY2FzZSBcImFsdGVyXCI6XHJcblx0XHRcdC8vICAgcmV0dXJuIHNjcmlwdFtvcGVyYXRvcl0oYXJnc1swXSwgcGFyc2VTY3JpcHQoYXJnc1sxXSwgLi4uYXJncy5zbGljZSgyKSkpO1xyXG5cclxuXHRcdFx0ZGVmYXVsdDpcclxuXHRcdFx0XHRyZXR1cm4gc2NyaXB0W29wZXJhdG9yXShhcmdzKTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JhZG9uL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUMsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFFL0IsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRSxPQUFPLEVBQ04sVUFBVSxFQUNWLFlBQVksRUFDWixjQUFjLEVBQ2QsYUFBYSxHQUNiLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE9BQU8sRUFFTixVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLFFBQVEsRUFDUixjQUFjLEVBQ2QsV0FBVyxHQUNYLE1BQU0sWUFBWSxDQUFDO0FBRXBCLE1BQU0sa0JBQWtCLEdBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLElBQUksOEJBQThCLENBQUM7QUFFNUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFekQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxRQUFhO0lBQzdDLElBQUksTUFBTSxDQUFDO0lBQ1gsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzQixNQUFNLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLFFBQVEsWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUMzQyxNQUFN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QUksTUFBTSxFQUFFLENBQUM7UUFDWixJQUFJLFFBQVEsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO2FBQ25DLEtBQUssQ0FBQyxXQUFXLENBQUM7YUFDbEIsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUNSLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNYLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEUsUUFBUSxRQUFRLEVBQUUsQ0FBQztZQUNsQixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ2QsTUFBTSxXQUFXLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN0QyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELGdCQUFnQjtZQUNoQiw4RUFBOEU7WUFFOUU7Z0JBQ0MsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEMsQ0FBQztJQUNGLENBQUM7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVxdWlyZSB9IGZyb20gXCJub2RlOm1vZHVsZVwiO1xuaW1wb3J0IGNib3IgZnJvbSBcImNib3JcIjtcbmltcG9ydCBkb3RlbnYgZnJvbSBcImRvdGVudlwiO1xuXG5kb3RlbnYuY29uZmlnKHsgcXVpZXQ6IHRydWUgfSk7XG5cbmNvbnN0IHJlcXVpcmUgPSBjcmVhdGVSZXF1aXJlKGltcG9ydC5tZXRhLnVybCk7XG5cbmltcG9ydCB7IGZyb21IZXhTdHJpbmcsIGlzSGV4U3RyaW5nIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzLmpzXCI7XG5cbmltcG9ydCB7XG5cdFJhZG9uTW9kYWwsXG5cdFJhZG9uUmVxdWVzdCxcblx0UmFkb25SZXRyaWV2YWwsXG5cdFJhZG9uVGVtcGxhdGUsXG59IGZyb20gXCIuL2luZGV4LmpzXCI7XG5cbmltcG9ydCB7XG5cdHR5cGUgUmFkb25BbnksXG5cdFJhZG9uQXJyYXksXG5cdFJhZG9uQm9vbGVhbixcblx0UmFkb25CeXRlcyxcblx0UmFkb25GbG9hdCxcblx0UmFkb25JbnRlZ2VyLFxuXHRSYWRvbk1hcCxcblx0UmFkb25PcGVyYXRvcnMsXG5cdFJhZG9uU3RyaW5nLFxufSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5jb25zdCBXSVRORVRfQVNTRVRTX1BBVEggPVxuXHRwcm9jZXNzLmVudi5XSVRORVRfU0RLX1JBRE9OX0FTU0VUU19QQVRIIHx8IFwiLi4vLi4vLi4vLi4vLi4vd2l0bmV0L2Fzc2V0c1wiO1xuXG5leHBvcnQgeyBleGVjUmFkb25CeXRlY29kZSB9IGZyb20gXCIuLi8uLi9iaW4vaGVscGVycy5qc1wiO1xuXG4vKipcbiAqIERlY29kZXMgYSBSYWRvbiBzY3JpcHQgb3V0IGZyb20gYSBQcm90b2J1Zi1zZXJpYWxpemVkIGJ5dGVjb2RlLlxuICogQHBhcmFtIGhleFN0cmluZyBSYWRvbiBzY3JpcHQgYnl0ZWNvZGUuXG4gKiBAcmV0dXJucyBSYWRvbiBzY3JpcHQgb2JqZWN0IChpLmUuIGNoYWluIG9mIFJhZG9uIG9wZXJhdG9ycyB3aXRoIGEgZGV0ZXJtaW5pc3RpYyBvdXRwdXQgUmFkb24gdHlwZSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVJhZG9uU2NyaXB0KGJ5dGVjb2RlOiBhbnkpOiBSYWRvbkFueSB7XG5cdGxldCBidWZmZXI7XG5cdGlmIChpc0hleFN0cmluZyhieXRlY29kZSkpIHtcblx0XHRidWZmZXIgPSBmcm9tSGV4U3RyaW5nKGJ5dGVjb2RlKTtcblx0fSBlbHNlIGlmIChieXRlY29kZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0XHRidWZmZXIgPSBCdWZmZXIuZnJvbShieXRlY29kZSk7XG5cdH0gZWxzZSBpZiAoYnl0ZWNvZGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRidWZmZXIgPSBieXRlY29kZTtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBVbnN1cHBvcnRlZCBSYWRvblNjcmlwdCBieXRlY29kZSBmb3JtYXQ6ICR7Ynl0ZWNvZGV9YCk7XG5cdH1cblx0Y29uc3QgYXJyYXkgPSBjYm9yLmRlY29kZShidWZmZXIpO1xuXHRyZXR1cm4gcGFyc2VTY3JpcHQoYXJyYXkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlblJhZG9uQXNzZXRzPFxuXHRUIGV4dGVuZHMgUmFkb25SZXF1ZXN0IHwgUmFkb25UZW1wbGF0ZSB8IFJhZG9uTW9kYWwgfCBSYWRvblJldHJpZXZhbCxcbj4oXG5cdHRyZWU6IGFueSxcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9LFxuXHRoZWFkZXJzPzogc3RyaW5nW10sXG4pOiBBcnJheTx7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IH0+IHtcblx0aWYgKCFoZWFkZXJzKSBoZWFkZXJzID0gW107XG5cdGNvbnN0IGVudHJpZXM6IEFycmF5PHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfT4gPSBbXTtcblx0Zm9yIChjb25zdCBrZXkgaW4gdHJlZSkge1xuXHRcdGlmIChcblx0XHRcdCh0eXBlICYmIHRyZWVba2V5XSBpbnN0YW5jZW9mIHR5cGUpIHx8XG5cdFx0XHQoIXR5cGUgJiZcblx0XHRcdFx0KHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uUmVxdWVzdCB8fFxuXHRcdFx0XHRcdHRyZWVba2V5XSBpbnN0YW5jZW9mIFJhZG9uVGVtcGxhdGUgfHxcblx0XHRcdFx0XHR0cmVlW2tleV0gaW5zdGFuY2VvZiBSYWRvbk1vZGFsIHx8XG5cdFx0XHRcdFx0dHJlZVtrZXldIGluc3RhbmNlb2YgUmFkb25SZXRyaWV2YWwpKVxuXHRcdCkge1xuXHRcdFx0ZW50cmllcy5wdXNoKHtcblx0XHRcdFx0a2V5LFxuXHRcdFx0XHRhcnRpZmFjdDogdHJlZVtrZXldLFxuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdHJlZVtrZXldID09PSBcIm9iamVjdFwiKSB7XG5cdFx0XHRlbnRyaWVzLnB1c2goLi4uZmxhdHRlblJhZG9uQXNzZXRzKHRyZWVba2V5XSwgdHlwZSwgWy4uLmhlYWRlcnMsIGtleV0pKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGVudHJpZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXF1aXJlUmFkb25Bc3NldDxcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXG4+KHNwZWNzOiB7XG5cdGFydGlmYWN0OiBzdHJpbmc7XG5cdGFzc2V0cz86IGFueTtcblx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xufSk6IFQge1xuXHRjb25zdCBzdHVmZiA9IHNwZWNzPy5hc3NldHNcblx0XHQ/IGZsYXR0ZW5SYWRvbkFzc2V0cyhzcGVjcy5hc3NldHMsIHNwZWNzPy50eXBlKVxuXHRcdDogbG9hZE1vZHVsZUFzc2V0cyh7IGZsYXR0ZW5lZDogdHJ1ZSwgdHlwZTogc3BlY3M/LnR5cGUgfSk7XG5cdGNvbnN0IGZvdW5kID0gc3R1ZmYuZmluZChcblx0XHQoZW50cnk6IHsga2V5OiBzdHJpbmc7IGFydGlmYWN0OiBhbnkgfSkgPT4gZW50cnkua2V5ID09PSBzcGVjcy5hcnRpZmFjdCxcblx0KTtcblx0aWYgKGZvdW5kPy5hcnRpZmFjdCkge1xuXHRcdHJldHVybiBmb3VuZC5hcnRpZmFjdDtcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBFcnJvcihgUmFkb24gYXNzZXQgXCIke3NwZWNzLmFydGlmYWN0fVwiIG5vdCBhdmFpbGFibGUuYCk7XG5cdH1cbn1cblxuLyoqXG4gKiBTZWFyY2ggV2l0bmV0IFJhZG9uIGFzc2V0cyBkZWNsYXJlZCBvciBpbXBvcnRlZCB3aXRoaW4gY3VycmVudCByZXBvc2l0b3J5LFxuICogd2hvc2UgbmFtZXMgY29tcGxpZXMgd2l0aCB0aGUgcHJvdmlkZWQgYHBhdHRlcm5gIGFuZCBgZmlsdGVyRm5gLlxuICogSWYgbm8gYGZpbHRlckZuYCBpcyBzcGVjaWZpZWQsIHNlYXJjaCB3aWxsIGluY2x1ZGUgYXNzZXRzIHdob3NlIG5hbWVzXG4gKiBhcmUgc3VmZml4ZWQgYnkgZ2l2ZW4gYHBhdHRlcm5gIChjYXNlIGluc2Vuc2l0aXZlKS5cbiAqIEBwYXJhbSBvcHRpb25zIFNlYXJjaCBvcHRpb25zXG4gKiBAcGFyYW0gZmlsdGVyRm4gRmlsdGVyaW5nIGZ1bmN0aW9uLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgUmFkb24gYXNzZXRzIG9mIHRoZSBzcGVjaWZpZWQga2luZCBjb21wbHlpbmcgd2l0aCB0aGUgc2VhcmNoIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hSYWRvbkFzc2V0czxcblx0VCBleHRlbmRzIFJhZG9uUmVxdWVzdCB8IFJhZG9uVGVtcGxhdGUgfCBSYWRvbk1vZGFsIHwgUmFkb25SZXRyaWV2YWwsXG4+KFxuXHRvcHRpb25zOiB7XG5cdFx0LyoqXG5cdFx0ICogT2JqZWN0IGNvbnRhaW5pbmcgc3RydWN0dXJlZCBoZXJpYXJjaHkgb2YgUmFkb24gYXNzZXRzLiBJZiBub3QgcHJvdmlkZWQsIFJhZG9uIGFzc2V0cyBkZWNsYXJlZCB3aXRoaW4gcHJvamVjdCdzIGVudmlyb25tZW50LlxuXHRcdCAqL1xuXHRcdGFzc2V0cz86IGFueTtcblx0XHQvKipcblx0XHQgKiBMaW1pdHMgbnVtYmVyIG9mIHJldHVybmVkIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRsaW1pdD86IG51bWJlcjtcblx0XHQvKipcblx0XHQgKiBPZmZzZXRzIHJldHVybmVkIGFycmF5IG9mIFJhZG9uIGFzc2V0cy5cblx0XHQgKi9cblx0XHRvZmZzZXQ/OiBudW1iZXI7XG5cdFx0LyoqXG5cdFx0ICogTmFtZSBwYXR0ZXJuIHNlYXJjaGVkIGZvci5cblx0XHQgKi9cblx0XHRwYXR0ZXJuOiBzdHJpbmc7XG5cdFx0LyoqXG5cdFx0ICogU3BlY2lmaWMgdHlwZSBvZiBSYWRvbiBhc3NldCB0byBzZWFyY2ggZm9yOiBgUmFkb25SZXF1ZXN0YCwgYFJhZG9uUmVxdWVzdGAsIGBSYWRvblJldHJpZXZhbGAgb3IgYFJhZG9uQ0NEUmAuXG5cdFx0ICovXG5cdFx0dHlwZT86IHsgbmV3IChzcGVjczogYW55KTogVCB9O1xuXHR9LFxuXHRmaWx0ZXJGbj86IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PiBib29sZWFuLFxuKTogQXJyYXk8W2tleTogc3RyaW5nLCBhcnRpZmFjdDogVF0+IHtcblx0Y29uc3QgZGVmYXVsdEZpbHRlciA9IChrZXk6IHN0cmluZywgcGF0dGVybjogc3RyaW5nKSA9PlxuXHRcdGtleS50b0xvd2VyQ2FzZSgpLmVuZHNXaXRoKHBhdHRlcm4udG9Mb3dlckNhc2UoKSk7XG5cdGNvbnN0IHN0dWZmID0gb3B0aW9ucz8uYXNzZXRzXG5cdFx0PyBmbGF0dGVuUmFkb25Bc3NldHMob3B0aW9ucy5hc3NldHMsIG9wdGlvbnM/LnR5cGUpXG5cdFx0OiBsb2FkTW9kdWxlQXNzZXRzKHsgZmxhdHRlbmVkOiB0cnVlLCB0eXBlOiBvcHRpb25zPy50eXBlIH0pO1xuXHRyZXR1cm4gc3R1ZmZcblx0XHQuZmlsdGVyKChlbnRyeTogeyBrZXk6IHN0cmluZzsgYXJ0aWZhY3Q6IGFueSB9KSA9PlxuXHRcdFx0KGZpbHRlckZuIHx8IGRlZmF1bHRGaWx0ZXIpKGVudHJ5LmtleSwgb3B0aW9ucy5wYXR0ZXJuIHx8IFwiXCIpLFxuXHRcdClcblx0XHQuc2xpY2Uob3B0aW9ucz8ub2Zmc2V0IHx8IDAsIG9wdGlvbnM/LmxpbWl0KVxuXHRcdC5tYXAoKGVudHJ5OiB7IGtleTogc3RyaW5nOyBhcnRpZmFjdDogYW55IHwgVCB9KSA9PiBbXG5cdFx0XHRlbnRyeS5rZXksXG5cdFx0XHRlbnRyeS5hcnRpZmFjdCxcblx0XHRdKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIC0tLSBJTlRFUk5BTCBNRVRIT0RTIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIGxvYWRNb2R1bGVBc3NldHM8XG5cdFQgZXh0ZW5kcyBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlIHwgUmFkb25Nb2RhbCB8IFJhZG9uUmV0cmlldmFsLFxuPihvcHRpb25zOiB7IGZsYXR0ZW5lZD86IGJvb2xlYW47IHR5cGU/OiB7IG5ldyAoc3BlY3M6IGFueSk6IFQgfSB9KTogYW55IHtcblx0Y29uc3Qgc3R1ZmYgPSByZXF1aXJlKGAke1dJVE5FVF9BU1NFVFNfUEFUSH0vaW5kZXguY2pzYCk7XG5cdHJldHVybiBvcHRpb25zPy5mbGF0dGVuZWQgPyBmbGF0dGVuUmFkb25Bc3NldHMoc3R1ZmYsIG9wdGlvbnM/LnR5cGUpIDogc3R1ZmY7XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2NyaXB0KGFycmF5OiBhbnksIHNjcmlwdD86IGFueSk6IGFueSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGFycmF5KSkge1xuXHRcdGFycmF5LmZvckVhY2goKGl0ZW0pID0+IHtcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG5cdFx0XHRcdHNjcmlwdCA9IHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBpdGVtWzBdLCAuLi5pdGVtLnNsaWNlKDEpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNjcmlwdCA9IHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0LCBpdGVtKTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gc2NyaXB0O1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBwYXJzZVNjcmlwdE9wZXJhdG9yKHNjcmlwdCwgYXJyYXkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlU2NyaXB0T3BlcmF0b3Ioc2NyaXB0OiBhbnksIG9wY29kZTogYW55LCBhcmdzPzogYW55KTogYW55IHtcblx0aWYgKCFzY3JpcHQpIHtcblx0XHRjb25zdCBmb3VuZCA9IE9iamVjdC5lbnRyaWVzKHtcblx0XHRcdFwiMTBcIjogUmFkb25BcnJheSxcblx0XHRcdFwiMjBcIjogUmFkb25Cb29sZWFuLFxuXHRcdFx0XCIzMFwiOiBSYWRvbkJ5dGVzLFxuXHRcdFx0XCI0MFwiOiBSYWRvbkludGVnZXIsXG5cdFx0XHRcIjUwXCI6IFJhZG9uRmxvYXQsXG5cdFx0XHRcIjYwXCI6IFJhZG9uTWFwLFxuXHRcdFx0XCI3MFwiOiBSYWRvblN0cmluZyxcblx0XHR9KS5maW5kKChlbnRyeSkgPT4gZW50cnlbMF0gPT09IChwYXJzZUludChvcGNvZGUsIDEwKSAmIDB4ZjApLnRvU3RyaW5nKDE2KSk7XG5cdFx0aWYgKGZvdW5kKSB7XG5cdFx0XHRzY3JpcHQgPSBuZXcgZm91bmRbMV0oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhyb3cgVHlwZUVycm9yKGB1bmtub3duIFJhZG9uIG9wZXJhdG9yOiAke29wY29kZX1gKTtcblx0XHR9XG5cdH1cblx0aWYgKG9wY29kZSkge1xuXHRcdGxldCBvcGVyYXRvciA9IFJhZG9uT3BlcmF0b3JzW29wY29kZV1cblx0XHRcdC5zcGxpdCgvKD89W0EtWl0pLylcblx0XHRcdC5zbGljZSgxKVxuXHRcdFx0LmpvaW4oXCJcIik7XG5cdFx0b3BlcmF0b3IgPSBvcGVyYXRvci5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG9wZXJhdG9yLnNsaWNlKDEpO1xuXHRcdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRcdGNhc2UgXCJmaWx0ZXJcIjpcblx0XHRcdGNhc2UgXCJtYXBcIjpcblx0XHRcdGNhc2UgXCJzb3J0XCI6XG5cdFx0XHRjYXNlIFwiYWx0ZXJcIjoge1xuXHRcdFx0XHRjb25zdCBpbm5lclNjcmlwdCA9IHBhcnNlU2NyaXB0KGFyZ3MpO1xuXHRcdFx0XHRyZXR1cm4gc2NyaXB0W29wZXJhdG9yXShpbm5lclNjcmlwdCwgLi4uYXJncy5zbGljZSgxKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGNhc2UgXCJhbHRlclwiOlxuXHRcdFx0Ly8gICByZXR1cm4gc2NyaXB0W29wZXJhdG9yXShhcmdzWzBdLCBwYXJzZVNjcmlwdChhcmdzWzFdLCAuLi5hcmdzLnNsaWNlKDIpKSk7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHJldHVybiBzY3JpcHRbb3BlcmF0b3JdKGFyZ3MpO1xuXHRcdH1cblx0fVxufVxuIl19
@@ -1 +1 @@
1
- {"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,UAAU,aAAa;IACtB,iBAAiB,CAChB,WAAW,EAAE,IAAI,EACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,cAAc,CAAC,CAAC;CAE3B;AAED,qBAAa,WAAY,SAAQ,KAAK;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;gBACT,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG;CAOlD;AAED,qBAAa,YAAa,YAAW,aAAa;WACpC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAQzD,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,GAAG,EAAE,MAAM;cAcP,gBAAgB,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;IA4BV,iBAAiB,CAC7B,WAAW,EAAE,IAAI,EACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,cAAc,CAAC;CAM1B"}
1
+ {"version":3,"file":"kermit.d.ts","sourceRoot":"","sources":["../../../../src/lib/rest/kermit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,UAAU,aAAa;IACtB,iBAAiB,CAChB,WAAW,EAAE,IAAI,EACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,cAAc,CAAC,CAAC;CAE3B;AAED,qBAAa,WAAY,SAAQ,KAAK;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC;gBACT,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG;CAOlD;AAED,qBAAa,YAAa,YAAW,aAAa;WACpC,OAAO,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMzD,SAAgB,GAAG,EAAE,MAAM,CAAC;gBAEhB,GAAG,EAAE,MAAM;cAcP,gBAAgB,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC;IA4BV,iBAAiB,CAC7B,WAAW,EAAE,IAAI,EACjB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,cAAc,CAAC;CAM1B"}
@@ -19,9 +19,7 @@ export class KermitError extends Error {
19
19
  }
20
20
  export class KermitClient {
21
21
  static async fromEnv(url) {
22
- return new KermitClient(url ||
23
- process.env.WITNET_KERMIT_PROVIDER_URL ||
24
- "https://kermit.witnet.io");
22
+ return new KermitClient(url || process.env.WITNET_SDK_KERMIT_URL || "https://kermit.witnet.io");
25
23
  }
26
24
  url;
27
25
  constructor(url) {
@@ -65,4 +63,4 @@ export class KermitClient {
65
63
  });
66
64
  }
67
65
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZXN0L2tlcm1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXZDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBQ3pDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDUixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFVWixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDNUIsS0FBSyxDQUFPO0lBQ1osSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFPO0lBQ3JCLFlBQVksSUFBWSxFQUFFLEtBQVcsRUFBRSxLQUFXO1FBQ2pELEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVk7UUFDaEMsT0FBTyxJQUFJLFlBQVksQ0FDdEIsR0FBRztZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCO1lBQ3RDLDBCQUEwQixDQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVlLEdBQUcsQ0FBUztJQUU1QixZQUFZLEdBQVc7UUFDdEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxNQUFNLEtBQUssQ0FBQyx3Q0FBd0MsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNqQixDQUFDO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUM7UUFDcEIsQ0FBQztJQUNGLENBQUM7SUFFUyxLQUFLLENBQUMsZ0JBQWdCLENBQy9CLElBQVksRUFDWixLQUFXO1FBRVgsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ3ZFLE9BQU8sS0FBSzthQUNWLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDVCxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztTQUMxRCxDQUFDO2FBQ0QsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdkIsSUFBSSxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7Z0JBQzlDLE1BQU0sSUFBSSxXQUFXLENBQ3BCLElBQUksRUFDSixLQUFLLEVBQ0wsUUFBUSxFQUFFLEtBQUssSUFBSSxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FDeEMsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxRQUFRLEVBQUUsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFLENBQUM7Z0JBQ2hFLE1BQU0sSUFBSSxXQUFXLENBQ3BCLElBQUksRUFDSixLQUFLLEVBQ0wsNEJBQTRCLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FDakQsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDUCxPQUFPLFFBQVEsRUFBRSxJQUFTLENBQUM7WUFDNUIsQ0FBQztRQUNGLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENBQzdCLFdBQWlCLEVBQ2pCLFVBQTRCO1FBRTVCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFpQixzQkFBc0IsRUFBRTtZQUNwRSxXQUFXO1lBQ1gsVUFBVTtTQUNWLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmF1bHQgYXMgYXhpb3MgfSBmcm9tIFwiYXhpb3NcIjtcclxuaW1wb3J0IHsgZGVmYXVsdCBhcyBqc29uQmlnIH0gZnJvbSBcImpzb24tYmlnaW50XCI7XHJcbmltcG9ydCB0eXBlIHsgSGFzaCB9IGZyb20gXCIuLi90eXBlcy5qc1wiO1xyXG5pbXBvcnQgeyBwYXJzZVVSTCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBEYXRhUHVzaFJlcG9ydCB9IGZyb20gXCIuL3R5cGVzLmpzXCI7XHJcblxyXG5jb25zdCBzdHJpbmdpZnkgPSAocXVlcnk6IGFueSkgPT5cclxuXHRPYmplY3QuZW50cmllcyhxdWVyeSlcclxuXHRcdC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYCYke2tleX09JHt2YWx1ZX1gKVxyXG5cdFx0LmpvaW4oXCJcIilcclxuXHRcdC5zbGljZSgxKTtcclxuXHJcbmludGVyZmFjZSBJS2VybWl0Q2xpZW50IHtcclxuXHRnZXREYXRhUHVzaFJlcG9ydChcclxuXHRcdHdpdERyVHhIYXNoOiBIYXNoLFxyXG5cdFx0ZXZtTmV0d29yaz86IG51bWJlciB8IHN0cmluZyxcclxuXHQpOiBQcm9taXNlPERhdGFQdXNoUmVwb3J0PjtcclxuXHQvLyBzZWFyY2hEYXRhUmVxdWVzdHMoaGFzaDogSGFzaCwge30pOiBQcm9taXNlPGFueT47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXJtaXRFcnJvciBleHRlbmRzIEVycm9yIHtcclxuXHRyZWFkb25seSBlcnJvcj86IGFueTtcclxuXHRyZWFkb25seSBwYXRoOiBzdHJpbmc7XHJcblx0cmVhZG9ubHkgcXVlcnk/OiBhbnk7XHJcblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBxdWVyeT86IGFueSwgZXJyb3I/OiBhbnkpIHtcclxuXHRcdHN1cGVyKGAke3BhdGh9JHtzdHJpbmdpZnkocXVlcnkpfTogJHtKU09OLnN0cmluZ2lmeShlcnJvcil9YCk7XHJcblx0XHRkZWxldGUgZXJyb3I/LnN0YWNrO1xyXG5cdFx0dGhpcy5lcnJvciA9IGVycm9yO1xyXG5cdFx0dGhpcy5wYXRoID0gcGF0aDtcclxuXHRcdHRoaXMucXVlcnkgPSBxdWVyeTtcclxuXHR9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBLZXJtaXRDbGllbnQgaW1wbGVtZW50cyBJS2VybWl0Q2xpZW50IHtcclxuXHRzdGF0aWMgYXN5bmMgZnJvbUVudih1cmw/OiBzdHJpbmcpOiBQcm9taXNlPEtlcm1pdENsaWVudD4ge1xyXG5cdFx0cmV0dXJuIG5ldyBLZXJtaXRDbGllbnQoXHJcblx0XHRcdHVybCB8fFxyXG5cdFx0XHRcdHByb2Nlc3MuZW52LldJVE5FVF9LRVJNSVRfUFJPVklERVJfVVJMIHx8XHJcblx0XHRcdFx0XCJodHRwczovL2tlcm1pdC53aXRuZXQuaW9cIixcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XHJcblxyXG5cdGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XHJcblx0XHRjb25zdCBbc2NoZW1hXSA9IHBhcnNlVVJMKHVybCk7XHJcblx0XHRpZiAoIXNjaGVtYS5zdGFydHNXaXRoKFwiaHR0cDovL1wiKSAmJiAhc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwczovL1wiKSkge1xyXG5cdFx0XHR0aHJvdyBFcnJvcihgS2VybWl0Q2xpZW50OiB1bnN1cHBvcnRlZCBVUkwgc2NoZW1hICR7c2NoZW1hfWApO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy51cmwgPSB1cmw7XHJcblx0XHRpZiAoIXRoaXMudXJsLmVuZHNXaXRoKFwiL1wiKSkge1xyXG5cdFx0XHR0aGlzLnVybCArPSBcIi9cIjtcclxuXHRcdH1cclxuXHRcdGlmICghdGhpcy51cmwuZW5kc1dpdGgoXCJhcGkvXCIpKSB7XHJcblx0XHRcdHRoaXMudXJsICs9IFwiYXBpL1wiO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJvdGVjdGVkIGFzeW5jIGNhbGxBcGlHZXRNZXRob2Q8VD4oXHJcblx0XHRwYXRoOiBzdHJpbmcsXHJcblx0XHRxdWVyeT86IGFueSxcclxuXHQpOiBQcm9taXNlPEVycm9yIHwgYW55PiB7XHJcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLnVybH0ke3BhdGh9JHtxdWVyeSA/IGA/JHtzdHJpbmdpZnkocXVlcnkpfWAgOiBcIlwifWA7XHJcblx0XHRyZXR1cm4gYXhpb3NcclxuXHRcdFx0LmdldCh1cmwsIHtcclxuXHRcdFx0XHR0cmFuc2Zvcm1SZXNwb25zZTogKHJlc3BvbnNlKSA9PiBqc29uQmlnKCkucGFyc2UocmVzcG9uc2UpLFxyXG5cdFx0XHR9KVxyXG5cdFx0XHQudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGlmIChyZXNwb25zZT8uZXJyb3IgfHwgcmVzcG9uc2U/LmRhdGE/LmVycm9yKSB7XHJcblx0XHRcdFx0XHR0aHJvdyBuZXcgS2VybWl0RXJyb3IoXHJcblx0XHRcdFx0XHRcdHBhdGgsXHJcblx0XHRcdFx0XHRcdHF1ZXJ5LFxyXG5cdFx0XHRcdFx0XHRyZXNwb25zZT8uZXJyb3IgfHwgcmVzcG9uc2U/LmRhdGE/LmVycm9yLFxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKHJlc3BvbnNlPy5zdGF0dXNDb2RlICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xyXG5cdFx0XHRcdFx0dGhyb3cgbmV3IEtlcm1pdEVycm9yKFxyXG5cdFx0XHRcdFx0XHRwYXRoLFxyXG5cdFx0XHRcdFx0XHRxdWVyeSxcclxuXHRcdFx0XHRcdFx0YHNlcnZlciBzdGF0dXMgY29kZTogSFRUUC8ke3Jlc3BvbnNlLnN0YXR1c0NvZGV9YCxcclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZT8uZGF0YSBhcyBUO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSlcclxuXHRcdFx0LmNhdGNoKChlcnJvcikgPT4ge1xyXG5cdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihwYXRoLCBxdWVyeSwgZXJyb3IpO1xyXG5cdFx0XHR9KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBhc3luYyBnZXREYXRhUHVzaFJlcG9ydChcclxuXHRcdHdpdERyVHhIYXNoOiBIYXNoLFxyXG5cdFx0ZXZtTmV0d29yaz86IG51bWJlciB8IHN0cmluZyxcclxuXHQpOiBQcm9taXNlPERhdGFQdXNoUmVwb3J0PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jYWxsQXBpR2V0TWV0aG9kPERhdGFQdXNoUmVwb3J0PihcImdldF9kYXRhX3B1c2hfcmVwb3J0XCIsIHtcclxuXHRcdFx0d2l0RHJUeEhhc2gsXHJcblx0XHRcdGV2bU5ldHdvcmssXHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2VybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9yZXN0L2tlcm1pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxJQUFJLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUN6QyxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSXZDLE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FDaEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7S0FDbkIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0tBQ3pDLElBQUksQ0FBQyxFQUFFLENBQUM7S0FDUixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFVWixNQUFNLE9BQU8sV0FBWSxTQUFRLEtBQUs7SUFDNUIsS0FBSyxDQUFPO0lBQ1osSUFBSSxDQUFTO0lBQ2IsS0FBSyxDQUFPO0lBQ3JCLFlBQVksSUFBWSxFQUFFLEtBQVcsRUFBRSxLQUFXO1FBQ2pELEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsT0FBTyxLQUFLLEVBQUUsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRDtBQUVELE1BQU0sT0FBTyxZQUFZO0lBQ3hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQVk7UUFDaEMsT0FBTyxJQUFJLFlBQVksQ0FDdEIsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLElBQUksMEJBQTBCLENBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRWUsR0FBRyxDQUFTO0lBRTVCLFlBQVksR0FBVztRQUN0QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ3JFLE1BQU0sS0FBSyxDQUFDLHdDQUF3QyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDO1FBQ2pCLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsR0FBRyxJQUFJLE1BQU0sQ0FBQztRQUNwQixDQUFDO0lBQ0YsQ0FBQztJQUVTLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDL0IsSUFBWSxFQUNaLEtBQVc7UUFFWCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDdkUsT0FBTyxLQUFLO2FBQ1YsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNULGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQzFELENBQUM7YUFDRCxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN2QixJQUFJLFFBQVEsRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztnQkFDOUMsTUFBTSxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxFQUNKLEtBQUssRUFDTCxRQUFRLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUN4QyxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxJQUFJLFFBQVEsRUFBRSxVQUFVLElBQUksUUFBUSxDQUFDLFVBQVUsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxJQUFJLFdBQVcsQ0FDcEIsSUFBSSxFQUNKLEtBQUssRUFDTCw0QkFBNEIsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUNqRCxDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNQLE9BQU8sUUFBUSxFQUFFLElBQVMsQ0FBQztZQUM1QixDQUFDO1FBQ0YsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDaEIsTUFBTSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLEtBQUssQ0FBQyxpQkFBaUIsQ0FDN0IsV0FBaUIsRUFDakIsVUFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQWlCLHNCQUFzQixFQUFFO1lBQ3BFLFdBQVc7WUFDWCxVQUFVO1NBQ1YsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmYXVsdCBhcyBheGlvcyB9IGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBqc29uQmlnIH0gZnJvbSBcImpzb24tYmlnaW50XCI7XG5pbXBvcnQgdHlwZSB7IEhhc2ggfSBmcm9tIFwiLi4vdHlwZXMuanNcIjtcbmltcG9ydCB7IHBhcnNlVVJMIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmltcG9ydCB0eXBlIHsgRGF0YVB1c2hSZXBvcnQgfSBmcm9tIFwiLi90eXBlcy5qc1wiO1xuXG5jb25zdCBzdHJpbmdpZnkgPSAocXVlcnk6IGFueSkgPT5cblx0T2JqZWN0LmVudHJpZXMocXVlcnkpXG5cdFx0Lm1hcCgoW2tleSwgdmFsdWVdKSA9PiBgJiR7a2V5fT0ke3ZhbHVlfWApXG5cdFx0LmpvaW4oXCJcIilcblx0XHQuc2xpY2UoMSk7XG5cbmludGVyZmFjZSBJS2VybWl0Q2xpZW50IHtcblx0Z2V0RGF0YVB1c2hSZXBvcnQoXG5cdFx0d2l0RHJUeEhhc2g6IEhhc2gsXG5cdFx0ZXZtTmV0d29yaz86IG51bWJlciB8IHN0cmluZyxcblx0KTogUHJvbWlzZTxEYXRhUHVzaFJlcG9ydD47XG5cdC8vIHNlYXJjaERhdGFSZXF1ZXN0cyhoYXNoOiBIYXNoLCB7fSk6IFByb21pc2U8YW55Pjtcbn1cblxuZXhwb3J0IGNsYXNzIEtlcm1pdEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRyZWFkb25seSBlcnJvcj86IGFueTtcblx0cmVhZG9ubHkgcGF0aDogc3RyaW5nO1xuXHRyZWFkb25seSBxdWVyeT86IGFueTtcblx0Y29uc3RydWN0b3IocGF0aDogc3RyaW5nLCBxdWVyeT86IGFueSwgZXJyb3I/OiBhbnkpIHtcblx0XHRzdXBlcihgJHtwYXRofSR7c3RyaW5naWZ5KHF1ZXJ5KX06ICR7SlNPTi5zdHJpbmdpZnkoZXJyb3IpfWApO1xuXHRcdGRlbGV0ZSBlcnJvcj8uc3RhY2s7XG5cdFx0dGhpcy5lcnJvciA9IGVycm9yO1xuXHRcdHRoaXMucGF0aCA9IHBhdGg7XG5cdFx0dGhpcy5xdWVyeSA9IHF1ZXJ5O1xuXHR9XG59XG5cbmV4cG9ydCBjbGFzcyBLZXJtaXRDbGllbnQgaW1wbGVtZW50cyBJS2VybWl0Q2xpZW50IHtcblx0c3RhdGljIGFzeW5jIGZyb21FbnYodXJsPzogc3RyaW5nKTogUHJvbWlzZTxLZXJtaXRDbGllbnQ+IHtcblx0XHRyZXR1cm4gbmV3IEtlcm1pdENsaWVudChcblx0XHRcdHVybCB8fCBwcm9jZXNzLmVudi5XSVRORVRfU0RLX0tFUk1JVF9VUkwgfHwgXCJodHRwczovL2tlcm1pdC53aXRuZXQuaW9cIixcblx0XHQpO1xuXHR9XG5cblx0cHVibGljIHJlYWRvbmx5IHVybDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHVybDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgW3NjaGVtYV0gPSBwYXJzZVVSTCh1cmwpO1xuXHRcdGlmICghc2NoZW1hLnN0YXJ0c1dpdGgoXCJodHRwOi8vXCIpICYmICFzY2hlbWEuc3RhcnRzV2l0aChcImh0dHBzOi8vXCIpKSB7XG5cdFx0XHR0aHJvdyBFcnJvcihgS2VybWl0Q2xpZW50OiB1bnN1cHBvcnRlZCBVUkwgc2NoZW1hICR7c2NoZW1hfWApO1xuXHRcdH1cblx0XHR0aGlzLnVybCA9IHVybDtcblx0XHRpZiAoIXRoaXMudXJsLmVuZHNXaXRoKFwiL1wiKSkge1xuXHRcdFx0dGhpcy51cmwgKz0gXCIvXCI7XG5cdFx0fVxuXHRcdGlmICghdGhpcy51cmwuZW5kc1dpdGgoXCJhcGkvXCIpKSB7XG5cdFx0XHR0aGlzLnVybCArPSBcImFwaS9cIjtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgYXN5bmMgY2FsbEFwaUdldE1ldGhvZDxUPihcblx0XHRwYXRoOiBzdHJpbmcsXG5cdFx0cXVlcnk/OiBhbnksXG5cdCk6IFByb21pc2U8RXJyb3IgfCBhbnk+IHtcblx0XHRjb25zdCB1cmwgPSBgJHt0aGlzLnVybH0ke3BhdGh9JHtxdWVyeSA/IGA/JHtzdHJpbmdpZnkocXVlcnkpfWAgOiBcIlwifWA7XG5cdFx0cmV0dXJuIGF4aW9zXG5cdFx0XHQuZ2V0KHVybCwge1xuXHRcdFx0XHR0cmFuc2Zvcm1SZXNwb25zZTogKHJlc3BvbnNlKSA9PiBqc29uQmlnKCkucGFyc2UocmVzcG9uc2UpLFxuXHRcdFx0fSlcblx0XHRcdC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG5cdFx0XHRcdGlmIChyZXNwb25zZT8uZXJyb3IgfHwgcmVzcG9uc2U/LmRhdGE/LmVycm9yKSB7XG5cdFx0XHRcdFx0dGhyb3cgbmV3IEtlcm1pdEVycm9yKFxuXHRcdFx0XHRcdFx0cGF0aCxcblx0XHRcdFx0XHRcdHF1ZXJ5LFxuXHRcdFx0XHRcdFx0cmVzcG9uc2U/LmVycm9yIHx8IHJlc3BvbnNlPy5kYXRhPy5lcnJvcixcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHJlc3BvbnNlPy5zdGF0dXNDb2RlICYmIHJlc3BvbnNlLnN0YXR1c0NvZGUgIT09IDIwMCkge1xuXHRcdFx0XHRcdHRocm93IG5ldyBLZXJtaXRFcnJvcihcblx0XHRcdFx0XHRcdHBhdGgsXG5cdFx0XHRcdFx0XHRxdWVyeSxcblx0XHRcdFx0XHRcdGBzZXJ2ZXIgc3RhdHVzIGNvZGU6IEhUVFAvJHtyZXNwb25zZS5zdGF0dXNDb2RlfWAsXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVzcG9uc2U/LmRhdGEgYXMgVDtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoZXJyb3IpID0+IHtcblx0XHRcdFx0dGhyb3cgbmV3IEtlcm1pdEVycm9yKHBhdGgsIHF1ZXJ5LCBlcnJvcik7XG5cdFx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBhc3luYyBnZXREYXRhUHVzaFJlcG9ydChcblx0XHR3aXREclR4SGFzaDogSGFzaCxcblx0XHRldm1OZXR3b3JrPzogbnVtYmVyIHwgc3RyaW5nLFxuXHQpOiBQcm9taXNlPERhdGFQdXNoUmVwb3J0PiB7XG5cdFx0cmV0dXJuIHRoaXMuY2FsbEFwaUdldE1ldGhvZDxEYXRhUHVzaFJlcG9ydD4oXCJnZXRfZGF0YV9wdXNoX3JlcG9ydFwiLCB7XG5cdFx0XHR3aXREclR4SGFzaCxcblx0XHRcdGV2bU5ldHdvcmssXG5cdFx0fSk7XG5cdH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Jlc3QvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgR2V0RGF0YVJlcXVlc3RFdGhlcmVhbFJlcG9ydCwgSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XHJcblxyXG5leHBvcnQgdHlwZSBEYXRhUHVzaFJlcG9ydCA9IEdldERhdGFSZXF1ZXN0RXRoZXJlYWxSZXBvcnQgJiB7XHJcblx0ZXZtX3Byb29mPzogSGV4U3RyaW5nO1xyXG59O1xyXG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Jlc3QvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgR2V0RGF0YVJlcXVlc3RFdGhlcmVhbFJlcG9ydCwgSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3R5cGVzLmpzXCI7XG5cbmV4cG9ydCB0eXBlIERhdGFQdXNoUmVwb3J0ID0gR2V0RGF0YVJlcXVlc3RFdGhlcmVhbFJlcG9ydCAmIHtcblx0ZXZtX3Byb29mPzogSGV4U3RyaW5nO1xufTtcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  export * from "./nodes.js";
2
2
  export * from "./provider.js";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JwYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL25vZGVzLmpzXCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL3Byb3ZpZGVyLmpzXCI7XHJcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JwYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL25vZGVzLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9wcm92aWRlci5qc1wiO1xuIl19