@witnet/sdk 1.0.1 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env_witnet +6 -6
- package/LICENSE +21 -21
- package/README.md +103 -103
- package/dist/bin/helpers.d.ts +88 -0
- package/dist/bin/helpers.d.ts.map +1 -0
- package/dist/bin/helpers.js +866 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/lib/crypto/account.d.ts +18 -0
- package/dist/lib/crypto/account.d.ts.map +1 -0
- package/dist/lib/crypto/account.js +152 -0
- package/dist/lib/crypto/coinbase.d.ts +9 -0
- package/dist/lib/crypto/coinbase.d.ts.map +1 -0
- package/dist/lib/crypto/coinbase.js +39 -0
- package/dist/lib/crypto/index.d.ts +7 -0
- package/dist/lib/crypto/index.d.ts.map +1 -0
- package/dist/lib/crypto/index.js +28 -0
- package/dist/lib/crypto/interfaces.d.ts +80 -0
- package/dist/lib/crypto/interfaces.d.ts.map +1 -0
- package/dist/lib/crypto/interfaces.js +3 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts +47 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/DataRequestPayload.js +384 -0
- package/dist/lib/crypto/payloads/StakePayload.d.ts +27 -0
- package/dist/lib/crypto/payloads/StakePayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/StakePayload.js +184 -0
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts +35 -0
- package/dist/lib/crypto/payloads/UnstakePayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/UnstakePayload.js +244 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts +24 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.d.ts.map +1 -0
- package/dist/lib/crypto/payloads/ValueTransferPayload.js +182 -0
- package/dist/lib/crypto/payloads.d.ts +54 -0
- package/dist/lib/crypto/payloads.d.ts.map +1 -0
- package/dist/lib/crypto/payloads.js +224 -0
- package/dist/lib/crypto/signer.d.ts +26 -0
- package/dist/lib/crypto/signer.d.ts.map +1 -0
- package/dist/lib/crypto/signer.js +299 -0
- package/dist/lib/crypto/transmitters/DataRequests.d.ts +14 -0
- package/dist/lib/crypto/transmitters/DataRequests.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/DataRequests.js +62 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts +11 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/StakeDeposits.js +48 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts +17 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/StakeWithdrawals.js +115 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts +10 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters/ValueTransfers.js +47 -0
- package/dist/lib/crypto/transmitters.d.ts +46 -0
- package/dist/lib/crypto/transmitters.d.ts.map +1 -0
- package/dist/lib/crypto/transmitters.js +506 -0
- package/dist/lib/crypto/types.d.ts +127 -0
- package/dist/lib/crypto/types.d.ts.map +1 -0
- package/dist/lib/crypto/types.js +261 -0
- package/dist/lib/crypto/utils.d.ts +10 -0
- package/dist/lib/crypto/utils.d.ts.map +1 -0
- package/dist/lib/crypto/utils.js +97 -0
- package/dist/lib/crypto/wallet.d.ts +26 -0
- package/dist/lib/crypto/wallet.d.ts.map +1 -0
- package/dist/lib/crypto/wallet.js +327 -0
- package/dist/lib/helpers.d.ts +90 -0
- package/dist/lib/helpers.d.ts.map +1 -0
- package/dist/lib/helpers.js +1031 -0
- package/dist/lib/index.d.ts +5 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +21 -0
- package/dist/lib/radon/artifacts.d.ts +55 -0
- package/dist/lib/radon/artifacts.d.ts.map +1 -0
- package/dist/lib/radon/artifacts.js +347 -0
- package/dist/lib/radon/ccdr/eth.d.ts +100 -0
- package/dist/lib/radon/ccdr/eth.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/eth.js +237 -0
- package/dist/lib/radon/ccdr/index.d.ts +34 -0
- package/dist/lib/radon/ccdr/index.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/index.js +63 -0
- package/dist/lib/radon/ccdr/wit.d.ts +29 -0
- package/dist/lib/radon/ccdr/wit.d.ts.map +1 -0
- package/dist/lib/radon/ccdr/wit.js +60 -0
- package/dist/lib/radon/filters.d.ts +14 -0
- package/dist/lib/radon/filters.d.ts.map +1 -0
- package/dist/lib/radon/filters.js +47 -0
- package/dist/lib/radon/index.d.ts +36 -0
- package/dist/lib/radon/index.d.ts.map +1 -0
- package/dist/lib/radon/index.js +154 -0
- package/dist/lib/radon/reducers.d.ts +29 -0
- package/dist/lib/radon/reducers.d.ts.map +1 -0
- package/dist/lib/radon/reducers.js +101 -0
- package/dist/lib/radon/retrievals.d.ts +120 -0
- package/dist/lib/radon/retrievals.d.ts.map +1 -0
- package/dist/lib/radon/retrievals.js +358 -0
- package/dist/lib/radon/sources.d.ts +102 -0
- package/dist/lib/radon/sources.d.ts.map +1 -0
- package/dist/lib/radon/sources.js +294 -0
- package/dist/lib/radon/types.d.ts +521 -0
- package/dist/lib/radon/types.d.ts.map +1 -0
- package/dist/lib/radon/types.js +1066 -0
- package/dist/lib/radon/utils.d.ts +55 -0
- package/dist/lib/radon/utils.d.ts.map +1 -0
- package/dist/lib/radon/utils.js +181 -0
- package/dist/lib/rpc/farm.d.ts +66 -0
- package/dist/lib/rpc/farm.d.ts.map +1 -0
- package/dist/lib/rpc/farm.js +808 -0
- package/dist/lib/rpc/index.d.ts +3 -0
- package/dist/lib/rpc/index.d.ts.map +1 -0
- package/dist/lib/rpc/index.js +19 -0
- package/dist/lib/rpc/node.d.ts +38 -0
- package/dist/lib/rpc/node.d.ts.map +1 -0
- package/dist/lib/rpc/node.js +335 -0
- package/dist/lib/rpc/nodes.d.ts +40 -0
- package/dist/lib/rpc/nodes.d.ts.map +1 -0
- package/dist/lib/rpc/nodes.js +531 -0
- package/dist/lib/rpc/provider.d.ts +72 -0
- package/dist/lib/rpc/provider.d.ts.map +1 -0
- package/dist/lib/rpc/provider.js +402 -0
- package/dist/lib/rpc/reporter.d.ts +18 -0
- package/dist/lib/rpc/reporter.d.ts.map +1 -0
- package/dist/lib/rpc/reporter.js +99 -0
- package/dist/lib/rpc/types.d.ts +396 -0
- package/dist/lib/rpc/types.d.ts.map +1 -0
- package/dist/lib/rpc/types.js +81 -0
- package/dist/lib/rpc/wallet.d.ts +72 -0
- package/dist/lib/rpc/wallet.d.ts.map +1 -0
- package/dist/lib/rpc/wallet.js +41 -0
- package/dist/lib/types.d.ts +19 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +7 -0
- package/dist/lib/utils.d.ts +5 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +51 -0
- package/dist/package.json +1 -1
- package/dist/src/bin/helpers.js +2 -2
- package/dist/src/index.js +1 -1
- package/dist/src/lib/crypto/account.js +1 -1
- package/dist/src/lib/crypto/coinbase.js +1 -1
- package/dist/src/lib/crypto/index.js +1 -1
- package/dist/src/lib/crypto/interfaces.js +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts +2 -2
- package/dist/src/lib/crypto/payloads/DataRequestPayload.d.ts.map +1 -1
- package/dist/src/lib/crypto/payloads/DataRequestPayload.js +8 -8
- package/dist/src/lib/crypto/payloads/StakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/UnstakePayload.js +1 -1
- package/dist/src/lib/crypto/payloads/ValueTransferPayload.js +1 -1
- package/dist/src/lib/crypto/payloads.js +1 -1
- package/dist/src/lib/crypto/signer.js +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts +0 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.d.ts.map +1 -1
- package/dist/src/lib/crypto/transmitters/DataRequests.js +1 -2
- package/dist/src/lib/crypto/transmitters/StakeDeposits.js +1 -1
- package/dist/src/lib/crypto/transmitters/StakeWithdrawals.js +1 -1
- package/dist/src/lib/crypto/transmitters/ValueTransfers.js +1 -1
- package/dist/src/lib/crypto/transmitters.js +1 -1
- package/dist/src/lib/crypto/types.js +1 -1
- package/dist/src/lib/crypto/utils.js +1 -1
- package/dist/src/lib/crypto/wallet.js +1 -1
- package/dist/src/lib/index.js +1 -1
- package/dist/src/lib/radon/ccdr/eth.js +1 -1
- package/dist/src/lib/radon/ccdr/index.js +1 -1
- package/dist/src/lib/radon/ccdr/wit.d.ts +11 -0
- package/dist/src/lib/radon/ccdr/wit.d.ts.map +1 -1
- package/dist/src/lib/radon/ccdr/wit.js +17 -2
- package/dist/src/lib/radon/filters.js +1 -1
- package/dist/src/lib/radon/index.d.ts +1 -1
- package/dist/src/lib/radon/index.d.ts.map +1 -1
- package/dist/src/lib/radon/index.js +9 -3
- package/dist/src/lib/radon/reducers.js +1 -1
- package/dist/src/lib/radon/types.js +1 -1
- package/dist/src/lib/radon/utils.js +1 -1
- package/dist/src/lib/rpc/index.js +1 -1
- package/dist/src/lib/rpc/nodes.js +1 -1
- package/dist/src/lib/rpc/provider.d.ts +5 -3
- package/dist/src/lib/rpc/provider.d.ts.map +1 -1
- package/dist/src/lib/rpc/provider.js +14 -3
- package/dist/src/lib/rpc/reporter.d.ts +2 -3
- package/dist/src/lib/rpc/reporter.d.ts.map +1 -1
- package/dist/src/lib/rpc/reporter.js +1 -4
- package/dist/src/lib/rpc/types.d.ts +49 -24
- package/dist/src/lib/rpc/types.d.ts.map +1 -1
- package/dist/src/lib/rpc/types.js +3 -1
- package/dist/src/lib/types.d.ts +1 -1
- package/dist/src/lib/types.d.ts.map +1 -1
- package/dist/src/lib/types.js +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/witnet/assets/index.js +1 -1
- package/dist/witnet/assets/modals/index.js +1 -1
- package/dist/witnet/assets/modals/web3/eth.js +1 -1
- package/dist/witnet/assets/modals/web3/ipfs.js +1 -1
- package/dist/witnet/assets/modals/web3/wit.js +4 -7
- package/dist/witnet/assets/requests.js +1 -1
- package/package.json +1 -1
- package/src/bin/cli/history.js +31 -31
- package/src/bin/cli/inspect.js +405 -359
- package/src/bin/cli/network.js +594 -592
- package/src/bin/cli/nodes.js +364 -364
- package/src/bin/cli/radon.js +815 -815
- package/src/bin/cli/wallet.js +1117 -1094
- package/src/bin/helpers.js +840 -840
- package/src/bin/postinstall.js +9 -9
- package/src/bin/toolkit.js +295 -295
- package/witnet/assets/_index.js +8 -8
- package/witnet/assets/_requests.js +25 -25
- package/witnet/assets/_sources.js +36 -36
- package/witnet/assets/_templates.js +36 -36
- package/witnet/assets/index.js +4 -4
- package/witnet/assets/modals/index.js +9 -9
- package/witnet/assets/modals/web3/eth.js +29 -29
- package/witnet/assets/modals/web3/ipfs.js +19 -19
- package/witnet/assets/modals/web3/wit.js +21 -23
- package/witnet/assets/requests.js +95 -95
|
@@ -212,4 +212,4 @@ class Signer {
|
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
214
|
exports.Signer = Signer;
|
|
215
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXRDLGdEQUFpQztBQUlqQyxtQ0FBaUo7QUFDakosbUNBQXFDO0FBRXJDLE1BQWEsTUFBTTtJQVNmLFlBQ0ksSUFBWSxFQUNaLFFBQTBCLEVBQzFCLFFBQWdDO1FBVDFCLFVBQUssR0FBZ0IsRUFBRSxDQUFBO1FBVzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLDZCQUFxQixDQUFDLE9BQU8sQ0FBQTtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsbUhBQW1IO0lBRW5ILElBQVcsU0FBUztRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUE7UUFDM0IsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQzlDLElBQUksQ0FBQyxLQUFLLENB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b250ZW50IjpbImNvbnN0IGV0aGVycyA9IHJlcXVpcmUoJ2V0aGVycycpXHJcbmNvbnN0IGtlY2NhazI1NiA9IHJlcXVpcmUoJ2tlY2NhazI1NicpXHJcbmNvbnN0IHNlY3AyNTZrMSA9IHJlcXVpcmUoJ3NlY3AyNTZrMScpXHJcblxyXG5pbXBvcnQgKiBhcyB1dGlscyBmcm9tIFwiLi4vdXRpbHNcIlxyXG5cclxuaW1wb3J0IHsgQmFsYW5jZSwgSGV4U3RyaW5nLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcclxuaW1wb3J0IHsgSUJJUDMyLCBJSnNvblJwY1Byb3ZpZGVyLCBJU2lnbmVyIH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiXHJcbmltcG9ydCB7IENvaW5zLCBLZXllZFNpZ25hdHVyZSwgUHVibGljS2V5LCBQdWJsaWNLZXlIYXNoU3RyaW5nLCBSZWNvdmVyYWJsZVNpZ25hdHVyZSwgVXR4bywgVXR4b0NhY2hlSW5mbywgVXR4b1NlbGVjdGlvblN0cmF0ZWd5IH0gZnJvbSBcIi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBzZWxlY3RVdHhvcyB9IGZyb20gXCIuL3V0aWxzXCJcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduZXIgaW1wbGVtZW50cyBJU2lnbmVyIHtcclxuICAgIFxyXG4gICAgcHJvdGVjdGVkIG5vZGU6IElCSVAzMjtcclxuICAgIHByb3RlY3RlZCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XHJcbiAgICBcclxuICAgIHB1YmxpYyByZWFkb25seSBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlclxyXG4gICAgcHVibGljIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBub2RlOiBJQklQMzIsIFxyXG4gICAgICAgIHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyLCBcclxuICAgICAgICBzdHJhdGVneT86IFV0eG9TZWxlY3Rpb25TdHJhdGVneSxcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMubm9kZSA9IG5vZGVcclxuICAgICAgICB0aGlzLnByb3ZpZGVyID0gcHJvdmlkZXJcclxuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gc3RyYXRlZ3kgfHwgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlNsaW1GaXRcclxuICAgICAgICBpZiAoIXByb3ZpZGVyLm5ldHdvcmspIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW50ZXJuYWwgZXJyb3I6IHVuaW50aWFsaXplZCBwcm92aWRlci5gKVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9pbml0aWFsaXplZCA9IGZhbHNlXHJcbiAgICB9XHJcblxyXG4gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLy8gLS0tIElMZWRnZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2FjaGVJbmZvKCk6IFV0eG9DYWNoZUluZm8ge1xyXG4gICAgICAgIGNvbnN0IG5vdyA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApXHJcbiAgICAgICAgbGV0IGV4cGVuZGFibGU6IGJpZ2ludCA9IDBuXHJcbiAgICAgICAgbGV0IHRpbWVsb2NrOiBudW1iZXIgPSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxyXG4gICAgICAgIHRoaXMudXR4b3MubWFwKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA+IG5vdykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHV0eG8udGltZWxvY2sgPCB0aW1lbG9jaykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVsb2NrID0gdXR4by50aW1lbG9ja1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXhwZW5kYWJsZSArPSB1dHhvLnZhbHVlXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIGlmICh0aW1lbG9jayA9PT0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHRpbWVsb2NrID0gMDtcclxuICAgICAgICByZXR1cm4geyBleHBlbmRhYmxlLCB0aW1lbG9jaywgc2l6ZTogdGhpcy51dHhvcy5sZW5ndGggfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY2hhbmdlUGtoKCk6IFB1YmxpY0tleUhhc2hTdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBraFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgbmV0d29yaygpOiBOZXR3b3JrIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlci5uZXR3b3JrIHx8IFwibWFpbm5ldFwiXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwa2goKTogUHVibGljS2V5SGFzaFN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHVibGljS2V5Lmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwdWJsaWNLZXkoKTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5LmZyb21VaW50OEFycmF5KHRoaXMubm9kZS5wdWJsaWNLZXkpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFkZFV0eG9zKC4uLnV0eG9zOiBBcnJheTxVdHhvPik6IHsgZXhjbHVkZWQ6IEFycmF5PFV0eG8+LCBpbmNsdWRlZDogQXJyYXk8VXR4bz4gfSB7XHJcbiAgICAgICAgY29uc3QgZXhjbHVkZWQ6IEFycmF5PFV0eG8+ID0gW11cclxuICAgICAgICBjb25zdCBleGlzdGluZ1BvaW50ZXJzID0gbmV3IFNldCh0aGlzLnV0eG9zLm1hcChjYWNoZWQgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyKSk7XHJcbiAgICAgICAgY29uc3QgaW5jbHVkZWQ6IEFycmF5PFV0eG8+ID0gdXR4b3MuZmlsdGVyKHV0eG8gPT4ge1xyXG4gICAgICAgICAgICBpZiAodXR4by5zaWduZXIgPT09IHRoaXMucGtoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCBhZGRpbmcgZHVwbGljYXRlc1xyXG4gICAgICAgICAgICAgICAgaWYgKCFleGlzdGluZ1BvaW50ZXJzLmhhcyh1dHhvLm91dHB1dF9wb2ludGVyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nUG9pbnRlcnMuYWRkKHV0eG8ub3V0cHV0X3BvaW50ZXIpXHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBleGNsdWRlZC5wdXNoKHV0eG8pXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICAgIHRoaXMudXR4b3MucHVzaCguLi5pbmNsdWRlZClcclxuICAgICAgICByZXR1cm4geyBleGNsdWRlZCwgaW5jbHVkZWQgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjb25zdW1lVXR4b3MoLi4udXR4b3M6IEFycmF5PFV0eG8+KTogQXJyYXk8VXR4bz4ge1xyXG4gICAgICAgIHRoaXMudXR4b3MgPSB0aGlzLnV0eG9zLmZpbHRlcihjYWNoZWQgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0luZGV4ID0gdXR4b3MuZmluZEluZGV4KGluY29taW5nID0+IGNhY2hlZC5vdXRwdXRfcG9pbnRlciA9PT0gaW5jb21pbmcub3V0cHV0X3BvaW50ZXIpO1xyXG4gICAgICAgICAgICBpZiAoaW5jb21pbmdJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB1dHhvcy5zcGxpY2UoaW5jb21pbmdJbmRleCwgMSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIHV0eG9zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxCYWxhbmNlPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuc3Rha2VzKHtcclxuICAgICAgICAgICAgZmlsdGVyOiB7IHdpdGhkcmF3ZXI6IHRoaXMucGtoIH0sXHJcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldFNpZ25lcihwa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogSVNpZ25lciB8IHVuZGVmaW5lZCB7IFxyXG4gICAgICAgIHJldHVybiAoIXBraCB8fCBwa2ggPT09IHRoaXMucGtoKSA/IHRoaXMgOiB1bmRlZmluZWRcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VXR4b3MocmVsb2FkID0gZmFsc2UpOiBQcm9taXNlPEFycmF5PFV0eG8+PiB7XHJcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlXHJcbiAgICAgICAgICAgIHRoaXMudXR4b3MgPSAoYXdhaXQgdGhpcy5wcm92aWRlci5nZXRVdHhvcyh0aGlzLnBraCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXR4b3NcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VsZWN0VXR4b3Moc3BlY3M/OiB7XHJcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcclxuICAgICAgICByZWxvYWQ/OiBib29sZWFuLFxyXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5XHJcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzXHJcbiAgICAgICAgICAgIC5nZXRVdHhvcyhzcGVjcz8ucmVsb2FkKVxyXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8vIC0tLSBJU2lnbmVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBwdWJsaWMgYXV0aG9yaXplRXZtQWRkcmVzcyhldm1BZGRyZXNzOiBIZXhTdHJpbmcpOiBhbnkge1xyXG4gICAgICAgIGNvbnN0IGFkZHIgPSB1dGlscy5mcm9tSGV4U3RyaW5nKGV2bUFkZHJlc3MpXHJcbiAgICAgICAgY29uc3QgaGFzaCA9IGtlY2NhazI1NihCdWZmZXIuZnJvbShhZGRyKSlcclxuICAgICAgICBpZiAodGhpcy5ub2RlLnByaXZhdGVLZXkpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmluZ0tleSA9IG5ldyBldGhlcnMudXRpbHMuU2lnbmluZ0tleSh0aGlzLm5vZGUucHJpdmF0ZUtleSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2lnbmluZ0tleS5zaWduRGlnZXN0KGhhc2gpXHJcbiAgICAgICAgICAgIGNvbnN0IHNpZyA9IGAweCR7c2lnbmF0dXJlLnIuc2xpY2UoMil9JHtzaWduYXR1cmUucy5zbGljZSgyKX0ke3NpZ25hdHVyZS52LnRvU3RyaW5nKDE2KX1gXHJcbiAgICAgICAgICAgIHJldHVybiBzaWdcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyBhc3luYyBnZXRTdGFrZUVudHJ5Tm9uY2UodmFsaWRhdG9yOiBQdWJsaWNLZXlIYXNoU3RyaW5nKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlclxyXG4gICAgICAgICAgICAuc3Rha2VzKHsgZmlsdGVyOiB7XHJcbiAgICAgICAgICAgICAgICB2YWxpZGF0b3IsXHJcbiAgICAgICAgICAgICAgICB3aXRoZHJhd2VyOiB0aGlzLnBraFxyXG4gICAgICAgICAgICB9fSkudGhlbigoW2VudHJ5XSkgPT4gZW50cnkudmFsdWUubm9uY2UpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNpZ25IYXNoKGhhc2g6IGFueSk6IEtleWVkU2lnbmF0dXJlIHtcclxuICAgICAgICBsZXQgYnVmZmVyOiBCdWZmZXI7XHJcbiAgICAgICAgaWYgKGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGhhc2gpXHJcbiAgICAgICAgfSBlbHNlIGlmIChoYXNoIGluc3RhbmNlb2YgQnVmZmVyKSB7XHJcbiAgICAgICAgICAgIGJ1ZmZlciA9IGhhc2hcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBidWZmZXIgPSBCdWZmZXIuZnJvbSh1dGlscy5mcm9tSGV4U3RyaW5nKGhhc2gpKSAgICAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHVuc3VwcG9ydGVkIGhhc2ggdmFsdWU6ICR7aGFzaH1gKVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXIubGVuZ3RoICE9PSAzMikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW52YWxpZCBoYXNoIGxlbmd0aDogJHtidWZmZXIubGVuZ3RofSAhPSAzMmApXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5vZGUucHJpdmF0ZUtleSkge1xyXG4gICAgICAgICAgICBjb25zdCBtc2cgPSBVaW50OEFycmF5LmZyb20oYnVmZmVyKVxyXG4gICAgICAgICAgICBjb25zdCBwcml2YXRlS2V5ID0gVWludDhBcnJheS5mcm9tKEJ1ZmZlci5mcm9tKHRoaXMubm9kZS5wcml2YXRlS2V5KSlcclxuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlID0gc2VjcDI1NmsxLmVjZHNhU2lnbihtc2csIHByaXZhdGVLZXkpLnNpZ25hdHVyZVxyXG4gICAgICAgICAgICBjb25zdCBkZXIgPSBzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHNpZ25hdHVyZSlcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkOiB0aGlzLnB1YmxpY0tleS5jb21wcmVzc2VkLFxyXG4gICAgICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHVibGljS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmU6IHtcclxuICAgICAgICAgICAgICAgICAgICBTZWNwMjU2azE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVyOiBBcnJheS5mcm9tKGRlciksXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoYFNpZ25lcjogaW52YWxpZCBCSVAzMiBub2RlOiBubyBwcml2YXRlIGtleWApXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzaWduTWVzc2FnZSh0ZXh0OiBzdHJpbmcpOiB7XHJcbiAgICAgICAgYWRkcmVzczogc3RyaW5nLFxyXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcclxuICAgICAgICBwdWJsaWNLZXk6IEhleFN0cmluZyxcclxuICAgICAgICBzaWduYXR1cmU6IEhleFN0cmluZ1xyXG4gICAgfSB7XHJcbiAgICAgICAgY29uc3QgZGlnZXN0ID0gdXRpbHMuZGlnZXN0TWVzc2FnZSh0ZXh0KVxyXG4gICAgICAgIGNvbnN0IGtleWVkU2lnbmF0dXJlID0gdGhpcy5zaWduSGFzaChkaWdlc3QpXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgYWRkcmVzczogdGhpcy5wa2gsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQsXHJcbiAgICAgICAgICAgIHB1YmxpY0tleTogUHVibGljS2V5LmZyb21Qcm90b2J1ZihrZXllZFNpZ25hdHVyZS5wdWJsaWNfa2V5KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgICAgICBzaWduYXR1cmU6IFJlY292ZXJhYmxlU2lnbmF0dXJlLmZyb21LZXllZFNpZ25hdHVyZShrZXllZFNpZ25hdHVyZSwgZGlnZXN0KS50b0hleFN0cmluZygpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
|
|
215
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vc2lnbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUNoQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0FBRXRDLGdEQUFpQztBQUlqQyxtQ0FBaUo7QUFDakosbUNBQXFDO0FBRXJDLE1BQWEsTUFBTTtJQVNmLFlBQ0ksSUFBWSxFQUNaLFFBQTBCLEVBQzFCLFFBQWdDO1FBVDFCLFVBQUssR0FBZ0IsRUFBRSxDQUFBO1FBVzdCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxJQUFJLDZCQUFxQixDQUFDLE9BQU8sQ0FBQTtRQUN6RCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzdCLENBQUM7SUFFRCxtSEFBbUg7SUFDbkgsbUhBQW1IO0lBRW5ILElBQVcsU0FBUztRQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN6QyxJQUFJLFVBQVUsR0FBVyxFQUFFLENBQUE7UUFDM0IsSUFBSSxRQUFRLEdBQVcsTUFBTSxDQUFDLGdCQUFnQixDQUFBO1FBQzlDLElBQUksQ0FBQyxLQUFLLENB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b250ZW50IjpbImNvbnN0IGV0aGVycyA9IHJlcXVpcmUoJ2V0aGVycycpXG5jb25zdCBrZWNjYWsyNTYgPSByZXF1aXJlKCdrZWNjYWsyNTYnKVxuY29uc3Qgc2VjcDI1NmsxID0gcmVxdWlyZSgnc2VjcDI1NmsxJylcblxuaW1wb3J0ICogYXMgdXRpbHMgZnJvbSBcIi4uL3V0aWxzXCJcblxuaW1wb3J0IHsgQmFsYW5jZSwgSGV4U3RyaW5nLCBOZXR3b3JrLCBRdWVyeVN0YWtlc09yZGVyLCBTdGFrZUVudHJ5IH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IElCSVAzMiwgSUpzb25ScGNQcm92aWRlciwgSVNpZ25lciB9IGZyb20gXCIuL2ludGVyZmFjZXNcIlxuaW1wb3J0IHsgQ29pbnMsIEtleWVkU2lnbmF0dXJlLCBQdWJsaWNLZXksIFB1YmxpY0tleUhhc2hTdHJpbmcsIFJlY292ZXJhYmxlU2lnbmF0dXJlLCBVdHhvLCBVdHhvQ2FjaGVJbmZvLCBVdHhvU2VsZWN0aW9uU3RyYXRlZ3kgfSBmcm9tIFwiLi90eXBlc1wiXG5pbXBvcnQgeyBzZWxlY3RVdHhvcyB9IGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0IGNsYXNzIFNpZ25lciBpbXBsZW1lbnRzIElTaWduZXIge1xuICAgIFxuICAgIHByb3RlY3RlZCBub2RlOiBJQklQMzI7XG4gICAgcHJvdGVjdGVkIHV0eG9zOiBBcnJheTxVdHhvPiA9IFtdXG4gICAgcHJpdmF0ZSBfaW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG4gICAgXG4gICAgcHVibGljIHJlYWRvbmx5IHByb3ZpZGVyOiBJSnNvblJwY1Byb3ZpZGVyXG4gICAgcHVibGljIHN0cmF0ZWd5OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBub2RlOiBJQklQMzIsIFxuICAgICAgICBwcm92aWRlcjogSUpzb25ScGNQcm92aWRlciwgXG4gICAgICAgIHN0cmF0ZWd5PzogVXR4b1NlbGVjdGlvblN0cmF0ZWd5LFxuICAgICkge1xuICAgICAgICB0aGlzLm5vZGUgPSBub2RlXG4gICAgICAgIHRoaXMucHJvdmlkZXIgPSBwcm92aWRlclxuICAgICAgICB0aGlzLnN0cmF0ZWd5ID0gc3RyYXRlZ3kgfHwgVXR4b1NlbGVjdGlvblN0cmF0ZWd5LlNsaW1GaXRcbiAgICAgICAgaWYgKCFwcm92aWRlci5uZXR3b3JrKSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihgU2lnbmVyOiBpbnRlcm5hbCBlcnJvcjogdW5pbnRpYWxpemVkIHByb3ZpZGVyLmApXG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZWQgPSBmYWxzZVxuICAgIH1cblxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyAtLS0gSUxlZGdlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZ2V0IGNhY2hlSW5mbygpOiBVdHhvQ2FjaGVJbmZvIHtcbiAgICAgICAgY29uc3Qgbm93ID0gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMClcbiAgICAgICAgbGV0IGV4cGVuZGFibGU6IGJpZ2ludCA9IDBuXG4gICAgICAgIGxldCB0aW1lbG9jazogbnVtYmVyID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcbiAgICAgICAgdGhpcy51dHhvcy5tYXAodXR4byA9PiB7XG4gICAgICAgICAgICBpZiAodXR4by50aW1lbG9jayA+IG5vdykge1xuICAgICAgICAgICAgICAgIGlmICh1dHhvLnRpbWVsb2NrIDwgdGltZWxvY2spIHtcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2sgPSB1dHhvLnRpbWVsb2NrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBleHBlbmRhYmxlICs9IHV0eG8udmFsdWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgaWYgKHRpbWVsb2NrID09PSBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikgdGltZWxvY2sgPSAwO1xuICAgICAgICByZXR1cm4geyBleHBlbmRhYmxlLCB0aW1lbG9jaywgc2l6ZTogdGhpcy51dHhvcy5sZW5ndGggfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2hhbmdlUGtoKCk6IFB1YmxpY0tleUhhc2hTdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wa2hcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBraCgpOiBQdWJsaWNLZXlIYXNoU3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVibGljS2V5Lmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwdWJsaWNLZXkoKTogUHVibGljS2V5IHtcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleS5mcm9tVWludDhBcnJheSh0aGlzLm5vZGUucHVibGljS2V5KVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRVdHhvcyguLi51dHhvczogQXJyYXk8VXR4bz4pOiB7IGV4Y2x1ZGVkOiBBcnJheTxVdHhvPiwgaW5jbHVkZWQ6IEFycmF5PFV0eG8+IH0ge1xuICAgICAgICBjb25zdCBleGNsdWRlZDogQXJyYXk8VXR4bz4gPSBbXVxuICAgICAgICBjb25zdCBleGlzdGluZ1BvaW50ZXJzID0gbmV3IFNldCh0aGlzLnV0eG9zLm1hcChjYWNoZWQgPT4gY2FjaGVkLm91dHB1dF9wb2ludGVyKSk7XG4gICAgICAgIGNvbnN0IGluY2x1ZGVkOiBBcnJheTxVdHhvPiA9IHV0eG9zLmZpbHRlcih1dHhvID0+IHtcbiAgICAgICAgICAgIGlmICh1dHhvLnNpZ25lciA9PT0gdGhpcy5wa2gpIHtcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCBhZGRpbmcgZHVwbGljYXRlc1xuICAgICAgICAgICAgICAgIGlmICghZXhpc3RpbmdQb2ludGVycy5oYXModXR4by5vdXRwdXRfcG9pbnRlcikpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdQb2ludGVycy5hZGQodXR4by5vdXRwdXRfcG9pbnRlcilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4Y2x1ZGVkLnB1c2godXR4bylcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMudXR4b3MucHVzaCguLi5pbmNsdWRlZClcbiAgICAgICAgcmV0dXJuIHsgZXhjbHVkZWQsIGluY2x1ZGVkIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29uc3VtZVV0eG9zKC4uLnV0eG9zOiBBcnJheTxVdHhvPik6IEFycmF5PFV0eG8+IHtcbiAgICAgICAgdGhpcy51dHhvcyA9IHRoaXMudXR4b3MuZmlsdGVyKGNhY2hlZCA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmNvbWluZ0luZGV4ID0gdXR4b3MuZmluZEluZGV4KGluY29taW5nID0+IGNhY2hlZC5vdXRwdXRfcG9pbnRlciA9PT0gaW5jb21pbmcub3V0cHV0X3BvaW50ZXIpO1xuICAgICAgICAgICAgaWYgKGluY29taW5nSW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIHV0eG9zLnNwbGljZShpbmNvbWluZ0luZGV4LCAxKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICByZXR1cm4gdXR4b3NcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QmFsYW5jZSgpOiBQcm9taXNlPEJhbGFuY2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIuZ2V0QmFsYW5jZSh0aGlzLnBraClcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGVsZWdhdGVlcyhvcmRlcj86IFF1ZXJ5U3Rha2VzT3JkZXIpOiBQcm9taXNlPEFycmF5PFN0YWtlRW50cnk+PiB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLnN0YWtlcyh7XG4gICAgICAgICAgICBmaWx0ZXI6IHsgd2l0aGRyYXdlcjogdGhpcy5wa2ggfSxcbiAgICAgICAgICAgIHBhcmFtczogeyBvcmRlciB9LFxuICAgICAgICB9KVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRTaWduZXIocGtoPzogUHVibGljS2V5SGFzaFN0cmluZyk6IElTaWduZXIgfCB1bmRlZmluZWQgeyBcbiAgICAgICAgcmV0dXJuICghcGtoIHx8IHBraCA9PT0gdGhpcy5wa2gpID8gdGhpcyA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRVdHhvcyhyZWxvYWQgPSBmYWxzZSk6IFByb21pc2U8QXJyYXk8VXR4bz4+IHtcbiAgICAgICAgaWYgKHJlbG9hZCB8fCAhdGhpcy5faW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2luaXRpYWxpemVkID0gdHJ1ZVxuICAgICAgICAgICAgdGhpcy51dHhvcyA9IChhd2FpdCB0aGlzLnByb3ZpZGVyLmdldFV0eG9zKHRoaXMucGtoKSlcbiAgICAgICAgICAgICAgICAubWFwKHV0eG8gPT4gKHsgLi4udXR4bywgc2lnbmVyOiB0aGlzLnBraCB9KSlcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy51dHhvc1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZWxlY3RVdHhvcyhzcGVjcz86IHtcbiAgICAgICAgdmFsdWU/OiBDb2lucyxcbiAgICAgICAgcmVsb2FkPzogYm9vbGVhbixcbiAgICAgICAgc3RyYXRlZ3k/OiBVdHhvU2VsZWN0aW9uU3RyYXRlZ3lcbiAgICB9KTogUHJvbWlzZTxBcnJheTxVdHhvPj4ge1xuICAgICAgICByZXR1cm4gdGhpc1xuICAgICAgICAgICAgLmdldFV0eG9zKHNwZWNzPy5yZWxvYWQpXG4gICAgICAgICAgICAudGhlbih1dHhvcyA9PiBzZWxlY3RVdHhvcyh7IHV0eG9zLCB2YWx1ZTogc3BlY3M/LnZhbHVlLCBzdHJhdGVneTogc3BlY3M/LnN0cmF0ZWd5IHx8IHRoaXMuc3RyYXRlZ3kgfSkpXG4gICAgfVxuICAgIFxuICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgICAvLyAtLS0gSVNpZ25lciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgYXV0aG9yaXplRXZtQWRkcmVzcyhldm1BZGRyZXNzOiBIZXhTdHJpbmcpOiBhbnkge1xuICAgICAgICBjb25zdCBhZGRyID0gdXRpbHMuZnJvbUhleFN0cmluZyhldm1BZGRyZXNzKVxuICAgICAgICBjb25zdCBoYXNoID0ga2VjY2FrMjU2KEJ1ZmZlci5mcm9tKGFkZHIpKVxuICAgICAgICBpZiAodGhpcy5ub2RlLnByaXZhdGVLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IHNpZ25pbmdLZXkgPSBuZXcgZXRoZXJzLnV0aWxzLlNpZ25pbmdLZXkodGhpcy5ub2RlLnByaXZhdGVLZXkpXG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzaWduaW5nS2V5LnNpZ25EaWdlc3QoaGFzaClcbiAgICAgICAgICAgIGNvbnN0IHNpZyA9IGAweCR7c2lnbmF0dXJlLnIuc2xpY2UoMil9JHtzaWduYXR1cmUucy5zbGljZSgyKX0ke3NpZ25hdHVyZS52LnRvU3RyaW5nKDE2KX1gXG4gICAgICAgICAgICByZXR1cm4gc2lnXG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgcHVibGljIGFzeW5jIGdldFN0YWtlRW50cnlOb25jZSh2YWxpZGF0b3I6IFB1YmxpY0tleUhhc2hTdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm92aWRlclxuICAgICAgICAgICAgLnN0YWtlcyh7IGZpbHRlcjoge1xuICAgICAgICAgICAgICAgIHZhbGlkYXRvcixcbiAgICAgICAgICAgICAgICB3aXRoZHJhd2VyOiB0aGlzLnBraFxuICAgICAgICAgICAgfX0pLnRoZW4oKFtlbnRyeV0pID0+IGVudHJ5LnZhbHVlLm5vbmNlKVxuICAgIH1cblxuICAgIHB1YmxpYyBzaWduSGFzaChoYXNoOiBhbnkpOiBLZXllZFNpZ25hdHVyZSB7XG4gICAgICAgIGxldCBidWZmZXI6IEJ1ZmZlcjtcbiAgICAgICAgaWYgKGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgICAgICAgICBidWZmZXIgPSBCdWZmZXIuZnJvbShoYXNoKVxuICAgICAgICB9IGVsc2UgaWYgKGhhc2ggaW5zdGFuY2VvZiBCdWZmZXIpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IGhhc2hcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgaGFzaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHV0aWxzLmZyb21IZXhTdHJpbmcoaGFzaCkpICAgICAgICAgICBcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB1bnN1cHBvcnRlZCBoYXNoIHZhbHVlOiAke2hhc2h9YClcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWJ1ZmZlciB8fCBidWZmZXIubGVuZ3RoICE9PSAzMikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludmFsaWQgaGFzaCBsZW5ndGg6ICR7YnVmZmVyLmxlbmd0aH0gIT0gMzJgKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS5wcml2YXRlS2V5KSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBVaW50OEFycmF5LmZyb20oYnVmZmVyKVxuICAgICAgICAgICAgY29uc3QgcHJpdmF0ZUtleSA9IFVpbnQ4QXJyYXkuZnJvbShCdWZmZXIuZnJvbSh0aGlzLm5vZGUucHJpdmF0ZUtleSkpXG4gICAgICAgICAgICBjb25zdCBzaWduYXR1cmUgPSBzZWNwMjU2azEuZWNkc2FTaWduKG1zZywgcHJpdmF0ZUtleSkuc2lnbmF0dXJlXG4gICAgICAgICAgICBjb25zdCBkZXIgPSBzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHNpZ25hdHVyZSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcHVibGljX2tleToge1xuICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkOiB0aGlzLnB1YmxpY0tleS5jb21wcmVzc2VkLFxuICAgICAgICAgICAgICAgICAgICBieXRlczogQXJyYXkuZnJvbSh0aGlzLnB1YmxpY0tleS5ieXRlcyksXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmU6IHtcbiAgICAgICAgICAgICAgICAgICAgU2VjcDI1NmsxOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXI6IEFycmF5LmZyb20oZGVyKSxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKGBTaWduZXI6IGludmFsaWQgQklQMzIgbm9kZTogbm8gcHJpdmF0ZSBrZXlgKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNpZ25NZXNzYWdlKHRleHQ6IHN0cmluZyk6IHtcbiAgICAgICAgYWRkcmVzczogc3RyaW5nLFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIHB1YmxpY0tleTogSGV4U3RyaW5nLFxuICAgICAgICBzaWduYXR1cmU6IEhleFN0cmluZ1xuICAgIH0ge1xuICAgICAgICBjb25zdCBkaWdlc3QgPSB1dGlscy5kaWdlc3RNZXNzYWdlKHRleHQpXG4gICAgICAgIGNvbnN0IGtleWVkU2lnbmF0dXJlID0gdGhpcy5zaWduSGFzaChkaWdlc3QpXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0aGlzLnBraCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRleHQsXG4gICAgICAgICAgICBwdWJsaWNLZXk6IFB1YmxpY0tleS5mcm9tUHJvdG9idWYoa2V5ZWRTaWduYXR1cmUucHVibGljX2tleSkudG9IZXhTdHJpbmcoKSxcbiAgICAgICAgICAgIHNpZ25hdHVyZTogUmVjb3ZlcmFibGVTaWduYXR1cmUuZnJvbUtleWVkU2lnbmF0dXJlKGtleWVkU2lnbmF0dXJlLCBkaWdlc3QpLnRvSGV4U3RyaW5nKCksXG4gICAgICAgIH1cbiAgICB9XG59Il19
|
|
@@ -5,7 +5,6 @@ import { TransmitterMultiSig } from "../transmitters";
|
|
|
5
5
|
import { PublicKeyHashString } from "../types";
|
|
6
6
|
export { DataRequestParams } from "../payloads/DataRequestPayload";
|
|
7
7
|
export declare class DataRequests extends TransmitterMultiSig<DataRequestParams, DataRequestPayload> {
|
|
8
|
-
static COLLATERAL_RATIO: number;
|
|
9
8
|
static MAX_WEIGHT: number;
|
|
10
9
|
static from(ledger: ILedger, artifact: RadonRequest | RadonTemplate): DataRequests;
|
|
11
10
|
constructor(artifact: RadonRequest | RadonTemplate, ledger: ILedger, changePkh?: PublicKeyHashString);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataRequests.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/transmitters/DataRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,qBAAa,YAAa,SAAQ,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAExF,OAAc,
|
|
1
|
+
{"version":3,"file":"DataRequests.d.ts","sourceRoot":"","sources":["../../../../../src/lib/crypto/transmitters/DataRequests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEzD,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACtF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,qBAAa,YAAa,SAAQ,mBAAmB,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;IAExF,OAAc,UAAU,SAAiC;WAE3C,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,GAAI,YAAY;gBAI7E,QAAQ,EAAE,YAAY,GAAG,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,mBAAmB;IAIrG,IAAW,OAAO,IAAI,YAAY,GAAG,SAAS,CAE7C;IAED,IAAW,QAAQ,IAAI,aAAa,GAAG,SAAS,CAE/C;CACJ"}
|
|
@@ -18,6 +18,5 @@ class DataRequests extends transmitters_1.TransmitterMultiSig {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.DataRequests = DataRequests;
|
|
21
|
-
DataRequests.COLLATERAL_RATIO = DataRequestPayload_1.DataRequestPayload.COLLATERAL_RATIO;
|
|
22
21
|
DataRequests.MAX_WEIGHT = DataRequestPayload_1.DataRequestPayload.MAX_WEIGHT;
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVJlcXVlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzL0RhdGFSZXF1ZXN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1RUFBc0Y7QUFFdEYsa0RBQXFEO0FBS3JELE1BQWEsWUFBYSxTQUFRLGtDQUEwRDtJQUlqRixNQUFNLENBQUMsSUFBSSxDQUFDLE1BQWUsRUFBRSxRQUFzQztRQUN0RSxPQUFPLElBQUksWUFBWSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUM3QyxDQUFDO0lBRUQsWUFBYSxRQUFzQyxFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUNqRyxLQUFLLENBQUMsZUFBZSxFQUFFLElBQUksdUNBQWtCLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQ3BHLENBQUM7SUFFRCxJQUFXLE9BQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFBO0lBQ2hDLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFBO0lBQ2pDLENBQUM7O0FBbEJMLG9DQW1CQztBQWpCaUIsdUJBQVUsR0FBRyx1Q0FBa0IsQ0FBQyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSYWRvblJlcXVlc3QsIFJhZG9uVGVtcGxhdGUgfSBmcm9tIFwiLi4vLi4vcmFkb25cIlxuXG5pbXBvcnQgeyBEYXRhUmVxdWVzdFBheWxvYWQsIERhdGFSZXF1ZXN0UGFyYW1zIH0gZnJvbSBcIi4uL3BheWxvYWRzL0RhdGFSZXF1ZXN0UGF5bG9hZFwiXG5pbXBvcnQgeyBJTGVkZ2VyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIlxuaW1wb3J0IHsgVHJhbnNtaXR0ZXJNdWx0aVNpZyB9IGZyb20gXCIuLi90cmFuc21pdHRlcnNcIlxuaW1wb3J0IHsgUHVibGljS2V5SGFzaFN0cmluZyB9IGZyb20gXCIuLi90eXBlc1wiXG5cbmV4cG9ydCB7IERhdGFSZXF1ZXN0UGFyYW1zIH0gZnJvbSBcIi4uL3BheWxvYWRzL0RhdGFSZXF1ZXN0UGF5bG9hZFwiXG5cbmV4cG9ydCBjbGFzcyBEYXRhUmVxdWVzdHMgZXh0ZW5kcyBUcmFuc21pdHRlck11bHRpU2lnPERhdGFSZXF1ZXN0UGFyYW1zLCBEYXRhUmVxdWVzdFBheWxvYWQ+IHtcbiAgICBcbiAgICBwdWJsaWMgc3RhdGljIE1BWF9XRUlHSFQgPSBEYXRhUmVxdWVzdFBheWxvYWQuTUFYX1dFSUdIVDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShsZWRnZXI6IElMZWRnZXIsIGFydGlmYWN0OiBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlKSA6IERhdGFSZXF1ZXN0cyB7XG4gICAgICAgIHJldHVybiBuZXcgRGF0YVJlcXVlc3RzKGFydGlmYWN0LCBsZWRnZXIpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IgKGFydGlmYWN0OiBSYWRvblJlcXVlc3QgfCBSYWRvblRlbXBsYXRlLCBsZWRnZXI6IElMZWRnZXIsIGNoYW5nZVBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJEUlRyYW5zYWN0aW9uXCIsIG5ldyBEYXRhUmVxdWVzdFBheWxvYWQoXCJEUlRyYW5zYWN0aW9uQm9keVwiLCBhcnRpZmFjdCksIGxlZGdlciwgY2hhbmdlUGtoKVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVxdWVzdCgpOiBSYWRvblJlcXVlc3QgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGF5bG9hZC5yZXF1ZXN0XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpOiBSYWRvblRlbXBsYXRlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQudGVtcGxhdGVcbiAgICB9XG59XG4iXX0=
|
|
@@ -14,4 +14,4 @@ class StakeDeposits extends transmitters_1.TransmitterMultiSig {
|
|
|
14
14
|
exports.StakeDeposits = StakeDeposits;
|
|
15
15
|
StakeDeposits.MAX_WEIGHT = StakePayload_1.StakePayload.MAX_WEIGHT;
|
|
16
16
|
StakeDeposits.MIN_VALUE = StakePayload_1.StakePayload.MIN_VALUE;
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Rha2VEZXBvc2l0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3J5cHRvL3RyYW5zbWl0dGVycy9TdGFrZURlcG9zaXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUEyRTtBQUczRSxrREFBcUQ7QUFLckQsTUFBYSxhQUFjLFNBQVEsa0NBQXFEO0lBSzdFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBZTtRQUM5QixPQUFPLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFFRCxZQUFhLE1BQWUsRUFBRSxTQUErQjtRQUN6RCxLQUFLLENBQUMsa0JBQWtCLEVBQUUsSUFBSSwyQkFBWSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzFGLENBQUM7O0FBWEwsc0NBWUM7QUFWaUIsd0JBQVUsR0FBRywyQkFBWSxDQUFDLFVBQVUsQ0FBQztBQUNyQyx1QkFBUyxHQUFHLDJCQUFZLENBQUMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Rha2VQYXlsb2FkLCBTdGFrZURlcG9zaXRQYXJhbXMgfSBmcm9tIFwiLi4vcGF5bG9hZHMvU3Rha2VQYXlsb2FkXCJcblxuaW1wb3J0IHsgSUxlZGdlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCJcbmltcG9ydCB7IFRyYW5zbWl0dGVyTXVsdGlTaWcgfSBmcm9tIFwiLi4vdHJhbnNtaXR0ZXJzXCJcbmltcG9ydCB7IFB1YmxpY0tleUhhc2hTdHJpbmcgfSBmcm9tIFwiLi4vdHlwZXNcIlxuXG5leHBvcnQgeyBTdGFrZURlcG9zaXRQYXJhbXMgfSBmcm9tIFwiLi4vcGF5bG9hZHMvU3Rha2VQYXlsb2FkXCJcblxuZXhwb3J0IGNsYXNzIFN0YWtlRGVwb3NpdHMgZXh0ZW5kcyBUcmFuc21pdHRlck11bHRpU2lnPFN0YWtlRGVwb3NpdFBhcmFtcywgU3Rha2VQYXlsb2FkPiB7XG4gICAgXG4gICAgcHVibGljIHN0YXRpYyBNQVhfV0VJR0hUID0gU3Rha2VQYXlsb2FkLk1BWF9XRUlHSFQ7XG4gICAgcHVibGljIHN0YXRpYyBNSU5fVkFMVUUgPSBTdGFrZVBheWxvYWQuTUlOX1ZBTFVFO1xuXG4gICAgcHVibGljIHN0YXRpYyBmcm9tKGxlZGdlcjogSUxlZGdlcik6IFN0YWtlRGVwb3NpdHMge1xuICAgICAgICByZXR1cm4gbmV3IFN0YWtlRGVwb3NpdHMobGVkZ2VyKVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yIChsZWRnZXI6IElMZWRnZXIsIGNoYW5nZVBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJTdGFrZVRyYW5zYWN0aW9uXCIsIG5ldyBTdGFrZVBheWxvYWQoXCJTdGFrZVRyYW5zYWN0aW9uQm9keVwiKSwgbGVkZ2VyLCBjaGFuZ2VQa2gpXG4gICAgfVxufVxuIl19
|
|
@@ -50,4 +50,4 @@ class StakeWithdrawals extends transmitters_1.Transmitter {
|
|
|
50
50
|
exports.StakeWithdrawals = StakeWithdrawals;
|
|
51
51
|
StakeWithdrawals.MIN_TIMELOCK_SECS = UnstakePayload_1.UnstakePayload.MIN_TIMELOCK_SECS;
|
|
52
52
|
StakeWithdrawals.WEIGHT = UnstakePayload_1.UnstakePayload.WEIGHT;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3Rha2VXaXRoZHJhd2Fscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY3J5cHRvL3RyYW5zbWl0dGVycy9TdGFrZVdpdGhkcmF3YWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtEQUFrRjtBQUlsRixrREFBNkM7QUFPN0MsTUFBYSxnQkFBaUIsU0FBUSwwQkFBa0Q7SUFLN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFlO1FBQzlCLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRUQsWUFBYSxNQUFlLEVBQUUsU0FBK0I7UUFDekQsS0FBSyxDQUFDLG9CQUFvQixFQUFFLElBQUksK0JBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNoRyxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUE4QixFQUFFLE1BQWdCO1FBQ3pFLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDaEQsQ0FBQztJQUVNLHVCQUF1QjtRQUMxQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQTtRQUMvQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDUixNQUFNLEtBQUssQ0FDUCxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxnREFBZ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDekcsQ0FBQTtRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtZQUN0QyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUNoRCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osTUFBTSxLQUFLLENBQ1AsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksZ0RBQWdELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxDQUM3SCxDQUFBO1lBQ0wsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFBO1FBQ2YsQ0FBQztJQUVMLENBQUM7SUFFUyxPQUFPLENBQUMsUUFBaUI7UUFDL0IsT0FBTztZQUNILENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUNULElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7Z0JBQ3BDLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQzthQUNqQztTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE9BQU87Z0JBQ0gsSUFBSTtnQkFDSixTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDakMsQ0FBQTtRQUNMLENBQUM7SUFDTCxDQUFDOztBQXRETCw0Q0F1REM7QUFyRGlCLGtDQUFpQixHQUFHLCtCQUFjLENBQUMsaUJBQWlCLENBQUE7QUFDcEQsdUJBQU0sR0FBRywrQkFBYyxDQUFDLE1BQU0sQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVuc3Rha2VQYXlsb2FkLCBTdGFrZVdpdGhkcmF3YWxQYXJhbXMgfSBmcm9tIFwiLi4vcGF5bG9hZHMvVW5zdGFrZVBheWxvYWRcIlxuXG5pbXBvcnQgeyBUcmFuc2FjdGlvblJlY2VpcHQgfSBmcm9tIFwiLi4vdHlwZXNcIlxuaW1wb3J0IHsgSUxlZGdlciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCJcbmltcG9ydCB7IFRyYW5zbWl0dGVyIH0gZnJvbSBcIi4uL3RyYW5zbWl0dGVyc1wiXG5pbXBvcnQgeyBQdWJsaWNLZXlIYXNoU3RyaW5nIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuaW1wb3J0IHsgSGFzaCB9IGZyb20gXCIuLi8uLi90eXBlc1wiXG5cbmV4cG9ydCB7IFN0YWtlV2l0aGRyYXdhbFBhcmFtcyB9IGZyb20gXCIuLi9wYXlsb2Fkcy9VbnN0YWtlUGF5bG9hZFwiXG5cbmV4cG9ydCBjbGFzcyBTdGFrZVdpdGhkcmF3YWxzIGV4dGVuZHMgVHJhbnNtaXR0ZXI8U3Rha2VXaXRoZHJhd2FsUGFyYW1zLCBVbnN0YWtlUGF5bG9hZD4ge1xuICAgIFxuICAgIHB1YmxpYyBzdGF0aWMgTUlOX1RJTUVMT0NLX1NFQ1MgPSBVbnN0YWtlUGF5bG9hZC5NSU5fVElNRUxPQ0tfU0VDU1xuICAgIHB1YmxpYyBzdGF0aWMgV0VJR0hUID0gVW5zdGFrZVBheWxvYWQuV0VJR0hUXG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb20obGVkZ2VyOiBJTGVkZ2VyKTogU3Rha2VXaXRoZHJhd2FscyB7XG4gICAgICAgIHJldHVybiBuZXcgU3Rha2VXaXRoZHJhd2FscyhsZWRnZXIpXG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IgKGxlZGdlcjogSUxlZGdlciwgY2hhbmdlUGtoPzogUHVibGljS2V5SGFzaFN0cmluZykge1xuICAgICAgICBzdXBlcihcIlVuc3Rha2VUcmFuc2FjdGlvblwiLCBuZXcgVW5zdGFrZVBheWxvYWQoXCJVbnN0YWtlVHJhbnNhY3Rpb25Cb2R5XCIpLCBsZWRnZXIsIGNoYW5nZVBraClcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2lnblRyYW5zYWN0aW9uKHBhcmFtcz86IFN0YWtlV2l0aGRyYXdhbFBhcmFtcywgcmVsb2FkPzogYm9vbGVhbik6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XG4gICAgICAgIHJldHVybiBzdXBlci5zaWduVHJhbnNhY3Rpb24ocGFyYW1zLCByZWxvYWQpXG4gICAgfVxuXG4gICAgcHVibGljIF9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCk6IEhhc2gge1xuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5fcGF5bG9hZC5oYXNoXG4gICAgICAgIGlmICghaGFzaCkge1xuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHVuYWJsZSB0byBoYXNoaWZ5IHBheWxvYWQ6ICR7dGhpcy5fcGF5bG9hZC50b0pTT04odHJ1ZSl9fS5gXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzaWduZXIgPSB0aGlzLmxlZGdlci5nZXRTaWduZXIoKVxuICAgICAgICAgICAgaWYgKHNpZ25lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduZXIuc2lnbkhhc2goaGFzaCkpXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogbm8gZGVmYXVsdCBTaWduZXIgZm91bmQgaW4gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcbiAgICAgICAgICAgIHJldHVybiBoYXNoXG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b0pTT04oaHVtYW5pemU6IGJvb2xlYW4pOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgW3RoaXMudHlwZV06IHtcbiAgICAgICAgICAgICAgICBib2R5OiB0aGlzLl9wYXlsb2FkLnRvSlNPTihodW1hbml6ZSksXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlOiB0aGlzLl9zaWduYXR1cmVzWzBdLFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxuICAgICAgICBpZiAoYm9keSAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgICAgICBzaWduYXR1cmU6IHRoaXMuX3NpZ25hdHVyZXNbMF1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -13,4 +13,4 @@ class ValueTransfers extends transmitters_1.TransmitterMultiSig {
|
|
|
13
13
|
}
|
|
14
14
|
exports.ValueTransfers = ValueTransfers;
|
|
15
15
|
ValueTransfers.MAX_WEIGHT = ValueTransferPayload_1.ValueTransferPayload.MAX_WEIGHT;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVmFsdWVUcmFuc2ZlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90cmFuc21pdHRlcnMvVmFsdWVUcmFuc2ZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBQTRGO0FBSTVGLGtEQUFxRDtBQUdyRCxNQUFhLGNBQWUsU0FBUSxrQ0FBOEQ7SUFJdkYsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFlO1FBQzlCLE9BQU8sSUFBSSxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELFlBQWEsTUFBZSxFQUFFLFNBQStCO1FBQ3pELEtBQUssQ0FBQyxlQUFlLEVBQUUsSUFBSSwyQ0FBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUM1RixDQUFDOztBQVZMLHdDQVdDO0FBVGlCLHlCQUFVLEdBQUcsMkNBQW9CLENBQUMsVUFBVSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmFsdWVUcmFuc2ZlclBheWxvYWQsIFZhbHVlVHJhbnNmZXJQYXJhbXMgfSBmcm9tIFwiLi4vcGF5bG9hZHMvVmFsdWVUcmFuc2ZlclBheWxvYWRcIlxuZXhwb3J0IHsgVmFsdWVUcmFuc2ZlclBhcmFtcyB9IGZyb20gXCIuLi9wYXlsb2Fkcy9WYWx1ZVRyYW5zZmVyUGF5bG9hZFwiXG5cbmltcG9ydCB7IElMZWRnZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlc1wiXG5pbXBvcnQgeyBUcmFuc21pdHRlck11bHRpU2lnIH0gZnJvbSBcIi4uL3RyYW5zbWl0dGVyc1wiXG5pbXBvcnQgeyBQdWJsaWNLZXlIYXNoU3RyaW5nIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuZXhwb3J0IGNsYXNzIFZhbHVlVHJhbnNmZXJzIGV4dGVuZHMgVHJhbnNtaXR0ZXJNdWx0aVNpZzxWYWx1ZVRyYW5zZmVyUGFyYW1zLCBWYWx1ZVRyYW5zZmVyUGF5bG9hZD4ge1xuICAgIFxuICAgIHB1YmxpYyBzdGF0aWMgTUFYX1dFSUdIVCA9IFZhbHVlVHJhbnNmZXJQYXlsb2FkLk1BWF9XRUlHSFRcblxuICAgIHB1YmxpYyBzdGF0aWMgZnJvbShsZWRnZXI6IElMZWRnZXIpOiBWYWx1ZVRyYW5zZmVycyB7XG4gICAgICAgIHJldHVybiBuZXcgVmFsdWVUcmFuc2ZlcnMobGVkZ2VyKVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yIChsZWRnZXI6IElMZWRnZXIsIGNoYW5nZVBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoXCJWVFRyYW5zYWN0aW9uXCIsIG5ldyBWYWx1ZVRyYW5zZmVyUGF5bG9hZChcIlZUVHJhbnNhY3Rpb25Cb2R5XCIpLCBsZWRnZXIsIGNoYW5nZVBraClcbiAgICB9XG59XG4iXX0=
|
|
@@ -413,4 +413,4 @@ class TransmitterMultiSig extends Transmitter {
|
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
415
|
exports.TransmitterMultiSig = TransmitterMultiSig;
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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dkksQ0FBQztxQkFBTSxDQUFDO29CQUNMLGlFQUFpRTtvQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWlCO1FBQy9CLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNILElBQUk7Z0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQy9CLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckVELGtEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb21pc2VQb2xsZXIgPSByZXF1aXJlKCdwcm9taXNlLXBvbGxlcicpLmRlZmF1bHQ7XHJcblxyXG5pbXBvcnQgeyBSb290IGFzIFByb3RvUm9vdCwgVHlwZSBhcyBQcm90b1R5cGUgfSBmcm9tIFwicHJvdG9idWZqc1wiXHJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKSBcclxuXHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uUmVwb3J0LCBVdHhvTWV0YWRhdGEsIFZhbHVlVHJhbnNmZXJPdXRwdXQgfSBmcm9tIFwiLi4vcnBjL3R5cGVzXCJcclxuaW1wb3J0IHsgSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXHJcbmltcG9ydCB7IEhhc2gsIE5ldHdvcmsgfSBmcm9tIFwiLi4vdHlwZXNcIlxyXG5pbXBvcnQgeyBpc0hleFN0cmluZyB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBJTGVkZ2VyLFxyXG4gICAgSUpzb25ScGNQcm92aWRlciwgXHJcbiAgICBJVHJhbnNtaXR0ZXIsIFxyXG4gICAgSVRyYW5zYWN0aW9uUGF5bG9hZCwgXHJcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcsIFxyXG59IGZyb20gXCIuL2ludGVyZmFjZXNcIlxyXG5cclxuaW1wb3J0IHsgXHJcbiAgICBLZXllZFNpZ25hdHVyZSwgXHJcbiAgICBQdWJsaWNLZXksIFxyXG4gICAgUHVibGljS2V5SGFzaFN0cmluZywgXHJcbiAgICBNZW1wb29sRXJyb3IsXHJcbiAgICBUcmFuc2FjdGlvbkNhbGxiYWNrLCBcclxuICAgIFRyYW5zYWN0aW9uUmVjZWlwdCwgXHJcbiAgICBUcmFuc2FjdGlvblN0YXR1cywgXHJcbiAgICBUaW1lb3V0RXJyb3IsXHJcbiAgICBUcmFuc21pc3Npb24sXHJcbiAgICBUcmFuc21pc3Npb25FcnJvcixcclxuICAgIFV0eG8sXHJcbn0gZnJvbSBcIi4vdHlwZXNcIlxyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkIGV4dGVuZHMgSVRyYW5zYWN0aW9uUGF5bG9hZDxTcGVjcz4+IGltcGxlbWVudHMgSVRyYW5zbWl0dGVyIHtcclxuICAgIFxyXG4gICAgcHVibGljIHJlYWRvbmx5IGxlZGdlcjogSUxlZGdlcjtcclxuICAgIHB1YmxpYyByZWFkb25seSBjaGFuZ2VQa2g6IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICBcclxuICAgIHByb3RlY3RlZCBfcGF5bG9hZDogUGF5bG9hZDtcclxuICAgIHByb3RlY3RlZCBfcHJvdG9CdWY6IFByb3RvVHlwZTtcclxuICAgIHByb3RlY3RlZCBfc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gW11cclxuICAgIHByb3RlY3RlZCBfdHJhbnNhY3Rpb25zOiBBcnJheTxIYXNoPiA9IFtdXHJcblxyXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5fcHJvdG9CdWYgPSBwcm90b1Jvb3QubG9va3VwVHlwZShwcm90b1R5cGVOYW1lKVxyXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgICAgIHRoaXMubGVkZ2VyID0gbGVkZ2VyXHJcbiAgICAgICAgaWYgKCFsZWRnZXIucHJvdmlkZXIubmV0d29yaykge1xyXG4gICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogbGVkZ2VyJ3MgcHJvdmlkZXIgaXMgbm90IGluaXRpYWxpemVkLmApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUGtoID0gY2hhbmdlUGtoIHx8IGxlZGdlci5jaGFuZ2VQa2hcclxuICAgICAgICBpZiAoIWxlZGdlci5nZXRTaWduZXIodGhpcy5jaGFuZ2VQa2gpKSB7XHJcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIgaG9sZHMgbm8gU2lnbmVyIGZvciBjaGFuZ2UgYWRkcmVzcyAke3RoaXMuY2hhbmdlUGtofS5gKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHBheWxvYWQoKTogUGF5bG9hZCB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQucHJlcGFyZWQgPyB0aGlzLl9wYXlsb2FkIDogdW5kZWZpbmVkXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBwcm92aWRlcigpOiBJSnNvblJwY1Byb3ZpZGVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIucHJvdmlkZXJcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvdmlkZXIubmV0d29yayB8fCBcIm1haW5uZXRcIlxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgdHJhbnNhY3Rpb25zKCk6IEFycmF5PEhhc2g+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNhY3Rpb25zXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCB0eXBlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQuY29uc3RydWN0b3IubmFtZS5zcGxpdCgvKFthLXpdKD89W0EtWl0pKS9nKS5zbGljZSgwLCAtMSkuam9pbihcIlwiKVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgX2Zyb20oKTogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgIC5tYXAoa3MgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBraCA9IFB1YmxpY0tleS5mcm9tUHJvdG9idWYoa3MucHVibGljX2tleSkuaGFzaCgpLnRvQmVjaDMyKHRoaXMubmV0d29yaylcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIuZ2V0U2lnbmVyKHBraCk/LnBraCB8fCB0aGlzLmxlZGdlci5wa2hcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAvLyBhdm9pZCByZXBldGl0aW9uc1xyXG4gICAgICAgICAgICAgICAgLmZpbHRlcigocGtoLCBpbmRleCwgYXJyYXkpID0+IGluZGV4ID09PSBhcnJheS5pbmRleE9mKHBraCkpXHJcbiAgICAgICAgXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IF9wcmVwYXJlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLnByZXBhcmVkXHJcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3NpZ25hdHVyZXNcclxuICAgICAgICAgICAgICAgICYmIHRoaXMuX3NpZ25hdHVyZXMubGVuZ3RoID4gMFxyXG4gICAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgc2VuZFRyYW5zYWN0aW9uKHRhcmdldD86IGFueSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCB0YXJnZXQpIHtcclxuICAgICAgICAgICAgLy8gaWYgaW5mbGlnaHQgbm90IHlldCBwcmVwYXJlZCwgb3IgcHJlcGFyZWQgYnV0IG5vdCB5ZXQgdHJhbnNtaXR0ZWQsXHJcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcclxuICAgICAgICAgICAgLy8gb3IgcHJldmlvdXNseSBwcmVwYXJlZCBpbmZsaWdodCAoaWYga25vd24pLlxyXG4gICAgICAgICAgICByZWNlaXB0ID0gYXdhaXQgdGhpcy5zaWduVHJhbnNhY3Rpb24odGFyZ2V0IHx8IHJlY2VpcHQpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZWNlaXB0Py5zdGF0dXMgJiYgcmVjZWlwdC5zdGF0dXMgIT09IFwic2lnbmVkXCIgJiYgIXJlY2VpcHQ/LmVycm9yKSB7XHJcbiAgICAgICAgICAgIC8vIGlmIGN1cnJlbnQgaW5mbGlnaHQgd2FzIGFscmVhZHkgdHJhbnNtaXR0ZWQgYW5kIGl0J3Mgbm90IHlldCBrbm93biB0byBmYWlsIC4uLlxyXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB3ZSByZWFjaCB0aGlzIHBvaW50IGlzIGJlY2F1c2UgYW4gaW5mbGlnaHQgdHJhbnNhY3Rpb24gaXMgXHJcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcclxuICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInBlbmRpbmdcIlxyXG4gICAgICAgIGRlbGV0ZSBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvclxyXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXHJcbiAgICAgICAgICAgIC5zZW5kUmF3VHJhbnNhY3Rpb24odGhpcy5fdG9KU09OKGZhbHNlKSlcclxuICAgICAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXHJcbiAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihhY2NlcHRlZCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYWNjZXB0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBFcnJvcihgUmVqZWN0ZWQgZm9yIHVua25vd24gcmVhc29uc2ApKVxyXG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yID0gZXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBzaWduVHJhbnNhY3Rpb24odGFyZ2V0PzogU3BlY3MsIHJlbG9hZFV0eG9zID0gZmFsc2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xyXG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxyXG4gICAgICAgIGlmICghdGFyZ2V0KSB7XHJcbiAgICAgICAgICAgIC8vIGUuZy4gaWYgY2FsbGVkIGZyb20gdGhpcy5zZW5kKCkgd2l0aCBubyBwYXJhbXNcclxuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxyXG4gICAgICAgIGlmIChpbmZsaWdodCkge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcInNpZ24ucGVuZGluZ1JlY2VpcHQgPT5cIiwgaW5mbGlnaHQpXHJcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcclxuICAgICAgICAgICAgICAgIC8vIHJlY292ZXIgaW5wdXQgdXR4b3MgaWYgcHJldmlvdXNseSBzaWduZWQgcGFyYW1zIHdlcmUgbm90IGV2ZW4gYXR0ZW1wdGVkIHRvIGJlIHNlbnRcclxuICAgICAgICAgICAgICAgIGlmICghcmVsb2FkVXR4b3MpIHRoaXMuX3JlY292ZXJJbnB1dFV0eG9zKClcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5mbGlnaHQuc3RhdHVzID09PSBcInBlbmRpbmdcIiAmJiAhaW5mbGlnaHQuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgIC8vIHRocm93IGV4Y2VwdGlvbiBpZiBhIGZvcm1lcmx5IHNpZ25lZCB0cmFuc2FjdGlvbiBpcyBzdGlsbCB3YWl0aW5nIHRvIGJlIHJlbGF5ZWQgYnkgYSBwcm92aWRlclxyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBcclxuICAgICAgICBcclxuICAgICAgICAvLyBjbGVhbiBjdXJyZW50IHNpZ25hdHVyZXMsIHNvIG5ldyBVVFhPcyBjYW4gYmUgY29uc3VtZWQgYW5kIHRoZXJlZm9yZSBhIG5ldyB0cmFuc2FjdGlvbiBoYXNoIGJlIGluY2VwdGVkXHJcbiAgICAgICAgdGhpcy5fY2xlYW5TaWduYXR1cmVzKHRhcmdldClcclxuICAgICAgICBcclxuICAgICAgICAvLyBpZiBub3QgeWV0IHByZXBhcmVkLCB0cnkgdG8gY292ZXIgdHJhbnNhY3Rpb24gZXhwZW5zZXMgd2l0aCBleGlzdGluZyB1dHhvcyBvbiBzaWduZXJzOlxyXG4gICAgICAgIGlmICghdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXHJcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFxyXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pICBcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnN1ZmZpY2llbnQgZnVuZHMgb24gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfSBcclxuXHJcbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXHJcbiAgICAgICAgaWYgKHRoaXMuX3BheWxvYWQud2VpZ2h0ID4gdGhpcy5fcGF5bG9hZC5tYXhXZWlnaHQpIHtcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBzaWduaW5nIHRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIGdlbmVyYXRlcyB0aGUgdHJhbnNhY3Rpb24gaGFzaCwgYW5kIHRoZSByZWNlaXB0XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdCh0aGlzLl9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCksIHRhcmdldCwgXCJzaWduZWRcIikgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIGNvbmZpcm1UcmFuc2FjdGlvbihcclxuICAgICAgICBoYXNoOiBIYXNoLCBcclxuICAgICAgICBvcHRpb25zPzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25zPzogbnVtYmVyLFxyXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcclxuICAgICAgICAgICAgb25DaGVja3BvaW50PzogVHJhbnNhY3Rpb25DYWxsYmFjayxcclxuICAgICAgICAgICAgb25TdGF0dXNDaGFuZ2U/OiBUcmFuc2FjdGlvbkNhbGxiYWNrLFxyXG4gICAgICAgIH1cclxuICAgICk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XHJcblxyXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXHJcbiAgICAgICAgaWYgKCFyZWNlaXB0IHx8IHJlY2VpcHQuaGFzaCAhPT0gaGFzaCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gbm90IGZvdW5kOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKFtcInNpZ25lZFwiLCBcInBlbmRpbmdcIl0uaW5jbHVkZXMocmVjZWlwdC5zdGF0dXMpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBzdGF0dXMgXCIke3JlY2VpcHQuc3RhdHVzfVwiOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YClcclxuICAgICAgICBcclxuICAgICAgICB9IGVsc2UgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbGF5ZWRcIiAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxyXG4gICAgICAgIH0gY2F0Y2gge307XHJcblxyXG4gICAgICAgIGNvbnN0IGdsb2JhbFRpbWVyID0gKHN0YXJ0OiBudW1iZXIsIG1zOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoXHJcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4gcmVqZWN0KGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHBvbGxpbmcgdGltZW91dCBhZnRlciAke01hdGguZmxvb3IoKERhdGUubm93KCkgLSBzdGFydCkgLyAxMDAwKX0gc2VjcykuYCksIFxyXG4gICAgICAgICAgICAgICAgICAgIG1zXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IFtjb25maXJtYXRpb25zLCBpbnRlcnZhbCwgdGltZW91dCwgZ2xvYmFsVGltZW91dF0gPSBbXHJcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcclxuICAgICAgICAgICAgMTAwMDAsXHJcbiAgICAgICAgICAgIDUwMDAsXHJcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcclxuICAgICAgICAgICAgZ2xvYmFsVGltZXIoRGF0ZS5ub3coKSwgZ2xvYmFsVGltZW91dClcclxuICAgICAgICAgICAgICAgIC5jYXRjaCgocmVhc29uOiBhbnkpID0+IHsgdGhyb3cgbmV3IFRpbWVvdXRFcnJvcihnbG9iYWxUaW1lb3V0LCByZWNlaXB0LCByZWFzb24pIH0pLFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgcHJvbWlzZVBvbGxlcih7XHJcbiAgICAgICAgICAgICAgICB0YXNrRm46ICgpID0+IHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb24oaGFzaCksXHJcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGF0dXMgPSByZWNlaXB0LnN0YXR1c1xyXG4gICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuZXJyb3IgPSBlcnJvclxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gXCJyZW1vdmVkXCJcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFwicmVsYXllZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcG9ydD8uYmxvY2tIYXNoICYmIGlzSGV4U3RyaW5nKHJlcG9ydC5ibG9ja0hhc2gpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrSGFzaCA9IHJlcG9ydC5ibG9ja0hhc2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0Vwb2NoID0gcmVwb3J0LmJsb2NrRXBvY2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpcHQuc3RhdHVzID0gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAocmVwb3J0Py5jb25maXJtYXRpb25zID49IGNvbmZpcm1hdGlvbnMgPyBcImNvbmZpcm1lZFwiIDogXCJtaW5lZFwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXBvcnQ/LmJsb2NrSGFzaCB8fCByZXBvcnQuYmxvY2tIYXNoICE9PSByZWNlaXB0LmJsb2NrSGFzaCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrSGFzaFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja01pbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tUaW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFwiZmluYWxpemVkXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0LmNvbmZpcm1hdGlvbnMgIT09IHJlY2VpcHQuY29uZmlybWF0aW9ucykgeyAgICBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcIm1pbmVkXCIgJiYgb3B0aW9ucz8ub25DaGVja3BvaW50KSB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vbkNoZWNrcG9pbnQocmVjZWlwdClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSByZWNlaXB0LnN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnRpbWVzdGFtcCA9IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVtcImNvbmZpcm1lZFwiLCBcImZpbmFsaXplZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cykgJiYgb3B0aW9ucz8ub25TdGF0dXNDaGFuZ2UpIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge307XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXSA9IHJlY2VpcHRcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW1wicmVsYXllZFwiLCBcIm1pbmVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGludGVydmFsLCB0aW1lb3V0LCBcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0pLnRoZW4oYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIiAmJiByZWNlaXB0LnR5cGUgIT09IFwiVW5zdGFrZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVFJBTlNBQ1RJT04gUkVNT1ZFRCBGUk9NIE1FTVBPT0wgLy9cclxuICAgICAgICAgICAgICAgICAgICAvLyAxLiBUcnkgdG8gcmVjb3ZlciBpbnB1dCB1dHhvcyBiZWxvbmdpbmcgdG8gbGVkZ2VyJ3MgYWRkcmVzc2VzOlxyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0czogQXJyYXk8VXR4b01ldGFkYXRhPiA9IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5LmlucHV0c1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaWduYXR1cmVzOiBBcnJheTxLZXllZFNpZ25hdHVyZT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uc2lnbmF0dXJlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXRzLmxlbmd0aCA9PT0gc2lnbmF0dXJlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0cy5mb3JFYWNoKChtZXRhZGF0YSwgaW5kZXgpID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWV0YWRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnbmVyOiBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKHNpZ25hdHVyZXNbaW5kZXhdLnB1YmxpY19rZXkpLmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWRnZXIuYWRkVXR4b3MoLi4udXR4b3MpXHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgaW5wdXQgVVRYT1MgZnJvbSB0eCAke2hhc2h9OiAke2Vycn1gKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyAyLiBUaHJvdyBNZW1wb29sRXJyb3JcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gVFJBTlNBQ1RJT04gRUlUSEVSIENPTkZJUk1FRCBPUiBGSU5BTElaRUQgLy9cclxuICAgICAgICAgICAgICAgICAgICAvLyAxLiBUcnkgdG8gbG9hZCB2YWx1ZSB0cmFuc2ZlciBvdXRwdXRzIGludG8gdGhlIGxlZGdlcidzIGxvY2FsIGNhY2hlOiBcclxuICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoW1wiU3Rha2VcIiwgXCJVbnN0YWtlXCJdLmluY2x1ZGVzKHJlY2VpcHQudHlwZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2dG86IFZhbHVlVHJhbnNmZXJPdXRwdXQgPSAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50eXBlID09PSBcIlN0YWtlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ub3V0cHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/LndpdGhkcmF3YWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodnRvKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b3MucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHtyZWNlaXB0Lmhhc2h9OjBgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0czogQXJyYXk8VmFsdWVUcmFuc2Zlck91dHB1dD4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ub3V0cHV0cyB8fCBbXVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7cmVjZWlwdC5oYXNofToke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZ0by52YWx1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZXI6IHZ0by5wa2gsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIm91dHB1dCB1dHhvcyBiZWZvcmUgPT5cIiwgdXR4b3MpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGFmdGVyICA9PlwiLCB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcykpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIG91dHB1dCBVVFhPcyBmcm9tICR7aGFzaH06ICR7ZXJyfWApXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIEFkZCBibG9ja01pbmVyIGFkZHJlc3MgdG8gdGhlIHRyYW5zYWN0aW9uIHJlY2VpcHQ6IFxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0Py5ibG9ja0hhc2ggJiYgaXNIZXhTdHJpbmcocmVjZWlwdC5ibG9ja0hhc2gpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gYXdhaXQgdGhpcy5wcm92aWRlci5nZXRCbG9jayhyZWNlaXB0LmJsb2NrSGFzaCB8fCBcIlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF0uYmxvY2tNaW5lciA9IFB1YmxpY0tleVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Qcm90b2J1ZihibG9jay5ibG9ja19zaWcucHVibGljX2tleSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oYXNoKClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50b0JlY2gzMih0aGlzLm5ldHdvcmspO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucz8ub25TdGF0dXNDaGFuZ2UpIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMub25TdGF0dXNDaGFuZ2UocmVjZWlwdClcclxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIDMuIFJldHVybiB0cmFuc2FjdGlvbiByZWNlaXB0OlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBdKVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfY2xlYW5TaWduYXR1cmVzKG5ld1RhcmdldDogU3BlY3MpOiBhbnkge1xyXG4gICAgICAgIHRoaXMuX3BheWxvYWQucmVzZXRUYXJnZXQobmV3VGFyZ2V0KVxyXG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZXMgPSBbXVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBfZ2V0SW5mbGlnaHRCeXRlY29kZSgpOiBVaW50OEFycmF5IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBvYmogPSB0aGlzLl90b1Byb3RvYnVmKClcclxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9wcm90b0J1Zi52ZXJpZnkob2JqKVxyXG4gICAgICAgIGlmICghZXJyKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLl9wcm90b0J1Zi5mcm9tT2JqZWN0KG9iailcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3RvQnVmLmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFJlY2VpcHQoKTogVHJhbnNhY3Rpb25SZWNlaXB0IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBoYXNoID0gdGhpcy5fcGF5bG9hZC5oYXNoXHJcbiAgICAgICAgaWYgKGhhc2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpOiBUcmFuc21pc3Npb24ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGJ5dGVjb2RlOiB0aGlzLl9nZXRJbmZsaWdodEJ5dGVjb2RlKCksXHJcbiAgICAgICAgICAgIGhhc2g6IHRoaXMuX3BheWxvYWQuaGFzaCxcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5fdG9KU09OKHRydWUpLFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJJbnB1dFV0eG9zKCk6IGFueSB7fVxyXG4gICAgcHJvdGVjdGVkIF9yZWNvdmVyT3V0cHV0VXR4b3MoKTogYW55IHt9XHJcblxyXG4gICAgcHJvdGVjdGVkIF91cHNlcnRUcmFuc2FjdGlvblJlY2VpcHQoaGFzaDogSGFzaCwgdGFyZ2V0OiBTcGVjcywgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1cyk6IFRyYW5zYWN0aW9uUmVjZWlwdCB7XHJcbiAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdID0ge1xyXG4gICAgICAgICAgICAuLi50aGlzLl9wYXlsb2FkLmludG9SZWNlaXB0KHRhcmdldCwgdGhpcy5uZXR3b3JrKSxcclxuICAgICAgICAgICAgaGFzaCxcclxuICAgICAgICAgICAgY2hhbmdlOiB0aGlzLl9wYXlsb2FkLmNoYW5nZSxcclxuICAgICAgICAgICAgZmVlczogdGhpcy5fcGF5bG9hZC5mZWVzLFxyXG4gICAgICAgICAgICBmcm9tOiB0aGlzLl9mcm9tLFxyXG4gICAgICAgICAgICBzdGF0dXMsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDogTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCksXHJcbiAgICAgICAgICAgIHR4OiB0aGlzLl90b0pTT04odHJ1ZSksXHJcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcclxuICAgICAgICAgICAgdmFsdWU6IHRoaXMuX3BheWxvYWQudmFsdWUsXHJcbiAgICAgICAgICAgIHdlaWdodDogdGhpcy5fcGF5bG9hZC53ZWlnaHQsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbaGFzaF1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgX3NpZ25UcmFuc2FjdGlvblBheWxvYWQoKTogSGFzaDtcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfdG9KU09OKF9odW1hbml6ZTogYm9vbGVhbik6IGFueTtcclxuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfdG9Qcm90b2J1ZigpOiBhbnk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNtaXR0ZXJNdWx0aVNpZzxTcGVjcywgUGF5bG9hZCBleHRlbmRzIElUcmFuc2FjdGlvblBheWxvYWRNdWx0aVNpZzxTcGVjcz4+IFxyXG4gICAgZXh0ZW5kcyBUcmFuc21pdHRlcjxTcGVjcywgUGF5bG9hZD4gXHJcbntcclxuICAgIGNvbnN0cnVjdG9yIChwcm90b1R5cGVOYW1lOiBzdHJpbmcsIHBheWxvYWQ6IFBheWxvYWQsIGxlZGdlcjogSUxlZGdlciwgY2hhbmdlUGtoPzogUHVibGljS2V5SGFzaFN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHByb3RvVHlwZU5hbWUsIHBheWxvYWQsIGxlZGdlciwgY2hhbmdlUGtoKVxyXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xyXG4gICAgfVxyXG5cclxuICAgIC8vLyBSZWNvdmVyIGZvcm1lcmx5IGNvbnN1bWVkIFVUWE9zIGJ5IGEgZmFpbGluZyB0cmFuc2FjdGlvbiBiYWNrIHRvIHRoZWlyIHJlc3BlY3RpdmUgc2lnbmVyJ3MgVVRYTyBwb29sXHJcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJJbnB1dFV0eG9zKCk6IGFueSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BheWxvYWQuaW5wdXRzKSB7ICAgIFxyXG4gICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi50aGlzLl9wYXlsb2FkLmlucHV0cylcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8vIFJlY292ZXIgc2VsZi10YXJnZXRlZCBvdXRwdXRzIGFzIGV4cGVuZGFibGUgdXR4b3Mgb24gdGhlaXIgcmVzcGVjdGl2ZSBzaWduZXIncyBtZW1vaXplZCBjYWNoZVxyXG4gICAgcHJvdGVjdGVkIF9yZWNvdmVyT3V0cHV0VXR4b3MoKTogYW55IHtcclxuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5oYXNoICYmIHRoaXMuX3BheWxvYWQub3V0cHV0cykge1xyXG4gICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxyXG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLm91dHB1dHMuZm9yRWFjaCgodnRvLCBpbmRleCkgPT4geyAgICBcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlZGdlci5nZXRTaWduZXIodnRvLnBraCkpIHV0eG9zLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcclxuICAgICAgICAgICAgICAgICAgICBvdXRwdXRfcG9pbnRlcjogYCR7dGhpcy5fcGF5bG9hZC5oYXNofToke2luZGV4fWAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHZ0by52YWx1ZSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3NpZ25UcmFuc2FjdGlvblBheWxvYWQoKTogSGFzaCB7XHJcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuX3BheWxvYWQuaGFzaFxyXG4gICAgICAgIGlmICghaGFzaCkge1xyXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcclxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB1bmFibGUgdG8gaGFzaGlmeSBwYXlsb2FkOiAke3RoaXMuX3BheWxvYWQudG9KU09OKHRydWUsIHRoaXMubmV0d29yayl9fS5gXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLmlucHV0cy5mb3JFYWNoKHV0eG8gPT4geyBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25lciA9IHRoaXMubGVkZ2VyLmdldFNpZ25lcih1dHhvLnNpZ25lcilcclxuICAgICAgICAgICAgICAgIGlmICghc2lnbmVyKSB0aHJvdyBFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogY2Fubm90IGZpbmQgU2lnbmVyICR7dXR4by5zaWduZXJ9IGluICR7dGhpcy5sZWRnZXIuY29uc3RydWN0b3IubmFtZX0gJHt0aGlzLmxlZGdlci5wa2h9LmAgICAgXHJcbiAgICAgICAgICAgICAgICApOyBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhgLi4uc2lnbmVyICR7c2lnbmVyLnBraH0gc2lnbmluZyBoYXNoICR7aGFzaH0uLi5gKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduZXIuc2lnbkhhc2goaGFzaCkpIFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICByZXR1cm4gaGFzaFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RvSlNPTihodW1hbml6ZTogYm9vbGVhbik6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHsgXHJcbiAgICAgICAgICAgIFt0aGlzLnR5cGVdOiB7IFxyXG4gICAgICAgICAgICAgICAgYm9keTogdGhpcy5fcGF5bG9hZC50b0pTT04oaHVtYW5pemUsIHRoaXMubmV0d29yayksXHJcbiAgICAgICAgICAgICAgICBzaWduYXR1cmVzOiB0aGlzLl9zaWduYXR1cmVzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgX3RvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5fcGF5bG9hZC50b1Byb3RvYnVmKClcclxuICAgICAgICBpZiAoYm9keSAmJiB0aGlzLl9zaWduYXR1cmVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBib2R5LFxyXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlczogdGhpcy5fc2lnbmF0dXJlcyxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNtaXR0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9jcnlwdG8vdHJhbnNtaXR0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztBQUV4RCwyQ0FBaUU7QUFDakUsTUFBTSxTQUFTLEdBQUcsaUJBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUMsQ0FBQTtBQUdsRixnQ0FBd0M7QUFFeEMsb0NBQXVDO0FBVXZDLG1DQVlnQjtBQUVoQixNQUFzQixXQUFXO0lBVTdCLFlBQWEsYUFBcUIsRUFBRSxPQUFnQixFQUFFLE1BQWUsRUFBRSxTQUErQjtRQUg1RixnQkFBVyxHQUEwQixFQUFFLENBQUE7UUFDdkMsa0JBQWEsR0FBZ0IsRUFBRSxDQUFBO1FBR3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixNQUFNLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSx5Q0FBeUMsQ0FBQyxDQUFBO1FBQ3RGLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFBO1FBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ3BDLE1BQU0sU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLCtDQUErQyxJQUFJLENBQUMsU0FBUyxH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dkksQ0FBQztxQkFBTSxDQUFDO29CQUNMLGlFQUFpRTtvQkFDakUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO2dCQUNoRCxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUE7WUFDRixPQUFPLElBQUksQ0FBQTtRQUNmLENBQUM7SUFDTCxDQUFDO0lBRVMsT0FBTyxDQUFDLFFBQWlCO1FBQy9CLE9BQU87WUFDSCxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ2xELFVBQVUsRUFBRSxJQUFJLENBQUMsV0FBVzthQUMvQjtTQUNKLENBQUE7SUFDTCxDQUFDO0lBRVMsV0FBVztRQUNqQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ3ZDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMzQixPQUFPO2dCQUNILElBQUk7Z0JBQ0osVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO2FBQy9CLENBQUE7UUFDTCxDQUFDO0lBQ0wsQ0FBQztDQUNKO0FBckVELGtEQXFFQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHByb21pc2VQb2xsZXIgPSByZXF1aXJlKCdwcm9taXNlLXBvbGxlcicpLmRlZmF1bHQ7XG5cbmltcG9ydCB7IFJvb3QgYXMgUHJvdG9Sb290LCBUeXBlIGFzIFByb3RvVHlwZSB9IGZyb20gXCJwcm90b2J1ZmpzXCJcbmNvbnN0IHByb3RvUm9vdCA9IFByb3RvUm9vdC5mcm9tSlNPTihyZXF1aXJlKFwiLi4vLi4vLi4vd2l0bmV0L3dpdG5ldC5wcm90by5qc29uXCIpKSBcblxuaW1wb3J0IHsgVHJhbnNhY3Rpb25SZXBvcnQsIFV0eG9NZXRhZGF0YSwgVmFsdWVUcmFuc2Zlck91dHB1dCB9IGZyb20gXCIuLi9ycGMvdHlwZXNcIlxuaW1wb3J0IHsgSnNvblJwY1Byb3ZpZGVyIH0gZnJvbSBcIi4uL3JwY1wiXG5pbXBvcnQgeyBIYXNoLCBOZXR3b3JrIH0gZnJvbSBcIi4uL3R5cGVzXCJcbmltcG9ydCB7IGlzSGV4U3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmltcG9ydCB7IFxuICAgIElMZWRnZXIsXG4gICAgSUpzb25ScGNQcm92aWRlciwgXG4gICAgSVRyYW5zbWl0dGVyLCBcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkLCBcbiAgICBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWcsIFxufSBmcm9tIFwiLi9pbnRlcmZhY2VzXCJcblxuaW1wb3J0IHsgXG4gICAgS2V5ZWRTaWduYXR1cmUsIFxuICAgIFB1YmxpY0tleSwgXG4gICAgUHVibGljS2V5SGFzaFN0cmluZywgXG4gICAgTWVtcG9vbEVycm9yLFxuICAgIFRyYW5zYWN0aW9uQ2FsbGJhY2ssIFxuICAgIFRyYW5zYWN0aW9uUmVjZWlwdCwgXG4gICAgVHJhbnNhY3Rpb25TdGF0dXMsIFxuICAgIFRpbWVvdXRFcnJvcixcbiAgICBUcmFuc21pc3Npb24sXG4gICAgVHJhbnNtaXNzaW9uRXJyb3IsXG4gICAgVXR4byxcbn0gZnJvbSBcIi4vdHlwZXNcIlxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHJhbnNtaXR0ZXI8U3BlY3MsIFBheWxvYWQgZXh0ZW5kcyBJVHJhbnNhY3Rpb25QYXlsb2FkPFNwZWNzPj4gaW1wbGVtZW50cyBJVHJhbnNtaXR0ZXIge1xuICAgIFxuICAgIHB1YmxpYyByZWFkb25seSBsZWRnZXI6IElMZWRnZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGNoYW5nZVBraDogUHVibGljS2V5SGFzaFN0cmluZztcbiAgICBcbiAgICBwcm90ZWN0ZWQgX3BheWxvYWQ6IFBheWxvYWQ7XG4gICAgcHJvdGVjdGVkIF9wcm90b0J1ZjogUHJvdG9UeXBlO1xuICAgIHByb3RlY3RlZCBfc2lnbmF0dXJlczogQXJyYXk8S2V5ZWRTaWduYXR1cmU+ID0gW11cbiAgICBwcm90ZWN0ZWQgX3RyYW5zYWN0aW9uczogQXJyYXk8SGFzaD4gPSBbXVxuXG4gICAgY29uc3RydWN0b3IgKHByb3RvVHlwZU5hbWU6IHN0cmluZywgcGF5bG9hZDogUGF5bG9hZCwgbGVkZ2VyOiBJTGVkZ2VyLCBjaGFuZ2VQa2g/OiBQdWJsaWNLZXlIYXNoU3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3Byb3RvQnVmID0gcHJvdG9Sb290Lmxvb2t1cFR5cGUocHJvdG9UeXBlTmFtZSlcbiAgICAgICAgdGhpcy5fcGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgICAgIHRoaXMubGVkZ2VyID0gbGVkZ2VyXG4gICAgICAgIGlmICghbGVkZ2VyLnByb3ZpZGVyLm5ldHdvcmspIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIncyBwcm92aWRlciBpcyBub3QgaW5pdGlhbGl6ZWQuYClcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoYW5nZVBraCA9IGNoYW5nZVBraCB8fCBsZWRnZXIuY2hhbmdlUGtoXG4gICAgICAgIGlmICghbGVkZ2VyLmdldFNpZ25lcih0aGlzLmNoYW5nZVBraCkpIHtcbiAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBsZWRnZXIgaG9sZHMgbm8gU2lnbmVyIGZvciBjaGFuZ2UgYWRkcmVzcyAke3RoaXMuY2hhbmdlUGtofS5gKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXlsb2FkKCk6IFBheWxvYWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGF5bG9hZC5wcmVwYXJlZCA/IHRoaXMuX3BheWxvYWQgOiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHByb3ZpZGVyKCk6IElKc29uUnBjUHJvdmlkZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5sZWRnZXIucHJvdmlkZXJcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5ldHdvcmsoKTogTmV0d29yayB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyLm5ldHdvcmsgfHwgXCJtYWlubmV0XCJcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRyYW5zYWN0aW9ucygpOiBBcnJheTxIYXNoPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2FjdGlvbnNcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BheWxvYWQuY29uc3RydWN0b3IubmFtZS5zcGxpdCgvKFthLXpdKD89W0EtWl0pKS9nKS5zbGljZSgwLCAtMSkuam9pbihcIlwiKVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgX2Zyb20oKTogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAodGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fc2lnbmF0dXJlc1xuICAgICAgICAgICAgICAgIC5tYXAoa3MgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwa2ggPSBQdWJsaWNLZXkuZnJvbVByb3RvYnVmKGtzLnB1YmxpY19rZXkpLmhhc2goKS50b0JlY2gzMih0aGlzLm5ldHdvcmspXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxlZGdlci5nZXRTaWduZXIocGtoKT8ucGtoIHx8IHRoaXMubGVkZ2VyLnBraFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLy8gYXZvaWQgcmVwZXRpdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChwa2gsIGluZGV4LCBhcnJheSkgPT4gaW5kZXggPT09IGFycmF5LmluZGV4T2YocGtoKSlcbiAgICAgICAgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IF9wcmVwYXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQucHJlcGFyZWRcbiAgICAgICAgICAgICAgICAmJiAhIXRoaXMuX3NpZ25hdHVyZXNcbiAgICAgICAgICAgICAgICAmJiB0aGlzLl9zaWduYXR1cmVzLmxlbmd0aCA+IDBcbiAgICAgICAgKVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzZW5kVHJhbnNhY3Rpb24odGFyZ2V0PzogYW55KTogUHJvbWlzZTxUcmFuc2FjdGlvblJlY2VpcHQ+IHtcbiAgICAgICAgbGV0IHJlY2VpcHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxuICAgICAgICBpZiAoIXJlY2VpcHQgfHwgdGFyZ2V0KSB7XG4gICAgICAgICAgICAvLyBpZiBpbmZsaWdodCBub3QgeWV0IHByZXBhcmVkLCBvciBwcmVwYXJlZCBidXQgbm90IHlldCB0cmFuc21pdHRlZCxcbiAgICAgICAgICAgIC8vIHByZXBhcmUgYSBuZXcgaW5mbGlnaHQgZWl0aGVyIHdpdGggc3BlY2lmaWVkIHBhcmFtcyAoaWYgYW55KSxcbiAgICAgICAgICAgIC8vIG9yIHByZXZpb3VzbHkgcHJlcGFyZWQgaW5mbGlnaHQgKGlmIGtub3duKS5cbiAgICAgICAgICAgIHJlY2VpcHQgPSBhd2FpdCB0aGlzLnNpZ25UcmFuc2FjdGlvbih0YXJnZXQgfHwgcmVjZWlwdClcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVjZWlwdD8uc3RhdHVzICYmIHJlY2VpcHQuc3RhdHVzICE9PSBcInNpZ25lZFwiICYmICFyZWNlaXB0Py5lcnJvcikge1xuICAgICAgICAgICAgLy8gaWYgY3VycmVudCBpbmZsaWdodCB3YXMgYWxyZWFkeSB0cmFuc21pdHRlZCBhbmQgaXQncyBub3QgeWV0IGtub3duIHRvIGZhaWwgLi4uXG4gICAgICAgICAgICByZXR1cm4gcmVjZWlwdFxuICAgICAgICB9XG4gICAgICAgIC8vIGlmIHdlIHJlYWNoIHRoaXMgcG9pbnQgaXMgYmVjYXVzZSBhbiBpbmZsaWdodCB0cmFuc2FjdGlvbiBpcyBcbiAgICAgICAgLy8gcmVhZHkgdG8gYmUgdHJhbnNtaXR0ZWRcbiAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uc3RhdHVzID0gXCJwZW5kaW5nXCJcbiAgICAgICAgZGVsZXRlIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1tyZWNlaXB0Lmhhc2hdLmVycm9yXG4gICAgICAgIHJldHVybiB0aGlzLnByb3ZpZGVyXG4gICAgICAgICAgICAuc2VuZFJhd1RyYW5zYWN0aW9uKHRoaXMuX3RvSlNPTihmYWxzZSkpXG4gICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBUcmFuc21pc3Npb25FcnJvcih0aGlzLl9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpLCBlcnIpXG4gICAgICAgICAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uZXJyb3IgPSBlcnJvclxuICAgICAgICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLnRoZW4oYWNjZXB0ZWQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhY2NlcHRlZCkge1xuICAgICAgICAgICAgICAgICAgICBKc29uUnBjUHJvdmlkZXIucmVjZWlwdHNbcmVjZWlwdC5oYXNoXS5zdGF0dXMgPSBcInJlbGF5ZWRcIlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF1cbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgVHJhbnNtaXNzaW9uRXJyb3IodGhpcy5fZ2V0SW5mbGlnaHRUcmFuc21pc3Npb24oKSwgRXJyb3IoYFJlamVjdGVkIGZvciB1bmtub3duIHJlYXNvbnNgKSlcbiAgICAgICAgICAgICAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW3JlY2VpcHQuaGFzaF0uZXJyb3IgPSBlcnJvclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNpZ25UcmFuc2FjdGlvbih0YXJnZXQ/OiBTcGVjcywgcmVsb2FkVXR4b3MgPSBmYWxzZSk6IFByb21pc2U8VHJhbnNhY3Rpb25SZWNlaXB0PiB7XG4gICAgICAgIHRhcmdldCA9IGF3YWl0IHRoaXMuX3BheWxvYWQudmFsaWRhdGVUYXJnZXQodGFyZ2V0KVxuICAgICAgICBpZiAoIXRhcmdldCkge1xuICAgICAgICAgICAgLy8gZS5nLiBpZiBjYWxsZWQgZnJvbSB0aGlzLnNlbmQoKSB3aXRoIG5vIHBhcmFtc1xuICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBzaWduIGEgdHJhbnNhY3Rpb24gaWYgbm8gcGFyYW1zIHdlcmUgcHJldmlvdXNseSBzcGVjaWZpZWQuYClcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgY29uc3QgaW5mbGlnaHQgPSB0aGlzLl9nZXRJbmZsaWdodFJlY2VpcHQoKVxuICAgICAgICBpZiAoaW5mbGlnaHQpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwic2lnbi5wZW5kaW5nUmVjZWlwdCA9PlwiLCBpbmZsaWdodClcbiAgICAgICAgICAgIGlmICghaW5mbGlnaHQ/LnN0YXR1cyB8fCBpbmZsaWdodC5zdGF0dXMgPT09IFwic2lnbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAvLyByZWNvdmVyIGlucHV0IHV0eG9zIGlmIHByZXZpb3VzbHkgc2lnbmVkIHBhcmFtcyB3ZXJlIG5vdCBldmVuIGF0dGVtcHRlZCB0byBiZSBzZW50XG4gICAgICAgICAgICAgICAgaWYgKCFyZWxvYWRVdHhvcykgdGhpcy5fcmVjb3ZlcklucHV0VXR4b3MoKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZmxpZ2h0LnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIgJiYgIWluZmxpZ2h0LmVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhyb3cgZXhjZXB0aW9uIGlmIGEgZm9ybWVybHkgc2lnbmVkIHRyYW5zYWN0aW9uIGlzIHN0aWxsIHdhaXRpbmcgdG8gYmUgcmVsYXllZCBieSBhIHByb3ZpZGVyXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW4tZmxpZ2h0IHR4IGJlaW5nIHJlbGF5ZWQ6ICR7aW5mbGlnaHQuaGFzaH1gKVxuICAgICAgICAgICAgfVxuICAgICAgICB9IFxuICAgICAgICBcbiAgICAgICAgLy8gY2xlYW4gY3VycmVudCBzaWduYXR1cmVzLCBzbyBuZXcgVVRYT3MgY2FuIGJlIGNvbnN1bWVkIGFuZCB0aGVyZWZvcmUgYSBuZXcgdHJhbnNhY3Rpb24gaGFzaCBiZSBpbmNlcHRlZFxuICAgICAgICB0aGlzLl9jbGVhblNpZ25hdHVyZXModGFyZ2V0KVxuICAgICAgICBcbiAgICAgICAgLy8gaWYgbm90IHlldCBwcmVwYXJlZCwgdHJ5IHRvIGNvdmVyIHRyYW5zYWN0aW9uIGV4cGVuc2VzIHdpdGggZXhpc3RpbmcgdXR4b3Mgb24gc2lnbmVyczpcbiAgICAgICAgaWYgKCF0aGlzLl9wYXlsb2FkLnByZXBhcmVkKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9wYXlsb2FkLmNvbnN1bWVVdHhvcyh0aGlzLmxlZGdlciwgcmVsb2FkVXR4b3MpXG4gICAgICAgICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGNhbm5vdCBjb25zdW1lIFVUWE9zIGZyb20gJHt0aGlzLmxlZGdlci5jb25zdHJ1Y3Rvci5uYW1lfSAke3RoaXMubGVkZ2VyLnBraH06ICR7ZXJyfS5gXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkgIFxuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoIXRoaXMuX3BheWxvYWQucHJlcGFyZWQpIHtcbiAgICAgICAgICAgIC8vIHRocm93cyBleGVjZXB0aW9uIGlmIG5vdCBlbm91Z2ggdXR4b3Mgd2VyZSBmb3VuZCB0byBjb3ZlciB0cmFuc2FjdGlvbiBleHBlbnNlczpcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGluc3VmZmljaWVudCBmdW5kcyBvbiAke3RoaXMubGVkZ2VyLmNvbnN0cnVjdG9yLm5hbWV9ICR7dGhpcy5sZWRnZXIucGtofS5gXG4gICAgICAgICAgICApXG4gICAgICAgIH0gXG5cbiAgICAgICAgLy8gZG91YmxlLWNoZWNrIHdlaWdodCBkb2VzIG5vdCBleGNlZWRzIGJsb2NrIGxpbWl0Li4uXG4gICAgICAgIGlmICh0aGlzLl9wYXlsb2FkLndlaWdodCA+IHRoaXMuX3BheWxvYWQubWF4V2VpZ2h0KSB7XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiB3ZWlnaHQgZXhjZWVkZWQgYmxvY2sgbGltaXQ6ICR7dGhpcy5fcGF5bG9hZC53ZWlnaHR9ID4gJHt0aGlzLl9wYXlsb2FkLm1heFdlaWdodH0uYFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2lnbmluZyB0aGUgdHJhbnNhY3Rpb24gcGF5bG9hZCBnZW5lcmF0ZXMgdGhlIHRyYW5zYWN0aW9uIGhhc2gsIGFuZCB0aGUgcmVjZWlwdFxuICAgICAgICByZXR1cm4gdGhpcy5fdXBzZXJ0VHJhbnNhY3Rpb25SZWNlaXB0KHRoaXMuX3NpZ25UcmFuc2FjdGlvblBheWxvYWQoKSwgdGFyZ2V0LCBcInNpZ25lZFwiKSAgICBcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgY29uZmlybVRyYW5zYWN0aW9uKFxuICAgICAgICBoYXNoOiBIYXNoLCBcbiAgICAgICAgb3B0aW9ucz86IHtcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXIsXG4gICAgICAgICAgICB0aW1lb3V0U2Vjcz86IG51bWJlcixcbiAgICAgICAgICAgIG9uQ2hlY2twb2ludD86IFRyYW5zYWN0aW9uQ2FsbGJhY2ssXG4gICAgICAgICAgICBvblN0YXR1c0NoYW5nZT86IFRyYW5zYWN0aW9uQ2FsbGJhY2ssXG4gICAgICAgIH1cbiAgICApOiBQcm9taXNlPFRyYW5zYWN0aW9uUmVjZWlwdD4ge1xuXG4gICAgICAgIGxldCByZWNlaXB0ID0gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXG4gICAgICAgIGlmICghcmVjZWlwdCB8fCByZWNlaXB0Lmhhc2ggIT09IGhhc2gpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiB0cmFuc2FjdGlvbiBub3QgZm91bmQ6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChbXCJzaWduZWRcIiwgXCJwZW5kaW5nXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHN0YXR1cyBcIiR7cmVjZWlwdC5zdGF0dXN9XCI6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZW1vdmVkXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNZW1wb29sRXJyb3IocmVjZWlwdCwgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogdHJhbnNhY3Rpb24gcmVtb3ZlZCBmcm9tIG1lbXBvb2w6ICR7aGFzaH1gKVxuICAgICAgICBcbiAgICAgICAgfSBlbHNlIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJyZWxheWVkXCIgJiYgb3B0aW9ucz8ub25TdGF0dXNDaGFuZ2UpIHRyeSB7XG4gICAgICAgICAgICBvcHRpb25zLm9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpXG4gICAgICAgIH0gY2F0Y2gge307XG5cbiAgICAgICAgY29uc3QgZ2xvYmFsVGltZXIgPSAoc3RhcnQ6IG51bWJlciwgbXM6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChfLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiByZWplY3QoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogcG9sbGluZyB0aW1lb3V0IGFmdGVyICR7TWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHN0YXJ0KSAvIDEwMDApfSBzZWNzKS5gKSwgXG4gICAgICAgICAgICAgICAgICAgIG1zXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgW2NvbmZpcm1hdGlvbnMsIGludGVydmFsLCB0aW1lb3V0LCBnbG9iYWxUaW1lb3V0XSA9IFtcbiAgICAgICAgICAgIG9wdGlvbnM/LmNvbmZpcm1hdGlvbnMgfHwgMCxcbiAgICAgICAgICAgIDEwMDAwLFxuICAgICAgICAgICAgNTAwMCxcbiAgICAgICAgICAgIChvcHRpb25zPy50aW1lb3V0U2VjcyB8fCA2MDApICogMTAwMCxcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgICAgIGdsb2JhbFRpbWVyKERhdGUubm93KCksIGdsb2JhbFRpbWVvdXQpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChyZWFzb246IGFueSkgPT4geyB0aHJvdyBuZXcgVGltZW91dEVycm9yKGdsb2JhbFRpbWVvdXQsIHJlY2VpcHQsIHJlYXNvbikgfSksXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHByb21pc2VQb2xsZXIoe1xuICAgICAgICAgICAgICAgIHRhc2tGbjogKCkgPT4gdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbihoYXNoKSxcbiAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZTogKGVycm9yOiBhbnksIHJlcG9ydDogVHJhbnNhY3Rpb25SZXBvcnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhdHVzID0gcmVjZWlwdC5zdGF0dXNcbiAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5lcnJvciA9IGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm1lc3NhZ2UuaW5kZXhPZihcIm5vdCBmb3VuZFwiKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVtb3ZlZFwiXG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugc3dpdGNoIChyZWNlaXB0LnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcInJlbGF5ZWRcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwb3J0Py5ibG9ja0hhc2ggJiYgaXNIZXhTdHJpbmcocmVwb3J0LmJsb2NrSGFzaCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja0hhc2ggPSByZXBvcnQuYmxvY2tIYXNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LmJsb2NrRXBvY2ggPSByZXBvcnQuYmxvY2tFcG9jaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcCA9IHJlcG9ydC5ibG9ja1RpbWVzdGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydC5jb25maXJtZWQgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImZpbmFsaXplZFwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKHJlcG9ydD8uY29uZmlybWF0aW9ucyA+PSBjb25maXJtYXRpb25zID8gXCJjb25maXJtZWRcIiA6IFwibWluZWRcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXCJtaW5lZFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVwb3J0Py5ibG9ja0hhc2ggfHwgcmVwb3J0LmJsb2NrSGFzaCAhPT0gcmVjZWlwdC5ibG9ja0hhc2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tIYXNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSByZWNlaXB0LmJsb2NrRXBvY2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHJlY2VpcHQuYmxvY2tNaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVjZWlwdC5ibG9ja1RpbWVzdGFtcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXB0LnN0YXR1cyA9IFwicmVsYXllZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5zdGF0dXMgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvcnQuY29uZmlybWVkIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJmaW5hbGl6ZWRcIiBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChyZXBvcnQ/LmNvbmZpcm1hdGlvbnMgPj0gY29uZmlybWF0aW9ucyA/IFwiY29uZmlybWVkXCIgOiBcIm1pbmVkXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBvcnQuY29uZmlybWF0aW9ucyAhPT0gcmVjZWlwdC5jb25maXJtYXRpb25zKSB7ICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC5jb25maXJtYXRpb25zID0gcmVwb3J0LmNvbmZpcm1hdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0LnN0YXR1cyA9PT0gXCJtaW5lZFwiICYmIG9wdGlvbnM/Lm9uQ2hlY2twb2ludCkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ2hlY2twb2ludChyZWNlaXB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9PSByZWNlaXB0LnN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50aW1lc3RhbXAgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSBcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghW1wiY29uZmlybWVkXCIsIFwiZmluYWxpemVkXCJdLmluY2x1ZGVzKHJlY2VpcHQuc3RhdHVzKSAmJiBvcHRpb25zPy5vblN0YXR1c0NoYW5nZSkgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uU3RhdHVzQ2hhbmdlKHJlY2VpcHQpXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXSA9IHJlY2VpcHRcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcInJlbGF5ZWRcIiwgXCJtaW5lZFwiXS5pbmNsdWRlcyhyZWNlaXB0LnN0YXR1cylcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGludGVydmFsLCB0aW1lb3V0LCBcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgfSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlY2VpcHQuc3RhdHVzID09PSBcInJlbW92ZWRcIiAmJiByZWNlaXB0LnR5cGUgIT09IFwiVW5zdGFrZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRSQU5TQUNUSU9OIFJFTU9WRUQgRlJPTSBNRU1QT09MIC8vXG4gICAgICAgICAgICAgICAgICAgIC8vIDEuIFRyeSB0byByZWNvdmVyIGlucHV0IHV0eG9zIGJlbG9uZ2luZyB0byBsZWRnZXIncyBhZGRyZXNzZXM6XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dHM6IEFycmF5PFV0eG9NZXRhZGF0YT4gPSByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keS5pbnB1dHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZXM6IEFycmF5PEtleWVkU2lnbmF0dXJlPiA9IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5zaWduYXR1cmVzXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0cy5sZW5ndGggPT09IHNpZ25hdHVyZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRzLmZvckVhY2goKG1ldGFkYXRhLCBpbmRleCkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubWV0YWRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogUHVibGljS2V5LmZyb21Qcm90b2J1ZihzaWduYXR1cmVzW2luZGV4XS5wdWJsaWNfa2V5KS5oYXNoKCkudG9CZWNoMzIodGhpcy5uZXR3b3JrKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGVkZ2VyLmFkZFV0eG9zKC4uLnV0eG9zKVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogd2FybmluZzogY2Fubm90IHJlY292ZXIgaW5wdXQgVVRYT1MgZnJvbSB0eCAke2hhc2h9OiAke2Vycn1gKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8vIDIuIFRocm93IE1lbXBvb2xFcnJvclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWVtcG9vbEVycm9yKHJlY2VpcHQsIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHRyYW5zYWN0aW9uIHJlbW92ZWQgZnJvbSBtZW1wb29sOiAke2hhc2h9YCk7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVFJBTlNBQ1RJT04gRUlUSEVSIENPTkZJUk1FRCBPUiBGSU5BTElaRUQgLy9cbiAgICAgICAgICAgICAgICAgICAgLy8gMS4gVHJ5IHRvIGxvYWQgdmFsdWUgdHJhbnNmZXIgb3V0cHV0cyBpbnRvIHRoZSBsZWRnZXIncyBsb2NhbCBjYWNoZTogXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1dHhvczogQXJyYXk8VXR4bz4gPSBbXVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFtcIlN0YWtlXCIsIFwiVW5zdGFrZVwiXS5pbmNsdWRlcyhyZWNlaXB0LnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZ0bzogVmFsdWVUcmFuc2Zlck91dHB1dCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWlwdC50eXBlID09PSBcIlN0YWtlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVjZWlwdC50eFtyZWNlaXB0LnR5cGVdLmJvZHk/Lm91dHB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiByZWNlaXB0LnR4W3JlY2VpcHQudHlwZV0uYm9keT8ud2l0aGRyYXdhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZ0bykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dHhvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHtyZWNlaXB0Lmhhc2h9OjBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dHhvX21hdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduZXI6IHZ0by5wa2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRzOiBBcnJheTxWYWx1ZVRyYW5zZmVyT3V0cHV0PiA9IHJlY2VpcHQudHhbcmVjZWlwdC50eXBlXS5ib2R5Py5vdXRwdXRzIHx8IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB1dHhvcy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X3BvaW50ZXI6IGAke3JlY2VpcHQuaGFzaH06JHtpbmRleH1gLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbG9jazogdnRvLnRpbWVfbG9jayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXR4b19tYXR1cmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ25lcjogdnRvLnBraCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGJlZm9yZSA9PlwiLCB1dHhvcylcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwib3V0cHV0IHV0eG9zIGFmdGVyICA9PlwiLCB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcykpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcylcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IHdhcm5pbmc6IGNhbm5vdCByZWNvdmVyIG91dHB1dCBVVFhPcyBmcm9tICR7aGFzaH06ICR7ZXJyfWApXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gMi4gQWRkIGJsb2NrTWluZXIgYWRkcmVzcyB0byB0aGUgdHJhbnNhY3Rpb24gcmVjZWlwdDogXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWNlaXB0Py5ibG9ja0hhc2ggJiYgaXNIZXhTdHJpbmcocmVjZWlwdC5ibG9ja0hhc2gpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHRoaXMucHJvdmlkZXIuZ2V0QmxvY2socmVjZWlwdC5ibG9ja0hhc2ggfHwgXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXS5ibG9ja01pbmVyID0gUHVibGljS2V5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Qcm90b2J1ZihibG9jay5ibG9ja19zaWcucHVibGljX2tleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaGFzaCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRvQmVjaDMyKHRoaXMubmV0d29yayk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdGlvbnM/Lm9uU3RhdHVzQ2hhbmdlKSB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5vblN0YXR1c0NoYW5nZShyZWNlaXB0KVxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIHt9O1xuICAgICAgICAgICAgICAgICAgICAvLyAzLiBSZXR1cm4gdHJhbnNhY3Rpb24gcmVjZWlwdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgIF0pXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jbGVhblNpZ25hdHVyZXMobmV3VGFyZ2V0OiBTcGVjcyk6IGFueSB7XG4gICAgICAgIHRoaXMuX3BheWxvYWQucmVzZXRUYXJnZXQobmV3VGFyZ2V0KVxuICAgICAgICB0aGlzLl9zaWduYXR1cmVzID0gW11cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKTogVWludDhBcnJheSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IG9iaiA9IHRoaXMuX3RvUHJvdG9idWYoKVxuICAgICAgICBjb25zdCBlcnIgPSB0aGlzLl9wcm90b0J1Zi52ZXJpZnkob2JqKVxuICAgICAgICBpZiAoIWVycikge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuX3Byb3RvQnVmLmZyb21PYmplY3Qob2JqKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3RvQnVmLmVuY29kZShtZXNzYWdlKS5maW5pc2goKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFJlY2VpcHQoKTogVHJhbnNhY3Rpb25SZWNlaXB0IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuX3BheWxvYWQuaGFzaFxuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIEpzb25ScGNQcm92aWRlci5yZWNlaXB0c1toYXNoXVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9nZXRJbmZsaWdodFRyYW5zbWlzc2lvbigpOiBUcmFuc21pc3Npb24ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnl0ZWNvZGU6IHRoaXMuX2dldEluZmxpZ2h0Qnl0ZWNvZGUoKSxcbiAgICAgICAgICAgIGhhc2g6IHRoaXMuX3BheWxvYWQuaGFzaCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuX3RvSlNPTih0cnVlKSxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfcmVjb3ZlcklucHV0VXR4b3MoKTogYW55IHt9XG4gICAgcHJvdGVjdGVkIF9yZWNvdmVyT3V0cHV0VXR4b3MoKTogYW55IHt9XG5cbiAgICBwcm90ZWN0ZWQgX3Vwc2VydFRyYW5zYWN0aW9uUmVjZWlwdChoYXNoOiBIYXNoLCB0YXJnZXQ6IFNwZWNzLCBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzKTogVHJhbnNhY3Rpb25SZWNlaXB0IHtcbiAgICAgICAgSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdID0ge1xuICAgICAgICAgICAgLi4udGhpcy5fcGF5bG9hZC5pbnRvUmVjZWlwdCh0YXJnZXQsIHRoaXMubmV0d29yayksXG4gICAgICAgICAgICBoYXNoLFxuICAgICAgICAgICAgY2hhbmdlOiB0aGlzLl9wYXlsb2FkLmNoYW5nZSxcbiAgICAgICAgICAgIGZlZXM6IHRoaXMuX3BheWxvYWQuZmVlcyxcbiAgICAgICAgICAgIGZyb206IHRoaXMuX2Zyb20sXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICB0aW1lc3RhbXA6IE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApLFxuICAgICAgICAgICAgdHg6IHRoaXMuX3RvSlNPTih0cnVlKSxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLl9wYXlsb2FkLnZhbHVlLFxuICAgICAgICAgICAgd2VpZ2h0OiB0aGlzLl9wYXlsb2FkLndlaWdodCxcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gSnNvblJwY1Byb3ZpZGVyLnJlY2VpcHRzW2hhc2hdXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF9zaWduVHJhbnNhY3Rpb25QYXlsb2FkKCk6IEhhc2g7XG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IF90b0pTT04oX2h1bWFuaXplOiBib29sZWFuKTogYW55O1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBfdG9Qcm90b2J1ZigpOiBhbnk7XG59XG5cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbWl0dGVyTXVsdGlTaWc8U3BlY3MsIFBheWxvYWQgZXh0ZW5kcyBJVHJhbnNhY3Rpb25QYXlsb2FkTXVsdGlTaWc8U3BlY3M+PiBcbiAgICBleHRlbmRzIFRyYW5zbWl0dGVyPFNwZWNzLCBQYXlsb2FkPiBcbntcbiAgICBjb25zdHJ1Y3RvciAocHJvdG9UeXBlTmFtZTogc3RyaW5nLCBwYXlsb2FkOiBQYXlsb2FkLCBsZWRnZXI6IElMZWRnZXIsIGNoYW5nZVBraD86IFB1YmxpY0tleUhhc2hTdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocHJvdG9UeXBlTmFtZSwgcGF5bG9hZCwgbGVkZ2VyLCBjaGFuZ2VQa2gpXG4gICAgICAgIHRoaXMuX3BheWxvYWQgPSBwYXlsb2FkO1xuICAgIH1cblxuICAgIC8vLyBSZWNvdmVyIGZvcm1lcmx5IGNvbnN1bWVkIFVUWE9zIGJ5IGEgZmFpbGluZyB0cmFuc2FjdGlvbiBiYWNrIHRvIHRoZWlyIHJlc3BlY3RpdmUgc2lnbmVyJ3MgVVRYTyBwb29sXG4gICAgcHJvdGVjdGVkIF9yZWNvdmVySW5wdXRVdHhvcygpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5pbnB1dHMpIHsgICAgXG4gICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi50aGlzLl9wYXlsb2FkLmlucHV0cylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vLyBSZWNvdmVyIHNlbGYtdGFyZ2V0ZWQgb3V0cHV0cyBhcyBleHBlbmRhYmxlIHV0eG9zIG9uIHRoZWlyIHJlc3BlY3RpdmUgc2lnbmVyJ3MgbWVtb2l6ZWQgY2FjaGVcbiAgICBwcm90ZWN0ZWQgX3JlY292ZXJPdXRwdXRVdHhvcygpOiBhbnkge1xuICAgICAgICBpZiAodGhpcy5fcGF5bG9hZC5oYXNoICYmIHRoaXMuX3BheWxvYWQub3V0cHV0cykge1xuICAgICAgICAgICAgY29uc3QgdXR4b3M6IEFycmF5PFV0eG8+ID0gW11cbiAgICAgICAgICAgIHRoaXMuX3BheWxvYWQub3V0cHV0cy5mb3JFYWNoKCh2dG8sIGluZGV4KSA9PiB7ICAgIFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxlZGdlci5nZXRTaWduZXIodnRvLnBraCkpIHV0eG9zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBzaWduZXI6IHZ0by5wa2gsXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dF9wb2ludGVyOiBgJHt0aGlzLl9wYXlsb2FkLmhhc2h9OiR7aW5kZXh9YCxcbiAgICAgICAgICAgICAgICAgICAgdGltZWxvY2s6IHZ0by50aW1lX2xvY2ssXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2dG8udmFsdWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB0aGlzLmxlZGdlci5hZGRVdHhvcyguLi51dHhvcylcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBfc2lnblRyYW5zYWN0aW9uUGF5bG9hZCgpOiBIYXNoIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuX3BheWxvYWQuaGFzaFxuICAgICAgICBpZiAoIWhhc2gpIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB1bmFibGUgdG8gaGFzaGlmeSBwYXlsb2FkOiAke3RoaXMuX3BheWxvYWQudG9KU09OKHRydWUsIHRoaXMubmV0d29yayl9fS5gXG4gICAgICAgICAgICApXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9wYXlsb2FkLmlucHV0cy5mb3JFYWNoKHV0eG8gPT4geyBcbiAgICAgICAgICAgICAgICBjb25zdCBzaWduZXIgPSB0aGlzLmxlZGdlci5nZXRTaWduZXIodXR4by5zaWduZXIpXG4gICAgICAgICAgICAgICAgaWYgKCFzaWduZXIpIHRocm93IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogY2Fubm90IGZpbmQgU2lnbmVyICR7dXR4by5zaWduZXJ9IGluICR7dGhpcy5sZWRnZXIuY29uc3RydWN0b3IubmFtZX0gJHt0aGlzLmxlZGdlci5wa2h9LmAgICAgXG4gICAgICAgICAgICAgICAgKTsgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGAuLi5zaWduZXIgJHtzaWduZXIucGtofSBzaWduaW5nIGhhc2ggJHtoYXNofS4uLmApXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NpZ25hdHVyZXMucHVzaChzaWduZXIuc2lnbkhhc2goaGFzaCkpIFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4gaGFzaFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b0pTT04oaHVtYW5pemU6IGJvb2xlYW4pOiBhbnkge1xuICAgICAgICByZXR1cm4geyBcbiAgICAgICAgICAgIFt0aGlzLnR5cGVdOiB7IFxuICAgICAgICAgICAgICAgIGJvZHk6IHRoaXMuX3BheWxvYWQudG9KU09OKGh1bWFuaXplLCB0aGlzLm5ldHdvcmspLFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHRoaXMuX3NpZ25hdHVyZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF90b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLl9wYXlsb2FkLnRvUHJvdG9idWYoKVxuICAgICAgICBpZiAoYm9keSAmJiB0aGlzLl9zaWduYXR1cmVzKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlczogdGhpcy5fc2lnbmF0dXJlcyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -269,4 +269,4 @@ exports.TransmissionError = TransmissionError;
|
|
|
269
269
|
function matchingUint8Arrays(a, b) {
|
|
270
270
|
return a.length === b.length && a.every((value, index) => value === b[index]);
|
|
271
271
|
}
|
|
272
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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O1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBQ0QsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxPQUFnQjtRQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7Q0FDSjtBQUpELG9DQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBRTlDLFlBQWEsS0FBYSxFQUFFLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFORCxvQ0FNQztBQUdELE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUd4QyxZQUFZLFFBQXNCLEVBQUUsS0FBVztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFURCw4Q0FTQztBQUdELHVIQUF1SDtBQUN2SCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKCdzZWNwMjU2azEnKVxyXG5pbXBvcnQgeyBiZWNoMzIgfSBmcm9tICdiZWNoMzInXHJcbmltcG9ydCB7IEJhbGFuY2UsIEVwb2NoLCBIYXNoLCBIZXhTdHJpbmcsIFV0eG9NZXRhZGF0YSB9IGZyb20gXCIuLi90eXBlc1wiXHJcblxyXG5pbXBvcnQgeyBmcm9tSGV4U3RyaW5nLCBpc0hleFN0cmluZywgdG9IZXhTdHJpbmcsIHdob2xlX3dpdHMgfSBmcm9tIFwiLi4vLi4vYmluL2hlbHBlcnNcIlxyXG5pbXBvcnQgeyBzaGEyNTYgfSBmcm9tIFwiLi91dGlsc1wiXHJcblxyXG5leHBvcnQgY2xhc3MgQ29pbnMge1xyXG4gICAgcHJvdGVjdGVkIGNvaW5zOiBiaWdpbnQ7XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21CYWxhbmNlKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIENvaW5zLmZyb21QZWRyb3MoXHJcbiAgICAgICAgICAgIGJhbGFuY2UubG9ja2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2Uuc3Rha2VkXHJcbiAgICAgICAgICAgICAgICArIGJhbGFuY2UudW5sb2NrZWRcclxuICAgICAgICApXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21OYW5vd2l0cyhuYW5vd2l0czogYmlnaW50KTogQ29pbnMge1xyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMobmFub3dpdHMpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21QZWRyb3MocGVkcm9zOiBiaWdpbnQpOiBDb2lucyB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucyhwZWRyb3MpXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc3RhdGljIGZyb21XaXRzKHdpdHM6IG51bWJlcik6IENvaW5zIHtcclxuICAgICAgICBpZiAod2l0cyA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXHJcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmNvbnN0cnVjdG9yLm5hbWV9OiBpbnRlcm5hbCBlcnJvcjogdG9vIG1hbnkgd2l0czogJHt3aXRzfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQ29pbnMoXHJcbiAgICAgICAgICAgIEJpZ0ludChNYXRoLmZsb29yKHdpdHMpKSAqIDEwbiAqKiA5blxyXG4gICAgICAgICAgICAgICAgKyBCaWdJbnQoTWF0aC5mbG9vcigod2l0cyAtIE1hdGguZmxvb3Iod2l0cykpICogMTAwMDAwMDAwMCkpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG4gICAgcHVibGljIHN0YXRpYyB6ZXJvKCk6IENvaW5zIHtcclxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKDBuKVxyXG4gICAgfVxyXG4gICAgY29uc3RydWN0b3IgKHBlZHJvczogYmlnaW50KSB7XHJcbiAgICAgICAgdGhpcy5jb2lucyA9IHBlZHJvc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBwZWRyb3MoKTogYmlnaW50IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBuYW5vd2l0cygpOiBiaWdpbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvaW5zXHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHdpdHMoKTogbnVtYmVyIHtcclxuICAgICAgICBjb25zdCBxdW90aWVudCA9IEJpZ0ludCh0aGlzLmNvaW5zKSAvIDEwMDAwMDAwMDBuXHJcbiAgICAgICAgaWYgKE51bWJlcihxdW90aWVudCkgPiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUikge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxyXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IGNvaW5zOiAke3F1b3RpZW50LnRvU3RyaW5nKCl9ID4gJHtOdW1iZXIuTUFYX1NBRkVfSU5URUdFUn1gXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzdCA9IE51bWJlcihCaWdJbnQodGhpcy5jb2lucykgLSBxdW90aWVudCAqIDEwMDAwMDAwMDBuKSAvIDEwMDAwMDAwMDBcclxuICAgICAgICByZXR1cm4gTnVtYmVyKHF1b3RpZW50KSArIHJlc3RcclxuICAgIH1cclxuICAgIHB1YmxpYyB0b1N0cmluZyhkZWNpbWFscyA9IDkpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB3aG9sZV93aXRzKHRoaXMuY29pbnMsIGRlY2ltYWxzKVxyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gQXJyYXk8bnVtYmVyPlxyXG5cclxuZXhwb3J0IHR5cGUgS2V5ZWRTaWduYXR1cmUgPSB7XHJcbiAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXk8bnVtYmVyPiB9fSxcclxuICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICBieXRlczogQXJyYXk8bnVtYmVyPjtcclxuICAgICAgICBjb21wcmVzc2VkOiBudW1iZXIsXHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHR5cGUgUHVibGljS2V5SGFzaFN0cmluZyA9IEhleFN0cmluZ1xyXG5cclxuaW50ZXJmYWNlIEtleSB7XHJcbiAgICBieXRlczogVWludDhBcnJheTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBQcml2YXRlS2V5IGV4dGVuZHMgS2V5IHtcclxuICAgIHR5cGU6IFwicHJpdmF0ZVwiO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFB1YmxpY0tleSBleHRlbmRzIEtleSB7XHJcbiAgICB0eXBlOiBcInB1YmxpY1wiO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrID0gKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgZXJyb3I/OiBhbnkpID0+IGFueVxyXG5cclxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25QYXJhbXMgPSB7XHJcbiAgICBkZWFkbGluZT86IEVwb2NoLFxyXG4gICAgZmVlcz86IFRyYW5zYWN0aW9uUHJpb3JpdHkgfCBDb2lucyxcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25Qcmlvcml0eSB7XHJcbiAgICBTdGlua3kgPSBcInN0aW5reVwiLFxyXG4gICAgTG93ID0gXCJsb3dcIixcclxuICAgIE1lZGl1bSA9IFwibWVkaXVtXCIsXHJcbiAgICBIaWdoID0gXCJoaWdoXCIsXHJcbiAgICBPcHVsZW50ID0gXCJvcHVsZW50XCIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcclxuICAgIGF1dGhvcml6YXRpb24/OiBIZXhTdHJpbmc7XHJcbiAgICBibG9ja0Vwb2NoPzogRXBvY2gsXHJcbiAgICBibG9ja0hhc2g/OiBIYXNoLFxyXG4gICAgYmxvY2tNaW5lcj86IFB1YmxpY0tleUhhc2hTdHJpbmcsXHJcbiAgICBibG9ja1RpbWVzdGFtcD86IG51bWJlcixcclxuICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XHJcbiAgICBjaGFuZ2U/OiBDb2lucztcclxuICAgIGRyb0hhc2g/OiBIYXNoO1xyXG4gICAgZXJyb3I/OiBFcnJvcixcclxuICAgIGZlZXM6IENvaW5zO1xyXG4gICAgZnJvbT86IEFycmF5PFB1YmxpY0tleUhhc2hTdHJpbmc+IHwgUHVibGljS2V5SGFzaFN0cmluZztcclxuICAgIGhhc2g6IEhhc2g7XHJcbiAgICBvdXRwdXRMb2NrPzogbnVtYmVyO1xyXG4gICAgcmFkQXJncz86IGFueTtcclxuICAgIHJhZEhhc2g/OiBIZXhTdHJpbmc7XHJcbiAgICByZWNpcGllbnRzPzogQXJyYXk8W1B1YmxpY0tleUhhc2hTdHJpbmcsIENvaW5zXT47XHJcbiAgICBzdGF0dXM6IHN0cmluZztcclxuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgdHg/OiBhbnk7XHJcbiAgICB2YWxpZGF0b3I/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xyXG4gICAgdmFsdWU/OiBDb2lucztcclxuICAgIHdlaWdodDogbnVtYmVyO1xyXG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XHJcbiAgICB3aXRuZXNzZXM/OiBudW1iZXIgfCBSZWNvcmQ8UHVibGljS2V5SGFzaFN0cmluZywgQ29pbnM+O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblN0YXR1cyA9IFwic2lnbmVkXCIgfCBcInBlbmRpbmdcIiB8IFwicmVsYXllZFwiIHwgXCJyZW1vdmVkXCIgfCBcIm1pbmVkXCIgfCBcImNvbmZpcm1lZFwiIHwgXCJmaW5hbGl6ZWRcIjtcclxuXHJcbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcclxuICAgIGJ5dGVjb2RlPzogVWludDhBcnJheSxcclxuICAgIGhhc2g/OiBIYXNoO1xyXG4gICAgbWVzc2FnZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBVdHhvID0gVXR4b01ldGFkYXRhICYgeyBzaWduZXI6IFB1YmxpY0tleUhhc2hTdHJpbmcgfVxyXG5cclxuZXhwb3J0IHR5cGUgVXR4b0NhY2hlSW5mbyA9IHtcclxuICAgIC8vIHRvdGFsIGFtb3VudCBvZiBleHBlbmRhYmxlIGZ1bmRzIHdpdGggY3VycmVudGx5IGNhY2hlZCBVVFhPc1xyXG4gICAgZXhwZW5kYWJsZTogYmlnaW50LCBcclxuICAgIC8vIG51bWJlciBvZiBjYWNoZWQgVVRYT3NcclxuICAgIHNpemU6IG51bWJlciwgXHJcbiAgICAvLyBlYXJsaWVzdCBvZiBhbGwgdGltZWxvY2tzIGluIHRoZSBjYWNow6lcclxuICAgIHRpbWVsb2NrOiBudW1iZXIsXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFV0eG9Qb2ludGVyID0ge1xyXG4gICAgLy8gdHJhbnNhY3Rpb24gaWRlbnRpZmllclxyXG4gICAgdHJhbnNhY3Rpb25faWQ6IEhhc2g7XHJcbiAgICAvLyBvdXRwdXQgaW5kZXggd2l0aGluIHJlZmVycmVkIHRyYW5zYWN0aW9uXHJcbiAgICBvdXRwdXRfaW5kZXg6IG51bWJlcjtcclxufTtcclxuXHJcbmV4cG9ydCBlbnVtIFV0eG9TZWxlY3Rpb25TdHJhdGVneSB7XHJcbiAgICBCaWdGaXJzdCA9IFwiYmlnLWZpcnN0XCIsXHJcbiAgICBSYW5kb20gPSBcInJhbmRvbVwiLFxyXG4gICAgU2xpbUZpdCA9IFwic2xpbS1maXRcIixcclxuICAgIFNtYWxsRmlyc3QgPSBcInNtYWxsLWZpcnN0XCIsXHJcbn1cclxuXHJcblxyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xyXG4vLy8gRVhQT1JURUQgQ0xBU1NFUyBcclxuXHJcbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XHJcbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBLZXkge1xyXG4gICAgXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29tcHJlc3NlZDogbnVtYmVyO1xyXG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xyXG5cclxuICAgIHN0YXRpYyBmcm9tUHJvdG9idWYocHJvdG9idWY6IHsgY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogQXJyYXk8bnVtYmVyPiB9KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShwcm90b2J1Zi5jb21wcmVzc2VkLCBVaW50OEFycmF5LmZyb20ocHJvdG9idWYuYnl0ZXMpKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tVWludDhBcnJheSh1aW50OEFycmF5OiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShcclxuICAgICAgICAgICAgdWludDhBcnJheVswXSxcclxuICAgICAgICAgICAgdWludDhBcnJheS5zbGljZSgxKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyByZWNvdmVyRnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXkge1xyXG4gICAgICAgIGxldCBieXRlc1xyXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBmcm9tSGV4U3RyaW5nKHJlY292ZXJhYmxlKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBCdWZmZXIpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKVxyXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3ZlcmFibGUgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgICAgIGJ5dGVzID0gcmVjb3ZlcmFibGVcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXk6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiBleHBlY3RlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgd2l0aCBsZW5ndGggNjU6ICR7dG9IZXhTdHJpbmcoYnl0ZXMpfWApXHJcbiAgICAgICAgfSBcclxuICAgICAgICBjb25zdCBbIHJlY292ZXJ5SWQsIHNpZ25hdHVyZSBdID0gWyBieXRlc1swXSwgYnl0ZXMuc2xpY2UoMSkgXVxyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXkuZnJvbVVpbnQ4QXJyYXkoc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihzaWduYXR1cmUsIHJlY292ZXJ5SWQsIG1zZykpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoY29tcHJlc3NlZDogbnVtYmVyLCBieXRlczogVWludDhBcnJheSkge1xyXG4gICAgICAgIHRoaXMuY29tcHJlc3NlZCA9IGNvbXByZXNzZWRcclxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZXF1YWxzKHB1YktleTogUHVibGljS2V5KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHB1YktleS5jb21wcmVzc2VkID09PSB0aGlzLmNvbXByZXNzZWQgJiYgbWF0Y2hpbmdVaW50OEFycmF5cyhwdWJLZXkuYnl0ZXMsIHB1YktleS5ieXRlcylcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaGFzaCgpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tUHVibGljS2V5KHRoaXMpXHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b1VpbnQ4QXJyYXkoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShbdGhpcy5jb21wcmVzc2VkLCAuLi50aGlzLmJ5dGVzXSlcclxuICAgIH1cclxufTtcclxuXHJcblxyXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG5leHBvcnQgY2xhc3MgUHVibGljS2V5SGFzaCB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IYXNoKGhhc2g6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLnRvV29yZHMoaGFzaCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhhc2g6IEhleFN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21IYXNoKGZyb21IZXhTdHJpbmcoaGFzaCkpXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHN0YXRpYyBmcm9tUHVibGljS2V5KHBrOiBQdWJsaWNLZXkpOiBQdWJsaWNLZXlIYXNoIHtcclxuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChcclxuICAgICAgICAgICAgc2hhMjU2KFxyXG4gICAgICAgICAgICAgICAgQnVmZmVyLmZyb20oW3BrLmNvbXByZXNzZWQsIC4uLnBrLmJ5dGVzXSlcclxuICAgICAgICAgICAgKS5zdWJhcnJheSgwLCAyMClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBzdGF0aWMgZnJvbUJlY2gzMihwa2g6IHN0cmluZyk6IFB1YmxpY0tleUhhc2gge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHBraCA9IHBraC50b0xvd2VyQ2FzZSgpXHJcbiAgICAgICAgICAgIGlmIChwa2guc3RhcnRzV2l0aCgnd2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjYpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBraC5zdGFydHNXaXRoKCd0d2l0JykpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5SGFzaChiZWNoMzIuZGVjb2RlKHBraCwgNjcpLndvcmRzKVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5SGFzaDogaW52YWxpZCBiZWNoMzIgc3RyaW5nOiAke3BraH1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgd29yZHM6IG51bWJlcltdO1xyXG4gICAgXHJcbiAgICBjb25zdHJ1Y3Rvcih3b3JkczogbnVtYmVyW10pIHtcclxuICAgICAgICB0aGlzLndvcmRzID0gd29yZHNcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CZWNoMzIobmV0d29yayA9IFwibWFpbm5ldFwiKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbmV0d29yayA9PT0gXCJtYWlubmV0XCIgPyBiZWNoMzIuZW5jb2RlKCd3aXQnLCB0aGlzLndvcmRzLCA2NikgOiBiZWNoMzIuZW5jb2RlKCd0d2l0JywgdGhpcy53b3JkcywgNjcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0J5dGVzMjAoKTogVWludDhBcnJheSB7XHJcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9CeXRlczMyKCk6IFVpbnQ4QXJyYXkge1xyXG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW1xyXG4gICAgICAgICAgICAuLi5iZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSxcclxuICAgICAgICAgICAgLi4ubmV3IEFycmF5KDEyKS5maWxsKDApLFxyXG4gICAgICAgIF0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLnRvQnl0ZXMyMCgpKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFNpZ25hdHVyZSB7XHJcblxyXG4gICAgc3RhdGljIGZyb21IZXhTdHJpbmcoaGV4OiBzdHJpbmcpOiBTaWduYXR1cmUge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKGZyb21IZXhTdHJpbmcoaGV4KSlcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgYnl0ZXM6IFVpbnQ4QXJyYXk7XHJcblxyXG4gICAgY29uc3RydWN0b3IgKGJ5dGVzOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgdGhpcy5ieXRlcyA9IGJ5dGVzXHJcbiAgICB9XHJcbiAgICBcclxuICAgIHB1YmxpYyB0b0hleFN0cmluZygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLmJ5dGVzKVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuZXhwb3J0IGNsYXNzIFJlY292ZXJhYmxlU2lnbmF0dXJlIGV4dGVuZHMgU2lnbmF0dXJlIHtcclxuXHJcbiAgICBzdGF0aWMgZnJvbShyZWNvdmVyYWJsZTogYW55LCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgbGV0IGJ5dGVzXHJcbiAgICAgICAgaWYgKGlzSGV4U3RyaW5nKHJlY292ZXJhYmxlKSkge1xyXG4gICAgICAgICAgICBieXRlcyA9IGZyb21IZXhTdHJpbmcocmVjb3ZlcmFibGUpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xyXG4gICAgICAgICAgICBieXRlcyA9IFVpbnQ4QXJyYXkuZnJvbShyZWNvdmVyYWJsZS5idWZmZXIpLnNsaWNlKDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcclxuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZS5zbGljZSgxKVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0dXJlOiB1bnN1cHBvcnRlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgZm9ybWF0OiAke3JlY292ZXJhYmxlfWApXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChieXRlcy5sZW5ndGggIT09IDY0KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFJlY292ZXJhYmxlU2lnbmF0cmU6IGV4cGVjdGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSB3aXRoIGxlbmd0aCA2NTogJHt0b0hleFN0cmluZyhieXRlcyl9YClcclxuICAgICAgICB9IFxyXG4gICAgICAgIHJldHVybiBuZXcgUmVjb3ZlcmFibGVTaWduYXR1cmUoUHVibGljS2V5LnJlY292ZXJGcm9tKHJlY292ZXJhYmxlLCBtc2cpLCBieXRlcywgbXNnKVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBmcm9tS2V5ZWRTaWduYXR1cmUoa3M6IEtleWVkU2lnbmF0dXJlLCBtc2c6IFVpbnQ4QXJyYXkpOiBSZWNvdmVyYWJsZVNpZ25hdHVyZSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWNvdmVyYWJsZVNpZ25hdHVyZShcclxuICAgICAgICAgICAgUHVibGljS2V5LmZyb21Qcm90b2J1Zihrcy5wdWJsaWNfa2V5KSxcclxuICAgICAgICAgICAgc2VjcDI1NmsxLnNpZ25hdHVyZUltcG9ydChVaW50OEFycmF5LmZyb20oa3Muc2lnbmF0dXJlLlNlY3AyNTZrMS5kZXIpKSxcclxuICAgICAgICAgICAgbXNnXHJcbiAgICAgICAgKSAgIFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlOiBVaW50OEFycmF5XHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgcHViS2V5OiBQdWJsaWNLZXlcclxuICAgIHB1YmxpYyByZWFkb25seSByZWNvdmVyeUlkOiBudW1iZXJcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IgKHB1YktleTogUHVibGljS2V5LCBieXRlczogVWludDhBcnJheSwgbXNnOiBVaW50OEFycmF5KSB7XHJcbiAgICAgICAgc3VwZXIoYnl0ZXMpXHJcbiAgICAgICAgY29uc3QgcHViS2V5UmF3ID0gcHViS2V5LnRvVWludDhBcnJheSgpXHJcbiAgICAgICAgbGV0IHJlY292ZXJ5SWQ6IG51bWJlcjtcclxuICAgICAgICBmb3IgKHJlY292ZXJ5SWQgPSAwOyByZWNvdmVyeUlkIDwgNDsgcmVjb3ZlcnlJZCArKykge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3ZlcmVkIFxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgIHJlY292ZXJlZCA9IHNlY3AyNTZrMS5lY2RzYVJlY292ZXIoYnl0ZXMsIHJlY292ZXJ5SWQsIG1zZylcclxuICAgICAgICAgICAgICBpZiAobWF0Y2hpbmdVaW50OEFycmF5cyhyZWNvdmVyZWQsIHB1YktleVJhdykpIGJyZWFrO1xyXG4gICAgICAgICAgICB9IGNhdGNoIHt9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xyXG4gICAgICAgIHRoaXMucHViS2V5ID0gcHViS2V5XHJcbiAgICAgICAgdGhpcy5yZWNvdmVyeUlkID0gcmVjb3ZlcnlJZFxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0hleFN0cmluZyhwcmVmaXgweCA9IGZhbHNlKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMucmVjb3ZlcnlJZCwgLi4udGhpcy5ieXRlc10sIHByZWZpeDB4KVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2lnbmF0dXJlOiB7IFNlY3AyNTZrMTogeyBkZXI6IEFycmF5LmZyb20oc2VjcDI1NmsxLnNpZ25hdHVyZUV4cG9ydCh0aGlzLmJ5dGVzKSkgfX0sXHJcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcclxuICAgICAgICAgICAgICAgIGJ5dGVzOiBBcnJheS5mcm9tKHRoaXMucHViS2V5LmJ5dGVzKSxcclxuICAgICAgICAgICAgICAgIGNvbXByZXNzZWQ6IHRoaXMucHViS2V5LmNvbXByZXNzZWQsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvUHJvdG9idWYoKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcclxuICAgICAgICAgICAgcHVibGljS2V5OiB7IHB1YmxpY0tleTogQXJyYXkuZnJvbShbIHRoaXMucHViS2V5LmNvbXByZXNzZWQsIC4uLnRoaXMucHViS2V5LmJ5dGVzIF0pIH0sXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuXHJcbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSByZWNlaXB0OiBUcmFuc2FjdGlvblJlY2VpcHRcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXHJcbiAgICAgICAgdGhpcy5yZWNlaXB0ID0gcmVjZWlwdFxyXG4gICAgfVxyXG59XHJcbmV4cG9ydCBjbGFzcyBNZW1wb29sRXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIGNvbnN0cnVjdG9yKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgbWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUaW1lb3V0RXJyb3IgZXh0ZW5kcyBUcmFuc2FjdGlvbkVycm9yIHtcclxuICAgIHJlYWRvbmx5IG1zZWNzOiBudW1iZXI7XHJcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XHJcbiAgICAgICAgc3VwZXIocmVjZWlwdCwgbWVzc2FnZSlcclxuICAgICAgICB0aGlzLm1zZWNzID0gbXNlY3NcclxuICAgIH1cclxufVxyXG4gICAgXHJcblxyXG5leHBvcnQgY2xhc3MgVHJhbnNtaXNzaW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XHJcbiAgICByZWFkb25seSBlcnJvcj86IGFueTtcclxuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XHJcbiAgICBjb25zdHJ1Y3RvcihpbkZsaWdodDogVHJhbnNtaXNzaW9uLCBlcnJvcj86IGFueSkge1xyXG4gICAgICAgIHN1cGVyKEpTT04uc3RyaW5naWZ5KGVycm9yKSlcclxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXHJcbiAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yXHJcbiAgICAgICAgdGhpcy5pbkZsaWdodCA9IGluRmxpZ2h0XHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4vLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4vLy8gLS0tIEludGVybmFsIGZ1bmN0aW9ucyBcclxuXHJcbmZ1bmN0aW9uIG1hdGNoaW5nVWludDhBcnJheXMoYTogVWludDhBcnJheSwgYjogVWludDhBcnJheSkge1xyXG4gICAgcmV0dXJuIGEubGVuZ3RoID09PSBiLmxlbmd0aCAmJiBhLmV2ZXJ5KCh2YWx1ZSwgaW5kZXgpID0+IHZhbHVlID09PSBiW2luZGV4XSlcclxufVxyXG4iXX0=
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2NyeXB0by90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDdEMsbUNBQStCO0FBRy9CLCtDQUF1RjtBQUN2RixtQ0FBZ0M7QUFFaEMsTUFBYSxLQUFLO0lBRVAsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFnQjtRQUN0QyxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQ25CLE9BQU8sQ0FBQyxNQUFNO2NBQ1IsT0FBTyxDQUFDLE1BQU07Y0FDZCxPQUFPLENBQUMsUUFBUSxDQUN6QixDQUFBO0lBQ0wsQ0FBQztJQUNNLE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBZ0I7UUFDdkMsT0FBTyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUM5QixDQUFDO0lBQ00sTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDNUIsQ0FBQztJQUNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBWTtRQUMvQixJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksU0FBUyxDQUNmLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLG9DQUFvQyxJQUFJLE1BQU0sTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQ2xHLENBQUE7UUFDTCxDQUFDO1FBQ0QsT0FBTyxJQUFJLEtBQUssQ0FDWixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxFQUFFO2NBQzlCLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsR0FB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O1FBQ2QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUE7SUFDMUIsQ0FBQztDQUNKO0FBQ0QsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBQzlDLFlBQVksT0FBMkIsRUFBRSxPQUFnQjtRQUNyRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUM7Q0FDSjtBQUpELG9DQUlDO0FBRUQsTUFBYSxZQUFhLFNBQVEsZ0JBQWdCO0lBRTlDLFlBQWEsS0FBYSxFQUFFLE9BQTJCLEVBQUUsT0FBZ0I7UUFDckUsS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUN0QixDQUFDO0NBQ0o7QUFORCxvQ0FNQztBQUdELE1BQWEsaUJBQWtCLFNBQVEsS0FBSztJQUd4QyxZQUFZLFFBQXNCLEVBQUUsS0FBVztRQUMzQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBQzVCLE9BQU8sS0FBSyxFQUFFLEtBQUssQ0FBQTtRQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQTtJQUM1QixDQUFDO0NBQ0o7QUFURCw4Q0FTQztBQUdELHVIQUF1SDtBQUN2SCwyQkFBMkI7QUFFM0IsU0FBUyxtQkFBbUIsQ0FBQyxDQUFhLEVBQUUsQ0FBYTtJQUNyRCxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzZWNwMjU2azEgPSByZXF1aXJlKCdzZWNwMjU2azEnKVxuaW1wb3J0IHsgYmVjaDMyIH0gZnJvbSAnYmVjaDMyJ1xuaW1wb3J0IHsgQmFsYW5jZSwgRXBvY2gsIEhhc2gsIEhleFN0cmluZywgVXR4b01ldGFkYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCJcblxuaW1wb3J0IHsgZnJvbUhleFN0cmluZywgaXNIZXhTdHJpbmcsIHRvSGV4U3RyaW5nLCB3aG9sZV93aXRzIH0gZnJvbSBcIi4uLy4uL2Jpbi9oZWxwZXJzXCJcbmltcG9ydCB7IHNoYTI1NiB9IGZyb20gXCIuL3V0aWxzXCJcblxuZXhwb3J0IGNsYXNzIENvaW5zIHtcbiAgICBwcm90ZWN0ZWQgY29pbnM6IGJpZ2ludDtcbiAgICBwdWJsaWMgc3RhdGljIGZyb21CYWxhbmNlKGJhbGFuY2U6IEJhbGFuY2UpOiBDb2lucyB7XG4gICAgICAgIHJldHVybiBDb2lucy5mcm9tUGVkcm9zKFxuICAgICAgICAgICAgYmFsYW5jZS5sb2NrZWRcbiAgICAgICAgICAgICAgICArIGJhbGFuY2Uuc3Rha2VkXG4gICAgICAgICAgICAgICAgKyBiYWxhbmNlLnVubG9ja2VkXG4gICAgICAgIClcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tTmFub3dpdHMobmFub3dpdHM6IGJpZ2ludCk6IENvaW5zIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucyhuYW5vd2l0cylcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tUGVkcm9zKHBlZHJvczogYmlnaW50KTogQ29pbnMge1xuICAgICAgICByZXR1cm4gbmV3IENvaW5zKHBlZHJvcylcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyBmcm9tV2l0cyh3aXRzOiBudW1iZXIpOiBDb2lucyB7XG4gICAgICAgIGlmICh3aXRzID4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgICAgICAgYCR7dGhpcy5jb25zdHJ1Y3Rvci5uYW1lfTogaW50ZXJuYWwgZXJyb3I6IHRvbyBtYW55IHdpdHM6ICR7d2l0c30gPiAke051bWJlci5NQVhfU0FGRV9JTlRFR0VSfWBcbiAgICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IENvaW5zKFxuICAgICAgICAgICAgQmlnSW50KE1hdGguZmxvb3Iod2l0cykpICogMTBuICoqIDluXG4gICAgICAgICAgICAgICAgKyBCaWdJbnQoTWF0aC5mbG9vcigod2l0cyAtIE1hdGguZmxvb3Iod2l0cykpICogMTAwMDAwMDAwMCkpXG4gICAgICAgIClcbiAgICB9XG4gICAgcHVibGljIHN0YXRpYyB6ZXJvKCk6IENvaW5zIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2lucygwbilcbiAgICB9XG4gICAgY29uc3RydWN0b3IgKHBlZHJvczogYmlnaW50KSB7XG4gICAgICAgIHRoaXMuY29pbnMgPSBwZWRyb3NcbiAgICB9XG4gICAgcHVibGljIGdldCBwZWRyb3MoKTogYmlnaW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29pbnNcbiAgICB9XG4gICAgcHVibGljIGdldCBuYW5vd2l0cygpOiBiaWdpbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2luc1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHdpdHMoKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgcXVvdGllbnQgPSBCaWdJbnQodGhpcy5jb2lucykgLyAxMDAwMDAwMDAwblxuICAgICAgICBpZiAoTnVtYmVyKHF1b3RpZW50KSA+IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuY29uc3RydWN0b3IubmFtZX06IGludGVybmFsIGVycm9yOiB0b28gbWFueSBjb2luczogJHtxdW90aWVudC50b1N0cmluZygpfSA+ICR7TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJ9YFxuICAgICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlc3QgPSBOdW1iZXIoQmlnSW50KHRoaXMuY29pbnMpIC0gcXVvdGllbnQgKiAxMDAwMDAwMDAwbikgLyAxMDAwMDAwMDAwXG4gICAgICAgIHJldHVybiBOdW1iZXIocXVvdGllbnQpICsgcmVzdFxuICAgIH1cbiAgICBwdWJsaWMgdG9TdHJpbmcoZGVjaW1hbHMgPSA5KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHdob2xlX3dpdHModGhpcy5jb2lucywgZGVjaW1hbHMpXG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBLZXlQYXRoID0gQXJyYXk8bnVtYmVyPlxuXG5leHBvcnQgdHlwZSBLZXllZFNpZ25hdHVyZSA9IHtcbiAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXk8bnVtYmVyPiB9fSxcbiAgICBwdWJsaWNfa2V5OiB7XG4gICAgICAgIGJ5dGVzOiBBcnJheTxudW1iZXI+O1xuICAgICAgICBjb21wcmVzc2VkOiBudW1iZXIsXG4gICAgfSxcbn07XG5cbmV4cG9ydCB0eXBlIFB1YmxpY0tleUhhc2hTdHJpbmcgPSBIZXhTdHJpbmdcblxuaW50ZXJmYWNlIEtleSB7XG4gICAgYnl0ZXM6IFVpbnQ4QXJyYXk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpdmF0ZUtleSBleHRlbmRzIEtleSB7XG4gICAgdHlwZTogXCJwcml2YXRlXCI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGljS2V5IGV4dGVuZHMgS2V5IHtcbiAgICB0eXBlOiBcInB1YmxpY1wiO1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvbkNhbGxiYWNrID0gKHJlY2VpcHQ6IFRyYW5zYWN0aW9uUmVjZWlwdCwgZXJyb3I/OiBhbnkpID0+IGFueVxuXG5leHBvcnQgdHlwZSBUcmFuc2FjdGlvblBhcmFtcyA9IHtcbiAgICBkZWFkbGluZT86IEVwb2NoLFxuICAgIGZlZXM/OiBUcmFuc2FjdGlvblByaW9yaXR5IHwgQ29pbnMsXG59XG5cbmV4cG9ydCBlbnVtIFRyYW5zYWN0aW9uUHJpb3JpdHkge1xuICAgIFN0aW5reSA9IFwic3Rpbmt5XCIsXG4gICAgTG93ID0gXCJsb3dcIixcbiAgICBNZWRpdW0gPSBcIm1lZGl1bVwiLFxuICAgIEhpZ2ggPSBcImhpZ2hcIixcbiAgICBPcHVsZW50ID0gXCJvcHVsZW50XCIsXG59XG5cbmV4cG9ydCB0eXBlIFRyYW5zYWN0aW9uUmVjZWlwdCA9IHtcbiAgICBhdXRob3JpemF0aW9uPzogSGV4U3RyaW5nO1xuICAgIGJsb2NrRXBvY2g/OiBFcG9jaCxcbiAgICBibG9ja0hhc2g/OiBIYXNoLFxuICAgIGJsb2NrTWluZXI/OiBQdWJsaWNLZXlIYXNoU3RyaW5nLFxuICAgIGJsb2NrVGltZXN0YW1wPzogbnVtYmVyLFxuICAgIGNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XG4gICAgY2hhbmdlPzogQ29pbnM7XG4gICAgZHJvSGFzaD86IEhhc2g7XG4gICAgZXJyb3I/OiBFcnJvcixcbiAgICBmZWVzOiBDb2lucztcbiAgICBmcm9tPzogQXJyYXk8UHVibGljS2V5SGFzaFN0cmluZz4gfCBQdWJsaWNLZXlIYXNoU3RyaW5nO1xuICAgIGhhc2g6IEhhc2g7XG4gICAgb3V0cHV0TG9jaz86IG51bWJlcjtcbiAgICByYWRBcmdzPzogYW55O1xuICAgIHJhZEhhc2g/OiBIZXhTdHJpbmc7XG4gICAgcmVjaXBpZW50cz86IEFycmF5PFtQdWJsaWNLZXlIYXNoU3RyaW5nLCBDb2luc10+O1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHRpbWVzdGFtcDogbnVtYmVyO1xuICAgIHR5cGU6IHN0cmluZztcbiAgICB0eD86IGFueTtcbiAgICB2YWxpZGF0b3I/OiBQdWJsaWNLZXlIYXNoU3RyaW5nO1xuICAgIHZhbHVlPzogQ29pbnM7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG4gICAgd2l0aGRyYXdlcj86IFB1YmxpY0tleUhhc2hTdHJpbmc7XG4gICAgd2l0bmVzc2VzPzogbnVtYmVyIHwgUmVjb3JkPFB1YmxpY0tleUhhc2hTdHJpbmcsIENvaW5zPjtcbn1cblxuZXhwb3J0IHR5cGUgVHJhbnNhY3Rpb25TdGF0dXMgPSBcInNpZ25lZFwiIHwgXCJwZW5kaW5nXCIgfCBcInJlbGF5ZWRcIiB8IFwicmVtb3ZlZFwiIHwgXCJtaW5lZFwiIHwgXCJjb25maXJtZWRcIiB8IFwiZmluYWxpemVkXCI7XG5cbmV4cG9ydCB0eXBlIFRyYW5zbWlzc2lvbiA9IHtcbiAgICBieXRlY29kZT86IFVpbnQ4QXJyYXksXG4gICAgaGFzaD86IEhhc2g7XG4gICAgbWVzc2FnZTogYW55O1xufVxuXG5leHBvcnQgdHlwZSBVdHhvID0gVXR4b01ldGFkYXRhICYgeyBzaWduZXI6IFB1YmxpY0tleUhhc2hTdHJpbmcgfVxuXG5leHBvcnQgdHlwZSBVdHhvQ2FjaGVJbmZvID0ge1xuICAgIC8vIHRvdGFsIGFtb3VudCBvZiBleHBlbmRhYmxlIGZ1bmRzIHdpdGggY3VycmVudGx5IGNhY2hlZCBVVFhPc1xuICAgIGV4cGVuZGFibGU6IGJpZ2ludCwgXG4gICAgLy8gbnVtYmVyIG9mIGNhY2hlZCBVVFhPc1xuICAgIHNpemU6IG51bWJlciwgXG4gICAgLy8gZWFybGllc3Qgb2YgYWxsIHRpbWVsb2NrcyBpbiB0aGUgY2FjaMOpXG4gICAgdGltZWxvY2s6IG51bWJlcixcbn1cblxuZXhwb3J0IHR5cGUgVXR4b1BvaW50ZXIgPSB7XG4gICAgLy8gdHJhbnNhY3Rpb24gaWRlbnRpZmllclxuICAgIHRyYW5zYWN0aW9uX2lkOiBIYXNoO1xuICAgIC8vIG91dHB1dCBpbmRleCB3aXRoaW4gcmVmZXJyZWQgdHJhbnNhY3Rpb25cbiAgICBvdXRwdXRfaW5kZXg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBlbnVtIFV0eG9TZWxlY3Rpb25TdHJhdGVneSB7XG4gICAgQmlnRmlyc3QgPSBcImJpZy1maXJzdFwiLFxuICAgIFJhbmRvbSA9IFwicmFuZG9tXCIsXG4gICAgU2xpbUZpdCA9IFwic2xpbS1maXRcIixcbiAgICBTbWFsbEZpcnN0ID0gXCJzbWFsbC1maXJzdFwiLFxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gRVhQT1JURUQgQ0xBU1NFUyBcblxuLy8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBLZXkge1xuICAgIFxuICAgIHB1YmxpYyByZWFkb25seSBjb21wcmVzc2VkOiBudW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGJ5dGVzOiBVaW50OEFycmF5O1xuXG4gICAgc3RhdGljIGZyb21Qcm90b2J1Zihwcm90b2J1ZjogeyBjb21wcmVzc2VkOiBudW1iZXIsIGJ5dGVzOiBBcnJheTxudW1iZXI+IH0pOiBQdWJsaWNLZXkge1xuICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleShwcm90b2J1Zi5jb21wcmVzc2VkLCBVaW50OEFycmF5LmZyb20ocHJvdG9idWYuYnl0ZXMpKVxuICAgIH1cblxuICAgIHN0YXRpYyBmcm9tVWludDhBcnJheSh1aW50OEFycmF5OiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXkoXG4gICAgICAgICAgICB1aW50OEFycmF5WzBdLFxuICAgICAgICAgICAgdWludDhBcnJheS5zbGljZSgxKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgcmVjb3ZlckZyb20ocmVjb3ZlcmFibGU6IGFueSwgbXNnOiBVaW50OEFycmF5KTogUHVibGljS2V5IHtcbiAgICAgICAgbGV0IGJ5dGVzXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcbiAgICAgICAgICAgIGJ5dGVzID0gZnJvbUhleFN0cmluZyhyZWNvdmVyYWJsZSlcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5OiB1bnN1cHBvcnRlZCByZWNvdmVyYWJsZSBzaWduYXR1cmUgZm9ybWF0OiAke3JlY292ZXJhYmxlfWApXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJ5dGVzLmxlbmd0aCAhPT0gNjUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFB1YmxpY0tleTogZXhwZWN0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIHdpdGggbGVuZ3RoIDY1OiAke3RvSGV4U3RyaW5nKGJ5dGVzKX1gKVxuICAgICAgICB9IFxuICAgICAgICBjb25zdCBbIHJlY292ZXJ5SWQsIHNpZ25hdHVyZSBdID0gWyBieXRlc1swXSwgYnl0ZXMuc2xpY2UoMSkgXVxuICAgICAgICByZXR1cm4gUHVibGljS2V5LmZyb21VaW50OEFycmF5KHNlY3AyNTZrMS5lY2RzYVJlY292ZXIoc2lnbmF0dXJlLCByZWNvdmVyeUlkLCBtc2cpKVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGNvbXByZXNzZWQ6IG51bWJlciwgYnl0ZXM6IFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgdGhpcy5jb21wcmVzc2VkID0gY29tcHJlc3NlZFxuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcbiAgICB9XG5cbiAgICBwdWJsaWMgZXF1YWxzKHB1YktleTogUHVibGljS2V5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBwdWJLZXkuY29tcHJlc3NlZCA9PT0gdGhpcy5jb21wcmVzc2VkICYmIG1hdGNoaW5nVWludDhBcnJheXMocHViS2V5LmJ5dGVzLCBwdWJLZXkuYnl0ZXMpXG4gICAgfVxuXG4gICAgcHVibGljIGhhc2goKTogUHVibGljS2V5SGFzaCB7XG4gICAgICAgIHJldHVybiBQdWJsaWNLZXlIYXNoLmZyb21QdWJsaWNLZXkodGhpcylcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKFt0aGlzLmNvbXByZXNzZWQsIC4uLnRoaXMuYnl0ZXNdKVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1VpbnQ4QXJyYXkoKTogVWludDhBcnJheSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LmZyb20oW3RoaXMuY29tcHJlc3NlZCwgLi4udGhpcy5ieXRlc10pXG4gICAgfVxufTtcblxuXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNsYXNzIFB1YmxpY0tleUhhc2gge1xuXG4gICAgc3RhdGljIGZyb21IYXNoKGhhc2g6IFVpbnQ4QXJyYXkpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi50b1dvcmRzKGhhc2gpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUhleFN0cmluZyhoYXNoOiBIZXhTdHJpbmcpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgcmV0dXJuIFB1YmxpY0tleUhhc2guZnJvbUhhc2goZnJvbUhleFN0cmluZyhoYXNoKSlcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGZyb21QdWJsaWNLZXkocGs6IFB1YmxpY0tleSk6IFB1YmxpY0tleUhhc2gge1xuICAgICAgICByZXR1cm4gUHVibGljS2V5SGFzaC5mcm9tSGFzaChcbiAgICAgICAgICAgIHNoYTI1NihcbiAgICAgICAgICAgICAgICBCdWZmZXIuZnJvbShbcGsuY29tcHJlc3NlZCwgLi4ucGsuYnl0ZXNdKVxuICAgICAgICAgICAgKS5zdWJhcnJheSgwLCAyMClcbiAgICAgICAgKTtcbiAgICB9XG4gICAgXG4gICAgc3RhdGljIGZyb21CZWNoMzIocGtoOiBzdHJpbmcpOiBQdWJsaWNLZXlIYXNoIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHBraCA9IHBraC50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICBpZiAocGtoLnN0YXJ0c1dpdGgoJ3dpdCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXlIYXNoKGJlY2gzMi5kZWNvZGUocGtoLCA2Nikud29yZHMpXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBraC5zdGFydHNXaXRoKCd0d2l0JykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleUhhc2goYmVjaDMyLmRlY29kZShwa2gsIDY3KS53b3JkcylcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUHVibGljS2V5SGFzaDogaW52YWxpZCBiZWNoMzIgc3RyaW5nOiAke3BraH1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBQdWJsaWNLZXlIYXNoOiBpbnZhbGlkIGJlY2gzMiBzdHJpbmc6ICR7cGtofWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHdvcmRzOiBudW1iZXJbXTtcbiAgICBcbiAgICBjb25zdHJ1Y3Rvcih3b3JkczogbnVtYmVyW10pIHtcbiAgICAgICAgdGhpcy53b3JkcyA9IHdvcmRzXG4gICAgfVxuXG4gICAgcHVibGljIHRvQmVjaDMyKG5ldHdvcmsgPSBcIm1haW5uZXRcIik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuZXR3b3JrID09PSBcIm1haW5uZXRcIiA/IGJlY2gzMi5lbmNvZGUoJ3dpdCcsIHRoaXMud29yZHMsIDY2KSA6IGJlY2gzMi5lbmNvZGUoJ3R3aXQnLCB0aGlzLndvcmRzLCA2Nyk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvQnl0ZXMyMCgpOiBVaW50OEFycmF5IHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShiZWNoMzIuZnJvbVdvcmRzKHRoaXMud29yZHMpLnNsaWNlKDAsIDIwKSlcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9CeXRlczMyKCk6IFVpbnQ4QXJyYXkge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5mcm9tKFtcbiAgICAgICAgICAgIC4uLmJlY2gzMi5mcm9tV29yZHModGhpcy53b3Jkcykuc2xpY2UoMCwgMjApLFxuICAgICAgICAgICAgLi4ubmV3IEFycmF5KDEyKS5maWxsKDApLFxuICAgICAgICBdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdG9IZXhTdHJpbmcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRvSGV4U3RyaW5nKHRoaXMudG9CeXRlczIwKCkpXG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5leHBvcnQgY2xhc3MgU2lnbmF0dXJlIHtcblxuICAgIHN0YXRpYyBmcm9tSGV4U3RyaW5nKGhleDogc3RyaW5nKTogU2lnbmF0dXJlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaWduYXR1cmUoZnJvbUhleFN0cmluZyhoZXgpKVxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBieXRlczogVWludDhBcnJheTtcblxuICAgIGNvbnN0cnVjdG9yIChieXRlczogVWludDhBcnJheSkge1xuICAgICAgICB0aGlzLmJ5dGVzID0gYnl0ZXNcbiAgICB9XG4gICAgXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0b0hleFN0cmluZyh0aGlzLmJ5dGVzKVxuICAgIH1cbn1cblxuXG4vLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZXhwb3J0IGNsYXNzIFJlY292ZXJhYmxlU2lnbmF0dXJlIGV4dGVuZHMgU2lnbmF0dXJlIHtcblxuICAgIHN0YXRpYyBmcm9tKHJlY292ZXJhYmxlOiBhbnksIG1zZzogVWludDhBcnJheSk6IFJlY292ZXJhYmxlU2lnbmF0dXJlIHtcbiAgICAgICAgbGV0IGJ5dGVzXG4gICAgICAgIGlmIChpc0hleFN0cmluZyhyZWNvdmVyYWJsZSkpIHtcbiAgICAgICAgICAgIGJ5dGVzID0gZnJvbUhleFN0cmluZyhyZWNvdmVyYWJsZSkuc2xpY2UoMSlcbiAgICAgICAgfSBlbHNlIGlmIChyZWNvdmVyYWJsZSBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgYnl0ZXMgPSBVaW50OEFycmF5LmZyb20ocmVjb3ZlcmFibGUuYnVmZmVyKS5zbGljZSgxKVxuICAgICAgICB9IGVsc2UgaWYgKHJlY292ZXJhYmxlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgICAgICAgYnl0ZXMgPSByZWNvdmVyYWJsZS5zbGljZSgxKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXR1cmU6IHVuc3VwcG9ydGVkIHJlY292ZXJhYmxlIHNpZ25hdHVyZSBmb3JtYXQ6ICR7cmVjb3ZlcmFibGV9YClcbiAgICAgICAgfVxuICAgICAgICBpZiAoYnl0ZXMubGVuZ3RoICE9PSA2NCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgUmVjb3ZlcmFibGVTaWduYXRyZTogZXhwZWN0ZWQgcmVjb3ZlcmFibGUgc2lnbmF0dXJlIHdpdGggbGVuZ3RoIDY1OiAke3RvSGV4U3RyaW5nKGJ5dGVzKX1gKVxuICAgICAgICB9IFxuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJhYmxlU2lnbmF0dXJlKFB1YmxpY0tleS5yZWNvdmVyRnJvbShyZWNvdmVyYWJsZSwgbXNnKSwgYnl0ZXMsIG1zZylcbiAgICB9XG5cbiAgICBzdGF0aWMgZnJvbUtleWVkU2lnbmF0dXJlKGtzOiBLZXllZFNpZ25hdHVyZSwgbXNnOiBVaW50OEFycmF5KTogUmVjb3ZlcmFibGVTaWduYXR1cmUge1xuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJhYmxlU2lnbmF0dXJlKFxuICAgICAgICAgICAgUHVibGljS2V5LmZyb21Qcm90b2J1Zihrcy5wdWJsaWNfa2V5KSxcbiAgICAgICAgICAgIHNlY3AyNTZrMS5zaWduYXR1cmVJbXBvcnQoVWludDhBcnJheS5mcm9tKGtzLnNpZ25hdHVyZS5TZWNwMjU2azEuZGVyKSksXG4gICAgICAgICAgICBtc2dcbiAgICAgICAgKSAgIFxuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBtZXNzYWdlOiBVaW50OEFycmF5XG4gICAgcHVibGljIHJlYWRvbmx5IHB1YktleTogUHVibGljS2V5XG4gICAgcHVibGljIHJlYWRvbmx5IHJlY292ZXJ5SWQ6IG51bWJlclxuICAgIFxuICAgIGNvbnN0cnVjdG9yIChwdWJLZXk6IFB1YmxpY0tleSwgYnl0ZXM6IFVpbnQ4QXJyYXksIG1zZzogVWludDhBcnJheSkge1xuICAgICAgICBzdXBlcihieXRlcylcbiAgICAgICAgY29uc3QgcHViS2V5UmF3ID0gcHViS2V5LnRvVWludDhBcnJheSgpXG4gICAgICAgIGxldCByZWNvdmVyeUlkOiBudW1iZXI7XG4gICAgICAgIGZvciAocmVjb3ZlcnlJZCA9IDA7IHJlY292ZXJ5SWQgPCA0OyByZWNvdmVyeUlkICsrKSB7XG4gICAgICAgICAgICBsZXQgcmVjb3ZlcmVkIFxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmVjb3ZlcmVkID0gc2VjcDI1NmsxLmVjZHNhUmVjb3ZlcihieXRlcywgcmVjb3ZlcnlJZCwgbXNnKVxuICAgICAgICAgICAgICBpZiAobWF0Y2hpbmdVaW50OEFycmF5cyhyZWNvdmVyZWQsIHB1YktleVJhdykpIGJyZWFrO1xuICAgICAgICAgICAgfSBjYXRjaCB7fVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubWVzc2FnZSA9IG1zZ1xuICAgICAgICB0aGlzLnB1YktleSA9IHB1YktleVxuICAgICAgICB0aGlzLnJlY292ZXJ5SWQgPSByZWNvdmVyeUlkXG4gICAgfVxuXG4gICAgcHVibGljIHRvSGV4U3RyaW5nKHByZWZpeDB4ID0gZmFsc2UpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdG9IZXhTdHJpbmcoW3RoaXMucmVjb3ZlcnlJZCwgLi4udGhpcy5ieXRlc10sIHByZWZpeDB4KVxuICAgIH1cblxuICAgIHB1YmxpYyB0b0tleWVkU2lnbmF0dXJlKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY19rZXk6IHtcbiAgICAgICAgICAgICAgICBieXRlczogQXJyYXkuZnJvbSh0aGlzLnB1YktleS5ieXRlcyksXG4gICAgICAgICAgICAgICAgY29tcHJlc3NlZDogdGhpcy5wdWJLZXkuY29tcHJlc3NlZCxcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0b1Byb3RvYnVmKCk6IGFueSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaWduYXR1cmU6IHsgU2VjcDI1NmsxOiB7IGRlcjogQXJyYXkuZnJvbShzZWNwMjU2azEuc2lnbmF0dXJlRXhwb3J0KHRoaXMuYnl0ZXMpKSB9fSxcbiAgICAgICAgICAgIHB1YmxpY0tleTogeyBwdWJsaWNLZXk6IEFycmF5LmZyb20oWyB0aGlzLnB1YktleS5jb21wcmVzc2VkLCAuLi50aGlzLnB1YktleS5ieXRlcyBdKSB9LFxuICAgICAgICB9XG4gICAgfVxufVxuXG5cbi8vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmFic3RyYWN0IGNsYXNzIFRyYW5zYWN0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcmVhZG9ubHkgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0XG4gICAgY29uc3RydWN0b3IocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpXG4gICAgICAgIHRoaXMucmVjZWlwdCA9IHJlY2VpcHRcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgTWVtcG9vbEVycm9yIGV4dGVuZHMgVHJhbnNhY3Rpb25FcnJvciB7XG4gICAgY29uc3RydWN0b3IocmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGltZW91dEVycm9yIGV4dGVuZHMgVHJhbnNhY3Rpb25FcnJvciB7XG4gICAgcmVhZG9ubHkgbXNlY3M6IG51bWJlcjtcbiAgICBjb25zdHJ1Y3RvciAobXNlY3M6IG51bWJlciwgcmVjZWlwdDogVHJhbnNhY3Rpb25SZWNlaXB0LCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHJlY2VpcHQsIG1lc3NhZ2UpXG4gICAgICAgIHRoaXMubXNlY3MgPSBtc2Vjc1xuICAgIH1cbn1cbiAgICBcblxuZXhwb3J0IGNsYXNzIFRyYW5zbWlzc2lvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICAgIHJlYWRvbmx5IGVycm9yPzogYW55O1xuICAgIHJlYWRvbmx5IGluRmxpZ2h0OiBUcmFuc21pc3Npb247XG4gICAgY29uc3RydWN0b3IoaW5GbGlnaHQ6IFRyYW5zbWlzc2lvbiwgZXJyb3I/OiBhbnkpIHtcbiAgICAgICAgc3VwZXIoSlNPTi5zdHJpbmdpZnkoZXJyb3IpKVxuICAgICAgICBkZWxldGUgZXJyb3I/LnN0YWNrXG4gICAgICAgIHRoaXMuZXJyb3IgPSBlcnJvclxuICAgICAgICB0aGlzLmluRmxpZ2h0ID0gaW5GbGlnaHRcbiAgICB9XG59XG5cblxuLy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vLyAtLS0gSW50ZXJuYWwgZnVuY3Rpb25zIFxuXG5mdW5jdGlvbiBtYXRjaGluZ1VpbnQ4QXJyYXlzKGE6IFVpbnQ4QXJyYXksIGI6IFVpbnQ4QXJyYXkpIHtcbiAgICByZXR1cm4gYS5sZW5ndGggPT09IGIubGVuZ3RoICYmIGEuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IGJbaW5kZXhdKVxufVxuIl19
|