@bitgo/sdk-coin-ton 3.11.4 → 3.12.0

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.
@@ -3,4 +3,6 @@ export declare const WALLET_ID = 698983191;
3
3
  export declare const JETTON_TRANSFER_OPCODE = 260734629;
4
4
  export declare const WITHDRAW_OPCODE = "00001000";
5
5
  export declare const VESTING_CONTRACT_CODE_B64 = "te6cckECHAEAA/sAART/APSkE/S88sgLAQIBIAISAgFIAwUDrNBsIiDXScFgkVvgAdDTAwFxsJFb4PpAMNs8AdMf0z/4S1JAxwUjghCnczrNurCOpGwS2zyCEPdzOs0BcIAYyMsFUATPFiP6AhPLassfyz/JgED7AOMOExQEAc74SlJAxwUDghByWKabuhOwjtGOLAH6QH/IygAC+kQByMoHy//J0PhEECOBAQj0QfhkINdKwgAglQHUMNAB3rMS5oIQ8limmzJwgBjIywVQBM8WI/oCE8tqyx/LP8mAQPsA2zySXwPiGwIBIAYPAgEgBwoCAW4ICQAZrc52omhAIGuQ64X/wAAZrx32omhAEGuQ64WPwAIBYgsMAUutNG2eNvwiRw1AgIR6STfSmRDOaQPp/5g3gSgBt4EBSJhxWfMYQBMCAWoNDgAPol+1E0NcLH4BL6LHbPPpEAcjKB8v/ydD4RIEBCPQKb6ExhMCASAQEQEpukYts8+EX4RvhH+Ej4SfhK+Ev4RIEwINuYRts82zyBMVA7jygwjXGCDTH9Mf0x8C+CO78mTtRNDTH9Mf0/8wWrryoVAzuvKiAvkBQDP5EPKj+ADbPCDXSsABjpntRO1F7UeRW+1n7WXtZI6C2zztQe3xAfL/kTDi+EGk+GHbPBMUGwB+7UTQ0x8B+GHTHwH4YtP/Afhj9AQB+GTUAdDTPwH4ZdMfAfhm0x8B+GfTHwH4aPoAAfhp+kAB+Gr6QAH4a9HRAlzTB9TR+CPbPCDCAI6bIsAD8uBkIdDTA/pAMfpA+EpSIMcFs5JfBOMNkTDiAfsAFRYAYPhF+EagUhC8kjBw4PhF+EigUhC5kzD4SeD4SfhJ+EUTofhHqQT4RvhHqQQQI6mEoQP6IfpEAcjKB8v/ydD4RIEBCPQKb6Exj18zAXKwwALy4GUB+gAxcdch+gAx+gAx0z8x0x8x0wABwADy4GbTAAGT1DDQ3iFx2zyOKjHTHzAgghBOc3RLuiGCEEdldCS6sSGCEFZ0Q3C6sQGCEFZvdGW6sfLgZ+MOcJJfA+IgwgAYFxoC6gFw2zyObSDXScIAjmPTHyHAACKDC7qxIoEQAbqxIoIQR9VDkbqxIoIQWV8HvLqxIoIQafswbLqxIoIQVm90ZbqxIoIQVnRDcLqx8uBnAcAAIddJwgCwjhXTBzAgwGQhwHexIcBEsQHAV7Hy4GiRMOKRMOLjDRgZAEQB+kQBw/+SW3DgAfgzIG6SW3Dg0CDXSYMHuZJbcODXC/+6ABrTHzCCEFZvdGW68uBnAA6TcvsCkTDiAGb4SPhH+Eb4RcjLP8sfyx/LH/hJ+gL4Ss8W+EvPFsn4RPhD+EL4QcjLH8sfy//0AMzJ7VSo1+S9";
6
+ export declare const TON_WHALES_DEPOSIT_OPCODE = "2077040623";
7
+ export declare const TON_WHALES_WITHDRAW_OPCODE = "3665837821";
6
8
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,sBAAsB,YAAa,CAAC;AACjD,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,yBAAyB,y2CACk0C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,SAAS,YAAY,CAAC;AACnC,eAAO,MAAM,sBAAsB,YAAa,CAAC;AACjD,eAAO,MAAM,eAAe,aAAa,CAAC;AAC1C,eAAO,MAAM,yBAAyB,y2CACk0C,CAAC;AACz2C,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,0BAA0B,eAAe,CAAC"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.VESTING_CONTRACT_CODE_B64 = exports.WITHDRAW_OPCODE = exports.JETTON_TRANSFER_OPCODE = exports.WALLET_ID = exports.VESTING_CONTRACT_WALLET_ID = void 0;
3
+ exports.TON_WHALES_WITHDRAW_OPCODE = exports.TON_WHALES_DEPOSIT_OPCODE = exports.VESTING_CONTRACT_CODE_B64 = exports.WITHDRAW_OPCODE = exports.JETTON_TRANSFER_OPCODE = exports.WALLET_ID = exports.VESTING_CONTRACT_WALLET_ID = void 0;
4
4
  exports.VESTING_CONTRACT_WALLET_ID = 268;
5
5
  exports.WALLET_ID = 698983191;
6
6
  exports.JETTON_TRANSFER_OPCODE = 0x0f8a7ea5;
7
7
  exports.WITHDRAW_OPCODE = '00001000';
