From 693ab33922b32a792147388f328a46d330c8f1a7 Mon Sep 17 00:00:00 2001 From: xianny Date: Tue, 6 Aug 2019 09:24:17 -0700 Subject: [PATCH] hanging indent for method params --- .../generated-wrappers/asset_proxy_owner.ts | 10 ++-- .../src/generated-wrappers/coordinator.ts | 60 +++++++++---------- .../src/generated-wrappers/dutch_auction.ts | 20 +++---- .../src/generated-wrappers/exchange.ts | 40 ++++++------- .../src/generated-wrappers/forwarder.ts | 60 +++++++++---------- packages/abi-gen/src/index.ts | 2 + .../python/abi_gen_dummy/__init__.py | 8 ++- .../typescript/abi_gen_dummy.ts | 8 ++- .../fixtures/artifacts/AbiGenDummy.json | 18 +++--- .../fixtures/contracts/AbiGenDummy.sol | 2 +- 10 files changed, 119 insertions(+), 109 deletions(-) diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts b/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts index 5e56718ca8..514bd3280a 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/asset_proxy_owner.ts @@ -1371,7 +1371,7 @@ export class AssetProxyOwnerContract extends BaseContract { * Sends an Ethereum transaction executing this method with the supplied parameters. This is a read/write * Ethereum operation and will cost gas. * @param _secondsTimeLocked Duration needed after a transaction is confirmed - * and before it becomes executable, in seconds. + * and before it becomes executable, in seconds. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -1402,7 +1402,7 @@ export class AssetProxyOwnerContract extends BaseContract { * Sends an Ethereum transaction and waits until the transaction has been successfully mined without reverting. * If the transaction was mined, but reverted, an error is thrown. * @param _secondsTimeLocked Duration needed after a transaction is confirmed - * and before it becomes executable, in seconds. + * and before it becomes executable, in seconds. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success * @returns A promise that resolves when the transaction is successful @@ -1431,7 +1431,7 @@ export class AssetProxyOwnerContract extends BaseContract { /** * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param _secondsTimeLocked Duration needed after a transaction is confirmed - * and before it becomes executable, in seconds. + * and before it becomes executable, in seconds. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -1459,7 +1459,7 @@ export class AssetProxyOwnerContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param _secondsTimeLocked Duration needed after a transaction is confirmed - * and before it becomes executable, in seconds. + * and before it becomes executable, in seconds. */ async callAsync( _secondsTimeLocked: BigNumber, @@ -1502,7 +1502,7 @@ export class AssetProxyOwnerContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param _secondsTimeLocked Duration needed after a transaction is confirmed - * and before it becomes executable, in seconds. + * and before it becomes executable, in seconds. */ getABIEncodedTransactionData(_secondsTimeLocked: BigNumber): string { assert.isBigNumber('_secondsTimeLocked', _secondsTimeLocked); diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts index dc4a8deab8..66e7c5b8cf 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/coordinator.ts @@ -194,7 +194,7 @@ export class CoordinatorContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param approval Coordinator approval message containing the transaction - * hash, transaction signature, and expiration of the approval. + * hash, transaction signature, and expiration of the approval. * @returns EIP712 hash of the Coordinator approval message with the domain separator of this contract. */ async callAsync( @@ -245,7 +245,7 @@ export class CoordinatorContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param approval Coordinator approval message containing the transaction - * hash, transaction signature, and expiration of the approval. + * hash, transaction signature, and expiration of the approval. */ getABIEncodedTransactionData(approval: { txOrigin: string; @@ -284,13 +284,13 @@ export class CoordinatorContract extends BaseContract { * Ethereum operation and will cost gas. * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -345,13 +345,13 @@ export class CoordinatorContract extends BaseContract { * If the transaction was mined, but reverted, an error is thrown. * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success * @returns A promise that resolves when the transaction is successful @@ -395,13 +395,13 @@ export class CoordinatorContract extends BaseContract { * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -449,13 +449,13 @@ export class CoordinatorContract extends BaseContract { * since they don't modify state. * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. */ async callAsync( transaction: { salt: BigNumber; signerAddress: string; data: string }, @@ -517,13 +517,13 @@ export class CoordinatorContract extends BaseContract { * to create a 0x transaction (see protocol spec for more details). * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. */ getABIEncodedTransactionData( transaction: { salt: BigNumber; signerAddress: string; data: string }, @@ -641,13 +641,13 @@ export class CoordinatorContract extends BaseContract { * since they don't modify state. * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. */ async callAsync( transaction: { salt: BigNumber; signerAddress: string; data: string }, @@ -709,13 +709,13 @@ export class CoordinatorContract extends BaseContract { * to create a 0x transaction (see protocol spec for more details). * @param transaction 0x transaction containing salt, signerAddress, and data. * @param txOrigin Required signer of Ethereum transaction calling this - * function. + * function. * @param transactionSignature Proof that the transaction has been signed by - * the signer. + * the signer. * @param approvalExpirationTimeSeconds Array of expiration times in seconds - * for which each corresponding approval signature expires. + * for which each corresponding approval signature expires. * @param approvalSignatures Array of signatures that correspond to the - * feeRecipients of each order in the transaction's Exchange calldata. + * feeRecipients of each order in the transaction's Exchange calldata. */ getABIEncodedTransactionData( transaction: { salt: BigNumber; signerAddress: string; data: string }, diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts b/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts index 9178ca3322..499fbaf43f 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/dutch_auction.ts @@ -334,9 +334,9 @@ export class DutchAuctionContract extends BaseContract { * Sends an Ethereum transaction executing this method with the supplied parameters. This is a read/write * Ethereum operation and will cost gas. * @param buyOrder The Buyer's order. This order is for the current expected - * price of the auction. + * price of the auction. * @param sellOrder The Seller's order. This order is for the lowest amount (at - * the end of the auction). + * the end of the auction). * @param buySignature Proof that order was created by the buyer. * @param sellSignature Proof that order was created by the seller. * @param txData Additional data for transaction @@ -402,9 +402,9 @@ export class DutchAuctionContract extends BaseContract { * Sends an Ethereum transaction and waits until the transaction has been successfully mined without reverting. * If the transaction was mined, but reverted, an error is thrown. * @param buyOrder The Buyer's order. This order is for the current expected - * price of the auction. + * price of the auction. * @param sellOrder The Seller's order. This order is for the lowest amount (at - * the end of the auction). + * the end of the auction). * @param buySignature Proof that order was created by the buyer. * @param sellSignature Proof that order was created by the seller. * @param txData Additional data for transaction @@ -471,9 +471,9 @@ export class DutchAuctionContract extends BaseContract { /** * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param buyOrder The Buyer's order. This order is for the current expected - * price of the auction. + * price of the auction. * @param sellOrder The Seller's order. This order is for the lowest amount (at - * the end of the auction). + * the end of the auction). * @param buySignature Proof that order was created by the buyer. * @param sellSignature Proof that order was created by the seller. * @param txData Additional data for transaction @@ -539,9 +539,9 @@ export class DutchAuctionContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param buyOrder The Buyer's order. This order is for the current expected - * price of the auction. + * price of the auction. * @param sellOrder The Seller's order. This order is for the lowest amount (at - * the end of the auction). + * the end of the auction). * @param buySignature Proof that order was created by the buyer. * @param sellSignature Proof that order was created by the seller. * @returns matchedFillResults amounts filled and fees paid by maker and taker of matched orders. @@ -650,9 +650,9 @@ export class DutchAuctionContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param buyOrder The Buyer's order. This order is for the current expected - * price of the auction. + * price of the auction. * @param sellOrder The Seller's order. This order is for the lowest amount (at - * the end of the auction). + * the end of the auction). * @param buySignature Proof that order was created by the buyer. * @param sellSignature Proof that order was created by the seller. */ diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts b/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts index a91c01b011..b513ea72bf 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/exchange.ts @@ -167,7 +167,7 @@ export class ExchangeContract extends BaseContract { * Ethereum operation and will cost gas. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -220,7 +220,7 @@ export class ExchangeContract extends BaseContract { * If the transaction was mined, but reverted, an error is thrown. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success @@ -273,7 +273,7 @@ export class ExchangeContract extends BaseContract { * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -326,7 +326,7 @@ export class ExchangeContract extends BaseContract { * since they don't modify state. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @returns Amounts filled and fees paid by makers and taker. NOTE: makerAssetFilledAmount and takerAssetFilledAmount may include amounts filled of different assets. */ @@ -404,7 +404,7 @@ export class ExchangeContract extends BaseContract { * to create a 0x transaction (see protocol spec for more details). * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. */ getABIEncodedTransactionData( @@ -1823,7 +1823,7 @@ export class ExchangeContract extends BaseContract { * Ethereum operation and will cost gas. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -1876,7 +1876,7 @@ export class ExchangeContract extends BaseContract { * If the transaction was mined, but reverted, an error is thrown. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success @@ -1929,7 +1929,7 @@ export class ExchangeContract extends BaseContract { * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -1982,7 +1982,7 @@ export class ExchangeContract extends BaseContract { * since they don't modify state. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @returns Amounts filled and fees paid by makers and taker. NOTE: makerAssetFilledAmount and takerAssetFilledAmount may include amounts filled of different assets. */ @@ -2060,7 +2060,7 @@ export class ExchangeContract extends BaseContract { * to create a 0x transaction (see protocol spec for more details). * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. */ getABIEncodedTransactionData( @@ -2143,7 +2143,7 @@ export class ExchangeContract extends BaseContract { * Sends an Ethereum transaction executing this method with the supplied parameters. This is a read/write * Ethereum operation and will cost gas. * @param targetOrderEpoch Orders created with a salt less or equal to this - * value will be cancelled. + * value will be cancelled. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -2171,7 +2171,7 @@ export class ExchangeContract extends BaseContract { * Sends an Ethereum transaction and waits until the transaction has been successfully mined without reverting. * If the transaction was mined, but reverted, an error is thrown. * @param targetOrderEpoch Orders created with a salt less or equal to this - * value will be cancelled. + * value will be cancelled. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success * @returns A promise that resolves when the transaction is successful @@ -2200,7 +2200,7 @@ export class ExchangeContract extends BaseContract { /** * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param targetOrderEpoch Orders created with a salt less or equal to this - * value will be cancelled. + * value will be cancelled. * @param txData Additional data for transaction * @returns The hash of the transaction */ @@ -2228,7 +2228,7 @@ export class ExchangeContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param targetOrderEpoch Orders created with a salt less or equal to this - * value will be cancelled. + * value will be cancelled. */ async callAsync( targetOrderEpoch: BigNumber, @@ -2271,7 +2271,7 @@ export class ExchangeContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param targetOrderEpoch Orders created with a salt less or equal to this - * value will be cancelled. + * value will be cancelled. */ getABIEncodedTransactionData(targetOrderEpoch: BigNumber): string { assert.isBigNumber('targetOrderEpoch', targetOrderEpoch); @@ -2306,7 +2306,7 @@ export class ExchangeContract extends BaseContract { * Ethereum operation and will cost gas. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -2359,7 +2359,7 @@ export class ExchangeContract extends BaseContract { * If the transaction was mined, but reverted, an error is thrown. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success @@ -2412,7 +2412,7 @@ export class ExchangeContract extends BaseContract { * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -2465,7 +2465,7 @@ export class ExchangeContract extends BaseContract { * since they don't modify state. * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. * @returns Amounts filled and fees paid by makers and taker. NOTE: makerAssetFilledAmount and takerAssetFilledAmount may include amounts filled of different assets. */ @@ -2543,7 +2543,7 @@ export class ExchangeContract extends BaseContract { * to create a 0x transaction (see protocol spec for more details). * @param orders Array of order specifications. * @param takerAssetFillAmounts Array of desired amounts of takerAsset to sell - * in orders. + * in orders. * @param signatures Proofs that orders have been created by makers. */ getABIEncodedTransactionData( diff --git a/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts b/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts index 1ba62714e9..762f165d8a 100644 --- a/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts +++ b/packages/abi-gen-wrappers/src/generated-wrappers/forwarder.ts @@ -37,14 +37,14 @@ export class ForwarderContract extends BaseContract { * Sends an Ethereum transaction executing this method with the supplied parameters. This is a read/write * Ethereum operation and will cost gas. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param makerAssetFillAmount Desired amount of makerAsset to purchase. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -134,14 +134,14 @@ export class ForwarderContract extends BaseContract { * Sends an Ethereum transaction and waits until the transaction has been successfully mined without reverting. * If the transaction was mined, but reverted, an error is thrown. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param makerAssetFillAmount Desired amount of makerAsset to purchase. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success @@ -218,14 +218,14 @@ export class ForwarderContract extends BaseContract { /** * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param makerAssetFillAmount Desired amount of makerAsset to purchase. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -306,14 +306,14 @@ export class ForwarderContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param makerAssetFillAmount Desired amount of makerAsset to purchase. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @returns Amounts filled and fees paid by maker and taker for both sets of orders. */ @@ -439,14 +439,14 @@ export class ForwarderContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param makerAssetFillAmount Desired amount of makerAsset to purchase. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. */ getABIEncodedTransactionData( @@ -837,13 +837,13 @@ export class ForwarderContract extends BaseContract { * Sends an Ethereum transaction executing this method with the supplied parameters. This is a read/write * Ethereum operation and will cost gas. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -922,13 +922,13 @@ export class ForwarderContract extends BaseContract { * Sends an Ethereum transaction and waits until the transaction has been successfully mined without reverting. * If the transaction was mined, but reverted, an error is thrown. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @param pollingIntervalMs Interval at which to poll for success @@ -1002,13 +1002,13 @@ export class ForwarderContract extends BaseContract { /** * Estimates the gas cost of sending an Ethereum transaction calling this method with these arguments. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @param txData Additional data for transaction * @returns The hash of the transaction @@ -1079,13 +1079,13 @@ export class ForwarderContract extends BaseContract { * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. * @returns Amounts filled and fees paid by maker and taker for both sets of orders. */ @@ -1201,13 +1201,13 @@ export class ForwarderContract extends BaseContract { * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). * @param orders Array of order specifications used containing desired - * makerAsset and WETH as takerAsset. + * makerAsset and WETH as takerAsset. * @param signatures Proofs that orders have been created by makers. * @param feeOrders Array of order specifications containing ZRX as makerAsset - * and WETH as takerAsset. Used to purchase ZRX for primary order fees. + * and WETH as takerAsset. Used to purchase ZRX for primary order fees. * @param feeSignatures Proofs that feeOrders have been created by makers. * @param feePercentage Percentage of WETH sold that will payed as fee to - * forwarding contract feeRecipient. + * forwarding contract feeRecipient. * @param feeRecipient Address that will receive ETH when orders are filled. */ getABIEncodedTransactionData( diff --git a/packages/abi-gen/src/index.ts b/packages/abi-gen/src/index.ts index 3ebc069ddd..2b2cad85c9 100644 --- a/packages/abi-gen/src/index.ts +++ b/packages/abi-gen/src/index.ts @@ -131,9 +131,11 @@ function registerTypeScriptHelpers(): void { 'formatDocstringForParamTs', (paramName: string, desc: Handlebars.SafeString): Handlebars.SafeString => { const docString = `@param ${paramName} ${desc}`; + const hangingIndentLength = 4; const config = { width: 80, paddingLeft: ' * ', + hangingIndent: ' '.repeat(hangingIndentLength), ansi: false, }; return new Handlebars.SafeString(`${cliFormat.wrap(docString, config)}`); diff --git a/packages/abi-gen/test-cli/expected-output/python/abi_gen_dummy/__init__.py b/packages/abi-gen/test-cli/expected-output/python/abi_gen_dummy/__init__.py index 4380472340..4f4cd3d920 100644 --- a/packages/abi-gen/test-cli/expected-output/python/abi_gen_dummy/__init__.py +++ b/packages/abi-gen/test-cli/expected-output/python/abi_gen_dummy/__init__.py @@ -407,7 +407,9 @@ def call(self, _hash: bytes, v: int, r: bytes, s: bytes, tx_params: Optional[TxP test that devdocs will be generated and that multiline devdocs will look okay - :param hash: description of some hash + :param hash: description of some hash. Let's make this line super long + to demonstrate hanging indents for method params. It has to be more + than one hundred twenty columns. :param r: ECDSA r output :param s: ECDSA s output :param v: some v, recovery id @@ -424,7 +426,9 @@ def send_transaction(self, _hash: bytes, v: int, r: bytes, s: bytes, tx_params: test that devdocs will be generated and that multiline devdocs will look okay - :param hash: description of some hash + :param hash: description of some hash. Let's make this line super long + to demonstrate hanging indents for method params. It has to be more + than one hundred twenty columns. :param r: ECDSA r output :param s: ECDSA s output :param v: some v, recovery id diff --git a/packages/abi-gen/test-cli/expected-output/typescript/abi_gen_dummy.ts b/packages/abi-gen/test-cli/expected-output/typescript/abi_gen_dummy.ts index 94372b041c..3a5c0cc4e5 100644 --- a/packages/abi-gen/test-cli/expected-output/typescript/abi_gen_dummy.ts +++ b/packages/abi-gen/test-cli/expected-output/typescript/abi_gen_dummy.ts @@ -490,7 +490,9 @@ export class AbiGenDummyContract extends BaseContract { * Sends a read-only call to the contract method. Returns the result that would happen if one were to send an * Ethereum transaction to this method, given the current state of the blockchain. Calls do not cost gas * since they don't modify state. - * @param hash description of some hash + * @param hash description of some hash. Let's make this line super long to + * demonstrate hanging indents for method params. It has to be more than + * one hundred twenty columns. * @param v some v, recovery id * @param r ECDSA r output * @param s ECDSA s output @@ -547,7 +549,9 @@ export class AbiGenDummyContract extends BaseContract { * Returns the ABI encoded transaction data needed to send an Ethereum transaction calling this method. Before * sending the Ethereum tx, this encoded tx data can first be sent to a separate signing service or can be used * to create a 0x transaction (see protocol spec for more details). - * @param hash description of some hash + * @param hash description of some hash. Let's make this line super long to + * demonstrate hanging indents for method params. It has to be more than + * one hundred twenty columns. * @param v some v, recovery id * @param r ECDSA r output * @param s ECDSA s output diff --git a/packages/abi-gen/test-cli/fixtures/artifacts/AbiGenDummy.json b/packages/abi-gen/test-cli/fixtures/artifacts/AbiGenDummy.json index df053afc75..aafd9a7706 100644 --- a/packages/abi-gen/test-cli/fixtures/artifacts/AbiGenDummy.json +++ b/packages/abi-gen/test-cli/fixtures/artifacts/AbiGenDummy.json @@ -565,7 +565,7 @@ "ecrecoverFn(bytes32,uint8,bytes32,bytes32)": { "details": "test that devdocs will be generated and that multiline devdocs will look okay", "params": { - "hash": "description of some hash", + "hash": "description of some hash. Let's make this line super long to demonstrate hanging indents for method params. It has to be more than one hundred twenty columns.", "r": "ECDSA r output", "s": "ECDSA s output", "v": "some v, recovery id" @@ -596,15 +596,15 @@ "evm": { "bytecode": { "linkReferences": {}, - "object": "0x608060405234801561001057600080fd5b50611229806100206000396000f3fe608060405234801561001057600080fd5b50600436106101975760003560e01c806363d69c88116100e35780639a3b61851161008c578063d6d7618c11610066578063d6d7618c146102fc578063d88be12f14610311578063ee8b86fb1461031957610197565b80639a3b6185146102de578063a3c2f6b6146102e6578063ae2dae17146102ee57610197565b80637833bec0116100bd5780637833bec0146102a35780637a791e6e146102c35780638ee52b4e146102cb57610197565b806363d69c881461027a578063647341eb1461028d57806376f15d5b1461029b57610197565b80633e9ef66a1161014557806345fdbdb71161011f57806345fdbdb71461025557806359c28add1461025d5780635ba3c7c01461027257610197565b80633e9ef66a146102375780634303a542146102455780634582eab21461024d57610197565b80632e1a7d4d116101765780632e1a7d4d146101e25780633687617d146101f557806336b323961461021757610197565b806209e4371461019c5780630527c28f146101a65780631310e444146101b9575b600080fd5b6101a461032c565b005b6101a46101b4366004610b3f565b610369565b6101cc6101c7366004610d53565b61036c565b6040516101d99190611164565b60405180910390f35b6101a46101f0366004610d53565b610373565b610208610203366004610d6c565b6103c4565b6040516101d993929190610f44565b61022a610225366004610b7c565b610464565b6040516101d99190610f05565b6101a46101b4366004610bbf565b6101cc610546565b6101a461054d565b6101a46105b2565b6102656105e4565b6040516101d991906110fa565b6101a46105ec565b61022a610288366004610aed565b610651565b6101a46101b4366004610d1e565b6101cc61065a565b6102b66102b1366004610bf4565b610668565b6040516101d9919061100e565b6101a4610725565b6101cc6102d9366004610d53565b61072a565b6101a4610730565b6101cc61073b565b6101a46101b4366004610c8e565b610304610740565b6040516101d99190611151565b6101cc610899565b6101a4610327366004610d53565b6101b4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fd7565b60405180910390fd5b565b50565b506107c790565b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516103b99190611164565b60405180910390a250565b505060408051808201825260048082527f1234567800000000000000000000000000000000000000000000000000000000602080840191909152835180850185528281527f87654321000000000000000000000000000000000000000000000000000000008183015284518086019095529184527f616d657400000000000000000000000000000000000000000000000000000000908401529093909250565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020016104b5929190610ee3565b604051602081830303815290604052805190602001209050600181878787604051600081526020016040526040516104f09493929190610f26565b6020604051602081039080840390855afa158015610512573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015198975050505050505050565b6107c75b90565b604080518082018252601481527f5245564552545f574954485f434f4e5354414e54000000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fa0565b61054a61089f565b604080518082018252601581527f524551554952455f574954485f434f4e5354414e540000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b50929392505050565b600080546001019081905590565b6106706108bf565b50604080516080810182529182528051808201825260048082527f123456780000000000000000000000000000000000000000000000000000000060208381019190915280850192909252825180840184528181527f87654321000000000000000000000000000000000000000000000000000000008184015284840152825180840190935282527f616d65740000000000000000000000000000000000000000000000000000000090820152606082015290565b610367565b60010190565b600080546001019055565b600190565b6107486108ed565b6040805160028082526060828101909352816020015b606081526020019060019003908161075e5790505090506040518060400160405280600581526020017f3078313233000000000000000000000000000000000000000000000000000000815250816000815181106107b857fe5b60200260200101819052506040518060400160405280600581526020017f30783332310000000000000000000000000000000000000000000000000000008152508160018151811061080657fe5b6020908102919091018101919091526040805160c0810182526005608082018181527f307831323300000000000000000000000000000000000000000000000000000060a0840152825281840152808201939093528051808201909152600381527f6162630000000000000000000000000000000000000000000000000000000000918101919091526060820152905090565b6104d290565b6040518060a001604052806108b26108ed565b8152602001606081525090565b6040518060c001604052806108d261091b565b81526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600063ffffffff16815260200160608152602001606081525090565b60405180606001604052806000815260200160608152602001606081525090565b600082601f83011261094c578081fd5b813567ffffffffffffffff811115610962578182fd5b6020610971818284020161116d565b828152925080830184820160005b848110156109a857610996888584358a01016109b3565b8352918301919083019060010161097f565b505050505092915050565b600082601f8301126109c3578081fd5b813567ffffffffffffffff8111156109d9578182fd5b610a0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161116d565b9150808252836020828501011115610a2157600080fd5b8060208401602084013760009082016020015292915050565b600060808284031215610a4b578081fd5b610a55608061116d565b90506000823567ffffffffffffffff80821115610a70578283fd5b610a7c868387016109b3565b84526020850135915063ffffffff82168214610a96578283fd5b8160208501526040850135915080821115610aaf578283fd5b610abb8683870161093c565b60408501526060850135915080821115610ad3578283fd5b50610ae0858286016109b3565b6060840152505092915050565b600080600080600060a08688031215610b0557600080fd5b8535610b10816111c4565b945060208601359350604086013592506060860135610b2e816111c4565b949793965091946080013592915050565b600060208284031215610b5157600080fd5b813567ffffffffffffffff811115610b6857600080fd5b610b748482850161093c565b949350505050565b60008060008060808587031215610b9257600080fd5b84359350602085013560ff81168114610baa57600080fd5b93969395505050506040820135916060013590565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610b74848285016109b3565b600060208284031215610c05578081fd5b813567ffffffffffffffff80821115610c1c578283fd5b81840160608187031215610c2e578384fd5b610c38606061116d565b925080358352602081013582811115610c4f578485fd5b610c5b878284016109b3565b602085015250604081013582811115610c72578485fd5b610c7e878284016109b3565b6040850152509195945050505050565b600060208284031215610c9f578081fd5b813567ffffffffffffffff80821115610cb6578283fd5b81840160408187031215610cc8578384fd5b610cd2604061116d565b9250803582811115610ce2578485fd5b610cee87828401610a3a565b845250602081013582811115610d02578485fd5b610d0e878284016109b3565b6020850152509195945050505050565b600060208284031215610d3057600080fd5b813567ffffffffffffffff811115610d4757600080fd5b610b7484828501610a3a565b600060208284031215610d6557600080fd5b5035919050565b600080600060608486031215610d80578081fd5b83359250602084013567ffffffffffffffff80821115610d9e578283fd5b610daa878388016109b3565b93506040860135915080821115610dbf578283fd5b50610dcc868287016109b3565b9150509250925092565b60008151808452610dee816020860160208601611194565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452610e356080850182610dd6565b6020915063ffffffff82850151168286015260408401518582036040870152818151808452848401915084858202850101858401600094505b82851015610ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452610ea8828251610dd6565b600195909501949387019391508601610e6e565b506060880151955088810360608a0152610ed68187610dd6565b9998505050505050505050565b60008351610ef5818460208801611194565b9190910191825250602001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060608252610f576060830186610dd6565b8281036020840152610f698186610dd6565b8381036040850152610f7b8186610dd6565b979650505050505050565b600060208252610f996020830184610dd6565b9392505050565b6020808252600d908201527f53494d504c455f52455645525400000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f53494d504c455f52455155495245000000000000000000000000000000000000604082015260600190565b600060208252825160806020840152805160a08401526020810151606060c085015261103e610100850182610dd6565b604083015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608582030160e08601526110798183610dd6565b9250505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160408601526110b78383610dd6565b60408701519350818682030160608701526110d28185610dd6565b9250506060860151925080858303016080860152506110f18183610dd6565b95945050505050565b6000602082528251604060208401526111166060840182610e20565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526110f18183610dd6565b600060208252610f996020830184610e20565b90815260200190565b60405181810167ffffffffffffffff8111828210171561118c57600080fd5b604052919050565b60005b838110156111af578181015183820152602001611197565b838111156111be576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fdfea365627a7a723058208d4f4bb1d24b31f28a9e090fd1209b6e4fd6397e8bf0ae1ba0e46a057c69da946c6578706572696d656e74616cf564736f6c634300050a0040", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1229 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x197 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63D69C88 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A3B6185 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD6D7618C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD6D7618C EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0xD88BE12F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xEE8B86FB EQ PUSH2 0x319 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x9A3B6185 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xA3C2F6B6 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xAE2DAE17 EQ PUSH2 0x2EE JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x7833BEC0 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7833BEC0 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7A791E6E EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x8EE52B4E EQ PUSH2 0x2CB JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x63D69C88 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x647341EB EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x76F15D5B EQ PUSH2 0x29B JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x45FDBDB7 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x45FDBDB7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x59C28ADD EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x5BA3C7C0 EQ PUSH2 0x272 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x4303A542 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x4582EAB2 EQ PUSH2 0x24D JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x3687617D EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x36B32396 EQ PUSH2 0x217 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH3 0x9E437 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x527C28F EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x1310E444 EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A4 PUSH2 0x32C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3F JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A4 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x3C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7C JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x546 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x22A PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x668 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x725 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x73B JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x304 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST POP PUSH2 0x7C7 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP3 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP2 DUP5 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B5 SWAP3 SWAP2 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4F0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C7 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x5245564552545F574954485F434F4E5354414E54000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x54A PUSH2 0x89F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH32 0x524551554952455F574954485F434F4E5354414E540000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST POP SWAP3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x670 PUSH2 0x8BF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP3 MSTORE DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP5 ADD MSTORE DUP5 DUP5 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP3 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x75E JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078333231000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x806 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 PUSH1 0x80 DUP3 ADD DUP2 DUP2 MSTORE PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8B2 PUSH2 0x8ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8D2 PUSH2 0x91B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x962 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x971 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x116D JUMP JUMPDEST DUP3 DUP2 MSTORE SWAP3 POP DUP1 DUP4 ADD DUP5 DUP3 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9A8 JUMPI PUSH2 0x996 DUP9 DUP6 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x9B3 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x97F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xA0A PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x116D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA55 PUSH1 0x80 PUSH2 0x116D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xA7C DUP7 DUP4 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0xA96 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAAF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xABB DUP7 DUP4 DUP8 ADD PUSH2 0x93C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xAE0 DUP6 DUP3 DUP7 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB10 DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xB2E DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x93C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x60 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xC2E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC38 PUSH1 0x60 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC4F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC5B DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC72 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC7E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCB6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x40 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xCC8 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xCD2 PUSH1 0x40 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xCE2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xCEE DUP8 DUP3 DUP5 ADD PUSH2 0xA3A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xD02 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xD0E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD9E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xDAA DUP8 DUP4 DUP9 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xDBF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xDCC DUP7 DUP3 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDEE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x80 DUP5 MSTORE PUSH2 0xE35 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH4 0xFFFFFFFF DUP3 DUP6 ADD MLOAD AND DUP3 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE DUP5 DUP5 ADD SWAP2 POP DUP5 DUP6 DUP3 MUL DUP6 ADD ADD DUP6 DUP5 ADD PUSH1 0x0 SWAP5 POP JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0xEBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 DUP4 SUB ADD DUP5 MSTORE PUSH2 0xEA8 DUP3 DUP3 MLOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP8 ADD SWAP4 SWAP2 POP DUP7 ADD PUSH2 0xE6E JUMP JUMPDEST POP PUSH1 0x60 DUP9 ADD MLOAD SWAP6 POP DUP9 DUP2 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0xED6 DUP2 DUP8 PUSH2 0xDD6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xEF5 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1194 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0xF57 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF69 DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xF7B DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455645525400000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xE SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455155495245000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE DUP1 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x103E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP6 DUP3 SUB ADD PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x1079 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP1 DUP6 DUP5 SUB ADD PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x10B7 DUP4 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP DUP2 DUP7 DUP3 SUB ADD PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x10D2 DUP2 DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD MLOAD SWAP3 POP DUP1 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE POP PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1116 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0xE20 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP3 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE20 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x118C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1197 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723058 KECCAK256 DUP14 0x4f 0x4b 0xb1 0xd2 0x4b BALANCE CALLCODE DUP11 SWAP15 MULMOD 0xf 0xd1 KECCAK256 SWAP12 PUSH15 0x4FD6397E8BF0AE1BA0E46A057C69DA SWAP5 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV EXP STOP BLOCKHASH ", - "sourceMap": "641:5674:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:5674:0;;;;;;;" + "object": "0x608060405234801561001057600080fd5b50611229806100206000396000f3fe608060405234801561001057600080fd5b50600436106101975760003560e01c806363d69c88116100e35780639a3b61851161008c578063d6d7618c11610066578063d6d7618c146102fc578063d88be12f14610311578063ee8b86fb1461031957610197565b80639a3b6185146102de578063a3c2f6b6146102e6578063ae2dae17146102ee57610197565b80637833bec0116100bd5780637833bec0146102a35780637a791e6e146102c35780638ee52b4e146102cb57610197565b806363d69c881461027a578063647341eb1461028d57806376f15d5b1461029b57610197565b80633e9ef66a1161014557806345fdbdb71161011f57806345fdbdb71461025557806359c28add1461025d5780635ba3c7c01461027257610197565b80633e9ef66a146102375780634303a542146102455780634582eab21461024d57610197565b80632e1a7d4d116101765780632e1a7d4d146101e25780633687617d146101f557806336b323961461021757610197565b806209e4371461019c5780630527c28f146101a65780631310e444146101b9575b600080fd5b6101a461032c565b005b6101a46101b4366004610b3f565b610369565b6101cc6101c7366004610d53565b61036c565b6040516101d99190611164565b60405180910390f35b6101a46101f0366004610d53565b610373565b610208610203366004610d6c565b6103c4565b6040516101d993929190610f44565b61022a610225366004610b7c565b610464565b6040516101d99190610f05565b6101a46101b4366004610bbf565b6101cc610546565b6101a461054d565b6101a46105b2565b6102656105e4565b6040516101d991906110fa565b6101a46105ec565b61022a610288366004610aed565b610651565b6101a46101b4366004610d1e565b6101cc61065a565b6102b66102b1366004610bf4565b610668565b6040516101d9919061100e565b6101a4610725565b6101cc6102d9366004610d53565b61072a565b6101a4610730565b6101cc61073b565b6101a46101b4366004610c8e565b610304610740565b6040516101d99190611151565b6101cc610899565b6101a4610327366004610d53565b6101b4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fd7565b60405180910390fd5b565b50565b506107c790565b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516103b99190611164565b60405180910390a250565b505060408051808201825260048082527f1234567800000000000000000000000000000000000000000000000000000000602080840191909152835180850185528281527f87654321000000000000000000000000000000000000000000000000000000008183015284518086019095529184527f616d657400000000000000000000000000000000000000000000000000000000908401529093909250565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020016104b5929190610ee3565b604051602081830303815290604052805190602001209050600181878787604051600081526020016040526040516104f09493929190610f26565b6020604051602081039080840390855afa158015610512573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015198975050505050505050565b6107c75b90565b604080518082018252601481527f5245564552545f574954485f434f4e5354414e54000000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fa0565b61054a61089f565b604080518082018252601581527f524551554952455f574954485f434f4e5354414e540000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b50929392505050565b600080546001019081905590565b6106706108bf565b50604080516080810182529182528051808201825260048082527f123456780000000000000000000000000000000000000000000000000000000060208381019190915280850192909252825180840184528181527f87654321000000000000000000000000000000000000000000000000000000008184015284840152825180840190935282527f616d65740000000000000000000000000000000000000000000000000000000090820152606082015290565b610367565b60010190565b600080546001019055565b600190565b6107486108ed565b6040805160028082526060828101909352816020015b606081526020019060019003908161075e5790505090506040518060400160405280600581526020017f3078313233000000000000000000000000000000000000000000000000000000815250816000815181106107b857fe5b60200260200101819052506040518060400160405280600581526020017f30783332310000000000000000000000000000000000000000000000000000008152508160018151811061080657fe5b6020908102919091018101919091526040805160c0810182526005608082018181527f307831323300000000000000000000000000000000000000000000000000000060a0840152825281840152808201939093528051808201909152600381527f6162630000000000000000000000000000000000000000000000000000000000918101919091526060820152905090565b6104d290565b6040518060a001604052806108b26108ed565b8152602001606081525090565b6040518060c001604052806108d261091b565b81526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600063ffffffff16815260200160608152602001606081525090565b60405180606001604052806000815260200160608152602001606081525090565b600082601f83011261094c578081fd5b813567ffffffffffffffff811115610962578182fd5b6020610971818284020161116d565b828152925080830184820160005b848110156109a857610996888584358a01016109b3565b8352918301919083019060010161097f565b505050505092915050565b600082601f8301126109c3578081fd5b813567ffffffffffffffff8111156109d9578182fd5b610a0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161116d565b9150808252836020828501011115610a2157600080fd5b8060208401602084013760009082016020015292915050565b600060808284031215610a4b578081fd5b610a55608061116d565b90506000823567ffffffffffffffff80821115610a70578283fd5b610a7c868387016109b3565b84526020850135915063ffffffff82168214610a96578283fd5b8160208501526040850135915080821115610aaf578283fd5b610abb8683870161093c565b60408501526060850135915080821115610ad3578283fd5b50610ae0858286016109b3565b6060840152505092915050565b600080600080600060a08688031215610b0557600080fd5b8535610b10816111c4565b945060208601359350604086013592506060860135610b2e816111c4565b949793965091946080013592915050565b600060208284031215610b5157600080fd5b813567ffffffffffffffff811115610b6857600080fd5b610b748482850161093c565b949350505050565b60008060008060808587031215610b9257600080fd5b84359350602085013560ff81168114610baa57600080fd5b93969395505050506040820135916060013590565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610b74848285016109b3565b600060208284031215610c05578081fd5b813567ffffffffffffffff80821115610c1c578283fd5b81840160608187031215610c2e578384fd5b610c38606061116d565b925080358352602081013582811115610c4f578485fd5b610c5b878284016109b3565b602085015250604081013582811115610c72578485fd5b610c7e878284016109b3565b6040850152509195945050505050565b600060208284031215610c9f578081fd5b813567ffffffffffffffff80821115610cb6578283fd5b81840160408187031215610cc8578384fd5b610cd2604061116d565b9250803582811115610ce2578485fd5b610cee87828401610a3a565b845250602081013582811115610d02578485fd5b610d0e878284016109b3565b6020850152509195945050505050565b600060208284031215610d3057600080fd5b813567ffffffffffffffff811115610d4757600080fd5b610b7484828501610a3a565b600060208284031215610d6557600080fd5b5035919050565b600080600060608486031215610d80578081fd5b83359250602084013567ffffffffffffffff80821115610d9e578283fd5b610daa878388016109b3565b93506040860135915080821115610dbf578283fd5b50610dcc868287016109b3565b9150509250925092565b60008151808452610dee816020860160208601611194565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452610e356080850182610dd6565b6020915063ffffffff82850151168286015260408401518582036040870152818151808452848401915084858202850101858401600094505b82851015610ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452610ea8828251610dd6565b600195909501949387019391508601610e6e565b506060880151955088810360608a0152610ed68187610dd6565b9998505050505050505050565b60008351610ef5818460208801611194565b9190910191825250602001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060608252610f576060830186610dd6565b8281036020840152610f698186610dd6565b8381036040850152610f7b8186610dd6565b979650505050505050565b600060208252610f996020830184610dd6565b9392505050565b6020808252600d908201527f53494d504c455f52455645525400000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f53494d504c455f52455155495245000000000000000000000000000000000000604082015260600190565b600060208252825160806020840152805160a08401526020810151606060c085015261103e610100850182610dd6565b604083015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608582030160e08601526110798183610dd6565b9250505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160408601526110b78383610dd6565b60408701519350818682030160608701526110d28185610dd6565b9250506060860151925080858303016080860152506110f18183610dd6565b95945050505050565b6000602082528251604060208401526111166060840182610e20565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526110f18183610dd6565b600060208252610f996020830184610e20565b90815260200190565b60405181810167ffffffffffffffff8111828210171561118c57600080fd5b604052919050565b60005b838110156111af578181015183820152602001611197565b838111156111be576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fdfea365627a7a723058203e0c222c63113a319dc53c3344a48f0a891d37ecc961ddfe87b551d9eeab95146c6578706572696d656e74616cf564736f6c634300050a0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1229 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x197 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63D69C88 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A3B6185 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD6D7618C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD6D7618C EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0xD88BE12F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xEE8B86FB EQ PUSH2 0x319 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x9A3B6185 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xA3C2F6B6 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xAE2DAE17 EQ PUSH2 0x2EE JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x7833BEC0 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7833BEC0 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7A791E6E EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x8EE52B4E EQ PUSH2 0x2CB JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x63D69C88 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x647341EB EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x76F15D5B EQ PUSH2 0x29B JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x45FDBDB7 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x45FDBDB7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x59C28ADD EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x5BA3C7C0 EQ PUSH2 0x272 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x4303A542 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x4582EAB2 EQ PUSH2 0x24D JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x3687617D EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x36B32396 EQ PUSH2 0x217 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH3 0x9E437 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x527C28F EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x1310E444 EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A4 PUSH2 0x32C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3F JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A4 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x3C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7C JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x546 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x22A PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x668 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x725 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x73B JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x304 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST POP PUSH2 0x7C7 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP3 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP2 DUP5 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B5 SWAP3 SWAP2 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4F0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C7 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x5245564552545F574954485F434F4E5354414E54000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x54A PUSH2 0x89F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH32 0x524551554952455F574954485F434F4E5354414E540000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST POP SWAP3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x670 PUSH2 0x8BF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP3 MSTORE DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP5 ADD MSTORE DUP5 DUP5 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP3 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x75E JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078333231000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x806 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 PUSH1 0x80 DUP3 ADD DUP2 DUP2 MSTORE PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8B2 PUSH2 0x8ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8D2 PUSH2 0x91B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x962 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x971 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x116D JUMP JUMPDEST DUP3 DUP2 MSTORE SWAP3 POP DUP1 DUP4 ADD DUP5 DUP3 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9A8 JUMPI PUSH2 0x996 DUP9 DUP6 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x9B3 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x97F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xA0A PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x116D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA55 PUSH1 0x80 PUSH2 0x116D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xA7C DUP7 DUP4 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0xA96 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAAF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xABB DUP7 DUP4 DUP8 ADD PUSH2 0x93C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xAE0 DUP6 DUP3 DUP7 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB10 DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xB2E DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x93C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x60 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xC2E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC38 PUSH1 0x60 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC4F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC5B DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC72 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC7E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCB6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x40 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xCC8 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xCD2 PUSH1 0x40 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xCE2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xCEE DUP8 DUP3 DUP5 ADD PUSH2 0xA3A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xD02 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xD0E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD9E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xDAA DUP8 DUP4 DUP9 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xDBF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xDCC DUP7 DUP3 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDEE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x80 DUP5 MSTORE PUSH2 0xE35 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH4 0xFFFFFFFF DUP3 DUP6 ADD MLOAD AND DUP3 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE DUP5 DUP5 ADD SWAP2 POP DUP5 DUP6 DUP3 MUL DUP6 ADD ADD DUP6 DUP5 ADD PUSH1 0x0 SWAP5 POP JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0xEBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 DUP4 SUB ADD DUP5 MSTORE PUSH2 0xEA8 DUP3 DUP3 MLOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP8 ADD SWAP4 SWAP2 POP DUP7 ADD PUSH2 0xE6E JUMP JUMPDEST POP PUSH1 0x60 DUP9 ADD MLOAD SWAP6 POP DUP9 DUP2 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0xED6 DUP2 DUP8 PUSH2 0xDD6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xEF5 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1194 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0xF57 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF69 DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xF7B DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455645525400000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xE SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455155495245000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE DUP1 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x103E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP6 DUP3 SUB ADD PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x1079 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP1 DUP6 DUP5 SUB ADD PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x10B7 DUP4 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP DUP2 DUP7 DUP3 SUB ADD PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x10D2 DUP2 DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD MLOAD SWAP3 POP DUP1 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE POP PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1116 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0xE20 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP3 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE20 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x118C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1197 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723058 KECCAK256 RETURNDATACOPY 0xc 0x22 0x2c PUSH4 0x113A319D 0xc5 EXTCODECOPY CALLER DIFFICULTY LOG4 DUP16 EXP DUP10 SAR CALLDATACOPY 0xec 0xc9 PUSH2 0xDDFE DUP8 0xb5 MLOAD 0xd9 0xee 0xab SWAP6 EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV EXP STOP BLOCKHASH ", + "sourceMap": "641:5808:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:5808:0;;;;;;;" }, "deployedBytecode": { "linkReferences": {}, - "object": "0x608060405234801561001057600080fd5b50600436106101975760003560e01c806363d69c88116100e35780639a3b61851161008c578063d6d7618c11610066578063d6d7618c146102fc578063d88be12f14610311578063ee8b86fb1461031957610197565b80639a3b6185146102de578063a3c2f6b6146102e6578063ae2dae17146102ee57610197565b80637833bec0116100bd5780637833bec0146102a35780637a791e6e146102c35780638ee52b4e146102cb57610197565b806363d69c881461027a578063647341eb1461028d57806376f15d5b1461029b57610197565b80633e9ef66a1161014557806345fdbdb71161011f57806345fdbdb71461025557806359c28add1461025d5780635ba3c7c01461027257610197565b80633e9ef66a146102375780634303a542146102455780634582eab21461024d57610197565b80632e1a7d4d116101765780632e1a7d4d146101e25780633687617d146101f557806336b323961461021757610197565b806209e4371461019c5780630527c28f146101a65780631310e444146101b9575b600080fd5b6101a461032c565b005b6101a46101b4366004610b3f565b610369565b6101cc6101c7366004610d53565b61036c565b6040516101d99190611164565b60405180910390f35b6101a46101f0366004610d53565b610373565b610208610203366004610d6c565b6103c4565b6040516101d993929190610f44565b61022a610225366004610b7c565b610464565b6040516101d99190610f05565b6101a46101b4366004610bbf565b6101cc610546565b6101a461054d565b6101a46105b2565b6102656105e4565b6040516101d991906110fa565b6101a46105ec565b61022a610288366004610aed565b610651565b6101a46101b4366004610d1e565b6101cc61065a565b6102b66102b1366004610bf4565b610668565b6040516101d9919061100e565b6101a4610725565b6101cc6102d9366004610d53565b61072a565b6101a4610730565b6101cc61073b565b6101a46101b4366004610c8e565b610304610740565b6040516101d99190611151565b6101cc610899565b6101a4610327366004610d53565b6101b4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fd7565b60405180910390fd5b565b50565b506107c790565b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516103b99190611164565b60405180910390a250565b505060408051808201825260048082527f1234567800000000000000000000000000000000000000000000000000000000602080840191909152835180850185528281527f87654321000000000000000000000000000000000000000000000000000000008183015284518086019095529184527f616d657400000000000000000000000000000000000000000000000000000000908401529093909250565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020016104b5929190610ee3565b604051602081830303815290604052805190602001209050600181878787604051600081526020016040526040516104f09493929190610f26565b6020604051602081039080840390855afa158015610512573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015198975050505050505050565b6107c75b90565b604080518082018252601481527f5245564552545f574954485f434f4e5354414e54000000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fa0565b61054a61089f565b604080518082018252601581527f524551554952455f574954485f434f4e5354414e540000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b50929392505050565b600080546001019081905590565b6106706108bf565b50604080516080810182529182528051808201825260048082527f123456780000000000000000000000000000000000000000000000000000000060208381019190915280850192909252825180840184528181527f87654321000000000000000000000000000000000000000000000000000000008184015284840152825180840190935282527f616d65740000000000000000000000000000000000000000000000000000000090820152606082015290565b610367565b60010190565b600080546001019055565b600190565b6107486108ed565b6040805160028082526060828101909352816020015b606081526020019060019003908161075e5790505090506040518060400160405280600581526020017f3078313233000000000000000000000000000000000000000000000000000000815250816000815181106107b857fe5b60200260200101819052506040518060400160405280600581526020017f30783332310000000000000000000000000000000000000000000000000000008152508160018151811061080657fe5b6020908102919091018101919091526040805160c0810182526005608082018181527f307831323300000000000000000000000000000000000000000000000000000060a0840152825281840152808201939093528051808201909152600381527f6162630000000000000000000000000000000000000000000000000000000000918101919091526060820152905090565b6104d290565b6040518060a001604052806108b26108ed565b8152602001606081525090565b6040518060c001604052806108d261091b565b81526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600063ffffffff16815260200160608152602001606081525090565b60405180606001604052806000815260200160608152602001606081525090565b600082601f83011261094c578081fd5b813567ffffffffffffffff811115610962578182fd5b6020610971818284020161116d565b828152925080830184820160005b848110156109a857610996888584358a01016109b3565b8352918301919083019060010161097f565b505050505092915050565b600082601f8301126109c3578081fd5b813567ffffffffffffffff8111156109d9578182fd5b610a0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161116d565b9150808252836020828501011115610a2157600080fd5b8060208401602084013760009082016020015292915050565b600060808284031215610a4b578081fd5b610a55608061116d565b90506000823567ffffffffffffffff80821115610a70578283fd5b610a7c868387016109b3565b84526020850135915063ffffffff82168214610a96578283fd5b8160208501526040850135915080821115610aaf578283fd5b610abb8683870161093c565b60408501526060850135915080821115610ad3578283fd5b50610ae0858286016109b3565b6060840152505092915050565b600080600080600060a08688031215610b0557600080fd5b8535610b10816111c4565b945060208601359350604086013592506060860135610b2e816111c4565b949793965091946080013592915050565b600060208284031215610b5157600080fd5b813567ffffffffffffffff811115610b6857600080fd5b610b748482850161093c565b949350505050565b60008060008060808587031215610b9257600080fd5b84359350602085013560ff81168114610baa57600080fd5b93969395505050506040820135916060013590565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610b74848285016109b3565b600060208284031215610c05578081fd5b813567ffffffffffffffff80821115610c1c578283fd5b81840160608187031215610c2e578384fd5b610c38606061116d565b925080358352602081013582811115610c4f578485fd5b610c5b878284016109b3565b602085015250604081013582811115610c72578485fd5b610c7e878284016109b3565b6040850152509195945050505050565b600060208284031215610c9f578081fd5b813567ffffffffffffffff80821115610cb6578283fd5b81840160408187031215610cc8578384fd5b610cd2604061116d565b9250803582811115610ce2578485fd5b610cee87828401610a3a565b845250602081013582811115610d02578485fd5b610d0e878284016109b3565b6020850152509195945050505050565b600060208284031215610d3057600080fd5b813567ffffffffffffffff811115610d4757600080fd5b610b7484828501610a3a565b600060208284031215610d6557600080fd5b5035919050565b600080600060608486031215610d80578081fd5b83359250602084013567ffffffffffffffff80821115610d9e578283fd5b610daa878388016109b3565b93506040860135915080821115610dbf578283fd5b50610dcc868287016109b3565b9150509250925092565b60008151808452610dee816020860160208601611194565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452610e356080850182610dd6565b6020915063ffffffff82850151168286015260408401518582036040870152818151808452848401915084858202850101858401600094505b82851015610ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452610ea8828251610dd6565b600195909501949387019391508601610e6e565b506060880151955088810360608a0152610ed68187610dd6565b9998505050505050505050565b60008351610ef5818460208801611194565b9190910191825250602001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060608252610f576060830186610dd6565b8281036020840152610f698186610dd6565b8381036040850152610f7b8186610dd6565b979650505050505050565b600060208252610f996020830184610dd6565b9392505050565b6020808252600d908201527f53494d504c455f52455645525400000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f53494d504c455f52455155495245000000000000000000000000000000000000604082015260600190565b600060208252825160806020840152805160a08401526020810151606060c085015261103e610100850182610dd6565b604083015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608582030160e08601526110798183610dd6565b9250505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160408601526110b78383610dd6565b60408701519350818682030160608701526110d28185610dd6565b9250506060860151925080858303016080860152506110f18183610dd6565b95945050505050565b6000602082528251604060208401526111166060840182610e20565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526110f18183610dd6565b600060208252610f996020830184610e20565b90815260200190565b60405181810167ffffffffffffffff8111828210171561118c57600080fd5b604052919050565b60005b838110156111af578181015183820152602001611197565b838111156111be576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fdfea365627a7a723058208d4f4bb1d24b31f28a9e090fd1209b6e4fd6397e8bf0ae1ba0e46a057c69da946c6578706572696d656e74616cf564736f6c634300050a0040", - "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x197 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63D69C88 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A3B6185 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD6D7618C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD6D7618C EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0xD88BE12F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xEE8B86FB EQ PUSH2 0x319 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x9A3B6185 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xA3C2F6B6 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xAE2DAE17 EQ PUSH2 0x2EE JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x7833BEC0 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7833BEC0 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7A791E6E EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x8EE52B4E EQ PUSH2 0x2CB JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x63D69C88 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x647341EB EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x76F15D5B EQ PUSH2 0x29B JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x45FDBDB7 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x45FDBDB7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x59C28ADD EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x5BA3C7C0 EQ PUSH2 0x272 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x4303A542 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x4582EAB2 EQ PUSH2 0x24D JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x3687617D EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x36B32396 EQ PUSH2 0x217 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH3 0x9E437 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x527C28F EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x1310E444 EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A4 PUSH2 0x32C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3F JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A4 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x3C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7C JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x546 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x22A PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x668 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x725 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x73B JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x304 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST POP PUSH2 0x7C7 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP3 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP2 DUP5 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B5 SWAP3 SWAP2 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4F0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C7 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x5245564552545F574954485F434F4E5354414E54000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x54A PUSH2 0x89F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH32 0x524551554952455F574954485F434F4E5354414E540000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST POP SWAP3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x670 PUSH2 0x8BF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP3 MSTORE DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP5 ADD MSTORE DUP5 DUP5 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP3 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x75E JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078333231000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x806 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 PUSH1 0x80 DUP3 ADD DUP2 DUP2 MSTORE PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8B2 PUSH2 0x8ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8D2 PUSH2 0x91B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x962 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x971 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x116D JUMP JUMPDEST DUP3 DUP2 MSTORE SWAP3 POP DUP1 DUP4 ADD DUP5 DUP3 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9A8 JUMPI PUSH2 0x996 DUP9 DUP6 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x9B3 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x97F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xA0A PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x116D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA55 PUSH1 0x80 PUSH2 0x116D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xA7C DUP7 DUP4 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0xA96 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAAF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xABB DUP7 DUP4 DUP8 ADD PUSH2 0x93C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xAE0 DUP6 DUP3 DUP7 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB10 DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xB2E DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x93C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x60 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xC2E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC38 PUSH1 0x60 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC4F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC5B DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC72 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC7E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCB6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x40 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xCC8 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xCD2 PUSH1 0x40 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xCE2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xCEE DUP8 DUP3 DUP5 ADD PUSH2 0xA3A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xD02 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xD0E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD9E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xDAA DUP8 DUP4 DUP9 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xDBF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xDCC DUP7 DUP3 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDEE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x80 DUP5 MSTORE PUSH2 0xE35 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH4 0xFFFFFFFF DUP3 DUP6 ADD MLOAD AND DUP3 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE DUP5 DUP5 ADD SWAP2 POP DUP5 DUP6 DUP3 MUL DUP6 ADD ADD DUP6 DUP5 ADD PUSH1 0x0 SWAP5 POP JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0xEBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 DUP4 SUB ADD DUP5 MSTORE PUSH2 0xEA8 DUP3 DUP3 MLOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP8 ADD SWAP4 SWAP2 POP DUP7 ADD PUSH2 0xE6E JUMP JUMPDEST POP PUSH1 0x60 DUP9 ADD MLOAD SWAP6 POP DUP9 DUP2 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0xED6 DUP2 DUP8 PUSH2 0xDD6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xEF5 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1194 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0xF57 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF69 DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xF7B DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455645525400000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xE SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455155495245000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE DUP1 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x103E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP6 DUP3 SUB ADD PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x1079 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP1 DUP6 DUP5 SUB ADD PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x10B7 DUP4 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP DUP2 DUP7 DUP3 SUB ADD PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x10D2 DUP2 DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD MLOAD SWAP3 POP DUP1 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE POP PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1116 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0xE20 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP3 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE20 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x118C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1197 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723058 KECCAK256 DUP14 0x4f 0x4b 0xb1 0xd2 0x4b BALANCE CALLCODE DUP11 SWAP15 MULMOD 0xf 0xd1 KECCAK256 SWAP12 PUSH15 0x4FD6397E8BF0AE1BA0E46A057C69DA SWAP5 PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV EXP STOP BLOCKHASH ", - "sourceMap": "641:5674:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:5674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:107;;;:::i;:::-;;3056:63;;;;;;;;;:::i;5279:128::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2451:84;;;;;;;;;:::i;5902:345::-;;;;;;;;;:::i;:::-;;;;;;;;;;2050:334;;;;;;;;;:::i;:::-;;;;;;;;2894:52;;;;;;;4884:117;;;:::i;1389:101::-;;;:::i;1286:97::-;;;:::i;3913:73::-;;;:::i;:::-;;;;;;;;1609:111;;;:::i;2689:166::-;;;;;;;;;:::i;3265:52::-;;;;;;;4012:72;;;:::i;5480:317::-;;;;;;;;;:::i;:::-;;;;;;;;4693:112;;;:::i;989:140::-;;;;;;;;;:::i;4089:69::-;;;:::i;862:121::-;;;:::i;3844:64::-;;;;;;;3399:350;;;:::i;:::-;;;;;;;;1135:145;;;:::i;5080:123::-;;;;;;;;;:::i;1496:107::-;1564:32;;;;;;;;;;;;;;;;;;;;1496:107::o;3056:63::-;;:::o;5279:128::-;-1:-1:-1;5396:4:0;;5279:128::o;2451:84::-;2512:10;2501:27;;;2524:3;2501:27;;;;;;;;;;;;;;;2451:84;:::o;5902:345::-;-1:-1:-1;;6149:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5902:345:0:o;2050:334::-;2161:21;2198:19;:56;;;;;;;;;;;;;;;;;;;2264:20;2314:6;2322:4;2297:30;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2297:30:0;;;2287:41;;;;;;2264:64;;2345:32;2355:12;2369:1;2372;2375;2345:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2345:32:0;;;;;;2050:334;-1:-1:-1;;;;;;;;2050:334:0:o;4884:117::-;4990:4;4884:117;;:::o;1389:101::-;1469:13;;;;;;;;;;;;;;;;1462:21;;;;;;;1469:13;1462:21;;;;1286:97;1353:23;;;;;;;;;;;3913:73;3963:19;;:::i;1609:111::-;1698:14;;;;;;;;;;;;;;;;1683:30;;;;;;;1698:14;1683:30;;;;2689:166;-1:-1:-1;2847:1:0;;2689:166;-1:-1:-1;;;2689:166:0:o;4012:72::-;4052:4;4067:14;;4080:1;4067:14;;;;;4012:72;:::o;5480:317::-;5594:20;;:::i;:::-;-1:-1:-1;5637:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5480:317::o;4693:112::-;4777:21;;989:140;1117:1;:5;;989:140::o;4089:69::-;4141:9;:14;;4154:1;4141:14;;;4089:69::o;862:121::-;975:1;862:121;:::o;3399:350::-;3443:15;;:::i;:::-;3497:14;;;3509:1;3497:14;;;3470:24;3497:14;;;;;;;;;;;;;;;;;;;;;;;;;;3470:41;;3521:22;;;;;;;;;;;;;;;;;:9;3531:1;3521:12;;;;;;;;;;;;;:22;;;;3553;;;;;;;;;;;;;;;;;:9;3563:1;3553:12;;;;;;;;;;;;;;;;;;:22;;;;3593:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3593:149:0;;;;-1:-1:-1;3399:350:0;:::o;1135:145::-;711:4;1135:145;:::o;641:5674::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:685:-1:-;;276:3;269:4;261:6;257:17;253:27;243:2;;-1:-1;;284:12;243:2;331:6;318:20;26546:18;26538:6;26535:30;26532:2;;;-1:-1;;26568:12;26532:2;26613:4;353:81;26676:4;26613;26605:6;26601:17;26666:15;353:81;;;462:21;;;344:90;-1:-1;519:14;;;494:17;;;614:1;599:238;624:6;621:1;618:13;599:238;;;731:42;769:3;506:4;707:3;694:17;498:6;682:30;;731:42;;;719:55;;788:14;;;;816;;;;646:1;639:9;599:238;;;603:14;;;;;236:607;;;;;1706:432;;1803:3;1796:4;1788:6;1784:17;1780:27;1770:2;;-1:-1;;1811:12;1770:2;1858:6;1845:20;27153:18;27145:6;27142:30;27139:2;;;-1:-1;;27175:12;27139:2;1880:60;27316:4;27248:9;1796:4;27233:6;27229:17;27225:33;27306:15;1880:60;;;1871:69;;1960:6;1953:5;1946:21;2064:3;27316:4;2055:6;1988;2046:16;;2043:25;2040:2;;;2081:1;;2071:12;2040:2;30896:6;27316:4;1988:6;1984:17;27316:4;2022:5;2018:16;30873:30;30952:1;30934:16;;;27316:4;30934:16;30927:27;2022:5;1763:375;-1:-1;;1763:375;5086:1071;;5194:4;5182:9;5177:3;5173:19;5169:30;5166:2;;;-1:-1;;5202:12;5166:2;5230:20;5194:4;5230:20;;;5221:29;;5333:1;5318:17;5305:31;5356:18;;5348:6;5345:30;5342:2;;;5388:1;5385;5378:12;5342:2;5422:54;5472:3;5463:6;5452:9;5448:22;5422:54;;;5405:15;5398:79;5543:2;5600:9;5596:22;7481:20;7472:29;;30703:10;31888:5;30692:22;31864:5;31861:34;31851:2;;31909:1;31906;31899:12;31851:2;5576:48;5543:2;5562:5;5558:16;5551:74;5730:2;5719:9;5715:18;5702:32;5688:46;;5754:18;5746:6;5743:30;5740:2;;;5786:1;5783;5776:12;5740:2;5821:75;5892:3;5883:6;5872:9;5868:22;5821:75;;;5730:2;5807:5;5803:16;5796:101;5989:2;5978:9;5974:18;5961:32;5947:46;;6013:18;6005:6;6002:30;5999:2;;;6045:1;6042;6035:12;5999:2;;6080:55;6131:3;6122:6;6111:9;6107:22;6080:55;;;5989:2;6066:5;6062:16;6055:81;;;5160:997;;;;;7683:743;;;;;;7855:3;7843:9;7834:7;7830:23;7826:33;7823:2;;;-1:-1;;7862:12;7823:2;85:6;72:20;97:33;124:5;97:33;;;7914:63;-1:-1;8014:2;8053:22;;7345:20;;-1:-1;8122:2;8161:22;;7345:20;;-1:-1;8230:2;8269:22;;72:20;97:33;72:20;97:33;;;7817:609;;;;-1:-1;7817:609;;8338:3;8378:22;7345:20;;7817:609;-1:-1;;7817:609;8433:387;;8567:2;8555:9;8546:7;8542:23;8538:32;8535:2;;;-1:-1;;8573:12;8535:2;8631:17;8618:31;8669:18;8661:6;8658:30;8655:2;;;-1:-1;;8691:12;8655:2;8721:83;8796:7;8787:6;8776:9;8772:22;8721:83;;;8711:93;8529:291;-1:-1;;;;8529:291;8827:613;;;;;8980:3;8968:9;8959:7;8955:23;8951:33;8948:2;;;-1:-1;;8987:12;8948:2;1648:6;1635:20;9039:63;;9139:2;9180:9;9176:22;7615:20;30797:4;32008:5;30786:16;31985:5;31982:33;31972:2;;-1:-1;;32019:12;31972:2;8942:498;;9147:61;;-1:-1;;;;9245:2;9284:22;;1635:20;;9353:2;9392:22;1635:20;;8942:498;9447:345;;9560:2;9548:9;9539:7;9535:23;9531:32;9528:2;;;-1:-1;;9566:12;9528:2;9624:17;9611:31;9662:18;9654:6;9651:30;9648:2;;;-1:-1;;9684:12;9648:2;9714:62;9768:7;9759:6;9748:9;9744:22;9714:62;;9799:385;;9932:2;9920:9;9911:7;9907:23;9903:32;9900:2;;;9948:1;9945;9938:12;9900:2;9996:17;9983:31;10034:18;;10026:6;10023:30;10020:2;;;10066:1;10063;10056:12;10020:2;10151:6;10140:9;10136:22;3645:4;3633:9;3628:3;3624:19;3620:30;3617:2;;;3663:1;3660;3653:12;3617:2;3681:20;3645:4;3681:20;;;3672:29;;7358:6;7345:20;3764:15;3757:74;9932:2;3908:9;3904:18;3891:32;3943:18;3935:6;3932:30;3929:2;;;3975:1;3972;3965:12;3929:2;4010:54;4060:3;4051:6;4040:9;4036:22;4010:54;;;9932:2;3996:5;3992:16;3985:80;;4153:2;4142:9;4138:18;4125:32;4177:18;4169:6;4166:30;4163:2;;;4209:1;4206;4199:12;4163:2;4244:55;4295:3;4286:6;4275:9;4271:22;4244:55;;;4153:2;4226:16;;4219:81;-1:-1;4230:5;;9894:290;-1:-1;;;;;9894:290;10191:385;;10324:2;10312:9;10303:7;10299:23;10295:32;10292:2;;;10340:1;10337;10330:12;10292:2;10388:17;10375:31;10426:18;;10418:6;10415:30;10412:2;;;10458:1;10455;10448:12;10412:2;10543:6;10532:9;10528:22;4484:4;4472:9;4467:3;4463:19;4459:30;4456:2;;;4502:1;4499;4492:12;4456:2;4520:20;4484:4;4520:20;;;4511:29;;4610:17;4597:31;4648:18;4640:6;4637:30;4634:2;;;4680:1;4677;4670:12;4634:2;4714:68;4778:3;4769:6;4758:9;4754:22;4714:68;;;4697:15;4690:93;;10324:2;4868:9;4864:18;4851:32;4903:18;4895:6;4892:30;4889:2;;;4935:1;4932;4925:12;4889:2;4970:55;5021:3;5012:6;5001:9;4997:22;4970:55;;;10324:2;4952:16;;4945:81;-1:-1;4956:5;;10286:290;-1:-1;;;;;10286:290;10583:373;;10710:2;10698:9;10689:7;10685:23;10681:32;10678:2;;;-1:-1;;10716:12;10678:2;10774:17;10761:31;10812:18;10804:6;10801:30;10798:2;;;-1:-1;;10834:12;10798:2;10864:76;10932:7;10923:6;10912:9;10908:22;10864:76;;10963:241;;11067:2;11055:9;11046:7;11042:23;11038:32;11035:2;;;-1:-1;;11073:12;11035:2;-1:-1;7345:20;;11029:175;-1:-1;11029:175;11211:701;;;;11368:2;11356:9;11347:7;11343:23;11339:32;11336:2;;;11384:1;11381;11374:12;11336:2;7358:6;7345:20;11426:63;;11554:2;11543:9;11539:18;11526:32;11578:18;;11570:6;11567:30;11564:2;;;11610:1;11607;11600:12;11564:2;11630:62;11684:7;11675:6;11664:9;11660:22;11630:62;;;11620:72;;11757:2;11746:9;11742:18;11729:32;11715:46;;11781:18;11773:6;11770:30;11767:2;;;11813:1;11810;11803:12;11767:2;;11833:63;11888:7;11879:6;11868:9;11864:22;11833:63;;;11823:73;;;11330:582;;;;;;13391:343;;13533:5;28583:12;29372:6;29367:3;29360:19;13626:52;13671:6;29409:4;29404:3;29400:14;29409:4;13652:5;13648:16;13626:52;;;31414:2;31394:14;31410:7;31390:28;13690:39;;;;29409:4;13690:39;;13481:253;-1:-1;;13481:253;19103:1078;;19327:15;19321:22;19250:4;19363:13;19356:37;19408:67;19250:4;19245:3;19241:14;19456:12;19408:67;;;19565:4;;;30703:10;19565:4;19558:5;19554:16;19548:23;30692:22;19632:4;19627:3;19623:14;21609:36;19733:4;19726:5;19722:16;19716:23;19785:3;19779:4;19775:14;19733:4;19763:3;19759:14;19752:38;19805:109;12442:5;28583:12;29372:6;29367:3;29360:19;29409:4;29404:3;29400:14;12454:88;;19565:4;12607;12599:6;12595:17;29404:3;12586:27;;28445:4;12685:5;28436:14;-1:-1;12730:10;;12724:341;12749:6;12746:1;12743:13;12724:341;;;12801:20;29404:3;12805:4;12801:20;;12796:3;12789:33;12031:60;12087:3;12856:6;12850:13;12031:60;;;12771:1;12764:9;;;;;13044:14;;;;12870:82;-1:-1;29220:14;;12724:341;;;12728:14;20002:4;19995:5;19991:16;19985:23;19965:43;;20054:3;20048:4;20044:14;20002:4;20032:3;20028:14;20021:38;20074:69;20138:4;20124:12;20074:69;;;20165:11;19223:958;-1:-1;;;;;;;;;19223:958;21771:401;;13901:5;28583:12;14012:52;14057:6;14052:3;14045:4;14038:5;14034:16;14012:52;;;14076:16;;;;13183:37;;;-1:-1;14045:4;22135:12;;21924:248;-1:-1;21924:248;22179:213;30497:42;30486:54;;;;12176:37;;22297:2;22282:18;;22268:124;22399:539;13183:37;;;30797:4;30786:16;;;;22758:2;22743:18;;21724:35;22841:2;22826:18;;13183:37;22924:2;22909:18;;13183:37;22597:3;22582:19;;22568:370;22945:691;;23175:2;23196:17;23189:47;23250:76;23175:2;23164:9;23160:18;23312:6;23250:76;;;23374:9;23368:4;23364:20;23359:2;23348:9;23344:18;23337:48;23399:76;23470:4;23461:6;23399:76;;;23523:9;23517:4;23513:20;23508:2;23497:9;23493:18;23486:48;23548:78;23621:4;23612:6;23548:78;;;23540:86;23146:490;-1:-1;;;;;;;23146:490;23643:293;;23777:2;23798:17;23791:47;23852:74;23777:2;23766:9;23762:18;23912:6;23852:74;;;23844:82;23748:188;-1:-1;;;23748:188;23943:407;24134:2;24148:47;;;15677:2;24119:18;;;29360:19;15713:66;29400:14;;;15693:87;15799:12;;;24105:245;24357:407;24548:2;24562:47;;;16050:2;24533:18;;;29360:19;16086:66;29400:14;;;16066:87;16172:12;;;24519:245;24771:381;;24949:2;24970:17;24963:47;17367:15;17361:22;17294:4;24949:2;24938:9;24934:18;17396:37;16487:15;16481:22;17285:14;24938:9;17285:14;13183:37;24949:2;16642:5;16638:16;16632:23;16416:4;16675:14;24938:9;16675:14;16668:38;16721:67;16407:14;24938:9;16407:14;16769:12;16721:67;;;16872:4;16865:5;16861:16;16855:23;16835:43;;16914:14;24938:9;16918:4;16914:14;;16898;24938:9;16898:14;16891:38;16944:69;17008:4;16994:12;16944:69;;;17035:11;;;;24949:2;17634:5;17630:16;17624:23;17683:14;;24938:9;17687:4;17683:14;;16872:4;24938:9;17667:14;17660:38;17713:67;17775:4;17761:12;17713:67;;;16872:4;17859:5;17855:16;17849:23;17829:43;;17908:14;24938:9;17912:4;17908:14;;16416:4;24938:9;17892:14;17885:38;17938:67;18000:4;17986:12;17938:67;;;17930:75;;;16416:4;18084:5;18080:16;18074:23;18054:43;;18133:14;24938:9;18137:4;18133:14;;17294:4;24938:9;18117:14;18110:38;;18163:69;18227:4;18213:12;18163:69;;;25016:126;24920:232;-1:-1;;;;;24920:232;25159:377;;25335:2;25356:17;25349:47;18588:15;18582:22;18509:4;25335:2;25324:9;25320:18;18617:37;18669:95;18500:14;25324:9;18500:14;18745:12;18669:95;;;25335:2;18849:5;18845:16;18839:23;18819:43;;18898:14;25324:9;18902:4;18898:14;;18509:4;25324:9;18882:14;18875:38;18928:69;18992:4;18978:12;18928:69;;25543:353;;25707:2;25728:17;25721:47;25782:104;25707:2;25696:9;25692:18;25872:6;25782:104;;25903:213;13183:37;;;26021:2;26006:18;;25992:124;26123:256;26185:2;26179:9;26211:17;;;26286:18;26271:34;;26307:22;;;26268:62;26265:2;;;26343:1;;26333:12;26265:2;26185;26352:22;26163:216;;-1:-1;26163:216;30969:268;31034:1;31041:101;31055:6;31052:1;31049:13;31041:101;;;31122:11;;;31116:18;31103:11;;;31096:39;31077:2;31070:10;31041:101;;;31157:6;31154:1;31151:13;31148:2;;;31034:1;31213:6;31208:3;31204:16;31197:27;31148:2;;31018:219;;;;31431:117;30497:42;31518:5;30486:54;31493:5;31490:35;31480:2;;31539:1;;31529:12" + "object": "0x608060405234801561001057600080fd5b50600436106101975760003560e01c806363d69c88116100e35780639a3b61851161008c578063d6d7618c11610066578063d6d7618c146102fc578063d88be12f14610311578063ee8b86fb1461031957610197565b80639a3b6185146102de578063a3c2f6b6146102e6578063ae2dae17146102ee57610197565b80637833bec0116100bd5780637833bec0146102a35780637a791e6e146102c35780638ee52b4e146102cb57610197565b806363d69c881461027a578063647341eb1461028d57806376f15d5b1461029b57610197565b80633e9ef66a1161014557806345fdbdb71161011f57806345fdbdb71461025557806359c28add1461025d5780635ba3c7c01461027257610197565b80633e9ef66a146102375780634303a542146102455780634582eab21461024d57610197565b80632e1a7d4d116101765780632e1a7d4d146101e25780633687617d146101f557806336b323961461021757610197565b806209e4371461019c5780630527c28f146101a65780631310e444146101b9575b600080fd5b6101a461032c565b005b6101a46101b4366004610b3f565b610369565b6101cc6101c7366004610d53565b61036c565b6040516101d99190611164565b60405180910390f35b6101a46101f0366004610d53565b610373565b610208610203366004610d6c565b6103c4565b6040516101d993929190610f44565b61022a610225366004610b7c565b610464565b6040516101d99190610f05565b6101a46101b4366004610bbf565b6101cc610546565b6101a461054d565b6101a46105b2565b6102656105e4565b6040516101d991906110fa565b6101a46105ec565b61022a610288366004610aed565b610651565b6101a46101b4366004610d1e565b6101cc61065a565b6102b66102b1366004610bf4565b610668565b6040516101d9919061100e565b6101a4610725565b6101cc6102d9366004610d53565b61072a565b6101a4610730565b6101cc61073b565b6101a46101b4366004610c8e565b610304610740565b6040516101d99190611151565b6101cc610899565b6101a4610327366004610d53565b6101b4565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fd7565b60405180910390fd5b565b50565b506107c790565b3373ffffffffffffffffffffffffffffffffffffffff167f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65826040516103b99190611164565b60405180910390a250565b505060408051808201825260048082527f1234567800000000000000000000000000000000000000000000000000000000602080840191909152835180850185528281527f87654321000000000000000000000000000000000000000000000000000000008183015284518086019095529184527f616d657400000000000000000000000000000000000000000000000000000000908401529093909250565b600060606040518060400160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020016104b5929190610ee3565b604051602081830303815290604052805190602001209050600181878787604051600081526020016040526040516104f09493929190610f26565b6020604051602081039080840390855afa158015610512573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015198975050505050505050565b6107c75b90565b604080518082018252601481527f5245564552545f574954485f434f4e5354414e54000000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035e90610fa0565b61054a61089f565b604080518082018252601581527f524551554952455f574954485f434f4e5354414e540000000000000000000000602082015290517f08c379a000000000000000000000000000000000000000000000000000000000815261035e9190600401610f86565b50929392505050565b600080546001019081905590565b6106706108bf565b50604080516080810182529182528051808201825260048082527f123456780000000000000000000000000000000000000000000000000000000060208381019190915280850192909252825180840184528181527f87654321000000000000000000000000000000000000000000000000000000008184015284840152825180840190935282527f616d65740000000000000000000000000000000000000000000000000000000090820152606082015290565b610367565b60010190565b600080546001019055565b600190565b6107486108ed565b6040805160028082526060828101909352816020015b606081526020019060019003908161075e5790505090506040518060400160405280600581526020017f3078313233000000000000000000000000000000000000000000000000000000815250816000815181106107b857fe5b60200260200101819052506040518060400160405280600581526020017f30783332310000000000000000000000000000000000000000000000000000008152508160018151811061080657fe5b6020908102919091018101919091526040805160c0810182526005608082018181527f307831323300000000000000000000000000000000000000000000000000000060a0840152825281840152808201939093528051808201909152600381527f6162630000000000000000000000000000000000000000000000000000000000918101919091526060820152905090565b6104d290565b6040518060a001604052806108b26108ed565b8152602001606081525090565b6040518060c001604052806108d261091b565b81526020016060815260200160608152602001606081525090565b604051806080016040528060608152602001600063ffffffff16815260200160608152602001606081525090565b60405180606001604052806000815260200160608152602001606081525090565b600082601f83011261094c578081fd5b813567ffffffffffffffff811115610962578182fd5b6020610971818284020161116d565b828152925080830184820160005b848110156109a857610996888584358a01016109b3565b8352918301919083019060010161097f565b505050505092915050565b600082601f8301126109c3578081fd5b813567ffffffffffffffff8111156109d9578182fd5b610a0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161116d565b9150808252836020828501011115610a2157600080fd5b8060208401602084013760009082016020015292915050565b600060808284031215610a4b578081fd5b610a55608061116d565b90506000823567ffffffffffffffff80821115610a70578283fd5b610a7c868387016109b3565b84526020850135915063ffffffff82168214610a96578283fd5b8160208501526040850135915080821115610aaf578283fd5b610abb8683870161093c565b60408501526060850135915080821115610ad3578283fd5b50610ae0858286016109b3565b6060840152505092915050565b600080600080600060a08688031215610b0557600080fd5b8535610b10816111c4565b945060208601359350604086013592506060860135610b2e816111c4565b949793965091946080013592915050565b600060208284031215610b5157600080fd5b813567ffffffffffffffff811115610b6857600080fd5b610b748482850161093c565b949350505050565b60008060008060808587031215610b9257600080fd5b84359350602085013560ff81168114610baa57600080fd5b93969395505050506040820135916060013590565b600060208284031215610bd157600080fd5b813567ffffffffffffffff811115610be857600080fd5b610b74848285016109b3565b600060208284031215610c05578081fd5b813567ffffffffffffffff80821115610c1c578283fd5b81840160608187031215610c2e578384fd5b610c38606061116d565b925080358352602081013582811115610c4f578485fd5b610c5b878284016109b3565b602085015250604081013582811115610c72578485fd5b610c7e878284016109b3565b6040850152509195945050505050565b600060208284031215610c9f578081fd5b813567ffffffffffffffff80821115610cb6578283fd5b81840160408187031215610cc8578384fd5b610cd2604061116d565b9250803582811115610ce2578485fd5b610cee87828401610a3a565b845250602081013582811115610d02578485fd5b610d0e878284016109b3565b6020850152509195945050505050565b600060208284031215610d3057600080fd5b813567ffffffffffffffff811115610d4757600080fd5b610b7484828501610a3a565b600060208284031215610d6557600080fd5b5035919050565b600080600060608486031215610d80578081fd5b83359250602084013567ffffffffffffffff80821115610d9e578283fd5b610daa878388016109b3565b93506040860135915080821115610dbf578283fd5b50610dcc868287016109b3565b9150509250925092565b60008151808452610dee816020860160208601611194565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452610e356080850182610dd6565b6020915063ffffffff82850151168286015260408401518582036040870152818151808452848401915084858202850101858401600094505b82851015610ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452610ea8828251610dd6565b600195909501949387019391508601610e6e565b506060880151955088810360608a0152610ed68187610dd6565b9998505050505050505050565b60008351610ef5818460208801611194565b9190910191825250602001919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060608252610f576060830186610dd6565b8281036020840152610f698186610dd6565b8381036040850152610f7b8186610dd6565b979650505050505050565b600060208252610f996020830184610dd6565b9392505050565b6020808252600d908201527f53494d504c455f52455645525400000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f53494d504c455f52455155495245000000000000000000000000000000000000604082015260600190565b600060208252825160806020840152805160a08401526020810151606060c085015261103e610100850182610dd6565b604083015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608582030160e08601526110798183610dd6565b9250505060208401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160408601526110b78383610dd6565b60408701519350818682030160608701526110d28185610dd6565b9250506060860151925080858303016080860152506110f18183610dd6565b95945050505050565b6000602082528251604060208401526111166060840182610e20565b602085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160408501526110f18183610dd6565b600060208252610f996020830184610e20565b90815260200190565b60405181810167ffffffffffffffff8111828210171561118c57600080fd5b604052919050565b60005b838110156111af578181015183820152602001611197565b838111156111be576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fdfea365627a7a723058203e0c222c63113a319dc53c3344a48f0a891d37ecc961ddfe87b551d9eeab95146c6578706572696d656e74616cf564736f6c634300050a0040", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x197 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x63D69C88 GT PUSH2 0xE3 JUMPI DUP1 PUSH4 0x9A3B6185 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0xD6D7618C GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xD6D7618C EQ PUSH2 0x2FC JUMPI DUP1 PUSH4 0xD88BE12F EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xEE8B86FB EQ PUSH2 0x319 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x9A3B6185 EQ PUSH2 0x2DE JUMPI DUP1 PUSH4 0xA3C2F6B6 EQ PUSH2 0x2E6 JUMPI DUP1 PUSH4 0xAE2DAE17 EQ PUSH2 0x2EE JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x7833BEC0 GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x7833BEC0 EQ PUSH2 0x2A3 JUMPI DUP1 PUSH4 0x7A791E6E EQ PUSH2 0x2C3 JUMPI DUP1 PUSH4 0x8EE52B4E EQ PUSH2 0x2CB JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x63D69C88 EQ PUSH2 0x27A JUMPI DUP1 PUSH4 0x647341EB EQ PUSH2 0x28D JUMPI DUP1 PUSH4 0x76F15D5B EQ PUSH2 0x29B JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A GT PUSH2 0x145 JUMPI DUP1 PUSH4 0x45FDBDB7 GT PUSH2 0x11F JUMPI DUP1 PUSH4 0x45FDBDB7 EQ PUSH2 0x255 JUMPI DUP1 PUSH4 0x59C28ADD EQ PUSH2 0x25D JUMPI DUP1 PUSH4 0x5BA3C7C0 EQ PUSH2 0x272 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x3E9EF66A EQ PUSH2 0x237 JUMPI DUP1 PUSH4 0x4303A542 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x4582EAB2 EQ PUSH2 0x24D JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH4 0x2E1A7D4D GT PUSH2 0x176 JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI DUP1 PUSH4 0x3687617D EQ PUSH2 0x1F5 JUMPI DUP1 PUSH4 0x36B32396 EQ PUSH2 0x217 JUMPI PUSH2 0x197 JUMP JUMPDEST DUP1 PUSH3 0x9E437 EQ PUSH2 0x19C JUMPI DUP1 PUSH4 0x527C28F EQ PUSH2 0x1A6 JUMPI DUP1 PUSH4 0x1310E444 EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1A4 PUSH2 0x32C JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xB3F JUMP JUMPDEST PUSH2 0x369 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x1C7 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x36C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A4 PUSH2 0x1F0 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x373 JUMP JUMPDEST PUSH2 0x208 PUSH2 0x203 CALLDATASIZE PUSH1 0x4 PUSH2 0xD6C JUMP JUMPDEST PUSH2 0x3C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF44 JUMP JUMPDEST PUSH2 0x22A PUSH2 0x225 CALLDATASIZE PUSH1 0x4 PUSH2 0xB7C JUMP JUMPDEST PUSH2 0x464 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0xF05 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xBBF JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x546 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x54D JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5B2 JUMP JUMPDEST PUSH2 0x265 PUSH2 0x5E4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x10FA JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x5EC JUMP JUMPDEST PUSH2 0x22A PUSH2 0x288 CALLDATASIZE PUSH1 0x4 PUSH2 0xAED JUMP JUMPDEST PUSH2 0x651 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xD1E JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x65A JUMP JUMPDEST PUSH2 0x2B6 PUSH2 0x2B1 CALLDATASIZE PUSH1 0x4 PUSH2 0xBF4 JUMP JUMPDEST PUSH2 0x668 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x100E JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x725 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x2D9 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x730 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x73B JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x1B4 CALLDATASIZE PUSH1 0x4 PUSH2 0xC8E JUMP JUMPDEST PUSH2 0x304 PUSH2 0x740 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1D9 SWAP2 SWAP1 PUSH2 0x1151 JUMP JUMPDEST PUSH2 0x1CC PUSH2 0x899 JUMP JUMPDEST PUSH2 0x1A4 PUSH2 0x327 CALLDATASIZE PUSH1 0x4 PUSH2 0xD53 JUMP JUMPDEST PUSH2 0x1B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFD7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST POP JUMP JUMPDEST POP PUSH2 0x7C7 SWAP1 JUMP JUMPDEST CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 DUP3 PUSH1 0x40 MLOAD PUSH2 0x3B9 SWAP2 SWAP1 PUSH2 0x1164 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP6 ADD DUP6 MSTORE DUP3 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP4 ADD MSTORE DUP5 MLOAD DUP1 DUP7 ADD SWAP1 SWAP6 MSTORE SWAP2 DUP5 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP5 ADD MSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1C DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x19457468657265756D205369676E6564204D6573736167653A0A333200000000 DUP2 MSTORE POP SWAP1 POP PUSH1 0x0 DUP2 DUP8 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x4B5 SWAP3 SWAP2 SWAP1 PUSH2 0xEE3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x1 DUP2 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x4F0 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xF26 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x512 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x7C7 JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x5245564552545F574954485F434F4E5354414E54000000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x35E SWAP1 PUSH2 0xFA0 JUMP JUMPDEST PUSH2 0x54A PUSH2 0x89F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH32 0x524551554952455F574954485F434F4E5354414E540000000000000000000000 PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH2 0x35E SWAP2 SWAP1 PUSH1 0x4 ADD PUSH2 0xF86 JUMP JUMPDEST POP SWAP3 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE SWAP1 JUMP JUMPDEST PUSH2 0x670 PUSH2 0x8BF JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP2 DUP3 MSTORE DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH32 0x1234567800000000000000000000000000000000000000000000000000000000 PUSH1 0x20 DUP4 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD DUP1 DUP5 ADD DUP5 MSTORE DUP2 DUP2 MSTORE PUSH32 0x8765432100000000000000000000000000000000000000000000000000000000 DUP2 DUP5 ADD MSTORE DUP5 DUP5 ADD MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE DUP3 MSTORE PUSH32 0x616D657400000000000000000000000000000000000000000000000000000000 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x367 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 SWAP1 JUMP JUMPDEST PUSH2 0x748 PUSH2 0x8ED JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x2 DUP1 DUP3 MSTORE PUSH1 0x60 DUP3 DUP2 ADD SWAP1 SWAP4 MSTORE DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x75E JUMPI SWAP1 POP POP SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x7B8 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x3078333231000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 PUSH1 0x1 DUP2 MLOAD DUP2 LT PUSH2 0x806 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x5 PUSH1 0x80 DUP3 ADD DUP2 DUP2 MSTORE PUSH32 0x3078313233000000000000000000000000000000000000000000000000000000 PUSH1 0xA0 DUP5 ADD MSTORE DUP3 MSTORE DUP2 DUP5 ADD MSTORE DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x3 DUP2 MSTORE PUSH32 0x6162630000000000000000000000000000000000000000000000000000000000 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x4D2 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8B2 PUSH2 0x8ED JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xC0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x8D2 PUSH2 0x91B JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH4 0xFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x94C JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x962 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 PUSH2 0x971 DUP2 DUP3 DUP5 MUL ADD PUSH2 0x116D JUMP JUMPDEST DUP3 DUP2 MSTORE SWAP3 POP DUP1 DUP4 ADD DUP5 DUP3 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x9A8 JUMPI PUSH2 0x996 DUP9 DUP6 DUP5 CALLDATALOAD DUP11 ADD ADD PUSH2 0x9B3 JUMP JUMPDEST DUP4 MSTORE SWAP2 DUP4 ADD SWAP2 SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x97F JUMP JUMPDEST POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x9C3 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x9D9 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0xA0A PUSH1 0x20 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F DUP5 ADD AND ADD PUSH2 0x116D JUMP JUMPDEST SWAP2 POP DUP1 DUP3 MSTORE DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xA21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x20 DUP5 ADD PUSH1 0x20 DUP5 ADD CALLDATACOPY PUSH1 0x0 SWAP1 DUP3 ADD PUSH1 0x20 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA4B JUMPI DUP1 DUP2 REVERT JUMPDEST PUSH2 0xA55 PUSH1 0x80 PUSH2 0x116D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xA70 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xA7C DUP7 DUP4 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST DUP5 MSTORE PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH4 0xFFFFFFFF DUP3 AND DUP3 EQ PUSH2 0xA96 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAAF JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xABB DUP7 DUP4 DUP8 ADD PUSH2 0x93C JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE PUSH1 0x60 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xAD3 JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xAE0 DUP6 DUP3 DUP7 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xB05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xB10 DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0xB2E DUP2 PUSH2 0x11C4 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xB51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xB68 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x93C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0xBAA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP7 SWAP4 SWAP6 POP POP POP POP PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xBD1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xBE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC05 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xC1C JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x60 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xC2E JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xC38 PUSH1 0x60 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP4 MSTORE PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC4F JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC5B DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP PUSH1 0x40 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xC72 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xC7E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC9F JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xCB6 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP2 DUP5 ADD PUSH1 0x40 DUP2 DUP8 SUB SLT ISZERO PUSH2 0xCC8 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0xCD2 PUSH1 0x40 PUSH2 0x116D JUMP JUMPDEST SWAP3 POP DUP1 CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xCE2 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xCEE DUP8 DUP3 DUP5 ADD PUSH2 0xA3A JUMP JUMPDEST DUP5 MSTORE POP PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 DUP2 GT ISZERO PUSH2 0xD02 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0xD0E DUP8 DUP3 DUP5 ADD PUSH2 0x9B3 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MSTORE POP SWAP2 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB74 DUP5 DUP3 DUP6 ADD PUSH2 0xA3A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xD65 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xD80 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD9E JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH2 0xDAA DUP8 DUP4 DUP9 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xDBF JUMPI DUP3 DUP4 REVERT JUMPDEST POP PUSH2 0xDCC DUP7 DUP3 DUP8 ADD PUSH2 0x9B3 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0xDEE DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x1194 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x80 DUP5 MSTORE PUSH2 0xE35 PUSH1 0x80 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x20 SWAP2 POP PUSH4 0xFFFFFFFF DUP3 DUP6 ADD MLOAD AND DUP3 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE DUP2 DUP2 MLOAD DUP1 DUP5 MSTORE DUP5 DUP5 ADD SWAP2 POP DUP5 DUP6 DUP3 MUL DUP6 ADD ADD DUP6 DUP5 ADD PUSH1 0x0 SWAP5 POP JUMPDEST DUP3 DUP6 LT ISZERO PUSH2 0xEBC JUMPI PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP7 DUP4 SUB ADD DUP5 MSTORE PUSH2 0xEA8 DUP3 DUP3 MLOAD PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x1 SWAP6 SWAP1 SWAP6 ADD SWAP5 SWAP4 DUP8 ADD SWAP4 SWAP2 POP DUP7 ADD PUSH2 0xE6E JUMP JUMPDEST POP PUSH1 0x60 DUP9 ADD MLOAD SWAP6 POP DUP9 DUP2 SUB PUSH1 0x60 DUP11 ADD MSTORE PUSH2 0xED6 DUP2 DUP8 PUSH2 0xDD6 JUMP JUMPDEST SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0xEF5 DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x1194 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP2 DUP3 MSTORE POP PUSH1 0x20 ADD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0xFF SWAP3 SWAP1 SWAP3 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 MSTORE PUSH2 0xF57 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP3 DUP2 SUB PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xF69 DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST DUP4 DUP2 SUB PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0xF7B DUP2 DUP7 PUSH2 0xDD6 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xDD6 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xD SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455645525400000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0xE SWAP1 DUP3 ADD MSTORE PUSH32 0x53494D504C455F52455155495245000000000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x80 PUSH1 0x20 DUP5 ADD MSTORE DUP1 MLOAD PUSH1 0xA0 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x60 PUSH1 0xC0 DUP6 ADD MSTORE PUSH2 0x103E PUSH2 0x100 DUP6 ADD DUP3 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF60 DUP6 DUP3 SUB ADD PUSH1 0xE0 DUP7 ADD MSTORE PUSH2 0x1079 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x20 DUP5 ADD MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP1 DUP6 DUP5 SUB ADD PUSH1 0x40 DUP7 ADD MSTORE PUSH2 0x10B7 DUP4 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x40 DUP8 ADD MLOAD SWAP4 POP DUP2 DUP7 DUP3 SUB ADD PUSH1 0x60 DUP8 ADD MSTORE PUSH2 0x10D2 DUP2 DUP6 PUSH2 0xDD6 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 DUP7 ADD MLOAD SWAP3 POP DUP1 DUP6 DUP4 SUB ADD PUSH1 0x80 DUP7 ADD MSTORE POP PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE DUP3 MLOAD PUSH1 0x40 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x1116 PUSH1 0x60 DUP5 ADD DUP3 PUSH2 0xE20 JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP2 POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP5 DUP3 SUB ADD PUSH1 0x40 DUP6 ADD MSTORE PUSH2 0x10F1 DUP2 DUP4 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 MSTORE PUSH2 0xF99 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0xE20 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP2 DUP2 ADD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x118C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11AF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1197 JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x11BE JUMPI PUSH1 0x0 DUP5 DUP5 ADD MSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG3 PUSH6 0x627A7A723058 KECCAK256 RETURNDATACOPY 0xc 0x22 0x2c PUSH4 0x113A319D 0xc5 EXTCODECOPY CALLER DIFFICULTY LOG4 DUP16 EXP DUP10 SAR CALLDATACOPY 0xec 0xc9 PUSH2 0xDDFE DUP8 0xb5 MLOAD 0xd9 0xee 0xab SWAP6 EQ PUSH13 0x6578706572696D656E74616CF5 PUSH5 0x736F6C6343 STOP SDIV EXP STOP BLOCKHASH ", + "sourceMap": "641:5808:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;641:5808:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:107;;;:::i;:::-;;3190:63;;;;;;;;;:::i;5413:128::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2585:84;;;;;;;;;:::i;6036:345::-;;;;;;;;;:::i;:::-;;;;;;;;;;2184:334;;;;;;;;;:::i;:::-;;;;;;;;3028:52;;;;;;;5018:117;;;:::i;1389:101::-;;;:::i;1286:97::-;;;:::i;4047:73::-;;;:::i;:::-;;;;;;;;1609:111;;;:::i;2823:166::-;;;;;;;;;:::i;3399:52::-;;;;;;;4146:72;;;:::i;5614:317::-;;;;;;;;;:::i;:::-;;;;;;;;4827:112;;;:::i;989:140::-;;;;;;;;;:::i;4223:69::-;;;:::i;862:121::-;;;:::i;3978:64::-;;;;;;;3533:350;;;:::i;:::-;;;;;;;;1135:145;;;:::i;5214:123::-;;;;;;;;;:::i;1496:107::-;1564:32;;;;;;;;;;;;;;;;;;;;1496:107::o;3190:63::-;;:::o;5413:128::-;-1:-1:-1;5530:4:0;;5413:128::o;2585:84::-;2646:10;2635:27;;;2658:3;2635:27;;;;;;;;;;;;;;;2585:84;:::o;6036:345::-;-1:-1:-1;;6283:91:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6036:345:0:o;2184:334::-;2295:21;2332:19;:56;;;;;;;;;;;;;;;;;;;2398:20;2448:6;2456:4;2431:30;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2431:30:0;;;2421:41;;;;;;2398:64;;2479:32;2489:12;2503:1;2506;2509;2479:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;2479:32:0;;;;;;2184:334;-1:-1:-1;;;;;;;;2184:334:0:o;5018:117::-;5124:4;5018:117;;:::o;1389:101::-;1469:13;;;;;;;;;;;;;;;;1462:21;;;;;;;1469:13;1462:21;;;;1286:97;1353:23;;;;;;;;;;;4047:73;4097:19;;:::i;1609:111::-;1698:14;;;;;;;;;;;;;;;;1683:30;;;;;;;1698:14;1683:30;;;;2823:166;-1:-1:-1;2981:1:0;;2823:166;-1:-1:-1;;;2823:166:0:o;4146:72::-;4186:4;4201:14;;4214:1;4201:14;;;;;4146:72;:::o;5614:317::-;5728:20;;:::i;:::-;-1:-1:-1;5771:153:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5614:317::o;4827:112::-;4911:21;;989:140;1117:1;:5;;989:140::o;4223:69::-;4275:9;:14;;4288:1;4275:14;;;4223:69::o;862:121::-;975:1;862:121;:::o;3533:350::-;3577:15;;:::i;:::-;3631:14;;;3643:1;3631:14;;;3604:24;3631:14;;;;;;;;;;;;;;;;;;;;;;;;;;3604:41;;3655:22;;;;;;;;;;;;;;;;;:9;3665:1;3655:12;;;;;;;;;;;;;:22;;;;3687;;;;;;;;;;;;;;;;;:9;3697:1;3687:12;;;;;;;;;;;;;;;;;;:22;;;;3727:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3727:149:0;;;;-1:-1:-1;3533:350:0;:::o;1135:145::-;711:4;1135:145;:::o;641:5808::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;158:685:-1:-;;276:3;269:4;261:6;257:17;253:27;243:2;;-1:-1;;284:12;243:2;331:6;318:20;26546:18;26538:6;26535:30;26532:2;;;-1:-1;;26568:12;26532:2;26613:4;353:81;26676:4;26613;26605:6;26601:17;26666:15;353:81;;;462:21;;;344:90;-1:-1;519:14;;;494:17;;;614:1;599:238;624:6;621:1;618:13;599:238;;;731:42;769:3;506:4;707:3;694:17;498:6;682:30;;731:42;;;719:55;;788:14;;;;816;;;;646:1;639:9;599:238;;;603:14;;;;;236:607;;;;;1706:432;;1803:3;1796:4;1788:6;1784:17;1780:27;1770:2;;-1:-1;;1811:12;1770:2;1858:6;1845:20;27153:18;27145:6;27142:30;27139:2;;;-1:-1;;27175:12;27139:2;1880:60;27316:4;27248:9;1796:4;27233:6;27229:17;27225:33;27306:15;1880:60;;;1871:69;;1960:6;1953:5;1946:21;2064:3;27316:4;2055:6;1988;2046:16;;2043:25;2040:2;;;2081:1;;2071:12;2040:2;30896:6;27316:4;1988:6;1984:17;27316:4;2022:5;2018:16;30873:30;30952:1;30934:16;;;27316:4;30934:16;30927:27;2022:5;1763:375;-1:-1;;1763:375;5086:1071;;5194:4;5182:9;5177:3;5173:19;5169:30;5166:2;;;-1:-1;;5202:12;5166:2;5230:20;5194:4;5230:20;;;5221:29;;5333:1;5318:17;5305:31;5356:18;;5348:6;5345:30;5342:2;;;5388:1;5385;5378:12;5342:2;5422:54;5472:3;5463:6;5452:9;5448:22;5422:54;;;5405:15;5398:79;5543:2;5600:9;5596:22;7481:20;7472:29;;30703:10;31888:5;30692:22;31864:5;31861:34;31851:2;;31909:1;31906;31899:12;31851:2;5576:48;5543:2;5562:5;5558:16;5551:74;5730:2;5719:9;5715:18;5702:32;5688:46;;5754:18;5746:6;5743:30;5740:2;;;5786:1;5783;5776:12;5740:2;5821:75;5892:3;5883:6;5872:9;5868:22;5821:75;;;5730:2;5807:5;5803:16;5796:101;5989:2;5978:9;5974:18;5961:32;5947:46;;6013:18;6005:6;6002:30;5999:2;;;6045:1;6042;6035:12;5999:2;;6080:55;6131:3;6122:6;6111:9;6107:22;6080:55;;;5989:2;6066:5;6062:16;6055:81;;;5160:997;;;;;7683:743;;;;;;7855:3;7843:9;7834:7;7830:23;7826:33;7823:2;;;-1:-1;;7862:12;7823:2;85:6;72:20;97:33;124:5;97:33;;;7914:63;-1:-1;8014:2;8053:22;;7345:20;;-1:-1;8122:2;8161:22;;7345:20;;-1:-1;8230:2;8269:22;;72:20;97:33;72:20;97:33;;;7817:609;;;;-1:-1;7817:609;;8338:3;8378:22;7345:20;;7817:609;-1:-1;;7817:609;8433:387;;8567:2;8555:9;8546:7;8542:23;8538:32;8535:2;;;-1:-1;;8573:12;8535:2;8631:17;8618:31;8669:18;8661:6;8658:30;8655:2;;;-1:-1;;8691:12;8655:2;8721:83;8796:7;8787:6;8776:9;8772:22;8721:83;;;8711:93;8529:291;-1:-1;;;;8529:291;8827:613;;;;;8980:3;8968:9;8959:7;8955:23;8951:33;8948:2;;;-1:-1;;8987:12;8948:2;1648:6;1635:20;9039:63;;9139:2;9180:9;9176:22;7615:20;30797:4;32008:5;30786:16;31985:5;31982:33;31972:2;;-1:-1;;32019:12;31972:2;8942:498;;9147:61;;-1:-1;;;;9245:2;9284:22;;1635:20;;9353:2;9392:22;1635:20;;8942:498;9447:345;;9560:2;9548:9;9539:7;9535:23;9531:32;9528:2;;;-1:-1;;9566:12;9528:2;9624:17;9611:31;9662:18;9654:6;9651:30;9648:2;;;-1:-1;;9684:12;9648:2;9714:62;9768:7;9759:6;9748:9;9744:22;9714:62;;9799:385;;9932:2;9920:9;9911:7;9907:23;9903:32;9900:2;;;9948:1;9945;9938:12;9900:2;9996:17;9983:31;10034:18;;10026:6;10023:30;10020:2;;;10066:1;10063;10056:12;10020:2;10151:6;10140:9;10136:22;3645:4;3633:9;3628:3;3624:19;3620:30;3617:2;;;3663:1;3660;3653:12;3617:2;3681:20;3645:4;3681:20;;;3672:29;;7358:6;7345:20;3764:15;3757:74;9932:2;3908:9;3904:18;3891:32;3943:18;3935:6;3932:30;3929:2;;;3975:1;3972;3965:12;3929:2;4010:54;4060:3;4051:6;4040:9;4036:22;4010:54;;;9932:2;3996:5;3992:16;3985:80;;4153:2;4142:9;4138:18;4125:32;4177:18;4169:6;4166:30;4163:2;;;4209:1;4206;4199:12;4163:2;4244:55;4295:3;4286:6;4275:9;4271:22;4244:55;;;4153:2;4226:16;;4219:81;-1:-1;4230:5;;9894:290;-1:-1;;;;;9894:290;10191:385;;10324:2;10312:9;10303:7;10299:23;10295:32;10292:2;;;10340:1;10337;10330:12;10292:2;10388:17;10375:31;10426:18;;10418:6;10415:30;10412:2;;;10458:1;10455;10448:12;10412:2;10543:6;10532:9;10528:22;4484:4;4472:9;4467:3;4463:19;4459:30;4456:2;;;4502:1;4499;4492:12;4456:2;4520:20;4484:4;4520:20;;;4511:29;;4610:17;4597:31;4648:18;4640:6;4637:30;4634:2;;;4680:1;4677;4670:12;4634:2;4714:68;4778:3;4769:6;4758:9;4754:22;4714:68;;;4697:15;4690:93;;10324:2;4868:9;4864:18;4851:32;4903:18;4895:6;4892:30;4889:2;;;4935:1;4932;4925:12;4889:2;4970:55;5021:3;5012:6;5001:9;4997:22;4970:55;;;10324:2;4952:16;;4945:81;-1:-1;4956:5;;10286:290;-1:-1;;;;;10286:290;10583:373;;10710:2;10698:9;10689:7;10685:23;10681:32;10678:2;;;-1:-1;;10716:12;10678:2;10774:17;10761:31;10812:18;10804:6;10801:30;10798:2;;;-1:-1;;10834:12;10798:2;10864:76;10932:7;10923:6;10912:9;10908:22;10864:76;;10963:241;;11067:2;11055:9;11046:7;11042:23;11038:32;11035:2;;;-1:-1;;11073:12;11035:2;-1:-1;7345:20;;11029:175;-1:-1;11029:175;11211:701;;;;11368:2;11356:9;11347:7;11343:23;11339:32;11336:2;;;11384:1;11381;11374:12;11336:2;7358:6;7345:20;11426:63;;11554:2;11543:9;11539:18;11526:32;11578:18;;11570:6;11567:30;11564:2;;;11610:1;11607;11600:12;11564:2;11630:62;11684:7;11675:6;11664:9;11660:22;11630:62;;;11620:72;;11757:2;11746:9;11742:18;11729:32;11715:46;;11781:18;11773:6;11770:30;11767:2;;;11813:1;11810;11803:12;11767:2;;11833:63;11888:7;11879:6;11868:9;11864:22;11833:63;;;11823:73;;;11330:582;;;;;;13391:343;;13533:5;28583:12;29372:6;29367:3;29360:19;13626:52;13671:6;29409:4;29404:3;29400:14;29409:4;13652:5;13648:16;13626:52;;;31414:2;31394:14;31410:7;31390:28;13690:39;;;;29409:4;13690:39;;13481:253;-1:-1;;13481:253;19103:1078;;19327:15;19321:22;19250:4;19363:13;19356:37;19408:67;19250:4;19245:3;19241:14;19456:12;19408:67;;;19565:4;;;30703:10;19565:4;19558:5;19554:16;19548:23;30692:22;19632:4;19627:3;19623:14;21609:36;19733:4;19726:5;19722:16;19716:23;19785:3;19779:4;19775:14;19733:4;19763:3;19759:14;19752:38;19805:109;12442:5;28583:12;29372:6;29367:3;29360:19;29409:4;29404:3;29400:14;12454:88;;19565:4;12607;12599:6;12595:17;29404:3;12586:27;;28445:4;12685:5;28436:14;-1:-1;12730:10;;12724:341;12749:6;12746:1;12743:13;12724:341;;;12801:20;29404:3;12805:4;12801:20;;12796:3;12789:33;12031:60;12087:3;12856:6;12850:13;12031:60;;;12771:1;12764:9;;;;;13044:14;;;;12870:82;-1:-1;29220:14;;12724:341;;;12728:14;20002:4;19995:5;19991:16;19985:23;19965:43;;20054:3;20048:4;20044:14;20002:4;20032:3;20028:14;20021:38;20074:69;20138:4;20124:12;20074:69;;;20165:11;19223:958;-1:-1;;;;;;;;;19223:958;21771:401;;13901:5;28583:12;14012:52;14057:6;14052:3;14045:4;14038:5;14034:16;14012:52;;;14076:16;;;;13183:37;;;-1:-1;14045:4;22135:12;;21924:248;-1:-1;21924:248;22179:213;30497:42;30486:54;;;;12176:37;;22297:2;22282:18;;22268:124;22399:539;13183:37;;;30797:4;30786:16;;;;22758:2;22743:18;;21724:35;22841:2;22826:18;;13183:37;22924:2;22909:18;;13183:37;22597:3;22582:19;;22568:370;22945:691;;23175:2;23196:17;23189:47;23250:76;23175:2;23164:9;23160:18;23312:6;23250:76;;;23374:9;23368:4;23364:20;23359:2;23348:9;23344:18;23337:48;23399:76;23470:4;23461:6;23399:76;;;23523:9;23517:4;23513:20;23508:2;23497:9;23493:18;23486:48;23548:78;23621:4;23612:6;23548:78;;;23540:86;23146:490;-1:-1;;;;;;;23146:490;23643:293;;23777:2;23798:17;23791:47;23852:74;23777:2;23766:9;23762:18;23912:6;23852:74;;;23844:82;23748:188;-1:-1;;;23748:188;23943:407;24134:2;24148:47;;;15677:2;24119:18;;;29360:19;15713:66;29400:14;;;15693:87;15799:12;;;24105:245;24357:407;24548:2;24562:47;;;16050:2;24533:18;;;29360:19;16086:66;29400:14;;;16066:87;16172:12;;;24519:245;24771:381;;24949:2;24970:17;24963:47;17367:15;17361:22;17294:4;24949:2;24938:9;24934:18;17396:37;16487:15;16481:22;17285:14;24938:9;17285:14;13183:37;24949:2;16642:5;16638:16;16632:23;16416:4;16675:14;24938:9;16675:14;16668:38;16721:67;16407:14;24938:9;16407:14;16769:12;16721:67;;;16872:4;16865:5;16861:16;16855:23;16835:43;;16914:14;24938:9;16918:4;16914:14;;16898;24938:9;16898:14;16891:38;16944:69;17008:4;16994:12;16944:69;;;17035:11;;;;24949:2;17634:5;17630:16;17624:23;17683:14;;24938:9;17687:4;17683:14;;16872:4;24938:9;17667:14;17660:38;17713:67;17775:4;17761:12;17713:67;;;16872:4;17859:5;17855:16;17849:23;17829:43;;17908:14;24938:9;17912:4;17908:14;;16416:4;24938:9;17892:14;17885:38;17938:67;18000:4;17986:12;17938:67;;;17930:75;;;16416:4;18084:5;18080:16;18074:23;18054:43;;18133:14;24938:9;18137:4;18133:14;;17294:4;24938:9;18117:14;18110:38;;18163:69;18227:4;18213:12;18163:69;;;25016:126;24920:232;-1:-1;;;;;24920:232;25159:377;;25335:2;25356:17;25349:47;18588:15;18582:22;18509:4;25335:2;25324:9;25320:18;18617:37;18669:95;18500:14;25324:9;18500:14;18745:12;18669:95;;;25335:2;18849:5;18845:16;18839:23;18819:43;;18898:14;25324:9;18902:4;18898:14;;18509:4;25324:9;18882:14;18875:38;18928:69;18992:4;18978:12;18928:69;;25543:353;;25707:2;25728:17;25721:47;25782:104;25707:2;25696:9;25692:18;25872:6;25782:104;;25903:213;13183:37;;;26021:2;26006:18;;25992:124;26123:256;26185:2;26179:9;26211:17;;;26286:18;26271:34;;26307:22;;;26268:62;26265:2;;;26343:1;;26333:12;26265:2;26185;26352:22;26163:216;;-1:-1;26163:216;30969:268;31034:1;31041:101;31055:6;31052:1;31049:13;31041:101;;;31122:11;;;31116:18;31103:11;;;31096:39;31077:2;31070:10;31041:101;;;31157:6;31154:1;31151:13;31148:2;;;31034:1;31213:6;31208:3;31204:16;31197:27;31148:2;;31018:219;;;;31431:117;30497:42;31518:5;30486:54;31493:5;31490:35;31480:2;;31539:1;;31529:12" } } }, @@ -614,9 +614,9 @@ } }, "sourceCodes": { - "AbiGenDummy.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma experimental ABIEncoderV2;\n\npragma solidity ^0.5.5;\n\n\ncontract AbiGenDummy\n{\n\n uint256 constant internal SOME_CONSTANT = 1234;\n string constant internal REVERT_REASON = \"REVERT_WITH_CONSTANT\";\n string constant internal REQUIRE_REASON = \"REQUIRE_WITH_CONSTANT\";\n\n function simplePureFunction ()\n public\n pure\n returns (uint256 result)\n {\n return 1;\n }\n\n function simplePureFunctionWithInput (uint256 x)\n public\n pure\n returns (uint256 sum)\n {\n return 1 + x;\n }\n\n function pureFunctionWithConstant ()\n public\n pure\n returns (uint256 someConstant)\n {\n return SOME_CONSTANT;\n }\n\n function simpleRevert ()\n public\n pure\n {\n revert(\"SIMPLE_REVERT\");\n }\n\n function revertWithConstant ()\n public\n pure\n {\n revert(REVERT_REASON);\n }\n\n function simpleRequire ()\n public\n pure\n {\n require(0 > 1, \"SIMPLE_REQUIRE\");\n }\n\n function requireWithConstant ()\n public\n pure\n {\n require(0 > 1, REQUIRE_REASON);\n }\n\n /// @dev test that devdocs will be generated and\n /// that multiline devdocs will look okay\n /// @param hash description of some hash\n /// @param v some v, recovery id\n /// @param r ECDSA r output\n /// @param s ECDSA s output\n /// @return the signerAddress that created this signature\n function ecrecoverFn(bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n public\n pure\n returns (address signerAddress)\n {\n bytes memory prefix = \"\\x19Ethereum Signed Message:\\n32\";\n bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, hash));\n return ecrecover(prefixedHash, v, r, s);\n }\n\n event Withdrawal(address indexed _owner, uint _value);\n\n function withdraw(uint wad) public {\n emit Withdrawal(msg.sender, wad);\n }\n\n // test: generated code should normalize address inputs to lowercase\n // add extra inputs to make sure it works with address in any position\n function withAddressInput(address x, uint256 a, uint256 b, address y, uint256 c)\n public\n pure\n returns (address z)\n {\n return x;\n }\n\n event AnEvent(uint8 param);\n\n function acceptsBytes(bytes memory a) public pure {}\n\n /// @dev a method that accepts an array of bytes\n /// @param a the array of bytes being accepted\n function acceptsAnArrayOfBytes(bytes[] memory a) public pure {}\n\n struct Struct {\n bytes someBytes;\n uint32 anInteger;\n bytes[] aDynamicArrayOfBytes;\n string aString;\n }\n\n function structInput(Struct memory s) public pure {}\n\n /// @dev a method that returns a struct\n /// @return a Struct struct\n function structOutput() public pure returns(Struct memory s) {\n bytes[] memory byteArray = new bytes[](2);\n byteArray[0] = '0x123';\n byteArray[1] = '0x321';\n\n return Struct({\n someBytes: '0x123',\n anInteger: 5,\n aDynamicArrayOfBytes: byteArray,\n aString: \"abc\"\n });\n }\n\n struct NestedStruct {\n Struct innerStruct;\n string description;\n }\n\n function nestedStructInput(NestedStruct memory n) public pure {}\n function nestedStructOutput() public pure returns(NestedStruct memory) {}\n\n uint someState;\n function nonPureMethod() public returns(uint) { return someState += 1; }\n function nonPureMethodThatReturnsNothing() public { someState += 1; }\n\n // begin tests for `decodeTransactionData`, `decodeReturnData`\n\n /// @dev complex input is dynamic and more difficult to decode than simple input.\n struct ComplexInput {\n uint256 foo;\n bytes bar;\n string car;\n }\n\n /// @dev complex input is dynamic and more difficult to decode than simple input.\n struct ComplexOutput {\n ComplexInput input;\n bytes lorem;\n bytes ipsum;\n string dolor;\n }\n \n /// @dev Tests decoding when both input and output are empty.\n function noInputNoOutput()\n public\n pure\n {\n // NOP\n require(true == true);\n }\n\n /// @dev Tests decoding when input is empty and output is non-empty.\n function noInputSimpleOutput()\n public\n pure\n returns (uint256)\n {\n return 1991;\n }\n\n /// @dev Tests decoding when input is not empty but output is empty.\n function simpleInputNoOutput(uint256)\n public\n pure\n {\n // NOP\n require(true == true);\n }\n\n /// @dev Tests decoding when both input and output are non-empty.\n function simpleInputSimpleOutput(uint256)\n public\n pure\n returns (uint256)\n {\n return 1991;\n }\n\n /// @dev Tests decoding when the input and output are complex.\n function complexInputComplexOutput(ComplexInput memory complexInput)\n public\n pure\n returns (ComplexOutput memory)\n {\n return ComplexOutput({\n input: complexInput,\n lorem: hex'12345678',\n ipsum: hex'87654321',\n dolor: \"amet\"\n });\n }\n\n /// @dev Tests decoding when the input and output are complex and have more than one argument.\n function multiInputMultiOutput(\n uint256,\n bytes memory,\n string memory\n )\n public\n pure\n returns (\n bytes memory,\n bytes memory,\n string memory\n )\n {\n return (\n hex'12345678',\n hex'87654321',\n \"amet\"\n );\n }\n\n // end tests for `decodeTransactionData`, `decodeReturnData`\n}\n" + "AbiGenDummy.sol": "/*\n\n Copyright 2018 ZeroEx Intl.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\npragma experimental ABIEncoderV2;\n\npragma solidity ^0.5.5;\n\n\ncontract AbiGenDummy\n{\n\n uint256 constant internal SOME_CONSTANT = 1234;\n string constant internal REVERT_REASON = \"REVERT_WITH_CONSTANT\";\n string constant internal REQUIRE_REASON = \"REQUIRE_WITH_CONSTANT\";\n\n function simplePureFunction ()\n public\n pure\n returns (uint256 result)\n {\n return 1;\n }\n\n function simplePureFunctionWithInput (uint256 x)\n public\n pure\n returns (uint256 sum)\n {\n return 1 + x;\n }\n\n function pureFunctionWithConstant ()\n public\n pure\n returns (uint256 someConstant)\n {\n return SOME_CONSTANT;\n }\n\n function simpleRevert ()\n public\n pure\n {\n revert(\"SIMPLE_REVERT\");\n }\n\n function revertWithConstant ()\n public\n pure\n {\n revert(REVERT_REASON);\n }\n\n function simpleRequire ()\n public\n pure\n {\n require(0 > 1, \"SIMPLE_REQUIRE\");\n }\n\n function requireWithConstant ()\n public\n pure\n {\n require(0 > 1, REQUIRE_REASON);\n }\n\n /// @dev test that devdocs will be generated and\n /// that multiline devdocs will look okay\n /// @param hash description of some hash. Let's make this line super long to demonstrate hanging indents for method params. It has to be more than one hundred twenty columns.\n /// @param v some v, recovery id\n /// @param r ECDSA r output\n /// @param s ECDSA s output\n /// @return the signerAddress that created this signature\n function ecrecoverFn(bytes32 hash, uint8 v, bytes32 r, bytes32 s)\n public\n pure\n returns (address signerAddress)\n {\n bytes memory prefix = \"\\x19Ethereum Signed Message:\\n32\";\n bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, hash));\n return ecrecover(prefixedHash, v, r, s);\n }\n\n event Withdrawal(address indexed _owner, uint _value);\n\n function withdraw(uint wad) public {\n emit Withdrawal(msg.sender, wad);\n }\n\n // test: generated code should normalize address inputs to lowercase\n // add extra inputs to make sure it works with address in any position\n function withAddressInput(address x, uint256 a, uint256 b, address y, uint256 c)\n public\n pure\n returns (address z)\n {\n return x;\n }\n\n event AnEvent(uint8 param);\n\n function acceptsBytes(bytes memory a) public pure {}\n\n /// @dev a method that accepts an array of bytes\n /// @param a the array of bytes being accepted\n function acceptsAnArrayOfBytes(bytes[] memory a) public pure {}\n\n struct Struct {\n bytes someBytes;\n uint32 anInteger;\n bytes[] aDynamicArrayOfBytes;\n string aString;\n }\n\n function structInput(Struct memory s) public pure {}\n\n /// @dev a method that returns a struct\n /// @return a Struct struct\n function structOutput() public pure returns(Struct memory s) {\n bytes[] memory byteArray = new bytes[](2);\n byteArray[0] = '0x123';\n byteArray[1] = '0x321';\n\n return Struct({\n someBytes: '0x123',\n anInteger: 5,\n aDynamicArrayOfBytes: byteArray,\n aString: \"abc\"\n });\n }\n\n struct NestedStruct {\n Struct innerStruct;\n string description;\n }\n\n function nestedStructInput(NestedStruct memory n) public pure {}\n function nestedStructOutput() public pure returns(NestedStruct memory) {}\n\n uint someState;\n function nonPureMethod() public returns(uint) { return someState += 1; }\n function nonPureMethodThatReturnsNothing() public { someState += 1; }\n\n // begin tests for `decodeTransactionData`, `decodeReturnData`\n\n /// @dev complex input is dynamic and more difficult to decode than simple input.\n struct ComplexInput {\n uint256 foo;\n bytes bar;\n string car;\n }\n\n /// @dev complex input is dynamic and more difficult to decode than simple input.\n struct ComplexOutput {\n ComplexInput input;\n bytes lorem;\n bytes ipsum;\n string dolor;\n }\n \n /// @dev Tests decoding when both input and output are empty.\n function noInputNoOutput()\n public\n pure\n {\n // NOP\n require(true == true);\n }\n\n /// @dev Tests decoding when input is empty and output is non-empty.\n function noInputSimpleOutput()\n public\n pure\n returns (uint256)\n {\n return 1991;\n }\n\n /// @dev Tests decoding when input is not empty but output is empty.\n function simpleInputNoOutput(uint256)\n public\n pure\n {\n // NOP\n require(true == true);\n }\n\n /// @dev Tests decoding when both input and output are non-empty.\n function simpleInputSimpleOutput(uint256)\n public\n pure\n returns (uint256)\n {\n return 1991;\n }\n\n /// @dev Tests decoding when the input and output are complex.\n function complexInputComplexOutput(ComplexInput memory complexInput)\n public\n pure\n returns (ComplexOutput memory)\n {\n return ComplexOutput({\n input: complexInput,\n lorem: hex'12345678',\n ipsum: hex'87654321',\n dolor: \"amet\"\n });\n }\n\n /// @dev Tests decoding when the input and output are complex and have more than one argument.\n function multiInputMultiOutput(\n uint256,\n bytes memory,\n string memory\n )\n public\n pure\n returns (\n bytes memory,\n bytes memory,\n string memory\n )\n {\n return (\n hex'12345678',\n hex'87654321',\n \"amet\"\n );\n }\n\n // end tests for `decodeTransactionData`, `decodeReturnData`\n}\n" }, - "sourceTreeHashHex": "0xd731effae22030e1c5d18b1dc91d5f9109684b29e99d19a3d9287f3f5f3c0d98", + "sourceTreeHashHex": "0x437ed443530f22fc9624b539dcbc3e88f2a3751cf9f8679cb52be7f9b9ef2bb8", "compiler": { "name": "solc", "version": "soljson-v0.5.10+commit.5a6ea5b1.js", diff --git a/packages/abi-gen/test-cli/fixtures/contracts/AbiGenDummy.sol b/packages/abi-gen/test-cli/fixtures/contracts/AbiGenDummy.sol index ed5c12d2fe..afb69fc77c 100644 --- a/packages/abi-gen/test-cli/fixtures/contracts/AbiGenDummy.sol +++ b/packages/abi-gen/test-cli/fixtures/contracts/AbiGenDummy.sol @@ -82,7 +82,7 @@ contract AbiGenDummy /// @dev test that devdocs will be generated and /// that multiline devdocs will look okay - /// @param hash description of some hash + /// @param hash description of some hash. Let's make this line super long to demonstrate hanging indents for method params. It has to be more than one hundred twenty columns. /// @param v some v, recovery id /// @param r ECDSA r output /// @param s ECDSA s output