TypeScript/tests/baselines/reference/contextualTyping.js.map

4 lines
23 KiB
Plaintext

//// [contextualTyping.js.map]
{"version":3,"file":"contextualTyping.js","sourceRoot":"","sources":["contextualTyping.ts"],"names":[],"mappings":"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"}
//// https://sokra.github.io/source-map-visualization#base64,Ly8gQ09OVEVYVDogQ2xhc3MgcHJvcGVydHkgZGVjbGFyYXRpb24NCnZhciBDMVQ1ID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKCkgew0KICAgIGZ1bmN0aW9uIEMxVDUoKSB7DQogICAgICAgIHRoaXMuZm9vID0gZnVuY3Rpb24gKGkpIHsNCiAgICAgICAgICAgIHJldHVybiBpOw0KICAgICAgICB9Ow0KICAgIH0NCiAgICByZXR1cm4gQzFUNTsNCn0oKSk7DQovLyBDT05URVhUOiBNb2R1bGUgcHJvcGVydHkgZGVjbGFyYXRpb24NCnZhciBDMlQ1Ow0KKGZ1bmN0aW9uIChDMlQ1KSB7DQogICAgQzJUNS5mb28gPSBmdW5jdGlvbiAoaSkgew0KICAgICAgICByZXR1cm4gaTsNCiAgICB9Ow0KfSkoQzJUNSB8fCAoQzJUNSA9IHt9KSk7DQovLyBDT05URVhUOiBWYXJpYWJsZSBkZWNsYXJhdGlvbg0KdmFyIGMzdDEgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHM7IH0pOw0KdmFyIGMzdDIgPSAoew0KICAgIG46IDENCn0pOw0KdmFyIGMzdDMgPSBbXTsNCnZhciBjM3Q0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfTsNCnZhciBjM3Q1ID0gZnVuY3Rpb24gKG4pIHsgcmV0dXJuICh7fSk7IH07DQp2YXIgYzN0NiA9IGZ1bmN0aW9uIChuLCBzKSB7IHJldHVybiAoe30pOyB9Ow0KdmFyIGMzdDcgPSBmdW5jdGlvbiAobikgeyByZXR1cm4gbjsgfTsNCnZhciBjM3Q4ID0gZnVuY3Rpb24gKG4pIHsgcmV0dXJuIG47IH07DQp2YXIgYzN0OSA9IFtbXSwgW11dOw0KdmFyIGMzdDEwID0gWyh7fSksICh7fSldOw0KdmFyIGMzdDExID0gW2Z1bmN0aW9uIChuLCBzKSB7IHJldHVybiBzOyB9XTsNCnZhciBjM3QxMiA9IHsNCiAgICBmb286ICh7fSkNCn07DQp2YXIgYzN0MTMgPSAoew0KICAgIGY6IGZ1bmN0aW9uIChpLCBzKSB7IHJldHVybiBzOyB9DQp9KTsNCnZhciBjM3QxNCA9ICh7DQogICAgYTogW10NCn0pOw0KLy8gQ09OVEVYVDogQ2xhc3MgcHJvcGVydHkgYXNzaWdubWVudA0KdmFyIEM0VDUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7DQogICAgZnVuY3Rpb24gQzRUNSgpIHsNCiAgICAgICAgdGhpcy5mb28gPSBmdW5jdGlvbiAoaSwgcykgew0KICAgICAgICAgICAgcmV0dXJuIHM7DQogICAgICAgIH07DQogICAgfQ0KICAgIHJldHVybiBDNFQ1Ow0KfSgpKTsNCi8vIENPTlRFWFQ6IE1vZHVsZSBwcm9wZXJ0eSBhc3NpZ25tZW50DQp2YXIgQzVUNTsNCihmdW5jdGlvbiAoQzVUNSkgew0KICAgIEM1VDUuZm9vID0gZnVuY3Rpb24gKGksIHMpIHsNCiAgICAgICAgcmV0dXJuIHM7DQogICAgfTsNCn0pKEM1VDUgfHwgKEM1VDUgPSB7fSkpOw0KLy8gQ09OVEVYVDogVmFyaWFibGUgYXNzaWdubWVudA0KdmFyIGM2dDU7DQpjNnQ1ID0gZnVuY3Rpb24gKG4pIHsgcmV0dXJuICh7fSk7IH07DQovLyBDT05URVhUOiBBcnJheSBpbmRleCBhc3NpZ25tZW50DQp2YXIgYzd0MjsNCmM3dDJbMF0gPSAoeyBuOiAxIH0pOw0KdmFyIG9iamM4ID0gKHt9KTsNCm9iamM4LnQxID0gKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzOyB9KTsNCm9iamM4LnQyID0gKHsNCiAgICBuOiAxDQp9KTsNCm9iamM4LnQzID0gW107DQpvYmpjOC50NCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICh7fSk7IH07DQpvYmpjOC50NSA9IGZ1bmN0aW9uIChuKSB7IHJldHVybiAoe30pOyB9Ow0Kb2JqYzgudDYgPSBmdW5jdGlvbiAobiwgcykgeyByZXR1cm4gKHt9KTsgfTsNCm9iamM4LnQ3ID0gZnVuY3Rpb24gKG4pIHsgcmV0dXJuIG47IH07DQpvYmpjOC50OCA9IGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9Ow0Kb2JqYzgudDkgPSBbW10sIFtdXTsNCm9iamM4LnQxMCA9IFsoe30pLCAoe30pXTsNCm9iamM4LnQxMSA9IFtmdW5jdGlvbiAobiwgcykgeyByZXR1cm4gczsgfV07DQpvYmpjOC50MTIgPSB7DQogICAgZm9vOiAoe30pDQp9Ow0Kb2JqYzgudDEzID0gKHsNCiAgICBmOiBmdW5jdGlvbiAoaSwgcykgeyByZXR1cm4gczsgfQ0KfSk7DQpvYmpjOC50MTQgPSAoew0KICAgIGE6IFtdDQp9KTsNCi8vIENPTlRFWFQ6IEZ1bmN0aW9uIGNhbGwNCmZ1bmN0aW9uIGM5dDUoZikgeyB9DQo7DQpjOXQ1KGZ1bmN0aW9uIChuKSB7DQogICAgcmV0dXJuICh7fSk7DQp9KTsNCi8vIENPTlRFWFQ6IFJldHVybiBzdGF0ZW1lbnQNCnZhciBjMTB0NSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZ1bmN0aW9uIChuKSB7IHJldHVybiAoe30pOyB9OyB9Ow0KLy8gQ09OVEVYVDogTmV3aW5nIGEgY2xhc3MNCnZhciBDMTF0NSA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uICgpIHsNCiAgICBmdW5jdGlvbiBDMTF0NShmKSB7DQogICAgfQ0KICAgIHJldHVybiBDMTF0NTsNCn0oKSk7DQo7DQp2YXIgaSA9IG5ldyBDMTF0NShmdW5jdGlvbiAobikgeyByZXR1cm4gKHt9KTsgfSk7DQovLyBDT05URVhUOiBUeXBlIGFubm90YXRlZCBleHByZXNzaW9uDQp2YXIgYzEydDEgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIHM7IH0pOw0KdmFyIGMxMnQyID0gKHsNCiAgICBuOiAxDQp9KTsNCnZhciBjMTJ0MyA9IFtdOw0KdmFyIGMxMnQ0ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHt9KTsgfTsNCnZhciBjMTJ0NSA9IGZ1bmN0aW9uIChuKSB7IHJldHVybiAoe30pOyB9Ow0KdmFyIGMxMnQ2ID0gZnVuY3Rpb24gKG4sIHMpIHsgcmV0dXJuICh7fSk7IH07DQp2YXIgYzEydDcgPSBmdW5jdGlvbiAobikgeyByZXR1cm4gbjsgfTsNCnZhciBjMTJ0OCA9IGZ1bmN0aW9uIChuKSB7IHJldHVybiBuOyB9Ow0KdmFyIGMxMnQ5ID0gW1tdLCBbXV07DQp2YXIgYzEydDEwID0gWyh7fSksICh7fSldOw0KdmFyIGMxMnQxMSA9IFtmdW5jdGlvbiAobiwgcykgeyByZXR1cm4gczsgfV07DQp2YXIgYzEydDEyID0gew0KICAgIGZvbzogKHt9KQ0KfTsNCnZhciBjMTJ0MTMgPSAoew0KICAgIGY6IGZ1bmN0aW9uIChpLCBzKSB7IHJldHVybiBzOyB9DQp9KTsNCnZhciBjMTJ0MTQgPSAoew0KICAgIGE6IFtdDQp9KTsNCmZ1bmN0aW9uIEVGMShhLCBiKSB7IHJldHVybiBhICsgYjsgfQ0KdmFyIGVmdiA9IEVGMSgxLCAyKTsNClBvaW50Lm9yaWdpbiA9IG5ldyBQb2ludCgwLCAwKTsNClBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoZHgsIGR5KSB7DQogICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKyBkeCwgdGhpcy55ICsgZHkpOw0KfTsNClBvaW50LnByb3RvdHlwZSA9IHsNCiAgICB4OiAwLA0KICAgIHk6IDAsDQogICAgYWRkOiBmdW5jdGlvbiAoZHgsIGR5KSB7DQogICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54ICsgZHgsIHRoaXMueSArIGR5KTsNCiAgICB9DQp9Ow0KdmFyIHggPSB7fTsNCi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNvbnRleHR1YWxUeXBpbmcuanMubWFw,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dHVhbFR5cGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRleHR1YWxUeXBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsc0NBQXNDO0FBQ3RDO0lBQUE7UUFDSSxRQUFHLEdBQXFDLFVBQVMsQ0FBQztZQUM5QyxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQTtJQUNMLENBQUM7SUFBRCxXQUFDO0FBQUQsQ0FBQyxBQUpELElBSUM7QUFFRCx1Q0FBdUM7QUFDdkMsSUFBTyxJQUFJLENBSVY7QUFKRCxXQUFPLElBQUk7SUFDSSxRQUFHLEdBQXFDLFVBQVMsQ0FBQztRQUN6RCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUMsQ0FBQTtBQUNMLENBQUMsRUFKTSxJQUFJLEtBQUosSUFBSSxRQUlWO0FBRUQsZ0NBQWdDO0FBQ2hDLElBQUksSUFBSSxHQUEwQixDQUFDLFVBQVMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0QsSUFBSSxJQUFJLEdBQVMsQ0FBQztJQUNkLENBQUMsRUFBRSxDQUFDO0NBQ1AsQ0FBQyxDQUFBO0FBQ0YsSUFBSSxJQUFJLEdBQWEsRUFBRSxDQUFDO0FBQ3hCLElBQUksSUFBSSxHQUFlLGNBQWEsT0FBYSxDQUFDLEVBQUUsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDO0FBQ3hELElBQUksSUFBSSxHQUF3QixVQUFTLENBQUMsSUFBSSxPQUFhLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxJQUFJLEdBQW1DLFVBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxPQUFhLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsSUFBSSxJQUFJLEdBR0osVUFBUyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFOUIsSUFBSSxJQUFJLEdBQXFDLFVBQVMsQ0FBQyxJQUFJLE9B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QUFDO0FBY25CLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRS9CLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLFVBQVMsRUFBRSxFQUFFLEVBQUU7SUFDakMsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQy9DLENBQUMsQ0FBQztBQUVGLEtBQUssQ0FBQyxTQUFTLEdBQUc7SUFDZCxDQUFDLEVBQUUsQ0FBQztJQUNKLENBQUMsRUFBRSxDQUFDO0lBQ0osR0FBRyxFQUFFLFVBQVMsRUFBRSxFQUFFLEVBQUU7UUFDaEIsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7Q0FDSixDQUFDO0FBSUYsSUFBSSxDQUFDLEdBQU0sRUFBRyxDQUFDIn0=,Ly8gREVGQVVMVCBJTlRFUkZBQ0VTCmludGVyZmFjZSBJRm9vIHsKICAgIG46IG51bWJlcjsKICAgIHM6IHN0cmluZzsKICAgIGYoaTogbnVtYmVyLCBzOiBzdHJpbmcpOiBzdHJpbmc7CiAgICBhOiBudW1iZXJbXTsKfQoKaW50ZXJmYWNlIElCYXIgewogICAgZm9vOiBJRm9vOwp9CgovLyBDT05URVhUOiBDbGFzcyBwcm9wZXJ0eSBkZWNsYXJhdGlvbgpjbGFzcyBDMVQ1IHsKICAgIGZvbzogKGk6IG51bWJlciwgczogc3RyaW5nKSA9PiBudW1iZXIgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgcmV0dXJuIGk7CiAgICB9Cn0KCi8vIENPTlRFWFQ6IE1vZHVsZSBwcm9wZXJ0eSBkZWNsYXJhdGlvbgptb2R1bGUgQzJUNSB7CiAgICBleHBvcnQgdmFyIGZvbzogKGk6IG51bWJlciwgczogc3RyaW5nKSA9PiBudW1iZXIgPSBmdW5jdGlvbihpKSB7CiAgICAgICAgcmV0dXJuIGk7CiAgICB9Cn0KCi8vIENPTlRFWFQ6IFZhcmlhYmxlIGRlY2xhcmF0aW9uCnZhciBjM3QxOiAoczogc3RyaW5nKSA9PiBzdHJpbmcgPSAoZnVuY3Rpb24ocykgeyByZXR1cm4gcyB9KTsKdmFyIGMzdDIgPSA8SUZvbz4oewogICAgbjogMQp9KQp2YXIgYzN0MzogbnVtYmVyW10gPSBbXTsKdmFyIGMzdDQ6ICgpID0+IElGb28gPSBmdW5jdGlvbigpIHsgcmV0dXJuIDxJRm9vPih7fSkgfTsKdmFyIGMzdDU6IChuOiBudW1iZXIpID0+IElGb28gPSBmdW5jdGlvbihuKSB7IHJldHVybiA8SUZvbz4oe30pIH07CnZhciBjM3Q2OiAobjogbnVtYmVyLCBzOiBzdHJpbmcpID0+IElGb28gPSBmdW5jdGlvbihuLCBzKSB7IHJldHVybiA8SUZvbz4oe30pIH07CnZhciBjM3Q3OiB7CiAgICAobjogbnVtYmVyKTogbnVtYmVyOyAgICAKICAgIChzMTogc3RyaW5nKTogbnVtYmVyOwp9ID0gZnVuY3Rpb24obikgeyByZXR1cm4gbjsgfTsKCnZhciBjM3Q4OiAobjogbnVtYmVyLCBzOiBzdHJpbmcpID0+IG51bWJlciA9IGZ1bmN0aW9uKG4pIHsgcmV0dXJuIG47IH07CnZhciBjM3Q5OiBudW1iZXJbXVtdID0gW1tdLFtdXTsKdmFyIGMzdDEwOiBJRm9vW10gPSBbPElGb28+KHt9KSw8SUZvbz4oe30pXTsKdmFyIGMzdDExOiB7KG46IG51bWJlciwgczogc3RyaW5nKTogc3RyaW5nO31bXSA9IFtmdW5jdGlvbihuLCBzKSB7IHJldHVybiBzOyB9XTsKdmFyIGMzdDEyOiBJQmFyID0gewogICAgZm9vOiA8SUZvbz4oe30pCn0KdmFyIGMzdDEzID0gPElGb28+KHsKICAgIGY6IGZ1bmN0aW9uKGksIHMpIHsgcmV0dXJuIHM7IH0KfSkKdmFyIGMzdDE0ID0gPElGb28+KHsKICAgIGE6IFtdCn0pCgovLyBDT05URVhUOiBDbGFzcyBwcm9wZXJ0eSBhc3NpZ25tZW50CmNsYXNzIEM0VDUgewogICAgZm9vOiAoaTogbnVtYmVyLCBzOiBzdHJpbmcpID0+IHN0cmluZzsKICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgIHRoaXMuZm9vID0gZnVuY3Rpb24oaSwgcykgewogICAgICAgICAgICByZXR1cm4gczsKICAgICAgICB9CiAgICB9Cn0KCi8vIENPTlRFWFQ6IE1vZHVsZSBwcm9wZXJ0eSBhc3NpZ25tZW50Cm1vZHVsZSBDNVQ1IHsKICAgIGV4cG9ydCB2YXIgZm9vOiAoaTogbnVtYmVyLCBzOiBzdHJpbmcpID0+IHN0cmluZzsKICAgIGZvbyA9IGZ1bmN0aW9uKGksIHMpIHsKICAgICAgICByZXR1cm4gczsKICAgIH0KfQoKLy8gQ09OVEVYVDogVmFyaWFibGUgYXNzaWdubWVudAp2YXIgYzZ0NTogKG46IG51bWJlcikgPT4gSUZvbzsKYzZ0NSA9IDwobjogbnVtYmVyKSA9PiBJRm9vPmZ1bmN0aW9uKG4pIHsgcmV0dXJuIDxJRm9vPih7fSkgfTsKCi8vIENPTlRFWFQ6IEFycmF5IGluZGV4IGFzc2lnbm1lbnQKdmFyIGM3dDI6IElGb29bXTsKYzd0MlswXSA9IDxJRm9vPih7bjogMX0pOwoKLy8gQ09OVEVYVDogT2JqZWN0IHByb3BlcnR5IGFzc2lnbm1lbnQKaW50ZXJmYWNlIElQbGFjZUhvbGRlciB7CiAgICB0MTogKHM6IHN0cmluZykgPT4gc3RyaW5nOwogICAgdDI6IElGb287CiAgICB0MzogbnVtYmVyW107CiAgICB0NDogKCkgPT4gSUZvbzsKICAgIHQ1OiAobjogbnVtYmVyKSA9PiBJRm9vOwogICAgdDY6IChuOiBudW1iZXIsIHM6IHN0cmluZykgPT4gSUZvbzsKICAgIHQ3OiB7CiAgICAgICAgICAgIChuOiBudW1iZXIsIHM6IHN0cmluZyk6IG51bWJlcjsgICAgCiAgICAgICAgICAgIC8vKHMxOiBzdHJpbmcsIHMyOiBzdHJpbmcpOiBudW1iZXI7CiAgICAgICAgfTsKICAgIHQ4OiAobjogbnVtYmVyLCBzOiBzdHJpbmcpID0+IG51bWJlcjsKICAgIHQ5OiBudW1iZXJbXVtdOwogICAgdDEwOiBJRm9vW107CiAgICB0MTE6IHsobjogbnVtYmVyLCBzOiBzdHJpbmcpOiBzdHJpbmc7fVtdOwogICAgdDEyOiBJQmFyOwogICAgdDEzOiBJRm9vOwogICAgdDE0OiBJRm9vOwogICAgfQoKdmFyIG9iamM4OiB7CiAgICB0MTogKHM6IHN0cmluZykgPT4gc3RyaW5nOwogICAgdDI6IElGb287CiAgICB0MzogbnVtYmVyW107CiAgICB0NDogKCkgPT4gSUZvbzsKICAgIHQ1OiAobjogbnVtYmVyKSA9PiBJRm9vOwogICAgdDY6IChuOiBudW1iZXIsIHM6IHN0cmluZykgPT4gSUZvbzsKICAgIHQ3OiB7CiAgICAgICAgICAgIChuOiBudW1iZXIsIHM6IHN0cmluZyk6IG51bWJlcjsgICAgCiAgICAgICAgICAgIC8vKHMxOiBzdHJpbmcsIHMyOiBzdHJpbmcpOiBudW1iZXI7CiAgICAgICAgfTsKICAgIHQ4OiAobjogbnVtYmVyLCBzOiBzdHJpbmcpID0+IG51bWJlcjsKICAgIHQ5OiBudW1iZXJbXVtdOwogICAgdDEwOiBJRm9vW107CiAgICB0MTE6IHsobjogbnVtYmVyLCBzOiBzdHJpbmcpOiBzdHJpbmc7fVtdOwogICAgdDEyOiBJQmFyOwogICAgdDEzOiBJRm9vOwogICAgdDE0OiBJRm9vOwp9ID0gPElQbGFjZUhvbGRlcj4oe30pOwoKb2JqYzgudDEgPSAoZnVuY3Rpb24ocykgeyByZXR1cm4gcyB9KTsKb2JqYzgudDIgPSA8SUZvbz4oewogICAgbjogMQp9KTsKb2JqYzgudDMgPSBbXTsKb2JqYzgudDQgPSBmdW5jdGlvbigpIHsgcmV0dXJuIDxJRm9vPih7fSkgfTsKb2JqYzgudDUgPSBmdW5jdGlvbihuKSB7IHJldHVybiA8SUZvbz4oe30pIH07Cm9iamM4LnQ2ID0gZnVuY3Rpb24obiwgcykgeyByZXR1cm4gPElGb28+KHt9KSB9OwpvYmpjOC50NyA9IGZ1bmN0aW9uKG46IG51bWJlcikgeyByZXR1cm4gbiB9OwoKb2JqYzgudDggPSBmdW5jdGlvbihuKSB7IHJldHVybiBuOyB9OwpvYmpjOC50OSA9IFtbXSxbXV07Cm9iamM4LnQxMCA9IFs8SUZvbz4oe30pLDxJRm9vPih7fSldOwpvYmpjOC50MTEgPSBbZnVuY3Rpb24obiwgcykgeyByZXR1cm4gczsgfV07Cm9iamM4LnQxMiA9IHsKICAgIGZvbzogPElGb28+KHt9KQp9Cm9iamM4LnQxMyA9IDxJRm9vPih7CiAgICBmOiBmdW5jdGlvbihpLCBzKSB7IHJldHVybiBzOyB9Cn0pCm9iamM4LnQxNCA9IDxJRm9vPih7CiAgICBhOiBbXQp9KQovLyBDT05URVhUOiBGdW5jdGlvbiBjYWxsCmZ1bmN0aW9uIGM5dDUoZjogKG46IG51bWJlcikgPT4gSUZvbykge307CmM5dDUoZnVuY3Rpb24obikgewogICAgcmV0dXJuIDxJRm9vPih7fSk7Cn0pOwoKLy8gQ09OVEVYVDogUmV0dXJuIHN0YXRlbWVudAp2YXIgYzEwdDU6ICgpID0+IChuOiBudW1iZXIpID0+IElGb28gPSBmdW5jdGlvbigpIHsgcmV0dXJuIGZ1bmN0aW9uKG4pIHsgcmV0dXJuIDxJRm9vPih7fSkgfSB9OwoKLy8gQ09OVEVYVDogTmV3aW5nIGEgY2xhc3MKY2xhc3MgQzExdDUgeyBjb25zdHJ1Y3RvcihmOiAobjogbnVtYmVyKSA9PiBJRm9vKSB7IH0gfTsKdmFyIGkgPSBuZXcgQzExdDUoZnVuY3Rpb24obikgeyByZXR1cm4gPElGb28+KHt9KSB9KTsKCi8vIENPTlRFWFQ6IFR5cGUgYW5ub3RhdGVkIGV4cHJlc3Npb24KdmFyIGMxMnQxID0gPChzOiBzdHJpbmcpID0+IHN0cmluZz4gKGZ1bmN0aW9uKHMpIHsgcmV0dXJuIHMgfSk7CnZhciBjMTJ0MiA9IDxJRm9vPiAoewogICAgbjogMQp9KTsKdmFyIGMxMnQzID0gPG51bWJlcltdPiBbXTsKdmFyIGMxMnQ0ID0gPCgpID0+IElGb28+IGZ1bmN0aW9uKCkgeyByZXR1cm4gPElGb28+KHt9KSB9Owp2YXIgYzEydDUgPSA8KG46IG51bWJlcikgPT4gSUZvbz4gZnVuY3Rpb24obikgeyByZXR1cm4gPElGb28+KHt9KSB9Owp2YXIgYzEydDYgPSA8KG46IG51bWJlciwgczogc3RyaW5nKSA9PiBJRm9vPiBmdW5jdGlvbihuLCBzKSB7IHJldHVybiA8SUZvbz4oe30pIH07CnZhciBjMTJ0NyA9IDx7CiAgICAobjogbnVtYmVyLCBzOiBzdHJpbmcpOiBudW1iZXI7ICAgIAogICAgLy8oczE6IHN0cmluZywgczI6IHN0cmluZyk6IG51bWJlcjsKfT4gZnVuY3Rpb24objpudW1iZXIpIHsgcmV0dXJuIG4gfTsKCnZhciBjMTJ0OCA9IDwobjogbnVtYmVyLCBzOiBzdHJpbmcpID0+IG51bWJlcj4gZnVuY3Rpb24obikgeyByZXR1cm4gbjsgfTsKdmFyIGMxMnQ5ID0gPG51bWJlcltdW10+IFtbXSxbXV07CnZhciBjMTJ0MTAgPSA8SUZvb1tdPiBbPElGb28+KHt9KSw8SUZvbz4oe30pXTsKdmFyIGMxMnQxMSA9IDx7KG46IG51bWJlciwgczogc3RyaW5nKTogc3RyaW5nO31bXT4gW2Z1bmN0aW9uKG4sIHMpIHsgcmV0dXJuIHM7IH1dOwp2YXIgYzEydDEyID0gPElCYXI+IHsKICAgIGZvbzogPElGb28+KHt9KQp9CnZhciBjMTJ0MTMgPSA8SUZvbz4gKHsKICAgIGY6IGZ1bmN0aW9uKGksIHMpIHsgcmV0dXJuIHM7IH0KfSkKdmFyIGMxMnQxNCA9IDxJRm9vPiAoewogICAgYTogW10KfSkKCi8vIENPTlRFWFQ6IENvbnRleHR1YWwgdHlwaW5nIGRlY2xhcmF0aW9ucwoKLy8gY29udGV4dHVhbGx5IHR5cGluZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKZGVjbGFyZSBmdW5jdGlvbiBFRjEoYTpudW1iZXIsIGI6bnVtYmVyKTpudW1iZXI7CgpmdW5jdGlvbiBFRjEoYSxiKSB7IHJldHVybiBhK2I7IH0KCnZhciBlZnYgPSBFRjEoMSwyKTsKCgovLyBjb250ZXh0dWFsbHkgdHlwaW5nIGZyb20gYW1iaWVudCBjbGFzcyBkZWNsYXJhdGlvbnMKZGVjbGFyZSBjbGFzcyBQb2ludAp7CiAgICAgIGNvbnN0cnVjdG9yKHg6IG51bWJlciwgeTogbnVtYmVyKTsKICAgICAgeDogbnVtYmVyOwogICAgICB5OiBudW1iZXI7CiAgICAgIGFkZChkeDogbnVtYmVyLCBkeTogbnVtYmVyKTogUG9pbnQ7CiAgICAgIHN0YXRpYyBvcmlnaW46IFBvaW50OwoKfQoKUG9pbnQub3JpZ2luID0gbmV3IFBvaW50KDAsIDApOwoKUG9pbnQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGR4LCBkeSkgewogICAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLnggKyBkeCwgdGhpcy55ICsgZHkpOwp9OwoKUG9pbnQucHJvdG90eXBlID0gewogICAgeDogMCwKICAgIHk6IDAsCiAgICBhZGQ6IGZ1bmN0aW9uKGR4LCBkeSkgewogICAgICAgIHJldHVybiBuZXcgUG9pbnQodGhpcy54ICsgZHgsIHRoaXMueSArIGR5KTsKICAgIH0KfTsKCmludGVyZmFjZSBBIHsgeDogc3RyaW5nOyB9CmludGVyZmFjZSBCIGV4dGVuZHMgQSB7IH0KdmFyIHg6IEIgPSB7IH07Cg==