8
8
  exports.VESTING_CONTRACT_CODE_B64 = 'te6cckECHAEAA/sAART/APSkE/S88sgLAQIBIAISAgFIAwUDrNBsIiDXScFgkVvgAdDTAwFxsJFb4PpAMNs8AdMf0z/4S1JAxwUjghCnczrNurCOpGwS2zyCEPdzOs0BcIAYyMsFUATPFiP6AhPLassfyz/JgED7AOMOExQEAc74SlJAxwUDghByWKabuhOwjtGOLAH6QH/IygAC+kQByMoHy//J0PhEECOBAQj0QfhkINdKwgAglQHUMNAB3rMS5oIQ8limmzJwgBjIywVQBM8WI/oCE8tqyx/LP8mAQPsA2zySXwPiGwIBIAYPAgEgBwoCAW4ICQAZrc52omhAIGuQ64X/wAAZrx32omhAEGuQ64WPwAIBYgsMAUutNG2eNvwiRw1AgIR6STfSmRDOaQPp/5g3gSgBt4EBSJhxWfMYQBMCAWoNDgAPol+1E0NcLH4BL6LHbPPpEAcjKB8v/ydD4RIEBCPQKb6ExhMCASAQEQEpukYts8+EX4RvhH+Ej4SfhK+Ev4RIEwINuYRts82zyBMVA7jygwjXGCDTH9Mf0x8C+CO78mTtRNDTH9Mf0/8wWrryoVAzuvKiAvkBQDP5EPKj+ADbPCDXSsABjpntRO1F7UeRW+1n7WXtZI6C2zztQe3xAfL/kTDi+EGk+GHbPBMUGwB+7UTQ0x8B+GHTHwH4YtP/Afhj9AQB+GTUAdDTPwH4ZdMfAfhm0x8B+GfTHwH4aPoAAfhp+kAB+Gr6QAH4a9HRAlzTB9TR+CPbPCDCAI6bIsAD8uBkIdDTA/pAMfpA+EpSIMcFs5JfBOMNkTDiAfsAFRYAYPhF+EagUhC8kjBw4PhF+EigUhC5kzD4SeD4SfhJ+EUTofhHqQT4RvhHqQQQI6mEoQP6IfpEAcjKB8v/ydD4RIEBCPQKb6Exj18zAXKwwALy4GUB+gAxcdch+gAx+gAx0z8x0x8x0wABwADy4GbTAAGT1DDQ3iFx2zyOKjHTHzAgghBOc3RLuiGCEEdldCS6sSGCEFZ0Q3C6sQGCEFZvdGW6sfLgZ+MOcJJfA+IgwgAYFxoC6gFw2zyObSDXScIAjmPTHyHAACKDC7qxIoEQAbqxIoIQR9VDkbqxIoIQWV8HvLqxIoIQafswbLqxIoIQVm90ZbqxIoIQVnRDcLqx8uBnAcAAIddJwgCwjhXTBzAgwGQhwHexIcBEsQHAV7Hy4GiRMOKRMOLjDRgZAEQB+kQBw/+SW3DgAfgzIG6SW3Dg0CDXSYMHuZJbcODXC/+6ABrTHzCCEFZvdGW68uBnAA6TcvsCkTDiAGb4SPhH+Eb4RcjLP8sfyx/LH/hJ+gL4Ss8W+EvPFsn4RPhD+EL4QcjLH8sfy//0AMzJ7VSo1+S9';
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSwwQkFBMEIsR0FBRyxHQUFHLENBQUM7QUFDakMsUUFBQSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3RCLFFBQUEsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLFFBQUEsZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUM3QixRQUFBLHlCQUF5QixHQUNwQyxzMkNBQXMyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IFZFU1RJTkdfQ09OVFJBQ1RfV0FMTEVUX0lEID0gMjY4O1xuZXhwb3J0IGNvbnN0IFdBTExFVF9JRCA9IDY5ODk4MzE5MTtcbmV4cG9ydCBjb25zdCBKRVRUT05fVFJBTlNGRVJfT1BDT0RFID0gMHgwZjhhN2VhNTtcbmV4cG9ydCBjb25zdCBXSVRIRFJBV19PUENPREUgPSAnMDAwMDEwMDAnO1xuZXhwb3J0IGNvbnN0IFZFU1RJTkdfQ09OVFJBQ1RfQ09ERV9CNjQgPVxuICAndGU2Y2NrRUNIQUVBQS9zQUFSVC9BUFNrRS9TODhzZ0xBUUlCSUFJU0FnRklBd1VEck5Cc0lpRFhTY0Zna1Z2Z0FkRFRBd0Z4c0pGYjRQcEFNTnM4QWRNZjB6LzRTMUpBeHdVamdoQ25jenJOdXJDT3BHd1MyenlDRVBkek9zMEJjSUFZeU1zRlVBVFBGaVA2QWhQTGFzc2Z5ei9KZ0VEN0FPTU9FeFFFQWM3NFNsSkF4d1VEZ2hCeVdLYWJ1aE93anRHT0xBSDZRSC9JeWdBQytrUUJ5TW9IeS8vSjBQaEVFQ09CQVFqMFFmaGtJTmRLd2dBZ2xRSFVNTkFCM3JNUzVvSVE4bGltbXpKd2dCakl5d1ZRQk04V0kvb0NFOHRxeXgvTFA4bUFRUHNBMnp5U1h3UGlHd0lCSUFZUEFnRWdCd29DQVc0SUNRQVpyYzUyb21oQUlHdVE2NFgvd0FBWnJ4MzJvbWhBRUd1UTY0V1B3QUlCWWdzTUFVdXRORzJlTnZ3aVJ3MUFnSVI2U1RmU21SRE9hUVBwLzVnM2dTZ0J0NEVCU0poeFdmTVlRQk1DQVdvTkRnQVBvbCsxRTBOY0xINEJMNkxIYlBQcEVBY2pLQjh2L3lkRDRSSUVCQ1BRS2I2RXhoTUNBU0FRRVFFcHVrWXRzOCtFWDRSdmhIK0VqNFNmaEsrRXY0UklFd0lOdVlSdHM4Mnp5Qk1WQTdqeWd3alhHQ0RUSDlNZjB4OEMrQ083OG1UdFJORFRIOU1mMC84d1dycnlvVkF6dXZLaUF2a0JRRFA1RVBLaitBRGJQQ0RYU3NBQmpwbnRSTzFGN1VlUlcrMW43V1h0Wkk2QzJ6enRRZTN4QWZML2tURGkrRUdrK0dIYlBCTVVHd0IrN1VUUTB4OEIrR0hUSHdINFl0UC9BZmhqOUFRQitHVFVBZERUUHdINFpkTWZBZmhtMHg4QitHZlRId0g0YVBvQUFmaHAra0FCK0dyNlFBSDRhOUhSQWx6VEI5VFIrQ1BiUENEQ0FJNmJJc0FEOHVCa0lkRFRBL3BBTWZwQStFcFNJTWNGczVKZkJPTU5rVERpQWZzQUZSWUFZUGhGK0VhZ1VoQzhrakJ3NFBoRitFaWdVaEM1a3pENFNlRDRTZmhKK0VVVG9maEhxUVQ0UnZoSHFRUVFJNm1Fb1FQNklmcEVBY2pLQjh2L3lkRDRSSUVCQ1BRS2I2RXhqMTh6QVhLd3dBTHk0R1VCK2dBeGNkY2grZ0F4K2dBeDB6OHgweDh4MHdBQndBRHk0R2JUQUFHVDFERFEzaUZ4Mnp5T0tqSFRIekFnZ2hCT2MzUkx1aUdDRUVkbGRDUzZzU0dDRUZaMFEzQzZzUUdDRUZadmRHVzZzZkxnWitNT2NKSmZBK0lnd2dBWUZ4b0M2Z0Z3Mnp5T2JTRFhTY0lBam1QVEh5SEFBQ0tEQzdxeElvRVFBYnF4SW9JUVI5VkRrYnF4SW9JUVdWOEh2THF4SW9JUWFmc3diTHF4SW9JUVZtOTBaYnF4SW9JUVZuUkRjTHF4OHVCbkFjQUFJZGRKd2dDd2poWFRCekFnd0dRaHdIZXhJY0JFc1FIQVY3SHk0R2lSTU9LUk1PTGpEUmdaQUVRQitrUUJ3LytTVzNEZ0FmZ3pJRzZTVzNEZzBDRFhTWU1IdVpKYmNPRFhDLys2QUJyVEh6Q0NFRlp2ZEdXNjh1Qm5BQTZUY3ZzQ2tURGlBR2I0U1BoSCtFYjRSY2pMUDhzZnl4L0xIL2hKK2dMNFNzOFcrRXZQRnNuNFJQaEQrRUw0UWNqTEg4c2Z5Ly8wQU16SjdWU28xK1M5JztcbiJdfQ==
9
+ exports.TON_WHALES_DEPOSIT_OPCODE = '2077040623';
10
+ exports.TON_WHALES_WITHDRAW_OPCODE = '3665837821';
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSwwQkFBMEIsR0FBRyxHQUFHLENBQUM7QUFDakMsUUFBQSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3RCLFFBQUEsc0JBQXNCLEdBQUcsVUFBVSxDQUFDO0FBQ3BDLFFBQUEsZUFBZSxHQUFHLFVBQVUsQ0FBQztBQUM3QixRQUFBLHlCQUF5QixHQUNwQyxzMkNBQXMyQyxDQUFDO0FBQzUxQyxRQUFBLHlCQUF5QixHQUFHLFlBQVksQ0FBQztBQUN6QyxRQUFBLDBCQUEwQixHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBWRVNUSU5HX0NPTlRSQUNUX1dBTExFVF9JRCA9IDI2ODtcbmV4cG9ydCBjb25zdCBXQUxMRVRfSUQgPSA2OTg5ODMxOTE7XG5leHBvcnQgY29uc3QgSkVUVE9OX1RSQU5TRkVSX09QQ09ERSA9IDB4MGY4YTdlYTU7XG5leHBvcnQgY29uc3QgV0lUSERSQVdfT1BDT0RFID0gJzAwMDAxMDAwJztcbmV4cG9ydCBjb25zdCBWRVNUSU5HX0NPTlRSQUNUX0NPREVfQjY0ID1cbiAgJ3RlNmNja0VDSEFFQUEvc0FBUlQvQVBTa0UvUzg4c2dMQVFJQklBSVNBZ0ZJQXdVRHJOQnNJaURYU2NGZ2tWdmdBZERUQXdGeHNKRmI0UHBBTU5zOEFkTWYwei80UzFKQXh3VWpnaENuY3pyTnVyQ09wR3dTMnp5Q0VQZHpPczBCY0lBWXlNc0ZVQVRQRmlQNkFoUExhc3NmeXovSmdFRDdBT01PRXhRRUFjNzRTbEpBeHdVRGdoQnlXS2FidWhPd2p0R09MQUg2UUgvSXlnQUMra1FCeU1vSHkvL0owUGhFRUNPQkFRajBRZmhrSU5kS3dnQWdsUUhVTU5BQjNyTVM1b0lROGxpbW16SndnQmpJeXdWUUJNOFdJL29DRTh0cXl4L0xQOG1BUVBzQTJ6eVNYd1BpR3dJQklBWVBBZ0VnQndvQ0FXNElDUUFacmM1Mm9taEFJR3VRNjRYL3dBQVpyeDMyb21oQUVHdVE2NFdQd0FJQllnc01BVXV0TkcyZU52d2lSdzFBZ0lSNlNUZlNtUkRPYVFQcC81ZzNnU2dCdDRFQlNKaHhXZk1ZUUJNQ0FXb05EZ0FQb2wrMUUwTmNMSDRCTDZMSGJQUHBFQWNqS0I4di95ZEQ0UklFQkNQUUtiNkV4aE1DQVNBUUVRRXB1a1l0czgrRVg0UnZoSCtFajRTZmhLK0V2NFJJRXdJTnVZUnRzODJ6eUJNVkE3anlnd2pYR0NEVEg5TWYweDhDK0NPNzhtVHRSTkRUSDlNZjAvOHdXcnJ5b1ZBenV2S2lBdmtCUURQNUVQS2orQURiUENEWFNzQUJqcG50Uk8xRjdVZVJXKzFuN1dYdFpJNkMyenp0UWUzeEFmTC9rVERpK0VHaytHSGJQQk1VR3dCKzdVVFEweDhCK0dIVEh3SDRZdFAvQWZoajlBUUIrR1RVQWREVFB3SDRaZE1mQWZobTB4OEIrR2ZUSHdINGFQb0FBZmhwK2tBQitHcjZRQUg0YTlIUkFselRCOVRSK0NQYlBDRENBSTZiSXNBRDh1QmtJZERUQS9wQU1mcEErRXBTSU1jRnM1SmZCT01Oa1REaUFmc0FGUllBWVBoRitFYWdVaEM4a2pCdzRQaEYrRWlnVWhDNWt6RDRTZUQ0U2ZoSitFVVRvZmhIcVFUNFJ2aEhxUVFRSTZtRW9RUDZJZnBFQWNqS0I4di95ZEQ0UklFQkNQUUtiNkV4ajE4ekFYS3d3QUx5NEdVQitnQXhjZGNoK2dBeCtnQXgwejh4MHg4eDB3QUJ3QUR5NEdiVEFBR1QxRERRM2lGeDJ6eU9LakhUSHpBZ2doQk9jM1JMdWlHQ0VFZGxkQ1M2c1NHQ0VGWjBRM0M2c1FHQ0VGWnZkR1c2c2ZMZ1orTU9jSkpmQStJZ3dnQVlGeG9DNmdGdzJ6eU9iU0RYU2NJQWptUFRIeUhBQUNLREM3cXhJb0VRQWJxeElvSVFSOVZEa2JxeElvSVFXVjhIdkxxeElvSVFhZnN3YkxxeElvSVFWbTkwWmJxeElvSVFWblJEY0xxeDh1Qm5BY0FBSWRkSndnQ3dqaFhUQnpBZ3dHUWh3SGV4SWNCRXNRSEFWN0h5NEdpUk1PS1JNT0xqRFJnWkFFUUIra1FCdy8rU1czRGdBZmd6SUc2U1czRGcwQ0RYU1lNSHVaSmJjT0RYQy8rNkFCclRIekNDRUZadmRHVzY4dUJuQUE2VGN2c0NrVERpQUdiNFNQaEgrRWI0UmNqTFA4c2Z5eC9MSC9oSitnTDRTczhXK0V2UEZzbjRSUGhEK0VMNFFjakxIOHNmeS8vMEFNeko3VlNvMStTOSc7XG5leHBvcnQgY29uc3QgVE9OX1dIQUxFU19ERVBPU0lUX09QQ09ERSA9ICcyMDc3MDQwNjIzJztcbmV4cG9ydCBjb25zdCBUT05fV0hBTEVTX1dJVEhEUkFXX09QQ09ERSA9ICczNjY1ODM3ODIxJztcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Recipient, TransactionType } from '@bitgo/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ export declare class TonWhalesDepositBuilder extends TransactionBuilder {
5
+ constructor(_coinConfig: Readonly<CoinConfig>);
6
+ protected get transactionType(): TransactionType;
7
+ setDepositMessage(queryId?: string): TonWhalesDepositBuilder;
8
+ setDepositAmount(amount: string): TonWhalesDepositBuilder;
9
+ send(recipient: Recipient): TonWhalesDepositBuilder;
10
+ setMessage(msg: string): TonWhalesDepositBuilder;
11
+ }
12
+ //# sourceMappingURL=tonWhalesDepositBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tonWhalesDepositBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tonWhalesDepositBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,qBAAa,uBAAwB,SAAQ,kBAAkB;gBACjD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,uBAAuB;IAS5D,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB;IASzD,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,uBAAuB;IAKnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,uBAAuB;CAGjD"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TonWhalesDepositBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo/sdk-core");
5
+ const transactionBuilder_1 = require("./transactionBuilder");
6
+ const transaction_1 = require("./transaction");
7
+ const constants_1 = require("./constants");
8
+ class TonWhalesDepositBuilder extends transactionBuilder_1.TransactionBuilder {
9
+ constructor(_coinConfig) {
10
+ super(_coinConfig);
11
+ this._transaction = new transaction_1.Transaction(_coinConfig);
12
+ }
13
+ get transactionType() {
14
+ return sdk_core_1.TransactionType.TonWhalesDeposit;
15
+ }
16
+ setDepositMessage(queryId) {
17
+ // Deposit payload is just OpCode + QueryId.
18
+ // The Amount is in the transaction value (recipient.amount)
19
+ // The Gas Limit is hardcoded in Transaction.ts build()
20
+ const qId = queryId || '0000000000000000';
21
+ this.transaction.message = constants_1.TON_WHALES_DEPOSIT_OPCODE + qId;
22
+ return this;
23
+ }
24
+ setDepositAmount(amount) {
25
+ if (!this.transaction.recipient) {
26
+ this.transaction.recipient = { address: '', amount: amount };
27
+ }
28
+ else {
29
+ this.transaction.recipient.amount = amount;
30
+ }
31
+ return this;
32
+ }
33
+ send(recipient) {
34
+ this.transaction.recipient = recipient;
35
+ return this;
36
+ }
37
+ setMessage(msg) {
38
+ throw new Error('Method not implemented.');
39
+ }
40
+ }
41
+ exports.TonWhalesDepositBuilder = TonWhalesDepositBuilder;
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RvbldoYWxlc0RlcG9zaXRCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhDQUE2RDtBQUM3RCw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLDJDQUF3RDtBQUV4RCxNQUFhLHVCQUF3QixTQUFRLHVDQUFrQjtJQUM3RCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztJQUMxQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBZ0I7UUFDaEMsNENBQTRDO1FBQzVDLDREQUE0RDtRQUM1RCx1REFBdUQ7UUFDdkQsTUFBTSxHQUFHLEdBQUcsT0FBTyxJQUFJLGtCQUFrQixDQUFDO1FBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLHFDQUF5QixHQUFHLEdBQUcsQ0FBQztRQUMzRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDL0QsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQzdDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsU0FBb0I7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0NBQ0Y7QUFwQ0QsMERBb0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFJlY2lwaWVudCwgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlciB9IGZyb20gJy4vdHJhbnNhY3Rpb25CdWlsZGVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUT05fV0hBTEVTX0RFUE9TSVRfT1BDT0RFIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvcihfY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihfY29pbkNvbmZpZyk7XG4gICAgdGhpcy5fdHJhbnNhY3Rpb24gPSBuZXcgVHJhbnNhY3Rpb24oX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCB0cmFuc2FjdGlvblR5cGUoKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc0RlcG9zaXQ7XG4gIH1cblxuICBzZXREZXBvc2l0TWVzc2FnZShxdWVyeUlkPzogc3RyaW5nKTogVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIge1xuICAgIC8vIERlcG9zaXQgcGF5bG9hZCBpcyBqdXN0IE9wQ29kZSArIFF1ZXJ5SWQuXG4gICAgLy8gVGhlIEFtb3VudCBpcyBpbiB0aGUgdHJhbnNhY3Rpb24gdmFsdWUgKHJlY2lwaWVudC5hbW91bnQpXG4gICAgLy8gVGhlIEdhcyBMaW1pdCBpcyBoYXJkY29kZWQgaW4gVHJhbnNhY3Rpb24udHMgYnVpbGQoKVxuICAgIGNvbnN0IHFJZCA9IHF1ZXJ5SWQgfHwgJzAwMDAwMDAwMDAwMDAwMDAnO1xuICAgIHRoaXMudHJhbnNhY3Rpb24ubWVzc2FnZSA9IFRPTl9XSEFMRVNfREVQT1NJVF9PUENPREUgKyBxSWQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXREZXBvc2l0QW1vdW50KGFtb3VudDogc3RyaW5nKTogVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIge1xuICAgIGlmICghdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQpIHtcbiAgICAgIHRoaXMudHJhbnNhY3Rpb24ucmVjaXBpZW50ID0geyBhZGRyZXNzOiAnJywgYW1vdW50OiBhbW91bnQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQuYW1vdW50ID0gYW1vdW50O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbmQocmVjaXBpZW50OiBSZWNpcGllbnQpOiBUb25XaGFsZXNEZXBvc2l0QnVpbGRlciB7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSByZWNpcGllbnQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZXRNZXNzYWdlKG1zZzogc3RyaW5nKTogVG9uV2hhbGVzRGVwb3NpdEJ1aWxkZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Recipient, TransactionType } from '@bitgo/sdk-core';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ export declare class TonWhalesWithdrawalBuilder extends TransactionBuilder {
5
+ constructor(_coinConfig: Readonly<CoinConfig>);
6
+ protected get transactionType(): TransactionType;
7
+ /**
8
+ * Sets the payload for the withdrawal request.
9
+ * Structure: OpCode (32) + QueryId (64) + GasLimit (Coins) + UnstakeAmount (Coins)
10
+ * * @param unstakeAmount The amount of NanoTON to unstake (inside payload)
11
+ * @param unstakeAmount The amount to unstake
12
+ * @param queryId Optional custom query ID
13
+ */
14
+ setWithdrawalMessage(unstakeAmount: string, queryId?: string): TonWhalesWithdrawalBuilder;
15
+ /**
16
+ * Sets the message to withdraw EVERYTHING from the pool.
17
+ * This sets the unstakeAmount to "0", which is the specific signal for full withdrawal.
18
+ */
19
+ setFullWithdrawalMessage(queryId?: string): TonWhalesWithdrawalBuilder;
20
+ /**
21
+ * Sets the value attached to the transaction (The Fees).
22
+ * NOTE: This is NOT the unstake amount. This is the fee paid to the pool
23
+ * to process the request (e.g. withdrawFee + receiptPrice).
24
+ * * @param amount NanoTON amount to attach to the message
25
+ */
26
+ setForwardAmount(amount: string): TonWhalesWithdrawalBuilder;
27
+ send(recipient: Recipient): TonWhalesWithdrawalBuilder;
28
+ setMessage(msg: string): TonWhalesWithdrawalBuilder;
29
+ }
30
+ //# sourceMappingURL=tonWhalesWithdrawalBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tonWhalesWithdrawalBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/tonWhalesWithdrawalBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,qBAAa,0BAA2B,SAAQ,kBAAkB;gBACpD,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED;;;;;;OAMG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,0BAA0B;IAOzF;;;OAGG;IACH,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,0BAA0B;IAItE;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,0BAA0B;IAS5D,IAAI,CAAC,SAAS,EAAE,SAAS,GAAG,0BAA0B;IAKtD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,0BAA0B;CAGpD"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TonWhalesWithdrawalBuilder = void 0;
4
+ const sdk_core_1 = require("@bitgo/sdk-core");
5
+ const transactionBuilder_1 = require("./transactionBuilder");
6
+ const transaction_1 = require("./transaction");
7
+ const constants_1 = require("./constants");
8
+ class TonWhalesWithdrawalBuilder extends transactionBuilder_1.TransactionBuilder {
9
+ constructor(_coinConfig) {
10
+ super(_coinConfig);
11
+ this._transaction = new transaction_1.Transaction(_coinConfig);
12
+ }
13
+ get transactionType() {
14
+ return sdk_core_1.TransactionType.TonWhalesWithdrawal;
15
+ }
16
+ /**
17
+ * Sets the payload for the withdrawal request.
18
+ * Structure: OpCode (32) + QueryId (64) + GasLimit (Coins) + UnstakeAmount (Coins)
19
+ * * @param unstakeAmount The amount of NanoTON to unstake (inside payload)
20
+ * @param unstakeAmount The amount to unstake
21
+ * @param queryId Optional custom query ID
22
+ */
23
+ setWithdrawalMessage(unstakeAmount, queryId) {
24
+ const qId = queryId || '0000000000000000';
25
+ this.transaction.message = constants_1.TON_WHALES_WITHDRAW_OPCODE + qId + unstakeAmount;
26
+ return this;
27
+ }
28
+ /**
29
+ * Sets the message to withdraw EVERYTHING from the pool.
30
+ * This sets the unstakeAmount to "0", which is the specific signal for full withdrawal.
31
+ */
32
+ setFullWithdrawalMessage(queryId) {
33
+ return this.setWithdrawalMessage('0', queryId);
34
+ }
35
+ /**
36
+ * Sets the value attached to the transaction (The Fees).
37
+ * NOTE: This is NOT the unstake amount. This is the fee paid to the pool
38
+ * to process the request (e.g. withdrawFee + receiptPrice).
39
+ * * @param amount NanoTON amount to attach to the message
40
+ */
41
+ setForwardAmount(amount) {
42
+ if (!this.transaction.recipient) {
43
+ this.transaction.recipient = { address: '', amount: amount };
44
+ }
45
+ else {
46
+ this.transaction.recipient.amount = amount;
47
+ }
48
+ return this;
49
+ }
50
+ send(recipient) {
51
+ this.transaction.recipient = recipient;
52
+ return this;
53
+ }
54
+ setMessage(msg) {
55
+ throw new Error('Use setWithdrawalMessage for specific payload construction');
56
+ }
57
+ }
58
+ exports.TonWhalesWithdrawalBuilder = TonWhalesWithdrawalBuilder;
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDhDQUE2RDtBQUM3RCw2REFBMEQ7QUFDMUQsK0NBQTRDO0FBQzVDLDJDQUF5RDtBQUV6RCxNQUFhLDBCQUEyQixTQUFRLHVDQUFrQjtJQUNoRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxlQUFlO1FBQzNCLE9BQU8sMEJBQWUsQ0FBQyxtQkFBbUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsb0JBQW9CLENBQUMsYUFBcUIsRUFBRSxPQUFnQjtRQUMxRCxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksa0JBQWtCLENBQUM7UUFFMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEdBQUcsc0NBQTBCLEdBQUcsR0FBRyxHQUFHLGFBQWEsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSCx3QkFBd0IsQ0FBQyxPQUFnQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZ0JBQWdCLENBQUMsTUFBYztRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQy9ELENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUM3QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLFNBQW9CO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxVQUFVLENBQUMsR0FBVztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFDaEYsQ0FBQztDQUNGO0FBdkRELGdFQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIGFzIENvaW5Db25maWcgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBSZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgICB0aGlzLl90cmFuc2FjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbihfY29pbkNvbmZpZyk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGUge1xuICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzV2l0aGRyYXdhbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwYXlsb2FkIGZvciB0aGUgd2l0aGRyYXdhbCByZXF1ZXN0LlxuICAgKiBTdHJ1Y3R1cmU6IE9wQ29kZSAoMzIpICsgUXVlcnlJZCAoNjQpICsgR2FzTGltaXQgKENvaW5zKSArIFVuc3Rha2VBbW91bnQgKENvaW5zKVxuICAgKiAqIEBwYXJhbSB1bnN0YWtlQW1vdW50IFRoZSBhbW91bnQgb2YgTmFub1RPTiB0byB1bnN0YWtlIChpbnNpZGUgcGF5bG9hZClcbiAgICogQHBhcmFtIHVuc3Rha2VBbW91bnQgVGhlIGFtb3VudCB0byB1bnN0YWtlXG4gICAqIEBwYXJhbSBxdWVyeUlkIE9wdGlvbmFsIGN1c3RvbSBxdWVyeSBJRFxuICAgKi9cbiAgc2V0V2l0aGRyYXdhbE1lc3NhZ2UodW5zdGFrZUFtb3VudDogc3RyaW5nLCBxdWVyeUlkPzogc3RyaW5nKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIGNvbnN0IHFJZCA9IHF1ZXJ5SWQgfHwgJzAwMDAwMDAwMDAwMDAwMDAnO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbi5tZXNzYWdlID0gVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUgKyBxSWQgKyB1bnN0YWtlQW1vdW50O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1lc3NhZ2UgdG8gd2l0aGRyYXcgRVZFUllUSElORyBmcm9tIHRoZSBwb29sLlxuICAgKiBUaGlzIHNldHMgdGhlIHVuc3Rha2VBbW91bnQgdG8gXCIwXCIsIHdoaWNoIGlzIHRoZSBzcGVjaWZpYyBzaWduYWwgZm9yIGZ1bGwgd2l0aGRyYXdhbC5cbiAgICovXG4gIHNldEZ1bGxXaXRoZHJhd2FsTWVzc2FnZShxdWVyeUlkPzogc3RyaW5nKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIHJldHVybiB0aGlzLnNldFdpdGhkcmF3YWxNZXNzYWdlKCcwJywgcXVlcnlJZCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zYWN0aW9uIChUaGUgRmVlcykuXG4gICAqIE5PVEU6IFRoaXMgaXMgTk9UIHRoZSB1bnN0YWtlIGFtb3VudC4gVGhpcyBpcyB0aGUgZmVlIHBhaWQgdG8gdGhlIHBvb2xcbiAgICogdG8gcHJvY2VzcyB0aGUgcmVxdWVzdCAoZS5nLiB3aXRoZHJhd0ZlZSArIHJlY2VpcHRQcmljZSkuXG4gICAqICogQHBhcmFtIGFtb3VudCBOYW5vVE9OIGFtb3VudCB0byBhdHRhY2ggdG8gdGhlIG1lc3NhZ2VcbiAgICovXG4gIHNldEZvcndhcmRBbW91bnQoYW1vdW50OiBzdHJpbmcpOiBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB7XG4gICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCkge1xuICAgICAgdGhpcy50cmFuc2FjdGlvbi5yZWNpcGllbnQgPSB7IGFkZHJlc3M6ICcnLCBhbW91bnQ6IGFtb3VudCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudC5hbW91bnQgPSBhbW91bnQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc2VuZChyZWNpcGllbnQ6IFJlY2lwaWVudCk6IFRvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uLnJlY2lwaWVudCA9IHJlY2lwaWVudDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNldE1lc3NhZ2UobXNnOiBzdHJpbmcpOiBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVc2Ugc2V0V2l0aGRyYXdhbE1lc3NhZ2UgZm9yIHNwZWNpZmljIHBheWxvYWQgY29uc3RydWN0aW9uJyk7XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAS,SAAS,EAAwB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGzD,qBAAa,WAAY,SAAQ,eAAe;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAI3B,MAAM,IAAI,MAAM;IAsBhB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,eAAe,CAAC,eAAe,EAAE,eAAe,EAEnD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,SAAS,CAAC,oBAAoB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,EAAE,QAAQ,KAAA;IAYxD,SAAS,CAAC,YAAY,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA;IAoCzC,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlG,oBAAoB,IAAI,IAAI;IAiB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAoBhD,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAkB5C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;IA6C3C,OAAO,CAAC,oBAAoB;IAuH5B,OAAO,CAAC,sBAAsB;CAgB/B"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../src/lib/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD,OAAO,EAAE,OAAO,EAAE,eAAe,EAAS,SAAS,EAAwB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAUzD,qBAAa,WAAY,SAAQ,eAAe;IACvC,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC;gBAEnB,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAQ5C,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,iBAAiB,IAAI,MAAM;IAI3B,MAAM,IAAI,MAAM;IAsBhB,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,eAAe,CAAC,eAAe,EAAE,eAAe,EAEnD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyB5B,SAAS,CAAC,oBAAoB,CAAC,QAAQ,KAAA,EAAE,KAAK,KAAA,EAAE,QAAQ,KAAA;IAYxD,SAAS,CAAC,YAAY,CAAC,OAAO,KAAA,EAAE,MAAM,KAAA,EAAE,OAAO,KAAA;IAuDzC,qBAAqB,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBlG,oBAAoB,IAAI,IAAI;IAiB5B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAoBhD,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;IAkB5C,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,GAAG;IA6C3C,OAAO,CAAC,oBAAoB;IA0I5B,OAAO,CAAC,sBAAsB;CAgB/B"}
@@ -100,6 +100,26 @@ class Transaction extends sdk_core_1.BaseTransaction {
100
100
  payloadCell.bits.writeUint(parseInt(queryId, 16), 64);
101
101
  payloadCell.bits.writeCoins(new bn_js_1.BN(withdrawAmount));
102
102
  }
103
+ else if (payload.length >= 26 && payload.substring(0, 10) === constants_1.TON_WHALES_DEPOSIT_OPCODE) {
104
+ const queryId = payload.substring(10, 26);
105
+ payloadCell.bits.writeUint(parseInt(constants_1.TON_WHALES_DEPOSIT_OPCODE, 10), 32);
106
+ payloadCell.bits.writeUint(parseInt(queryId, 16), 64);
107
+ // The Ton Whales protocol requires a specific 'gas limit' field in the payload
108
+ // structure (OpCode -> QueryId -> GasLimit -> Amount).
109
+ payloadCell.bits.writeCoins(tonweb_1.default.utils.toNano('1'));
110
+ }
111
+ else if (payload.length >= 26 && payload.substring(0, 10) === constants_1.TON_WHALES_WITHDRAW_OPCODE) {
112
+ const queryId = payload.substring(10, 26);
113
+ const amountStr = payload.substring(26);
114
+ payloadCell.bits.writeUint(parseInt(constants_1.TON_WHALES_WITHDRAW_OPCODE, 10), 32);
115
+ payloadCell.bits.writeUint(new bn_js_1.BN(queryId, 16), 64);
116
+ // The Ton Whales protocol requires a specific 'gas limit' field in the payload
117
+ // structure (OpCode -> QueryId -> GasLimit -> Amount).
118
+ // We hardcode 1 TON here to match the Deposit implementation and ensure
119
+ // sufficient gas for the pool to process the request.
120
+ payloadCell.bits.writeCoins(tonweb_1.default.utils.toNano('1'));
121
+ payloadCell.bits.writeCoins(new bn_js_1.BN(amountStr));
122
+ }
103
123
  else {
104
124
  payloadCell.bits.writeUint(0, 32);
105
125
  payloadCell.bits.writeString(payload);
@@ -327,6 +347,24 @@ class Transaction extends sdk_core_1.BaseTransaction {
327
347
  message: message,
328
348
  };
329
349
  }
350
+ else if (opcode === parseInt(constants_1.TON_WHALES_DEPOSIT_OPCODE, 10)) {
351
+ this.transactionType = sdk_core_1.TransactionType.TonWhalesDeposit;
352
+ const queryId = order.loadUint(64).toNumber();
353
+ // This is the gas limit, which must be read to advance the cursor
354
+ // We do not need to store it
355
+ order.loadCoins();
356
+ payload = constants_1.TON_WHALES_DEPOSIT_OPCODE + queryId.toString(16).padStart(16, '0');
357
+ }
358
+ else if (opcode === parseInt(constants_1.TON_WHALES_WITHDRAW_OPCODE, 10)) {
359
+ this.transactionType = sdk_core_1.TransactionType.TonWhalesWithdrawal;
360
+ const queryId = order.loadUint(64).toNumber();
361
+ order.loadCoins(); // Skip Gas (Hardcoded in builder)
362
+ const amount = order.loadCoins();
363
+ withdrawAmount = amount.toString(); // Decimal String
364
+ // Reconstruct Payload: Decimal Op + Hex Query + Decimal Amount
365
+ const queryHex = new bn_js_1.BN(queryId).toString(16).padStart(16, '0');
366
+ payload = constants_1.TON_WHALES_WITHDRAW_OPCODE + queryHex + withdrawAmount;
367
+ }
330
368
  else {
331
369
  payload = '';
332
370
  }
@@ -365,4 +403,4 @@ class Transaction extends sdk_core_1.BaseTransaction {
365
403
  }
366
404
  }
367
405
  exports.Transaction = Transaction;
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixpQ0FBMkI7QUFHM0IsOENBQW9IO0FBR3BILDJDQUE2RztBQUU3RyxNQUFhLFdBQVksU0FBUSwwQkFBZTtJQWdCOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sV0FBVyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQ3JFLElBQUksRUFDSixJQUFJLEVBQ0osQ0FBQyxJQUFJLGdCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUN6RCxDQUFDO1FBQ0YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBYTtZQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUNuQyxnQkFBZ0IsRUFBRSxXQUFXO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07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QXNCLENBQUMsS0FBVTtRQUN2QyxJQUFJLEtBQUssS0FBSyxJQUFJO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDOUIsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNDLElBQUksS0FBSyxLQUFLLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUMsSUFBSSxRQUFRLEtBQUsscUJBQVM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDakUsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsT0FBTztZQUNMLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7U0FDbEQsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQTVZRCxrQ0E0WUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9uV2ViIGZyb20gJ3RvbndlYic7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICd0b253ZWIvZGlzdC90eXBlcy9ib2MvY2VsbCc7XG5cbmltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgRW50cnksIFJlY2lwaWVudCwgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBXSVRIRFJBV19PUENPREUsIFdBTExFVF9JRCwgSkVUVE9OX1RSQU5TRkVSX09QQ09ERSwgVkVTVElOR19DT05UUkFDVF9XQUxMRVRfSUQgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyByZWNpcGllbnQ6IFJlY2lwaWVudDtcbiAgcHVibGljIGJvdW5jZWFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBmcm9tQWRkcmVzc0JvdW5jZWFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB0b0FkZHJlc3NCb3VuY2VhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xuICBwdWJsaWMgd2l0aGRyYXdBbW91bnQ6IHN0cmluZztcbiAgc2Vxbm86IG51bWJlcjtcbiAgZXhwaXJlVGltZTogbnVtYmVyO1xuICBzZW5kZXI6IHN0cmluZztcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIGlzVjNDb250cmFjdE1lc3NhZ2U6IGJvb2xlYW47XG4gIHN1Yl93YWxsZXRfaWQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIHVuc2lnbmVkTWVzc2FnZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmluYWxNZXNzYWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLmJvdW5jZWFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmZyb21BZGRyZXNzQm91bmNlYWJsZSA9IHRydWU7XG4gICAgdGhpcy50b0FkZHJlc3NCb3VuY2VhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbE1lc3NhZ2U7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBvdGhlckZvcm1hdCA9IG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnJlY2lwaWVudC5hZGRyZXNzKS50b1N0cmluZyhcbiAgICAgIHRydWUsXG4gICAgICB0cnVlLFxuICAgICAgIW5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnJlY2lwaWVudC5hZGRyZXNzKS5pc0JvdW5jZWFibGVcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQgYXMgc3RyaW5nLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgZGVzdGluYXRpb25BbGlhczogb3RoZXJGb3JtYXQsXG4gICAgICBhbW91bnQ6IHRoaXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgIHdpdGhkcmF3QW1vdW50OiB0aGlzLndpdGhkcmF3QW1vdW50LFxuICAgICAgc2Vxbm86IHRoaXMuc2Vxbm8sXG4gICAgICBzdWJfd2FsbGV0X2lkOiB0aGlzLnN1Yl93YWxsZXRfaWQsXG4gICAgICBleHBpcmF0aW9uVGltZTogdGhpcy5leHBpcmVUaW1lLFxuICAgICAgcHVibGljS2V5OiB0aGlzLnB1YmxpY0tleSxcbiAgICAgIHNpZ25hdHVyZTogdGhpcy5fc2lnbmF0dXJlc1swXSxcbiAgICAgIGJvdW5jZWFibGU6IHRoaXMuYm91bmNlYWJsZSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnVuc2lnbmVkTWVzc2FnZSwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXQgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5zdWJfd2FsbGV0X2lkKSB7XG4gICAgICBpZiAodGhpcy5pc1YzQ29udHJhY3RNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuc3ViX3dhbGxldF9pZCA9IFZFU1RJTkdfQ09OVFJBQ1RfV0FMTEVUX0lEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWJfd2FsbGV0X2lkID0gV0FMTEVUX0lEO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzaWduaW5nTWVzc2FnZSA9IHRoaXMuY3JlYXRlU2lnbmluZ01lc3NhZ2UodGhpcy5zdWJfd2FsbGV0X2lkLCB0aGlzLnNlcW5vLCB0aGlzLmV4cGlyZVRpbWUpO1xuICAgIGNvbnN0IHNlbmRNb2RlID0gMzsgLy8gZGVmYXVsdCBzZW5kTW9kZVxuICAgIHNpZ25pbmdNZXNzYWdlLmJpdHMud3JpdGVVaW50OChzZW5kTW9kZSk7XG4gICAgY29uc3Qgb3V0TXNnID0gdGhpcy5jcmVhdGVPdXRNc2codGhpcy5yZWNpcGllbnQuYWRkcmVzcywgdGhpcy5yZWNpcGllbnQuYW1vdW50LCB0aGlzLm1lc3NhZ2UpO1xuICAgIHNpZ25pbmdNZXNzYWdlLnJlZnMucHVzaChvdXRNc2cpO1xuICAgIHRoaXMudW5zaWduZWRNZXNzYWdlID0gQnVmZmVyLmZyb20oYXdhaXQgc2lnbmluZ01lc3NhZ2UuaGFzaCgpKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPVxuICAgICAgdGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwID8gdGhpcy5fc2lnbmF0dXJlc1swXSA6IEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KDY0KSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGZpbmFsTWVzc2FnZSA9IGF3YWl0IHRoaXMuY3JlYXRlRXh0ZXJuYWxNZXNzYWdlKHNpZ25pbmdNZXNzYWdlLCB0aGlzLnNlcW5vLCBzaWduYXR1cmUpO1xuXG4gICAgdGhpcy5maW5hbE1lc3NhZ2UgPSBUb25XZWIudXRpbHMuYnl0ZXNUb0Jhc2U2NChhd2FpdCBmaW5hbE1lc3NhZ2UudG9Cb2MoZmFsc2UpKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsVHhJZCA9IFRvbldlYi51dGlscy5ieXRlc1RvQmFzZTY0KGF3YWl0IGZpbmFsTWVzc2FnZS5oYXNoKCkpO1xuICAgIHRoaXMuX2lkID0gb3JpZ2luYWxUeElkLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoL1xcKy9nLCAnLScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNpZ25pbmdNZXNzYWdlKHdhbGxldElkLCBzZXFubywgZXhwaXJlQXQpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQod2FsbGV0SWQsIDMyKTtcbiAgICAvLyBleHBpcmVBdCBzaG91bGQgYmUgc2V0IGFzIHBlciB0aGUgcHJvdmlkZWQgYXJnIHZhbHVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZXFub1xuICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQoZXhwaXJlQXQsIDMyKTtcbiAgICBtZXNzYWdlLmJpdHMud3JpdGVVaW50KHNlcW5vLCAzMik7XG4gICAgaWYgKCF0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQoMCwgOCk7IC8vIG9wXG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU91dE1zZyhhZGRyZXNzLCBhbW91bnQsIHBheWxvYWQpIHtcbiAgICBsZXQgcGF5bG9hZENlbGwgPSBuZXcgVG9uV2ViLmJvYy5DZWxsKCk7XG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlZnMpIHtcbiAgICAgICAgLy8gaXMgQ2VsbFxuICAgICAgICBwYXlsb2FkQ2VsbCA9IHBheWxvYWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocGF5bG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoID4gMjQgJiYgcGF5bG9hZC5zdWJzdHJpbmcoMCwgOCkgPT09IFdJVEhEUkFXX09QQ09ERSkge1xuICAgICAgICAgICAgLy8gcGF5bG9hZCBpcyBhIHdpdGhkcmF3IHR4biBtZXNzYWdlXG4gICAgICAgICAgICBjb25zdCBxdWVyeUlkID0gcGF5bG9hZC5zdWJzdHJpbmcoOCwgMjQpO1xuICAgICAgICAgICAgY29uc3Qgd2l0aGRyYXdBbW91bnQgPSBwYXlsb2FkLnN1YnN0cmluZygyNCk7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHBheWxvYWQ6ICR7cGF5bG9hZH0sIHF1ZXJ5SWQ6ICR7cXVlcnlJZH0sIHdpdGhkcmF3QW1vdW50OiAke3dpdGhkcmF3QW1vdW50fWApO1xuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZVVpbnQocGFyc2VJbnQoV0lUSERSQVdfT1BDT0RFLCAxNiksIDMyKTtcbiAgICAgICAgICAgIHBheWxvYWRDZWxsLmJpdHMud3JpdGVVaW50KHBhcnNlSW50KHF1ZXJ5SWQsIDE2KSwgNjQpO1xuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZUNvaW5zKG5ldyBCTih3aXRoZHJhd0Ftb3VudCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlVWludCgwLCAzMik7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlU3RyaW5nKHBheWxvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZUJ5dGVzKHBheWxvYWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9yZGVySGVhZGVyID0gVG9uV2ViLkNvbnRyYWN0LmNyZWF0ZUludGVybmFsTWVzc2FnZUhlYWRlcihcbiAgICAgIG5ldyBUb25XZWIuQWRkcmVzcyhhZGRyZXNzKSxcbiAgICAgIG5ldyBCTihhbW91bnQpLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuYm91bmNlYWJsZVxuICAgICk7XG4gICAgcmV0dXJuIFRvbldlYi5Db250cmFjdC5jcmVhdGVDb21tb25Nc2dJbmZvKG9yZGVySGVhZGVyLCB1bmRlZmluZWQsIHBheWxvYWRDZWxsKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUV4dGVybmFsTWVzc2FnZShzaWduaW5nTWVzc2FnZTogQ2VsbCwgc2Vxbm86IG51bWJlciwgc2lnbmF0dXJlOiBzdHJpbmcpOiBQcm9taXNlPENlbGw+IHtcbiAgICBjb25zdCBib2R5ID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuXG4gICAgYm9keS5iaXRzLndyaXRlQnl0ZXMoQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JykpO1xuICAgIGJvZHkud3JpdGVDZWxsKHNpZ25pbmdNZXNzYWdlKTtcblxuICAgIGxldCBzdGF0ZUluaXQ7XG4gICAgaWYgKHNlcW5vID09PSAwICYmICF0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IFdhbGxldENsYXNzID0gVG9uV2ViLldhbGxldHMuYWxsWyd2NFIyJ107XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0Q2xhc3MobmV3IFRvbldlYi5IdHRwUHJvdmlkZXIoKSwge1xuICAgICAgICBwdWJsaWNLZXk6IFRvbldlYi51dGlscy5oZXhUb0J5dGVzKHRoaXMucHVibGljS2V5KSxcbiAgICAgICAgd2M6IDAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRlcGxveSA9IGF3YWl0IHdhbGxldC5jcmVhdGVTdGF0ZUluaXQoKTtcbiAgICAgIHN0YXRlSW5pdCA9IGRlcGxveS5zdGF0ZUluaXQ7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVyID0gVG9uV2ViLkNvbnRyYWN0LmNyZWF0ZUV4dGVybmFsTWVzc2FnZUhlYWRlcih0aGlzLnNlbmRlcik7XG4gICAgcmV0dXJuIFRvbldlYi5Db250cmFjdC5jcmVhdGVDb21tb25Nc2dJbmZvKGhlYWRlciwgc3RhdGVJbml0LCBib2R5KTtcbiAgfVxuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBpbnB1dHMucHVzaCh7XG4gICAgICBhZGRyZXNzOiB0aGlzLnNlbmRlcixcbiAgICAgIHZhbHVlOiB0aGlzLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSk7XG4gICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHRoaXMucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogdGhpcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pO1xuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNlbGwgPSBUb25XZWIuYm9jLkNlbGwub25lRnJvbUJvYyhUb25XZWIudXRpbHMuYmFzZTY0VG9CeXRlcyhyYXdUcmFuc2FjdGlvbikpO1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVRyYW5zYWN0aW9uKGNlbGwpO1xuXG4gICAgICB0aGlzLnNlbmRlciA9IHBhcnNlZC5mcm9tQWRkcmVzcztcbiAgICAgIHRoaXMucmVjaXBpZW50ID0geyBhZGRyZXNzOiBwYXJzZWQudG9BZGRyZXNzLCBhbW91bnQ6IHBhcnNlZC52YWx1ZSB9O1xuICAgICAgdGhpcy53aXRoZHJhd0Ftb3VudCA9IHBhcnNlZC53aXRoZHJhd0Ftb3VudDtcbiAgICAgIHRoaXMuc2Vxbm8gPSBwYXJzZWQuc2Vxbm87XG4gICAgICB0aGlzLnB1YmxpY0tleSA9IHBhcnNlZC5wdWJsaWNLZXkgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5leHBpcmVUaW1lID0gcGFyc2VkLmV4cGlyZUF0O1xuICAgICAgdGhpcy5tZXNzYWdlID0gcGFyc2VkLnBheWxvYWQ7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2gocGFyc2VkLnNpZ25hdHVyZSk7XG4gICAgICB0aGlzLmJvdW5jZWFibGUgPSBwYXJzZWQuYm91bmNlO1xuICAgICAgdGhpcy5zdWJfd2FsbGV0X2lkID0gcGFyc2VkLndhbGxldElkO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J107XG5cbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW3RoaXMucmVjaXBpZW50XTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSB0aGlzLnJlY2lwaWVudC5hbW91bnQ7XG4gICAgY29uc3Qgd2l0aGRyYXdBbW91bnQgPSB0aGlzLndpdGhkcmF3QW1vdW50O1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICB3aXRoZHJhd0Ftb3VudCxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb24oY2VsbDogQ2VsbCk6IGFueSB7XG4gICAgY29uc3Qgc2xpY2UgPSAoY2VsbCBhcyBhbnkpLmJlZ2luUGFyc2UoKTtcblxuICAgIC8vIGhlYWRlclxuXG4gICAgaWYgKHNsaWNlLmxvYWRVaW50KDIpLnRvTnVtYmVyKCkgIT09IDIpIHRocm93IEVycm9yKCdpbnZhbGlkIGhlYWRlcicpO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxTb3VyY2VBZGRyZXNzID0gc2xpY2UubG9hZEFkZHJlc3MoKTtcbiAgICBpZiAoZXh0ZXJuYWxTb3VyY2VBZGRyZXNzICE9PSBudWxsKSB0aHJvdyBFcnJvcignaW52YWxpZCBleHRlcm5hbFNvdXJjZUFkZHJlc3MnKTtcblxuICAgIGNvbnN0IGV4dGVybmFsRGVzdEFkZHJlc3MgPSBzbGljZS5sb2FkQWRkcmVzcygpO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxJbXBvcnRGZWUgPSBzbGljZS5sb2FkQ29pbnMoKTtcbiAgICBpZiAoIWV4dGVybmFsSW1wb3J0RmVlLmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBleHRlcm5hbEltcG9ydEZlZScpO1xuXG4gICAgLy8gc3RhdGVJbml0XG5cbiAgICBsZXQgcHVibGljS2V5O1xuICAgIGlmIChzbGljZS5sb2FkQml0KCkpIHtcbiAgICAgIGlmIChzbGljZS5sb2FkQml0KCkpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVJbml0ID0gc2xpY2UubG9hZFJlZigpO1xuICAgICAgICBzdGF0ZUluaXQubG9hZFJlZigpO1xuICAgICAgICBjb25zdCBkYXRhID0gc3RhdGVJbml0LmxvYWRSZWYoKTtcbiAgICAgICAgY29uc3Qgc2Vxbm8gPSBkYXRhLmxvYWRVaW50KDMyKS50b051bWJlcigpO1xuICAgICAgICBpZiAoc2Vxbm8gIT09IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzZXFubycpO1xuICAgICAgICBjb25zdCB3YWxsZXRJZCA9IGRhdGEubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG4gICAgICAgIGlmICh3YWxsZXRJZCAhPT0gV0FMTEVUX0lEKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgd2FsbGV0IGlkJyk7XG4gICAgICAgIGNvbnN0IHB1YmxpY0tleUJ1ZiA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdWJsaWNLZXlCdWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwdWJsaWNLZXlCdWZbaV0gPSBkYXRhLmxvYWRVaW50KDgpO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHB1YmxpY0tleUJ1ZikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJvZHlcbiAgICBjb25zdCBib2R5U2xpY2UgPSBzbGljZS5sb2FkQml0KCkgPyBzbGljZS5sb2FkUmVmKCkgOiBzbGljZTtcblxuICAgIHJldHVybiB7XG4gICAgICBmcm9tQWRkcmVzczogZXh0ZXJuYWxEZXN0QWRkcmVzcy50b1N0cmluZyh0cnVlLCB0cnVlLCB0aGlzLmZyb21BZGRyZXNzQm91bmNlYWJsZSksXG4gICAgICBwdWJsaWNLZXksXG4gICAgICAuLi50aGlzLnBhcnNlVHJhbnNhY3Rpb25Cb2R5KGJvZHlTbGljZSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbkJvZHkoc2xpY2U6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2xpY2UubG9hZEJpdHMoNTEyKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIC8vIHNpZ25pbmcgbWVzc2FnZVxuXG4gICAgY29uc3Qgd2FsbGV0SWQgPSBzbGljZS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICBpZiAod2FsbGV0SWQgIT09IFdBTExFVF9JRCAmJiB3YWxsZXRJZCAhPT0gVkVTVElOR19DT05UUkFDVF9XQUxMRVRfSUQpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB3YWxsZXRJZCcpO1xuXG4gICAgY29uc3QgZXhwaXJlQXQgPSBzbGljZS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcblxuICAgIGNvbnN0IHNlcW5vID0gc2xpY2UubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG5cbiAgICBjb25zdCBvcCA9IHNsaWNlLmxvYWRVaW50KDgpLnRvTnVtYmVyKCk7XG4gICAgaWYgKG9wICE9PSAzKSB7XG4gICAgICBpZiAob3AgIT09IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBvcCcpO1xuXG4gICAgICBjb25zdCBzZW5kTW9kZSA9IHNsaWNlLmxvYWRVaW50KDgpLnRvTnVtYmVyKCk7XG4gICAgICBpZiAoc2VuZE1vZGUgIT09IDMpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzZW5kTW9kZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCBvcmRlciA9IHNsaWNlLmxvYWRSZWYoKTtcblxuICAgIGlmIChvcmRlci5sb2FkQml0KCkpIHRocm93IEVycm9yKCdpbnZhbGlkIGludGVybmFsIGhlYWRlcicpO1xuICAgIGlmICghb3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBpaHJEaXNhYmxlZCcpO1xuICAgIGNvbnN0IGJvdW5jZSA9IG9yZGVyLmxvYWRCaXQoKTtcbiAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBib3VuY2VkJyk7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IG9yZGVyLmxvYWRBZGRyZXNzKCk7XG4gICAgaWYgKHNvdXJjZUFkZHJlc3MgIT09IG51bGwpIHRocm93IEVycm9yKCdpbnZhbGlkIGV4dGVybmFsU291cmNlQWRkcmVzcycpO1xuICAgIGNvbnN0IGRlc3RBZGRyZXNzID0gb3JkZXIubG9hZEFkZHJlc3MoKTtcbiAgICBjb25zdCB2YWx1ZSA9IG9yZGVyLmxvYWRDb2lucygpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBjdXJyZW5jeUNvbGxlY3Rpb24nKTtcbiAgICBjb25zdCBpaHJGZWVzID0gb3JkZXIubG9hZENvaW5zKCk7XG4gICAgaWYgKCFpaHJGZWVzLmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpaHJGZWVzJyk7XG4gICAgY29uc3QgZndkRmVlcyA9IG9yZGVyLmxvYWRDb2lucygpO1xuICAgIGlmICghZndkRmVlcy5lcShuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZndkRmVlcycpO1xuICAgIGNvbnN0IGNyZWF0ZWRMdCA9IG9yZGVyLmxvYWRVaW50KDY0KTtcbiAgICBpZiAoIWNyZWF0ZWRMdC5lcShuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY3JlYXRlZEx0Jyk7XG4gICAgY29uc3QgY3JlYXRlZEF0ID0gb3JkZXIubG9hZFVpbnQoMzIpO1xuICAgIGlmICghY3JlYXRlZEF0LmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjcmVhdGVkQXQnKTtcblxuICAgIC8vIG9yZGVyIHN0YXRlSW5pdFxuICAgIGlmIChvcmRlci5sb2FkQml0KCkpIHtcbiAgICAgIG9yZGVyLmxvYWRSZWYoKTsgLy8gZG9uJ3QgcGFyc2Ugc3RhdGVJbml0XG4gICAgfVxuXG4gICAgLy8gb3JkZXIgYm9keVxuICAgIGxldCBwYXlsb2FkO1xuICAgIGxldCB3aXRoZHJhd0Ftb3VudDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIGlmIChvcmRlci5nZXRGcmVlQml0cygpID4gMCkge1xuICAgICAgaWYgKG9yZGVyLmxvYWRCaXQoKSkge1xuICAgICAgICBvcmRlciA9IG9yZGVyLmxvYWRSZWYoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyLmdldEZyZWVCaXRzKCkgPiAzMikge1xuICAgICAgICBjb25zdCBvcGNvZGUgPSBvcmRlci5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICAgICAgaWYgKG9wY29kZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWRCeXRlcyA9IG9yZGVyLmxvYWRCaXRzKG9yZGVyLmdldEZyZWVCaXRzKCkpO1xuICAgICAgICAgIHBheWxvYWQgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocGF5bG9hZEJ5dGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChvcGNvZGUgPT09IDQwOTYpIHtcbiAgICAgICAgICBjb25zdCBxdWVyeUlkID0gb3JkZXIubG9hZFVpbnQoNjQpLnRvTnVtYmVyKCk7XG4gICAgICAgICAgd2l0aGRyYXdBbW91bnQgPSBvcmRlci5sb2FkQ29pbnMoKS50b051bWJlcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcGF5bG9hZCA9IFdJVEhEUkFXX09QQ09ERSArIHF1ZXJ5SWQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCAnMCcpICsgd2l0aGRyYXdBbW91bnQ7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlTm9taW5hdG9yV2l0aGRyYXc7XG4gICAgICAgIH0gZWxzZSBpZiAob3Bjb2RlID09PSBKRVRUT05fVFJBTlNGRVJfT1BDT0RFKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5SWQgPSBvcmRlci5sb2FkVWludCg2NCkudG9OdW1iZXIoKTtcbiAgICAgICAgICBpZiAocXVlcnlJZCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHF1ZXJ5SWQgZm9yIGpldHRvbiB0cmFuc2ZlcicpO1xuXG4gICAgICAgICAgY29uc3QgamV0dG9uQW1vdW50ID0gb3JkZXIubG9hZENvaW5zKCk7XG4gICAgICAgICAgaWYgKCFqZXR0b25BbW91bnQuZ3QobmV3IEJOKDApKSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGpldHRvbkFtb3VudCcpO1xuXG4gICAgICAgICAgY29uc3QgamV0dG9uUmVjaXBpZW50ID0gb3JkZXIubG9hZEFkZHJlc3MoKTtcbiAgICAgICAgICBpZiAoIWpldHRvblJlY2lwaWVudCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGpldHRvblJlY2lwaWVudCcpO1xuXG4gICAgICAgICAgY29uc3QgZm9yd2FyZGVyQWRkcmVzcyA9IG9yZGVyLmxvYWRBZGRyZXNzKCk7XG4gICAgICAgICAgaWYgKCFmb3J3YXJkZXJBZGRyZXNzKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZm9yd2FyZGVyQWRkcmVzcycpO1xuXG4gICAgICAgICAgb3JkZXIubG9hZEJpdCgpOyAvLyBza2lwIGJpdFxuXG4gICAgICAgICAgY29uc3QgZm9yd2FyZFRvbkFtb3VudCA9IG9yZGVyLmxvYWRDb2lucygpO1xuICAgICAgICAgIGlmICghZm9yd2FyZFRvbkFtb3VudC5ndChuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZm9yd2FyZFRvbkFtb3VudCcpO1xuXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICAgICAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB7XG4gICAgICAgICAgICBvcmRlciA9IG9yZGVyLmxvYWRSZWYoKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VPcGNvZGUgPSBvcmRlci5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlT3Bjb2RlICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbWVzc2FnZSBvcGNvZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VCeXRlcyA9IG9yZGVyLmxvYWRCaXRzKG9yZGVyLmdldEZyZWVCaXRzKCkpO1xuICAgICAgICAgICAgbWVzc2FnZSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShtZXNzYWdlQnl0ZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBheWxvYWQgPSB7XG4gICAgICAgICAgICBqZXR0b25BbW91bnQ6IGpldHRvbkFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgamV0dG9uUmVjaXBpZW50OiBqZXR0b25SZWNpcGllbnQudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdGhpcy50b0FkZHJlc3NCb3VuY2VhYmxlKSxcbiAgICAgICAgICAgIGZvcndhcmRlckFkZHJlc3M6IGZvcndhcmRlckFkZHJlc3MudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdGhpcy5mcm9tQWRkcmVzc0JvdW5jZWFibGUpLFxuICAgICAgICAgICAgZm9yd2FyZFRvbkFtb3VudDogZm9yd2FyZFRvbkFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBheWxvYWQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdG9BZGRyZXNzOiBkZXN0QWRkcmVzcy50b1N0cmluZyh0cnVlLCB0cnVlLCB0aGlzLmZyb21BZGRyZXNzQm91bmNlYWJsZSksXG4gICAgICB2YWx1ZSxcbiAgICAgIGJvdW5jZSxcbiAgICAgIHNlcW5vLFxuICAgICAgd2l0aGRyYXdBbW91bnQsXG4gICAgICBleHBpcmVBdCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBzaWduYXR1cmUsXG4gICAgICB3YWxsZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBwYXJzZVRyYW5zZmVyU3RhdGVJbml0KHNsaWNlOiBhbnkpOiBhbnkge1xuICAgIGlmIChzbGljZSA9PT0gbnVsbCkgcmV0dXJuIHt9O1xuICAgIHNsaWNlLmxvYWRSZWYoKTtcbiAgICBjb25zdCBkYXRhID0gc2xpY2UubG9hZFJlZigpO1xuICAgIGNvbnN0IHNlcW5vID0gZGF0YS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICBpZiAoc2Vxbm8gIT09IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzZXFubycpO1xuICAgIGNvbnN0IHdhbGxldElkID0gZGF0YS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICBpZiAod2FsbGV0SWQgIT09IFdBTExFVF9JRCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHdhbGxldCBpZCcpO1xuICAgIGNvbnN0IHB1YmxpY0tleSA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHB1YmxpY0tleS5sZW5ndGg7IGkrKykge1xuICAgICAgcHVibGljS2V5W2ldID0gZGF0YS5sb2FkVWludCg4KTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YmxpY0tleTogQnVmZmVyLmZyb20ocHVibGljS2V5KS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxufVxuIl19
406
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixpQ0FBMkI7QUFHM0IsOENBQW9IO0FBR3BILDJDQU9xQjtBQUVyQixNQUFhLFdBQVksU0FBUSwwQkFBZTtJQWdCOUMsWUFBWSxVQUFnQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQztRQUNsQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDbkMsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFZO1FBQ2xCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsTUFBTTtRQUNKLE1BQU0sV0FBVyxHQUFHLElBQUksZ0JBQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQ3JFLElBQUksRUFDSixJQUFJLEVBQ0osQ0FBQyxJQUFJLGdCQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUN6RCxDQUFDO1FBQ0YsT0FBTztZQUNMLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBYTtZQUN0QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTztZQUNuQyxnQkFBZ0IsRUFBRSxXQUFXO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU07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QztJQUNKLENBQUM7Q0FDRjtBQWxiRCxrQ0FrYkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVG9uV2ViIGZyb20gJ3RvbndlYic7XG5pbXBvcnQgeyBCTiB9IGZyb20gJ2JuLmpzJztcbmltcG9ydCB7IENlbGwgfSBmcm9tICd0b253ZWIvZGlzdC90eXBlcy9ib2MvY2VsbCc7XG5cbmltcG9ydCB7IEJhc2VLZXksIEJhc2VUcmFuc2FjdGlvbiwgRW50cnksIFJlY2lwaWVudCwgVHJhbnNhY3Rpb25SZWNpcGllbnQsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiwgVHhEYXRhIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQge1xuICBXSVRIRFJBV19PUENPREUsXG4gIFdBTExFVF9JRCxcbiAgSkVUVE9OX1RSQU5TRkVSX09QQ09ERSxcbiAgVkVTVElOR19DT05UUkFDVF9XQUxMRVRfSUQsXG4gIFRPTl9XSEFMRVNfREVQT1NJVF9PUENPREUsXG4gIFRPTl9XSEFMRVNfV0lUSERSQVdfT1BDT0RFLFxufSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvbiBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbiB7XG4gIHB1YmxpYyByZWNpcGllbnQ6IFJlY2lwaWVudDtcbiAgcHVibGljIGJvdW5jZWFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyBmcm9tQWRkcmVzc0JvdW5jZWFibGU6IGJvb2xlYW47XG4gIHB1YmxpYyB0b0FkZHJlc3NCb3VuY2VhYmxlOiBib29sZWFuO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nO1xuICBwdWJsaWMgd2l0aGRyYXdBbW91bnQ6IHN0cmluZztcbiAgc2Vxbm86IG51bWJlcjtcbiAgZXhwaXJlVGltZTogbnVtYmVyO1xuICBzZW5kZXI6IHN0cmluZztcbiAgcHVibGljS2V5OiBzdHJpbmc7XG4gIGlzVjNDb250cmFjdE1lc3NhZ2U6IGJvb2xlYW47XG4gIHN1Yl93YWxsZXRfaWQ6IG51bWJlcjtcbiAgcHJvdGVjdGVkIHVuc2lnbmVkTWVzc2FnZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmluYWxNZXNzYWdlOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLmJvdW5jZWFibGUgPSBmYWxzZTtcbiAgICB0aGlzLmZyb21BZGRyZXNzQm91bmNlYWJsZSA9IHRydWU7XG4gICAgdGhpcy50b0FkZHJlc3NCb3VuY2VhYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UgPSBmYWxzZTtcbiAgfVxuXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maW5hbE1lc3NhZ2U7XG4gIH1cblxuICB0b0pzb24oKTogVHhEYXRhIHtcbiAgICBjb25zdCBvdGhlckZvcm1hdCA9IG5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnJlY2lwaWVudC5hZGRyZXNzKS50b1N0cmluZyhcbiAgICAgIHRydWUsXG4gICAgICB0cnVlLFxuICAgICAgIW5ldyBUb25XZWIuQWRkcmVzcyh0aGlzLnJlY2lwaWVudC5hZGRyZXNzKS5pc0JvdW5jZWFibGVcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogdGhpcy5faWQgYXMgc3RyaW5nLFxuICAgICAgc2VuZGVyOiB0aGlzLnNlbmRlcixcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnJlY2lwaWVudC5hZGRyZXNzLFxuICAgICAgZGVzdGluYXRpb25BbGlhczogb3RoZXJGb3JtYXQsXG4gICAgICBhbW91bnQ6IHRoaXMucmVjaXBpZW50LmFtb3VudCxcbiAgICAgIHdpdGhkcmF3QW1vdW50OiB0aGlzLndpdGhkcmF3QW1vdW50LFxuICAgICAgc2Vxbm86IHRoaXMuc2Vxbm8sXG4gICAgICBzdWJfd2FsbGV0X2lkOiB0aGlzLnN1Yl93YWxsZXRfaWQsXG4gICAgICBleHBpcmF0aW9uVGltZTogdGhpcy5leHBpcmVUaW1lLFxuICAgICAgcHVibGljS2V5OiB0aGlzLnB1YmxpY0tleSxcbiAgICAgIHNpZ25hdHVyZTogdGhpcy5fc2lnbmF0dXJlc1swXSxcbiAgICAgIGJvdW5jZWFibGU6IHRoaXMuYm91bmNlYWJsZSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IHNpZ25hYmxlUGF5bG9hZCgpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnVuc2lnbmVkTWVzc2FnZSwgJ2hleCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdHJhbnNhY3Rpb24gdHlwZS5cbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblR5cGV9IHRyYW5zYWN0aW9uVHlwZSBUaGUgdHJhbnNhY3Rpb24gdHlwZSB0byBiZSBzZXQuXG4gICAqL1xuICBzZXQgdHJhbnNhY3Rpb25UeXBlKHRyYW5zYWN0aW9uVHlwZTogVHJhbnNhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5fdHlwZSA9IHRyYW5zYWN0aW9uVHlwZTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5zdWJfd2FsbGV0X2lkKSB7XG4gICAgICBpZiAodGhpcy5pc1YzQ29udHJhY3RNZXNzYWdlKSB7XG4gICAgICAgIHRoaXMuc3ViX3dhbGxldF9pZCA9IFZFU1RJTkdfQ09OVFJBQ1RfV0FMTEVUX0lEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdWJfd2FsbGV0X2lkID0gV0FMTEVUX0lEO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzaWduaW5nTWVzc2FnZSA9IHRoaXMuY3JlYXRlU2lnbmluZ01lc3NhZ2UodGhpcy5zdWJfd2FsbGV0X2lkLCB0aGlzLnNlcW5vLCB0aGlzLmV4cGlyZVRpbWUpO1xuICAgIGNvbnN0IHNlbmRNb2RlID0gMzsgLy8gZGVmYXVsdCBzZW5kTW9kZVxuICAgIHNpZ25pbmdNZXNzYWdlLmJpdHMud3JpdGVVaW50OChzZW5kTW9kZSk7XG4gICAgY29uc3Qgb3V0TXNnID0gdGhpcy5jcmVhdGVPdXRNc2codGhpcy5yZWNpcGllbnQuYWRkcmVzcywgdGhpcy5yZWNpcGllbnQuYW1vdW50LCB0aGlzLm1lc3NhZ2UpO1xuICAgIHNpZ25pbmdNZXNzYWdlLnJlZnMucHVzaChvdXRNc2cpO1xuICAgIHRoaXMudW5zaWduZWRNZXNzYWdlID0gQnVmZmVyLmZyb20oYXdhaXQgc2lnbmluZ01lc3NhZ2UuaGFzaCgpKS50b1N0cmluZygnaGV4Jyk7XG5cbiAgICBjb25zdCBzaWduYXR1cmUgPVxuICAgICAgdGhpcy5fc2lnbmF0dXJlcy5sZW5ndGggPiAwID8gdGhpcy5fc2lnbmF0dXJlc1swXSA6IEJ1ZmZlci5mcm9tKG5ldyBVaW50OEFycmF5KDY0KSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGZpbmFsTWVzc2FnZSA9IGF3YWl0IHRoaXMuY3JlYXRlRXh0ZXJuYWxNZXNzYWdlKHNpZ25pbmdNZXNzYWdlLCB0aGlzLnNlcW5vLCBzaWduYXR1cmUpO1xuXG4gICAgdGhpcy5maW5hbE1lc3NhZ2UgPSBUb25XZWIudXRpbHMuYnl0ZXNUb0Jhc2U2NChhd2FpdCBmaW5hbE1lc3NhZ2UudG9Cb2MoZmFsc2UpKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsVHhJZCA9IFRvbldlYi51dGlscy5ieXRlc1RvQmFzZTY0KGF3YWl0IGZpbmFsTWVzc2FnZS5oYXNoKCkpO1xuICAgIHRoaXMuX2lkID0gb3JpZ2luYWxUeElkLnJlcGxhY2UoL1xcLy9nLCAnXycpLnJlcGxhY2UoL1xcKy9nLCAnLScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVNpZ25pbmdNZXNzYWdlKHdhbGxldElkLCBzZXFubywgZXhwaXJlQXQpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQod2FsbGV0SWQsIDMyKTtcbiAgICAvLyBleHBpcmVBdCBzaG91bGQgYmUgc2V0IGFzIHBlciB0aGUgcHJvdmlkZWQgYXJnIHZhbHVlLCByZWdhcmRsZXNzIG9mIHRoZSBzZXFub1xuICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQoZXhwaXJlQXQsIDMyKTtcbiAgICBtZXNzYWdlLmJpdHMud3JpdGVVaW50KHNlcW5vLCAzMik7XG4gICAgaWYgKCF0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UpIHtcbiAgICAgIG1lc3NhZ2UuYml0cy53cml0ZVVpbnQoMCwgOCk7IC8vIG9wXG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZU91dE1zZyhhZGRyZXNzLCBhbW91bnQsIHBheWxvYWQpIHtcbiAgICBsZXQgcGF5bG9hZENlbGwgPSBuZXcgVG9uV2ViLmJvYy5DZWxsKCk7XG4gICAgaWYgKHBheWxvYWQpIHtcbiAgICAgIGlmIChwYXlsb2FkLnJlZnMpIHtcbiAgICAgICAgLy8gaXMgQ2VsbFxuICAgICAgICBwYXlsb2FkQ2VsbCA9IHBheWxvYWQ7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwYXlsb2FkID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocGF5bG9hZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaWYgKHBheWxvYWQubGVuZ3RoID4gMjQgJiYgcGF5bG9hZC5zdWJzdHJpbmcoMCwgOCkgPT09IFdJVEhEUkFXX09QQ09ERSkge1xuICAgICAgICAgICAgLy8gcGF5bG9hZCBpcyBhIHdpdGhkcmF3IHR4biBtZXNzYWdlXG4gICAgICAgICAgICBjb25zdCBxdWVyeUlkID0gcGF5bG9hZC5zdWJzdHJpbmcoOCwgMjQpO1xuICAgICAgICAgICAgY29uc3Qgd2l0aGRyYXdBbW91bnQgPSBwYXlsb2FkLnN1YnN0cmluZygyNCk7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHBheWxvYWQ6ICR7cGF5bG9hZH0sIHF1ZXJ5SWQ6ICR7cXVlcnlJZH0sIHdpdGhkcmF3QW1vdW50OiAke3dpdGhkcmF3QW1vdW50fWApO1xuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZVVpbnQocGFyc2VJbnQoV0lUSERSQVdfT1BDT0RFLCAxNiksIDMyKTtcbiAgICAgICAgICAgIHBheWxvYWRDZWxsLmJpdHMud3JpdGVVaW50KHBhcnNlSW50KHF1ZXJ5SWQsIDE2KSwgNjQpO1xuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZUNvaW5zKG5ldyBCTih3aXRoZHJhd0Ftb3VudCkpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocGF5bG9hZC5sZW5ndGggPj0gMjYgJiYgcGF5bG9hZC5zdWJzdHJpbmcoMCwgMTApID09PSBUT05fV0hBTEVTX0RFUE9TSVRfT1BDT0RFKSB7XG4gICAgICAgICAgICBjb25zdCBxdWVyeUlkID0gcGF5bG9hZC5zdWJzdHJpbmcoMTAsIDI2KTtcbiAgICAgICAgICAgIHBheWxvYWRDZWxsLmJpdHMud3JpdGVVaW50KHBhcnNlSW50KFRPTl9XSEFMRVNfREVQT1NJVF9PUENPREUsIDEwKSwgMzIpO1xuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZVVpbnQocGFyc2VJbnQocXVlcnlJZCwgMTYpLCA2NCk7XG4gICAgICAgICAgICAvLyBUaGUgVG9uIFdoYWxlcyBwcm90b2NvbCByZXF1aXJlcyBhIHNwZWNpZmljICdnYXMgbGltaXQnIGZpZWxkIGluIHRoZSBwYXlsb2FkXG4gICAgICAgICAgICAvLyBzdHJ1Y3R1cmUgKE9wQ29kZSAtPiBRdWVyeUlkIC0+IEdhc0xpbWl0IC0+IEFtb3VudCkuXG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlQ29pbnMoVG9uV2ViLnV0aWxzLnRvTmFubygnMScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBheWxvYWQubGVuZ3RoID49IDI2ICYmIHBheWxvYWQuc3Vic3RyaW5nKDAsIDEwKSA9PT0gVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUpIHtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5SWQgPSBwYXlsb2FkLnN1YnN0cmluZygxMCwgMjYpO1xuICAgICAgICAgICAgY29uc3QgYW1vdW50U3RyID0gcGF5bG9hZC5zdWJzdHJpbmcoMjYpO1xuXG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlVWludChwYXJzZUludChUT05fV0hBTEVTX1dJVEhEUkFXX09QQ09ERSwgMTApLCAzMik7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlVWludChuZXcgQk4ocXVlcnlJZCwgMTYpLCA2NCk7XG4gICAgICAgICAgICAvLyBUaGUgVG9uIFdoYWxlcyBwcm90b2NvbCByZXF1aXJlcyBhIHNwZWNpZmljICdnYXMgbGltaXQnIGZpZWxkIGluIHRoZSBwYXlsb2FkXG4gICAgICAgICAgICAvLyBzdHJ1Y3R1cmUgKE9wQ29kZSAtPiBRdWVyeUlkIC0+IEdhc0xpbWl0IC0+IEFtb3VudCkuXG4gICAgICAgICAgICAvLyBXZSBoYXJkY29kZSAxIFRPTiBoZXJlIHRvIG1hdGNoIHRoZSBEZXBvc2l0IGltcGxlbWVudGF0aW9uIGFuZCBlbnN1cmVcbiAgICAgICAgICAgIC8vIHN1ZmZpY2llbnQgZ2FzIGZvciB0aGUgcG9vbCB0byBwcm9jZXNzIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZUNvaW5zKFRvbldlYi51dGlscy50b05hbm8oJzEnKSk7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlQ29pbnMobmV3IEJOKGFtb3VudFN0cikpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlVWludCgwLCAzMik7XG4gICAgICAgICAgICBwYXlsb2FkQ2VsbC5iaXRzLndyaXRlU3RyaW5nKHBheWxvYWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGF5bG9hZENlbGwuYml0cy53cml0ZUJ5dGVzKHBheWxvYWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9yZGVySGVhZGVyID0gVG9uV2ViLkNvbnRyYWN0LmNyZWF0ZUludGVybmFsTWVzc2FnZUhlYWRlcihcbiAgICAgIG5ldyBUb25XZWIuQWRkcmVzcyhhZGRyZXNzKSxcbiAgICAgIG5ldyBCTihhbW91bnQpLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRoaXMuYm91bmNlYWJsZVxuICAgICk7XG4gICAgcmV0dXJuIFRvbldlYi5Db250cmFjdC5jcmVhdGVDb21tb25Nc2dJbmZvKG9yZGVySGVhZGVyLCB1bmRlZmluZWQsIHBheWxvYWRDZWxsKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUV4dGVybmFsTWVzc2FnZShzaWduaW5nTWVzc2FnZTogQ2VsbCwgc2Vxbm86IG51bWJlciwgc2lnbmF0dXJlOiBzdHJpbmcpOiBQcm9taXNlPENlbGw+IHtcbiAgICBjb25zdCBib2R5ID0gbmV3IFRvbldlYi5ib2MuQ2VsbCgpO1xuXG4gICAgYm9keS5iaXRzLndyaXRlQnl0ZXMoQnVmZmVyLmZyb20oc2lnbmF0dXJlLCAnaGV4JykpO1xuICAgIGJvZHkud3JpdGVDZWxsKHNpZ25pbmdNZXNzYWdlKTtcblxuICAgIGxldCBzdGF0ZUluaXQ7XG4gICAgaWYgKHNlcW5vID09PSAwICYmICF0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IFdhbGxldENsYXNzID0gVG9uV2ViLldhbGxldHMuYWxsWyd2NFIyJ107XG4gICAgICBjb25zdCB3YWxsZXQgPSBuZXcgV2FsbGV0Q2xhc3MobmV3IFRvbldlYi5IdHRwUHJvdmlkZXIoKSwge1xuICAgICAgICBwdWJsaWNLZXk6IFRvbldlYi51dGlscy5oZXhUb0J5dGVzKHRoaXMucHVibGljS2V5KSxcbiAgICAgICAgd2M6IDAsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRlcGxveSA9IGF3YWl0IHdhbGxldC5jcmVhdGVTdGF0ZUluaXQoKTtcbiAgICAgIHN0YXRlSW5pdCA9IGRlcGxveS5zdGF0ZUluaXQ7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVyID0gVG9uV2ViLkNvbnRyYWN0LmNyZWF0ZUV4dGVybmFsTWVzc2FnZUhlYWRlcih0aGlzLnNlbmRlcik7XG4gICAgcmV0dXJuIFRvbldlYi5Db250cmFjdC5jcmVhdGVDb21tb25Nc2dJbmZvKGhlYWRlciwgc3RhdGVJbml0LCBib2R5KTtcbiAgfVxuXG4gIGxvYWRJbnB1dHNBbmRPdXRwdXRzKCk6IHZvaWQge1xuICAgIGNvbnN0IG91dHB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBjb25zdCBpbnB1dHM6IEVudHJ5W10gPSBbXTtcbiAgICBpbnB1dHMucHVzaCh7XG4gICAgICBhZGRyZXNzOiB0aGlzLnNlbmRlcixcbiAgICAgIHZhbHVlOiB0aGlzLnJlY2lwaWVudC5hbW91bnQsXG4gICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgfSk7XG4gICAgb3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3M6IHRoaXMucmVjaXBpZW50LmFkZHJlc3MsXG4gICAgICB2YWx1ZTogdGhpcy5yZWNpcGllbnQuYW1vdW50LFxuICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgIH0pO1xuICAgIHRoaXMuX291dHB1dHMgPSBvdXRwdXRzO1xuICAgIHRoaXMuX2lucHV0cyA9IGlucHV0cztcbiAgfVxuXG4gIGZyb21SYXdUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNlbGwgPSBUb25XZWIuYm9jLkNlbGwub25lRnJvbUJvYyhUb25XZWIudXRpbHMuYmFzZTY0VG9CeXRlcyhyYXdUcmFuc2FjdGlvbikpO1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5wYXJzZVRyYW5zYWN0aW9uKGNlbGwpO1xuXG4gICAgICB0aGlzLnNlbmRlciA9IHBhcnNlZC5mcm9tQWRkcmVzcztcbiAgICAgIHRoaXMucmVjaXBpZW50ID0geyBhZGRyZXNzOiBwYXJzZWQudG9BZGRyZXNzLCBhbW91bnQ6IHBhcnNlZC52YWx1ZSB9O1xuICAgICAgdGhpcy53aXRoZHJhd0Ftb3VudCA9IHBhcnNlZC53aXRoZHJhd0Ftb3VudDtcbiAgICAgIHRoaXMuc2Vxbm8gPSBwYXJzZWQuc2Vxbm87XG4gICAgICB0aGlzLnB1YmxpY0tleSA9IHBhcnNlZC5wdWJsaWNLZXkgYXMgc3RyaW5nO1xuICAgICAgdGhpcy5leHBpcmVUaW1lID0gcGFyc2VkLmV4cGlyZUF0O1xuICAgICAgdGhpcy5tZXNzYWdlID0gcGFyc2VkLnBheWxvYWQ7XG4gICAgICB0aGlzLl9zaWduYXR1cmVzLnB1c2gocGFyc2VkLnNpZ25hdHVyZSk7XG4gICAgICB0aGlzLmJvdW5jZWFibGUgPSBwYXJzZWQuYm91bmNlO1xuICAgICAgdGhpcy5zdWJfd2FsbGV0X2lkID0gcGFyc2VkLndhbGxldElkO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCByYXcgdHJhbnNhY3Rpb24nKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZXhwbGFpblRyYW5zYWN0aW9uKCk6IFRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICAgIGNvbnN0IGRpc3BsYXlPcmRlciA9IFsnaWQnLCAnb3V0cHV0cycsICdvdXRwdXRBbW91bnQnLCAnY2hhbmdlT3V0cHV0cycsICdjaGFuZ2VBbW91bnQnLCAnZmVlJywgJ3dpdGhkcmF3QW1vdW50J107XG5cbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2FjdGlvblJlY2lwaWVudFtdID0gW3RoaXMucmVjaXBpZW50XTtcbiAgICBjb25zdCBvdXRwdXRBbW91bnQgPSB0aGlzLnJlY2lwaWVudC5hbW91bnQ7XG4gICAgY29uc3Qgd2l0aGRyYXdBbW91bnQgPSB0aGlzLndpdGhkcmF3QW1vdW50O1xuICAgIHJldHVybiB7XG4gICAgICBkaXNwbGF5T3JkZXIsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICAgIG91dHB1dHMsXG4gICAgICBvdXRwdXRBbW91bnQsXG4gICAgICBjaGFuZ2VPdXRwdXRzOiBbXSxcbiAgICAgIGNoYW5nZUFtb3VudDogJzAnLFxuICAgICAgZmVlOiB7IGZlZTogJ1VOS05PV04nIH0sXG4gICAgICB3aXRoZHJhd0Ftb3VudCxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb24oY2VsbDogQ2VsbCk6IGFueSB7XG4gICAgY29uc3Qgc2xpY2UgPSAoY2VsbCBhcyBhbnkpLmJlZ2luUGFyc2UoKTtcblxuICAgIC8vIGhlYWRlclxuXG4gICAgaWYgKHNsaWNlLmxvYWRVaW50KDIpLnRvTnVtYmVyKCkgIT09IDIpIHRocm93IEVycm9yKCdpbnZhbGlkIGhlYWRlcicpO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxTb3VyY2VBZGRyZXNzID0gc2xpY2UubG9hZEFkZHJlc3MoKTtcbiAgICBpZiAoZXh0ZXJuYWxTb3VyY2VBZGRyZXNzICE9PSBudWxsKSB0aHJvdyBFcnJvcignaW52YWxpZCBleHRlcm5hbFNvdXJjZUFkZHJlc3MnKTtcblxuICAgIGNvbnN0IGV4dGVybmFsRGVzdEFkZHJlc3MgPSBzbGljZS5sb2FkQWRkcmVzcygpO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxJbXBvcnRGZWUgPSBzbGljZS5sb2FkQ29pbnMoKTtcbiAgICBpZiAoIWV4dGVybmFsSW1wb3J0RmVlLmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBleHRlcm5hbEltcG9ydEZlZScpO1xuXG4gICAgLy8gc3RhdGVJbml0XG5cbiAgICBsZXQgcHVibGljS2V5O1xuICAgIGlmIChzbGljZS5sb2FkQml0KCkpIHtcbiAgICAgIGlmIChzbGljZS5sb2FkQml0KCkpIHtcbiAgICAgICAgY29uc3Qgc3RhdGVJbml0ID0gc2xpY2UubG9hZFJlZigpO1xuICAgICAgICBzdGF0ZUluaXQubG9hZFJlZigpO1xuICAgICAgICBjb25zdCBkYXRhID0gc3RhdGVJbml0LmxvYWRSZWYoKTtcbiAgICAgICAgY29uc3Qgc2Vxbm8gPSBkYXRhLmxvYWRVaW50KDMyKS50b051bWJlcigpO1xuICAgICAgICBpZiAoc2Vxbm8gIT09IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzZXFubycpO1xuICAgICAgICBjb25zdCB3YWxsZXRJZCA9IGRhdGEubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG4gICAgICAgIGlmICh3YWxsZXRJZCAhPT0gV0FMTEVUX0lEKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgd2FsbGV0IGlkJyk7XG4gICAgICAgIGNvbnN0IHB1YmxpY0tleUJ1ZiA9IG5ldyBVaW50OEFycmF5KDMyKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdWJsaWNLZXlCdWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBwdWJsaWNLZXlCdWZbaV0gPSBkYXRhLmxvYWRVaW50KDgpO1xuICAgICAgICB9XG4gICAgICAgIHB1YmxpY0tleSA9IEJ1ZmZlci5mcm9tKHB1YmxpY0tleUJ1ZikudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGJvZHlcbiAgICBjb25zdCBib2R5U2xpY2UgPSBzbGljZS5sb2FkQml0KCkgPyBzbGljZS5sb2FkUmVmKCkgOiBzbGljZTtcblxuICAgIHJldHVybiB7XG4gICAgICBmcm9tQWRkcmVzczogZXh0ZXJuYWxEZXN0QWRkcmVzcy50b1N0cmluZyh0cnVlLCB0cnVlLCB0aGlzLmZyb21BZGRyZXNzQm91bmNlYWJsZSksXG4gICAgICBwdWJsaWNLZXksXG4gICAgICAuLi50aGlzLnBhcnNlVHJhbnNhY3Rpb25Cb2R5KGJvZHlTbGljZSksXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUcmFuc2FjdGlvbkJvZHkoc2xpY2U6IGFueSk6IGFueSB7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gQnVmZmVyLmZyb20oc2xpY2UubG9hZEJpdHMoNTEyKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIC8vIHNpZ25pbmcgbWVzc2FnZVxuXG4gICAgY29uc3Qgd2FsbGV0SWQgPSBzbGljZS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICBpZiAod2FsbGV0SWQgIT09IFdBTExFVF9JRCAmJiB3YWxsZXRJZCAhPT0gVkVTVElOR19DT05UUkFDVF9XQUxMRVRfSUQpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB3YWxsZXRJZCcpO1xuXG4gICAgY29uc3QgZXhwaXJlQXQgPSBzbGljZS5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcblxuICAgIGNvbnN0IHNlcW5vID0gc2xpY2UubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG5cbiAgICBjb25zdCBvcCA9IHNsaWNlLmxvYWRVaW50KDgpLnRvTnVtYmVyKCk7XG4gICAgaWYgKG9wICE9PSAzKSB7XG4gICAgICBpZiAob3AgIT09IDApIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBvcCcpO1xuXG4gICAgICBjb25zdCBzZW5kTW9kZSA9IHNsaWNlLmxvYWRVaW50KDgpLnRvTnVtYmVyKCk7XG4gICAgICBpZiAoc2VuZE1vZGUgIT09IDMpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBzZW5kTW9kZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlzVjNDb250cmFjdE1lc3NhZ2UgPSB0cnVlO1xuICAgIH1cblxuICAgIGxldCBvcmRlciA9IHNsaWNlLmxvYWRSZWYoKTtcblxuICAgIGlmIChvcmRlci5sb2FkQml0KCkpIHRocm93IEVycm9yKCdpbnZhbGlkIGludGVybmFsIGhlYWRlcicpO1xuICAgIGlmICghb3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBpaHJEaXNhYmxlZCcpO1xuICAgIGNvbnN0IGJvdW5jZSA9IG9yZGVyLmxvYWRCaXQoKTtcbiAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBib3VuY2VkJyk7XG4gICAgY29uc3Qgc291cmNlQWRkcmVzcyA9IG9yZGVyLmxvYWRBZGRyZXNzKCk7XG4gICAgaWYgKHNvdXJjZUFkZHJlc3MgIT09IG51bGwpIHRocm93IEVycm9yKCdpbnZhbGlkIGV4dGVybmFsU291cmNlQWRkcmVzcycpO1xuICAgIGNvbnN0IGRlc3RBZGRyZXNzID0gb3JkZXIubG9hZEFkZHJlc3MoKTtcbiAgICBjb25zdCB2YWx1ZSA9IG9yZGVyLmxvYWRDb2lucygpLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB0aHJvdyBFcnJvcignaW52YWxpZCBjdXJyZW5jeUNvbGxlY3Rpb24nKTtcbiAgICBjb25zdCBpaHJGZWVzID0gb3JkZXIubG9hZENvaW5zKCk7XG4gICAgaWYgKCFpaHJGZWVzLmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpaHJGZWVzJyk7XG4gICAgY29uc3QgZndkRmVlcyA9IG9yZGVyLmxvYWRDb2lucygpO1xuICAgIGlmICghZndkRmVlcy5lcShuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZndkRmVlcycpO1xuICAgIGNvbnN0IGNyZWF0ZWRMdCA9IG9yZGVyLmxvYWRVaW50KDY0KTtcbiAgICBpZiAoIWNyZWF0ZWRMdC5lcShuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgY3JlYXRlZEx0Jyk7XG4gICAgY29uc3QgY3JlYXRlZEF0ID0gb3JkZXIubG9hZFVpbnQoMzIpO1xuICAgIGlmICghY3JlYXRlZEF0LmVxKG5ldyBCTigwKSkpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBjcmVhdGVkQXQnKTtcblxuICAgIC8vIG9yZGVyIHN0YXRlSW5pdFxuICAgIGlmIChvcmRlci5sb2FkQml0KCkpIHtcbiAgICAgIG9yZGVyLmxvYWRSZWYoKTsgLy8gZG9uJ3QgcGFyc2Ugc3RhdGVJbml0XG4gICAgfVxuXG4gICAgLy8gb3JkZXIgYm9keVxuICAgIGxldCBwYXlsb2FkO1xuICAgIGxldCB3aXRoZHJhd0Ftb3VudDtcbiAgICB0aGlzLnRyYW5zYWN0aW9uVHlwZSA9IFRyYW5zYWN0aW9uVHlwZS5TZW5kO1xuICAgIGlmIChvcmRlci5nZXRGcmVlQml0cygpID4gMCkge1xuICAgICAgaWYgKG9yZGVyLmxvYWRCaXQoKSkge1xuICAgICAgICBvcmRlciA9IG9yZGVyLmxvYWRSZWYoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9yZGVyLmdldEZyZWVCaXRzKCkgPiAzMikge1xuICAgICAgICBjb25zdCBvcGNvZGUgPSBvcmRlci5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICAgICAgaWYgKG9wY29kZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IHBheWxvYWRCeXRlcyA9IG9yZGVyLmxvYWRCaXRzKG9yZGVyLmdldEZyZWVCaXRzKCkpO1xuICAgICAgICAgIHBheWxvYWQgPSBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUocGF5bG9hZEJ5dGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChvcGNvZGUgPT09IDQwOTYpIHtcbiAgICAgICAgICBjb25zdCBxdWVyeUlkID0gb3JkZXIubG9hZFVpbnQoNjQpLnRvTnVtYmVyKCk7XG4gICAgICAgICAgd2l0aGRyYXdBbW91bnQgPSBvcmRlci5sb2FkQ29pbnMoKS50b051bWJlcigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgcGF5bG9hZCA9IFdJVEhEUkFXX09QQ09ERSArIHF1ZXJ5SWQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCAnMCcpICsgd2l0aGRyYXdBbW91bnQ7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2luZ2xlTm9taW5hdG9yV2l0aGRyYXc7XG4gICAgICAgIH0gZWxzZSBpZiAob3Bjb2RlID09PSBKRVRUT05fVFJBTlNGRVJfT1BDT0RFKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuO1xuICAgICAgICAgIGNvbnN0IHF1ZXJ5SWQgPSBvcmRlci5sb2FkVWludCg2NCkudG9OdW1iZXIoKTtcbiAgICAgICAgICBpZiAocXVlcnlJZCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIHF1ZXJ5SWQgZm9yIGpldHRvbiB0cmFuc2ZlcicpO1xuXG4gICAgICAgICAgY29uc3QgamV0dG9uQW1vdW50ID0gb3JkZXIubG9hZENvaW5zKCk7XG4gICAgICAgICAgaWYgKCFqZXR0b25BbW91bnQuZ3QobmV3IEJOKDApKSkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGpldHRvbkFtb3VudCcpO1xuXG4gICAgICAgICAgY29uc3QgamV0dG9uUmVjaXBpZW50ID0gb3JkZXIubG9hZEFkZHJlc3MoKTtcbiAgICAgICAgICBpZiAoIWpldHRvblJlY2lwaWVudCkgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGpldHRvblJlY2lwaWVudCcpO1xuXG4gICAgICAgICAgY29uc3QgZm9yd2FyZGVyQWRkcmVzcyA9IG9yZGVyLmxvYWRBZGRyZXNzKCk7XG4gICAgICAgICAgaWYgKCFmb3J3YXJkZXJBZGRyZXNzKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZm9yd2FyZGVyQWRkcmVzcycpO1xuXG4gICAgICAgICAgb3JkZXIubG9hZEJpdCgpOyAvLyBza2lwIGJpdFxuXG4gICAgICAgICAgY29uc3QgZm9yd2FyZFRvbkFtb3VudCA9IG9yZGVyLmxvYWRDb2lucygpO1xuICAgICAgICAgIGlmICghZm9yd2FyZFRvbkFtb3VudC5ndChuZXcgQk4oMCkpKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZm9yd2FyZFRvbkFtb3VudCcpO1xuXG4gICAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcbiAgICAgICAgICBpZiAob3JkZXIubG9hZEJpdCgpKSB7XG4gICAgICAgICAgICBvcmRlciA9IG9yZGVyLmxvYWRSZWYoKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VPcGNvZGUgPSBvcmRlci5sb2FkVWludCgzMikudG9OdW1iZXIoKTtcbiAgICAgICAgICAgIGlmIChtZXNzYWdlT3Bjb2RlICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbWVzc2FnZSBvcGNvZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VCeXRlcyA9IG9yZGVyLmxvYWRCaXRzKG9yZGVyLmdldEZyZWVCaXRzKCkpO1xuICAgICAgICAgICAgbWVzc2FnZSA9IG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShtZXNzYWdlQnl0ZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBheWxvYWQgPSB7XG4gICAgICAgICAgICBqZXR0b25BbW91bnQ6IGpldHRvbkFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgamV0dG9uUmVjaXBpZW50OiBqZXR0b25SZWNpcGllbnQudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdGhpcy50b0FkZHJlc3NCb3VuY2VhYmxlKSxcbiAgICAgICAgICAgIGZvcndhcmRlckFkZHJlc3M6IGZvcndhcmRlckFkZHJlc3MudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdGhpcy5mcm9tQWRkcmVzc0JvdW5jZWFibGUpLFxuICAgICAgICAgICAgZm9yd2FyZFRvbkFtb3VudDogZm9yd2FyZFRvbkFtb3VudC50b1N0cmluZygpLFxuICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgaWYgKG9wY29kZSA9PT0gcGFyc2VJbnQoVE9OX1dIQUxFU19ERVBPU0lUX09QQ09ERSwgMTApKSB7XG4gICAgICAgICAgdGhpcy50cmFuc2FjdGlvblR5cGUgPSBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzRGVwb3NpdDtcbiAgICAgICAgICBjb25zdCBxdWVyeUlkID0gb3JkZXIubG9hZFVpbnQoNjQpLnRvTnVtYmVyKCk7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgZ2FzIGxpbWl0LCB3aGljaCBtdXN0IGJlIHJlYWQgdG8gYWR2YW5jZSB0aGUgY3Vyc29yXG4gICAgICAgICAgLy8gV2UgZG8gbm90IG5lZWQgdG8gc3RvcmUgaXRcbiAgICAgICAgICBvcmRlci5sb2FkQ29pbnMoKTtcbiAgICAgICAgICBwYXlsb2FkID0gVE9OX1dIQUxFU19ERVBPU0lUX09QQ09ERSArIHF1ZXJ5SWQudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDE2LCAnMCcpO1xuICAgICAgICB9IGVsc2UgaWYgKG9wY29kZSA9PT0gcGFyc2VJbnQoVE9OX1dIQUxFU19XSVRIRFJBV19PUENPREUsIDEwKSkge1xuICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25UeXBlID0gVHJhbnNhY3Rpb25UeXBlLlRvbldoYWxlc1dpdGhkcmF3YWw7XG5cbiAgICAgICAgICBjb25zdCBxdWVyeUlkID0gb3JkZXIubG9hZFVpbnQoNjQpLnRvTnVtYmVyKCk7XG4gICAgICAgICAgb3JkZXIubG9hZENvaW5zKCk7IC8vIFNraXAgR2FzIChIYXJkY29kZWQgaW4gYnVpbGRlcilcbiAgICAgICAgICBjb25zdCBhbW91bnQgPSBvcmRlci5sb2FkQ29pbnMoKTtcblxuICAgICAgICAgIHdpdGhkcmF3QW1vdW50ID0gYW1vdW50LnRvU3RyaW5nKCk7IC8vIERlY2ltYWwgU3RyaW5nXG5cbiAgICAgICAgICAvLyBSZWNvbnN0cnVjdCBQYXlsb2FkOiBEZWNpbWFsIE9wICsgSGV4IFF1ZXJ5ICsgRGVjaW1hbCBBbW91bnRcbiAgICAgICAgICBjb25zdCBxdWVyeUhleCA9IG5ldyBCTihxdWVyeUlkKS50b1N0cmluZygxNikucGFkU3RhcnQoMTYsICcwJyk7XG4gICAgICAgICAgcGF5bG9hZCA9IFRPTl9XSEFMRVNfV0lUSERSQVdfT1BDT0RFICsgcXVlcnlIZXggKyB3aXRoZHJhd0Ftb3VudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwYXlsb2FkID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHRvQWRkcmVzczogZGVzdEFkZHJlc3MudG9TdHJpbmcodHJ1ZSwgdHJ1ZSwgdGhpcy5mcm9tQWRkcmVzc0JvdW5jZWFibGUpLFxuICAgICAgdmFsdWUsXG4gICAgICBib3VuY2UsXG4gICAgICBzZXFubyxcbiAgICAgIHdpdGhkcmF3QW1vdW50LFxuICAgICAgZXhwaXJlQXQsXG4gICAgICBwYXlsb2FkLFxuICAgICAgc2lnbmF0dXJlLFxuICAgICAgd2FsbGV0SWQsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUcmFuc2ZlclN0YXRlSW5pdChzbGljZTogYW55KTogYW55IHtcbiAgICBpZiAoc2xpY2UgPT09IG51bGwpIHJldHVybiB7fTtcbiAgICBzbGljZS5sb2FkUmVmKCk7XG4gICAgY29uc3QgZGF0YSA9IHNsaWNlLmxvYWRSZWYoKTtcbiAgICBjb25zdCBzZXFubyA9IGRhdGEubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG4gICAgaWYgKHNlcW5vICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgc2Vxbm8nKTtcbiAgICBjb25zdCB3YWxsZXRJZCA9IGRhdGEubG9hZFVpbnQoMzIpLnRvTnVtYmVyKCk7XG4gICAgaWYgKHdhbGxldElkICE9PSBXQUxMRVRfSUQpIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB3YWxsZXQgaWQnKTtcbiAgICBjb25zdCBwdWJsaWNLZXkgPSBuZXcgVWludDhBcnJheSgzMik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwdWJsaWNLZXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIHB1YmxpY0tleVtpXSA9IGRhdGEubG9hZFVpbnQoOCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWJsaWNLZXk6IEJ1ZmZlci5mcm9tKHB1YmxpY0tleSkudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -4,6 +4,8 @@ import { TransactionBuilder } from './transactionBuilder';
4
4
  import { TransferBuilder } from './transferBuilder';
5
5
  import { SingleNominatorWithdrawBuilder } from './singleNominatorWithdrawBuilder';
6
6
  import { TokenTransferBuilder } from './tokenTransferBuilder';
7
+ import { TonWhalesDepositBuilder } from './tonWhalesDepositBuilder';
8
+ import { TonWhalesWithdrawalBuilder } from './tonWhalesWithdrawalBuilder';
7
9
  export declare class TransactionBuilderFactory extends BaseTransactionBuilderFactory {
8
10
  constructor(_coinConfig: Readonly<CoinConfig>);
9
11
  /** @inheritdoc */
@@ -20,5 +22,7 @@ export declare class TransactionBuilderFactory extends BaseTransactionBuilderFac
20
22
  getTokenTransferBuilder(): TokenTransferBuilder;
21
23
  /** @inheritdoc */
22
24
  getWalletInitializationBuilder(): void;
25
+ getTonWhalesDepositBuilder(): TonWhalesDepositBuilder;
26
+ getTonWhalesWithdrawalBuilder(): TonWhalesWithdrawalBuilder;
23
27
  }
24
28
  //# sourceMappingURL=transactionBuilderFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAmCrC,kBAAkB;IAClB,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iCAAiC,IAAI,8BAA8B;IAInE;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAI/C,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;CAGvC"}
1
+ {"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/transactionBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAA4C,MAAM,iBAAiB,CAAC;AAC1G,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,yBAA0B,SAAQ,6BAA6B;gBAC9D,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAG7C,kBAAkB;IAClB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAyCrC,kBAAkB;IAClB,kBAAkB,IAAI,eAAe;IAIrC;;OAEG;IACH,iCAAiC,IAAI,8BAA8B;IAInE;;OAEG;IACH,uBAAuB,IAAI,oBAAoB;IAI/C,kBAAkB;IAClB,8BAA8B,IAAI,IAAI;IAItC,0BAA0B,IAAI,uBAAuB;IAIrD,6BAA6B,IAAI,0BAA0B;CAG5D"}
@@ -7,6 +7,8 @@ const singleNominatorWithdrawBuilder_1 = require("./singleNominatorWithdrawBuild
7
7
  const transaction_1 = require("./transaction");
8
8
  const tokenTransferBuilder_1 = require("./tokenTransferBuilder");
9
9
  const tokenTransaction_1 = require("./tokenTransaction");
10
+ const tonWhalesDepositBuilder_1 = require("./tonWhalesDepositBuilder");
11
+ const tonWhalesWithdrawalBuilder_1 = require("./tonWhalesWithdrawalBuilder");
10
12
  class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory {
11
13
  constructor(_coinConfig) {
12
14
  super(_coinConfig);
@@ -37,6 +39,12 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
37
39
  case sdk_core_1.TransactionType.SendToken:
38
40
  builder = this.getTokenTransferBuilder();
39
41
  break;
42
+ case sdk_core_1.TransactionType.TonWhalesDeposit:
43
+ builder = this.getTonWhalesDepositBuilder();
44
+ break;
45
+ case sdk_core_1.TransactionType.TonWhalesWithdrawal:
46
+ builder = this.getTonWhalesWithdrawalBuilder();
47
+ break;
40
48
  default:
41
49
  throw new sdk_core_1.InvalidTransactionError('unsupported transaction');
42
50
  }
@@ -67,6 +75,12 @@ class TransactionBuilderFactory extends sdk_core_1.BaseTransactionBuilderFactory
67
75
  getWalletInitializationBuilder() {
68
76
  throw new Error('Method not implemented.');
69
77
  }
78
+ getTonWhalesDepositBuilder() {
79
+ return new tonWhalesDepositBuilder_1.TonWhalesDepositBuilder(this._coinConfig);
80
+ }
81
+ getTonWhalesWithdrawalBuilder() {
82
+ return new tonWhalesWithdrawalBuilder_1.TonWhalesWithdrawalBuilder(this._coinConfig);
83
+ }
70
84
  }
71
85
  exports.TransactionBuilderFactory = TransactionBuilderFactory;
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBMEc7QUFHMUcsdURBQW9EO0FBQ3BELHFGQUFrRjtBQUNsRiwrQ0FBNEM7QUFDNUMsaUVBQThEO0FBQzlELHlEQUFzRDtBQUV0RCxNQUFhLHlCQUEwQixTQUFRLHdDQUE2QjtJQUMxRSxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBQ0Qsa0JBQWtCO0lBQ2xCLElBQUksQ0FBQyxHQUFXO1FBQ2QsSUFBSSxPQUEyQixDQUFDO1FBQ2hDLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxHQUFHLElBQUkseUJBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRWhDLElBQUksRUFBZSxDQUFDO1lBQ3BCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSywwQkFBZSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUMvQyx1RUFBdUU7Z0JBQ3ZFLEVBQUUsR0FBRyxJQUFJLG1DQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDNUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdCLENBQUM7aUJBQU0sQ0FBQztnQkFDTix5REFBeUQ7Z0JBQ3pELEVBQUUsR0FBRyxPQUFPLENBQUM7WUFDZixDQUFDO1lBQ0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2hCLEtBQUssMEJBQWUsQ0FBQyxJQUFJO29CQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQ3BDLE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLHVCQUF1QjtvQkFDMUMsT0FBTyxHQUFHLElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDO29CQUNuRCxNQUFNO2dCQUNSLEtBQUssMEJBQWUsQ0FBQyxTQUFTO29CQUM1QixPQUFPLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTSxJQUFJLGtDQUF1QixDQUFDLHlCQUF5QixDQUFDLENBQUM7WUFDakUsQ0FBQztZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbEIsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxNQUFNLENBQUMsQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGtCQUFrQjtRQUNoQixPQUFPLElBQUksaUNBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUNBQWlDO1FBQy9CLE9BQU8sSUFBSSwrREFBOEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSwyQ0FBb0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQiw4QkFBOEI7UUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQS9ERCw4REErREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyIH0gZnJvbSAnLi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB7XG4gIGNvbnN0cnVjdG9yKF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKF9jb2luQ29uZmlnKTtcbiAgfVxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZnJvbShyYXc6IHN0cmluZyk6IFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gICAgbGV0IGJ1aWxkZXI6IFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hlY2tUeCA9IG5ldyBUcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgIGNoZWNrVHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG5cbiAgICAgIGxldCB0eDogVHJhbnNhY3Rpb247XG4gICAgICBpZiAoY2hlY2tUeC50eXBlID09PSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuKSB7XG4gICAgICAgIC8vIEl0J3MgYSB0b2tlbiB0cmFuc2FjdGlvbiwgc28gdXNlIFRva2VuVHJhbnNhY3Rpb24gZm9yIHByb3BlciBwYXJzaW5nXG4gICAgICAgIHR4ID0gbmV3IFRva2VuVHJhbnNhY3Rpb24odGhpcy5fY29pbkNvbmZpZyk7XG4gICAgICAgIHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSXQncyBhIHJlZ3VsYXIgdHJhbnNhY3Rpb24sIHVzZSB0aGUgYWxyZWFkeSBwYXJzZWQgb25lXG4gICAgICAgIHR4ID0gY2hlY2tUeDtcbiAgICAgIH1cbiAgICAgIHN3aXRjaCAodHgudHlwZSkge1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TaW5nbGVOb21pbmF0b3JXaXRoZHJhdzpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuU2VuZFRva2VuOlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRva2VuVHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgYnVpbGRlci5mcm9tKHJhdyk7XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgYnVpbGRlciB0byBjcmVhdGUgYSBUT04gd2l0aGRyYXcgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlcigpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIFRPTiB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxufVxuIl19
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4Q0FBMEc7QUFHMUcsdURBQW9EO0FBQ3BELHFGQUFrRjtBQUNsRiwrQ0FBNEM7QUFDNUMsaUVBQThEO0FBQzlELHlEQUFzRDtBQUN0RCx1RUFBb0U7QUFDcEUsNkVBQTBFO0FBRTFFLE1BQWEseUJBQTBCLFNBQVEsd0NBQTZCO0lBQzFFLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxrQkFBa0I7SUFDbEIsSUFBSSxDQUFDLEdBQVc7UUFDZCxJQUFJLE9BQTJCLENBQUM7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSx5QkFBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFaEMsSUFBSSxFQUFlLENBQUM7WUFDcEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLDBCQUFlLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQy9DLHVFQUF1RTtnQkFDdkUsRUFBRSxHQUFHLElBQUksbUNBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUM1QyxFQUFFLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLHlEQUF5RDtnQkFDekQsRUFBRSxHQUFHLE9BQU8sQ0FBQztZQUNmLENBQUM7WUFDRCxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDaEIsS0FBSywwQkFBZSxDQUFDLElBQUk7b0JBQ3ZCLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDcEMsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsdUJBQXVCO29CQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLFNBQVM7b0JBQzVCLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztvQkFDekMsTUFBTTtnQkFDUixLQUFLLDBCQUFlLENBQUMsZ0JBQWdCO29CQUNuQyxPQUFPLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7b0JBQzVDLE1BQU07Z0JBQ1IsS0FBSywwQkFBZSxDQUFDLG1CQUFtQjtvQkFDdEMsT0FBTyxHQUFHLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO29CQUMvQyxNQUFNO2dCQUNSO29CQUNFLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ2pFLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsTUFBTSxDQUFDLENBQUM7UUFDVixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLGlDQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNILGlDQUFpQztRQUMvQixPQUFPLElBQUksK0RBQThCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNILHVCQUF1QjtRQUNyQixPQUFPLElBQUksMkNBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsOEJBQThCO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLE9BQU8sSUFBSSxpREFBdUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELDZCQUE2QjtRQUMzQixPQUFPLElBQUksdURBQTBCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzFELENBQUM7Q0FDRjtBQTdFRCw4REE2RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSwgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90cmFuc2ZlckJ1aWxkZXInO1xuaW1wb3J0IHsgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyIH0gZnJvbSAnLi9zaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXInO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRva2VuVHJhbnNmZXJCdWlsZGVyIH0gZnJvbSAnLi90b2tlblRyYW5zZmVyQnVpbGRlcic7XG5pbXBvcnQgeyBUb2tlblRyYW5zYWN0aW9uIH0gZnJvbSAnLi90b2tlblRyYW5zYWN0aW9uJztcbmltcG9ydCB7IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyIH0gZnJvbSAnLi90b25XaGFsZXNEZXBvc2l0QnVpbGRlcic7XG5pbXBvcnQgeyBUb25XaGFsZXNXaXRoZHJhd2FsQnVpbGRlciB9IGZyb20gJy4vdG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSBleHRlbmRzIEJhc2VUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IHtcbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBmcm9tKHJhdzogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICBsZXQgYnVpbGRlcjogVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGVja1R4ID0gbmV3IFRyYW5zYWN0aW9uKHRoaXMuX2NvaW5Db25maWcpO1xuICAgICAgY2hlY2tUeC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3KTtcblxuICAgICAgbGV0IHR4OiBUcmFuc2FjdGlvbjtcbiAgICAgIGlmIChjaGVja1R4LnR5cGUgPT09IFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW4pIHtcbiAgICAgICAgLy8gSXQncyBhIHRva2VuIHRyYW5zYWN0aW9uLCBzbyB1c2UgVG9rZW5UcmFuc2FjdGlvbiBmb3IgcHJvcGVyIHBhcnNpbmdcbiAgICAgICAgdHggPSBuZXcgVG9rZW5UcmFuc2FjdGlvbih0aGlzLl9jb2luQ29uZmlnKTtcbiAgICAgICAgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhdyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBJdCdzIGEgcmVndWxhciB0cmFuc2FjdGlvbiwgdXNlIHRoZSBhbHJlYWR5IHBhcnNlZCBvbmVcbiAgICAgICAgdHggPSBjaGVja1R4O1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0eC50eXBlKSB7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNpbmdsZU5vbWluYXRvcldpdGhkcmF3OlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW46XG4gICAgICAgICAgYnVpbGRlciA9IHRoaXMuZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVG9uV2hhbGVzRGVwb3NpdDpcbiAgICAgICAgICBidWlsZGVyID0gdGhpcy5nZXRUb25XaGFsZXNEZXBvc2l0QnVpbGRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5Ub25XaGFsZXNXaXRoZHJhd2FsOlxuICAgICAgICAgIGJ1aWxkZXIgPSB0aGlzLmdldFRvbldoYWxlc1dpdGhkcmF3YWxCdWlsZGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCd1bnN1cHBvcnRlZCB0cmFuc2FjdGlvbicpO1xuICAgICAgfVxuICAgICAgYnVpbGRlci5mcm9tKHJhdyk7XG4gICAgICByZXR1cm4gYnVpbGRlcjtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRUcmFuc2ZlckJ1aWxkZXIoKTogVHJhbnNmZXJCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zZmVyQnVpbGRlcih0aGlzLl9jb2luQ29uZmlnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgc3BlY2lmaWMgYnVpbGRlciB0byBjcmVhdGUgYSBUT04gd2l0aGRyYXcgdHJhbnNhY3Rpb25cbiAgICovXG4gIGdldFNpbmdsZU5vbWluYXRvcldpdGhkcmF3QnVpbGRlcigpOiBTaW5nbGVOb21pbmF0b3JXaXRoZHJhd0J1aWxkZXIge1xuICAgIHJldHVybiBuZXcgU2luZ2xlTm9taW5hdG9yV2l0aGRyYXdCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzcGVjaWZpYyBidWlsZGVyIHRvIGNyZWF0ZSBhIFRPTiB0b2tlbiB0cmFuc2ZlciB0cmFuc2FjdGlvblxuICAgKi9cbiAgZ2V0VG9rZW5UcmFuc2ZlckJ1aWxkZXIoKTogVG9rZW5UcmFuc2ZlckJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9rZW5UcmFuc2ZlckJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0V2FsbGV0SW5pdGlhbGl6YXRpb25CdWlsZGVyKCk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIGdldFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyKCk6IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRvbldoYWxlc0RlcG9zaXRCdWlsZGVyKHRoaXMuX2NvaW5Db25maWcpO1xuICB9XG5cbiAgZ2V0VG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIoKTogVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVG9uV2hhbGVzV2l0aGRyYXdhbEJ1aWxkZXIodGhpcy5fY29pbkNvbmZpZyk7XG4gIH1cbn1cbiJdfQ==
@@ -110,4 +110,48 @@ export declare const signedSingleNominatorWithdrawTransaction: {
110
110
  amount: string;
111
111
  };
112
112
  };
113
+ export declare const signedTonWhalesDepositTransaction: {
114
+ recipient: {
115
+ address: string;
116
+ amount: string;
117
+ };
118
+ tx: string;
119
+ seqno: number;
120
+ queryId: string;
121
+ expireTime: number;
122
+ sender: string;
123
+ publicKey: string;
124
+ signature: string;
125
+ bounceable: boolean;
126
+ };
127
+ export declare const signedTonWhalesWithdrawalTransaction: {
128
+ recipient: {
129
+ address: string;
130
+ amount: string;
131
+ };
132
+ withdrawAmount: string;
133
+ tx: string;
134
+ seqno: number;
135
+ queryId: string;
136
+ expireTime: number;
137
+ sender: string;
138
+ publicKey: string;
139
+ signature: string;
140
+ bounceable: boolean;
141
+ };
142
+ export declare const signedTonWhalesFullWithdrawalTransaction: {
143
+ recipient: {
144
+ address: string;
145
+ amount: string;
146
+ };
147
+ withdrawAmount: string;
148
+ tx: string;
149
+ seqno: number;
150
+ queryId: string;
151
+ expireTime: number;
152
+ sender: string;
153
+ publicKey: string;
154
+ signature: string;
155
+ bounceable: boolean;
156
+ };
113
157
  //# sourceMappingURL=ton.d.ts.map