COOK COOK N/A
Last Block- HealthChecking Head-
BT--:--
ConsensusQBFT Chain ID20261001 Nodes0/0
Gas price- Gwei
Cookchain Cookchain

Cookchain Explorer

Contract Details

Overview

COOK BALANCE

Loading…

TOKEN NAME

EVM Contract

TOTAL SUPPLY

Not available

More Info

CONTRACT ADDRESS

0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4

CONTRACT CREATOR

0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30
Creation transaction

TOKEN TRACKER

Checking ERC-20 metadata…

Contract Info

SOURCE CODE

✓ Verified

TOKEN DECIMALS

Not available

Market and multichain values require verified data feeds.

Latest Contract Transactions

Loading indexed transactions…

Transaction HashActionBlockAgeFromToAmountTxn Fee
Raw Contract Data · JSON
{
  "id": "0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4",
  "contract": "0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4",
  "name": "EVM Contract",
  "type": "contract",
  "bytecode": "0x60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86916146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611366945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139c565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114da565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561166b565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ae565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a00565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d99565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612107565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612527565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612534565b34801561096057600080fd5b50610969612673565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612697565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a4565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612884565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d67565b348015610b3157600080fd5b50610969613071565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613095945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c2565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561321a565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a9565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d5565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8698a8a8a308a612d67565b9093509150610e96898685613b24565b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613d01565b50965096945050505050565b6000610f44848484613e3e565b90505b9392505050565b60608142811015610fc057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8691686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111227f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b9150868260018451038151811061113557fe5b60200260200101511015611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b611259868660008181106111a457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123f7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8a8a60008181106111f357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c8565b8560008151811061124c57fe5b60200260200101516141f1565b611298828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506143c1915050565b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e457fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b5050505061135b848360018551038151811061134e57fe5b6020026020010151613d01565b509695505050505050565b60606113937f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8484614648565b90505b92915050565b60008060006113cc7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8f8f6140c8565b90506000876113db578c6113fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149957600080fd5b505af11580156114ad573d6000803e3d6000fd5b505050506114c08f8f8f8f8f8f8f612d67565b809450819550505050509b509b9950505050505050505050565b6060814281101561154c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115aa7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106115bd57fe5b6020026020010151101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b61162c868660008181106111a457fe5b61135b828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b606081428110156116dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8691686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183f7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061184f57fe5b60200260200101511115611194576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b6000806118fc7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8d7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8696140c8565b905060008661190b578b61192d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505050506119ef8d8d8d8d8d8d6126a4565b9d9c50505050505050505050505050565b8042811015611a7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611aff85856000818110611a8057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af97f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89896000818110611acf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121d57fe5b8a6141f1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc857600080fd5b505afa158015611bdc573d6000803e3d6000fd5b505050506040513d6020811015611bf257600080fd5b50516040805160208881028281018201909352888252929350611c349290918991899182918501908490808284376000920191909152508892506147d6915050565b86611d388288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b505afa158015611d14573d6000803e3d6000fd5b505050506040513d6020811015611d2a57600080fd5b50519063ffffffff614b6916565b1015611d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8691685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1d85856000818110611a8057fe5b611f5b8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506147d6915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86916916370a0823191602480820192602092909190829003018186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b5051905086811015612072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050611d8f8482613d01565b6060814281101561217957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff16868660008181106121bd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122ba7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa34888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106122cd57fe5b6020026020010151101561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050507f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242e7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89896000818110611acf57fe5b8460008151811061243b57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124ac57600080fd5b505af11580156124c0573d6000803e3d6000fd5b505050506040513d60208110156124d657600080fd5b50516124de57fe5b61251d828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b5095945050505050565b6000610f44848484614bdb565b606081428110156125a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126047f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061261457fe5b6020026020010151111561161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86981565b6000610f44848484614cff565b6000814281101561271657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612745887f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8698989893089612d67565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ef92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127be57600080fd5b505afa1580156127d2573d6000803e3d6000fd5b505050506040513d60208110156127e857600080fd5b5051613b24565b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286257600080fd5b505af1158015612876573d6000803e3d6000fd5b5050505061135b8483613d01565b80428110156128f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff168585600081811061293857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b50505050507f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612aca7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89896000818110611acf57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3457600080fd5b505af1158015612b48573d6000803e3d6000fd5b505050506040513d6020811015612b5e57600080fd5b5051612b6657fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2f57600080fd5b505afa158015612c43573d6000803e3d6000fd5b505050506040513d6020811015612c5957600080fd5b50516040805160208981028281018201909352898252929350612c9b9290918a918a9182918501908490808284376000920191909152508992506147d6915050565b87611d388289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612cce57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b6000808242811015612dda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e077f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8c8c6140c8565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505050506040513d6020811015612eb257600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050506040513d6040811015612f4f57600080fd5b50805160209091015190925090506000612f698e8e614ddf565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa6578183612fa9565b82825b90975095508a871015613007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b89861015613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa81565b60606113937f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8484613f62565b60008060006131127f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8e7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8696140c8565b9050600087613121578c613143565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131df57600080fd5b505af11580156131f3573d6000803e3d6000fd5b505050506132058e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329d8c8c8c8c8c8c614f32565b909450925060006132cf7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8e8e6140c8565b90506132dd8d3383886141f1565b6132e98c3383876141f1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336857600080fd5b505af115801561337c573d6000803e3d6000fd5b505050506040513d602081101561339257600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344c8a7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8698b348c8c614f32565b9094509250600061349e7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8c7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da8696140c8565b90506134ac8b3383886141f1565b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351457600080fd5b505af1158015613528573d6000803e3d6000fd5b50505050507f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d457600080fd5b505af11580156135e8573d6000803e3d6000fd5b505050506040513d60208110156135fe57600080fd5b505161360657fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368557600080fd5b505af1158015613699573d6000803e3d6000fd5b505050506040513d60208110156136af57600080fd5b50519250348410156136c7576136c733853403613d01565b505096509650969350505050565b6060814281101561374757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff168686600081811061378b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138887f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150348260008151811061389857fe5b602002602001015111156138f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061394057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397357600080fd5b505af1158015613987573d6000803e3d6000fd5b50505050507f000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da86973ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f97f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa89896000818110611acf57fe5b84600081518110613a0657fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050506040513d6020811015613aa157600080fd5b5051613aa957fe5b613ae8828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b81600081518110613af557fe5b602002602001015134111561251d5761251d3383600081518110613b1557fe5b60200260200101513403613d01565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bfa57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5c576040519150601f19603f3d011682016040523d82523d6000602084013e613c61565b606091505b5091509150818015613c8f575080511580613c8f5750808060200190516020811015613c8c57600080fd5b50515b613cfa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dda576040519150601f19603f3d011682016040523d82523d6000602084013e613ddf565b606091505b5050905080613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155246023913960400191505060405180910390fd5b505050565b6000808411613e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615414602b913960400191505060405180910390fd5b600083118015613ea85750600082115b613efd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000613f11856103e563ffffffff61523316565b90506000613f25828563ffffffff61523316565b90506000613f4b83613f3f886103e863ffffffff61523316565b9063ffffffff6152b916565b9050808281613f5657fe5b04979650505050505050565b6060600282511015613fd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fed57600080fd5b50604051908082528060200260200182016040528015614017578160200160208202803683370190505b509050828160008151811061402857fe5b60200260200101818152505060005b60018351038110156140c05760008061407a8786858151811061405657fe5b602002602001015187866001018151811061406d57fe5b602002602001015161532b565b9150915061409c84848151811061408d57fe5b60200260200101518383613e3e565b8484600101815181106140ab57fe5b60209081029190910101525050600101614037565b509392505050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152915160009286169163e6a43905916044808301926020929190829003018186803b15801561414157600080fd5b505afa158015614155573d6000803e3d6000fd5b505050506040513d602081101561416b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610f4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f436f6f6b44455856324c6962726172793a20504149525f4e4f545f464f554e44604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106142cf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614292565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614331576040519150601f19603f3d011682016040523d82523d6000602084013e614336565b606091505b5091509150818015614364575080511580614364575080806020019051602081101561436157600080fd5b50515b6143b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061559e6024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614642576000808483815181106143df57fe5b60200260200101518584600101815181106143f657fe5b602002602001015191509150600061440e8383614ddf565b509050600087856001018151811061442257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461446a5782600061446e565b6000835b91509150600060028a5103881061448557886144c6565b6144c67f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa878c8b600201815181106144b957fe5b60200260200101516140c8565b90506144f37f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa88886140c8565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561453d576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145c85781810151838201526020016145b0565b50505050905090810190601f1680156145f55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561461757600080fd5b505af115801561462b573d6000803e3d6000fd5b5050600190990198506143c4975050505050505050565b50505050565b60606002825110156146bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156146d357600080fd5b506040519080825280602002602001820160405280156146fd578160200160208202803683370190505b509050828160018351038151811061471157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140c0576000806147718786600186038151811061475d57fe5b602002602001015187868151811061406d57fe5b9150915061479384848151811061478457fe5b60200260200101518383614bdb565b8460018503815181106147a257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614741565b60005b6001835103811015613e39576000808483815181106147f457fe5b602002602001015185846001018151811061480b57fe5b60200260200101519150915060006148238383614ddf565b50905060006148537f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa85856140c8565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156148a157600080fd5b505afa1580156148b5573d6000803e3d6000fd5b505050506040513d60608110156148cb57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a811690891614614915578284614918565b83835b9150915061499d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b95506149aa868383613e3e565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ee578260006149f2565b6000835b91509150600060028c51038a10614a09578a614a3d565b614a3d7f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa898e8d600201815181106144b957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aed578181015183820152602001614ad5565b50505050905090810190601f168015614b1a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614b3c57600080fd5b505af1158015614b50573d6000803e3d6000fd5b50506001909b019a506147d99950505050505050505050565b8082038281111561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615572602c913960400191505060405180910390fd5b600083118015614c455750600082115b614c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000614cbe6103e8614cb2868863ffffffff61523316565b9063ffffffff61523316565b90506000614cd86103e5614cb2868963ffffffff614b6916565b9050614cf56001828481614ce857fe5b049063ffffffff6152b916565b9695505050505050565b6000808411614d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154b26025913960400191505060405180910390fd5b600083118015614d695750600082115b614dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b82614dcf858463ffffffff61523316565b81614dd657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154656025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614ea1578284614ea4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614f2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa9092169163e6a4390591604480820192602092909190829003018186803b158015614fd257600080fd5b505afa158015614fe6573d6000803e3d6000fd5b505050506040513d6020811015614ffc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150e257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa9092169163c9c65396916044808201926020929091908290030181600087803b1580156150b557600080fd5b505af11580156150c9573d6000803e3d6000fd5b505050506040513d60208110156150df57600080fd5b50505b6000806151107f0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa8b8b61532b565b91509150816000148015615122575080155b1561513257879350869250615226565b600061513f898484614cff565b90508781116151ac57858110156151a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b889450925082615224565b60006151b9898486614cff565b9050898111156151c557fe5b8781101561521e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061524e5750508082028282828161524b57fe5b04145b61139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080600061533a8585614ddf565b50905060008061534b8888886140c8565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561539057600080fd5b505afa1580156153a4573d6000803e3d6000fd5b505050506040513d60608110156153ba57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614615401578082615404565b81815b9099909850965050505050505056fe436f6f6b44455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54436f6f6b44455856324c6962726172793a204944454e544943414c5f414444524553534553436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6f6b44455856324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220cfe93f205c456dc510fd4680508e93f8f99b6ea81926b8ac111f76980f4b912464736f6c63430006060033",
  "is_contract": true,
  "verified": true,
  "verification": {
    "address": "0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4",
    "compiler": "0.6.6+commit.6c089d02.Emscripten.clang",
    "contract": "contracts/CookDEXV2Router02.sol:CookDEXV2Router02",
    "verified": true,
    "match": "runtime-with-metadata",
    "creation_verified": true,
    "factory_deployment": null,
    "constructor_arguments": "0000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da869",
    "verified_at": "2026-10-01T18:56:47.148Z",
    "chain_id": 20261001,
    "abi": [
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "factory_",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "wrappedNative_",
            "type": "address"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "constructor"
      },
      {
        "inputs": [],
        "name": "WETH",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "tokenA",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "tokenB",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amountADesired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountBDesired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountAMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountBMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "addLiquidity",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountA",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountB",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenDesired",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETHMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "addLiquidityETH",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountToken",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETH",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          }
        ],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [],
        "name": "factory",
        "outputs": [
          {
            "internalType": "address",
            "name": "",
            "type": "address"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveOut",
            "type": "uint256"
          }
        ],
        "name": "getAmountIn",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          }
        ],
        "stateMutability": "pure",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveOut",
            "type": "uint256"
          }
        ],
        "name": "getAmountOut",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          }
        ],
        "stateMutability": "pure",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          }
        ],
        "name": "getAmountsIn",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          }
        ],
        "name": "getAmountsOut",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "view",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountA",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveA",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "reserveB",
            "type": "uint256"
          }
        ],
        "name": "quote",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountB",
            "type": "uint256"
          }
        ],
        "stateMutability": "pure",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "tokenA",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "tokenB",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountAMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountBMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "removeLiquidity",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountA",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountB",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETHMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "removeLiquidityETH",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountToken",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETH",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETHMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountETH",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETHMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "approveMax",
            "type": "bool"
          },
          {
            "internalType": "uint8",
            "name": "v",
            "type": "uint8"
          },
          {
            "internalType": "bytes32",
            "name": "r",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "s",
            "type": "bytes32"
          }
        ],
        "name": "removeLiquidityETHWithPermit",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountToken",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETH",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "token",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountTokenMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountETHMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "approveMax",
            "type": "bool"
          },
          {
            "internalType": "uint8",
            "name": "v",
            "type": "uint8"
          },
          {
            "internalType": "bytes32",
            "name": "r",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "s",
            "type": "bytes32"
          }
        ],
        "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountETH",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "address",
            "name": "tokenA",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "tokenB",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "liquidity",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountAMin",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountBMin",
            "type": "uint256"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          },
          {
            "internalType": "bool",
            "name": "approveMax",
            "type": "bool"
          },
          {
            "internalType": "uint8",
            "name": "v",
            "type": "uint8"
          },
          {
            "internalType": "bytes32",
            "name": "r",
            "type": "bytes32"
          },
          {
            "internalType": "bytes32",
            "name": "s",
            "type": "bytes32"
          }
        ],
        "name": "removeLiquidityWithPermit",
        "outputs": [
          {
            "internalType": "uint256",
            "name": "amountA",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountB",
            "type": "uint256"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapETHForExactTokens",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactETHForTokens",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
        "outputs": [],
        "stateMutability": "payable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactTokensForETH",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactTokensForTokens",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountIn",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountOutMin",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
        "outputs": [],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountInMax",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapTokensForExactETH",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "inputs": [
          {
            "internalType": "uint256",
            "name": "amountOut",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "amountInMax",
            "type": "uint256"
          },
          {
            "internalType": "address[]",
            "name": "path",
            "type": "address[]"
          },
          {
            "internalType": "address",
            "name": "to",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "deadline",
            "type": "uint256"
          }
        ],
        "name": "swapTokensForExactTokens",
        "outputs": [
          {
            "internalType": "uint256[]",
            "name": "amounts",
            "type": "uint256[]"
          }
        ],
        "stateMutability": "nonpayable",
        "type": "function"
      },
      {
        "stateMutability": "payable",
        "type": "receive"
      }
    ],
    "input": {
      "language": "Solidity",
      "sources": {
        "@uniswap/lib/contracts/libraries/TransferHelper.sol": {
          "content": "pragma solidity >=0.6.0;\n\n// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false\nlibrary TransferHelper {\n    function safeApprove(address token, address to, uint value) internal {\n        // bytes4(keccak256(bytes('approve(address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: APPROVE_FAILED');\n    }\n\n    function safeTransfer(address token, address to, uint value) internal {\n        // bytes4(keccak256(bytes('transfer(address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FAILED');\n    }\n\n    function safeTransferFrom(address token, address from, address to, uint value) internal {\n        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));\n        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));\n        require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: TRANSFER_FROM_FAILED');\n    }\n\n    function safeTransferETH(address to, uint value) internal {\n        (bool success,) = to.call{value:value}(new bytes(0));\n        require(success, 'TransferHelper: ETH_TRANSFER_FAILED');\n    }\n}\n"
        },
        "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol": {
          "content": "pragma solidity >=0.5.0;\n\ninterface IUniswapV2Factory {\n    event PairCreated(address indexed token0, address indexed token1, address pair, uint);\n\n    function feeTo() external view returns (address);\n    function feeToSetter() external view returns (address);\n\n    function getPair(address tokenA, address tokenB) external view returns (address pair);\n    function allPairs(uint) external view returns (address pair);\n    function allPairsLength() external view returns (uint);\n\n    function createPair(address tokenA, address tokenB) external returns (address pair);\n\n    function setFeeTo(address) external;\n    function setFeeToSetter(address) external;\n}\n"
        },
        "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol": {
          "content": "pragma solidity >=0.5.0;\n\ninterface IUniswapV2Pair {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external pure returns (string memory);\n    function symbol() external pure returns (string memory);\n    function decimals() external pure returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n    function PERMIT_TYPEHASH() external pure returns (bytes32);\n    function nonces(address owner) external view returns (uint);\n\n    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;\n\n    event Mint(address indexed sender, uint amount0, uint amount1);\n    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);\n    event Swap(\n        address indexed sender,\n        uint amount0In,\n        uint amount1In,\n        uint amount0Out,\n        uint amount1Out,\n        address indexed to\n    );\n    event Sync(uint112 reserve0, uint112 reserve1);\n\n    function MINIMUM_LIQUIDITY() external pure returns (uint);\n    function factory() external view returns (address);\n    function token0() external view returns (address);\n    function token1() external view returns (address);\n    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);\n    function price0CumulativeLast() external view returns (uint);\n    function price1CumulativeLast() external view returns (uint);\n    function kLast() external view returns (uint);\n\n    function mint(address to) external returns (uint liquidity);\n    function burn(address to) external returns (uint amount0, uint amount1);\n    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;\n    function skim(address to) external;\n    function sync() external;\n\n    function initialize(address, address) external;\n}\n"
        },
        "@uniswap/v2-periphery/contracts/interfaces/IERC20.sol": {
          "content": "pragma solidity >=0.5.0;\n\ninterface IERC20 {\n    event Approval(address indexed owner, address indexed spender, uint value);\n    event Transfer(address indexed from, address indexed to, uint value);\n\n    function name() external view returns (string memory);\n    function symbol() external view returns (string memory);\n    function decimals() external view returns (uint8);\n    function totalSupply() external view returns (uint);\n    function balanceOf(address owner) external view returns (uint);\n    function allowance(address owner, address spender) external view returns (uint);\n\n    function approve(address spender, uint value) external returns (bool);\n    function transfer(address to, uint value) external returns (bool);\n    function transferFrom(address from, address to, uint value) external returns (bool);\n}\n"
        },
        "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol": {
          "content": "pragma solidity >=0.6.2;\n\ninterface IUniswapV2Router01 {\n    function factory() external pure returns (address);\n    function WETH() external pure returns (address);\n\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint amountADesired,\n        uint amountBDesired,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountA, uint amountB, uint liquidity);\n    function addLiquidityETH(\n        address token,\n        uint amountTokenDesired,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountA, uint amountB);\n    function removeLiquidityETH(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountToken, uint amountETH);\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountA, uint amountB);\n    function removeLiquidityETHWithPermit(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountToken, uint amountETH);\n    function swapExactTokensForTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external returns (uint[] memory amounts);\n    function swapTokensForExactTokens(\n        uint amountOut,\n        uint amountInMax,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external returns (uint[] memory amounts);\n    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        payable\n        returns (uint[] memory amounts);\n    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n        external\n        returns (uint[] memory amounts);\n    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        returns (uint[] memory amounts);\n    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n        external\n        payable\n        returns (uint[] memory amounts);\n\n    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);\n    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);\n    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);\n    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);\n    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);\n}\n"
        },
        "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol": {
          "content": "pragma solidity >=0.6.2;\n\nimport './IUniswapV2Router01.sol';\n\ninterface IUniswapV2Router02 is IUniswapV2Router01 {\n    function removeLiquidityETHSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external returns (uint amountETH);\n    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external returns (uint amountETH);\n\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external;\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external payable;\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external;\n}\n"
        },
        "@uniswap/v2-periphery/contracts/interfaces/IWETH.sol": {
          "content": "pragma solidity >=0.5.0;\n\ninterface IWETH {\n    function deposit() external payable;\n    function transfer(address to, uint value) external returns (bool);\n    function withdraw(uint) external;\n}\n"
        },
        "@uniswap/v2-periphery/contracts/libraries/SafeMath.sol": {
          "content": "pragma solidity =0.6.6;\n\n// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)\n\nlibrary SafeMath {\n    function add(uint x, uint y) internal pure returns (uint z) {\n        require((z = x + y) >= x, 'ds-math-add-overflow');\n    }\n\n    function sub(uint x, uint y) internal pure returns (uint z) {\n        require((z = x - y) <= x, 'ds-math-sub-underflow');\n    }\n\n    function mul(uint x, uint y) internal pure returns (uint z) {\n        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');\n    }\n}\n"
        },
        "contracts/CookDEXV2Router02.sol": {
          "content": "// SPDX-License-Identifier: GPL-2.0-or-later\npragma solidity =0.6.6;\n\nimport \"./v2/CookDEXV2RouterCore.sol\";\n\n/// @notice Standard Uniswap V2 Router02 deployed for CookDEX.\ncontract CookDEXV2Router02 is CookDEXV2RouterCore {\n    constructor(address factory_, address wrappedNative_)\n        public\n        CookDEXV2RouterCore(factory_, wrappedNative_)\n    {}\n}\n"
        },
        "contracts/v2/CookDEXV2Library.sol": {
          "content": "pragma solidity >=0.5.0;\n\nimport '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';\n\nimport \"@uniswap/v2-periphery/contracts/libraries/SafeMath.sol\";\nimport \"@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol\";\n\nlibrary CookDEXV2Library {\n    using SafeMath for uint;\n\n    // returns sorted token addresses, used to handle return values from pairs sorted in this order\n    function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) {\n        require(tokenA != tokenB, 'CookDEXV2Library: IDENTICAL_ADDRESSES');\n        (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);\n        require(token0 != address(0), 'CookDEXV2Library: ZERO_ADDRESS');\n    }\n\n    // Resolve the factory's actual pair; never assume a foreign init-code hash.\n    function pairFor(address factory, address tokenA, address tokenB) internal view returns (address pair) {\n        pair = IUniswapV2Factory(factory).getPair(tokenA, tokenB);\n        require(pair != address(0), \"CookDEXV2Library: PAIR_NOT_FOUND\");\n    }\n\n    // fetches and sorts the reserves for a pair\n    function getReserves(address factory, address tokenA, address tokenB) internal view returns (uint reserveA, uint reserveB) {\n        (address token0,) = sortTokens(tokenA, tokenB);\n        (uint reserve0, uint reserve1,) = IUniswapV2Pair(pairFor(factory, tokenA, tokenB)).getReserves();\n        (reserveA, reserveB) = tokenA == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n    }\n\n    // given some amount of an asset and pair reserves, returns an equivalent amount of the other asset\n    function quote(uint amountA, uint reserveA, uint reserveB) internal pure returns (uint amountB) {\n        require(amountA > 0, 'CookDEXV2Library: INSUFFICIENT_AMOUNT');\n        require(reserveA > 0 && reserveB > 0, 'CookDEXV2Library: INSUFFICIENT_LIQUIDITY');\n        amountB = amountA.mul(reserveB) / reserveA;\n    }\n\n    // given an input amount of an asset and pair reserves, returns the maximum output amount of the other asset\n    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) internal pure returns (uint amountOut) {\n        require(amountIn > 0, 'CookDEXV2Library: INSUFFICIENT_INPUT_AMOUNT');\n        require(reserveIn > 0 && reserveOut > 0, 'CookDEXV2Library: INSUFFICIENT_LIQUIDITY');\n        uint amountInWithFee = amountIn.mul(997);\n        uint numerator = amountInWithFee.mul(reserveOut);\n        uint denominator = reserveIn.mul(1000).add(amountInWithFee);\n        amountOut = numerator / denominator;\n    }\n\n    // given an output amount of an asset and pair reserves, returns a required input amount of the other asset\n    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) internal pure returns (uint amountIn) {\n        require(amountOut > 0, 'CookDEXV2Library: INSUFFICIENT_OUTPUT_AMOUNT');\n        require(reserveIn > 0 && reserveOut > 0, 'CookDEXV2Library: INSUFFICIENT_LIQUIDITY');\n        uint numerator = reserveIn.mul(amountOut).mul(1000);\n        uint denominator = reserveOut.sub(amountOut).mul(997);\n        amountIn = (numerator / denominator).add(1);\n    }\n\n    // performs chained getAmountOut calculations on any number of pairs\n    function getAmountsOut(address factory, uint amountIn, address[] memory path) internal view returns (uint[] memory amounts) {\n        require(path.length >= 2, 'CookDEXV2Library: INVALID_PATH');\n        amounts = new uint[](path.length);\n        amounts[0] = amountIn;\n        for (uint i; i < path.length - 1; i++) {\n            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i], path[i + 1]);\n            amounts[i + 1] = getAmountOut(amounts[i], reserveIn, reserveOut);\n        }\n    }\n\n    // performs chained getAmountIn calculations on any number of pairs\n    function getAmountsIn(address factory, uint amountOut, address[] memory path) internal view returns (uint[] memory amounts) {\n        require(path.length >= 2, 'CookDEXV2Library: INVALID_PATH');\n        amounts = new uint[](path.length);\n        amounts[amounts.length - 1] = amountOut;\n        for (uint i = path.length - 1; i > 0; i--) {\n            (uint reserveIn, uint reserveOut) = getReserves(factory, path[i - 1], path[i]);\n            amounts[i - 1] = getAmountIn(amounts[i], reserveIn, reserveOut);\n        }\n    }\n}\n"
        },
        "contracts/v2/CookDEXV2RouterCore.sol": {
          "content": "pragma solidity =0.6.6;\n\nimport '@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol';\nimport '@uniswap/lib/contracts/libraries/TransferHelper.sol';\n\nimport '@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol';\nimport './CookDEXV2Library.sol';\nimport '@uniswap/v2-periphery/contracts/libraries/SafeMath.sol';\nimport '@uniswap/v2-periphery/contracts/interfaces/IERC20.sol';\nimport '@uniswap/v2-periphery/contracts/interfaces/IWETH.sol';\n\ncontract CookDEXV2RouterCore is IUniswapV2Router02 {\n    using SafeMath for uint;\n\n    address public immutable override factory;\n    address public immutable override WETH;\n\n    modifier ensure(uint deadline) {\n        require(deadline >= block.timestamp, 'UniswapV2Router: EXPIRED');\n        _;\n    }\n\n    constructor(address _factory, address _WETH) public {\n        factory = _factory;\n        WETH = _WETH;\n    }\n\n    receive() external payable {\n        assert(msg.sender == WETH); // only accept ETH via fallback from the WETH contract\n    }\n\n    // **** ADD LIQUIDITY ****\n    function _addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint amountADesired,\n        uint amountBDesired,\n        uint amountAMin,\n        uint amountBMin\n    ) internal virtual returns (uint amountA, uint amountB) {\n        // create the pair if it doesn't exist yet\n        if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {\n            IUniswapV2Factory(factory).createPair(tokenA, tokenB);\n        }\n        (uint reserveA, uint reserveB) = CookDEXV2Library.getReserves(factory, tokenA, tokenB);\n        if (reserveA == 0 && reserveB == 0) {\n            (amountA, amountB) = (amountADesired, amountBDesired);\n        } else {\n            uint amountBOptimal = CookDEXV2Library.quote(amountADesired, reserveA, reserveB);\n            if (amountBOptimal <= amountBDesired) {\n                require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n                (amountA, amountB) = (amountADesired, amountBOptimal);\n            } else {\n                uint amountAOptimal = CookDEXV2Library.quote(amountBDesired, reserveB, reserveA);\n                assert(amountAOptimal <= amountADesired);\n                require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n                (amountA, amountB) = (amountAOptimal, amountBDesired);\n            }\n        }\n    }\n    function addLiquidity(\n        address tokenA,\n        address tokenB,\n        uint amountADesired,\n        uint amountBDesired,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) external virtual override ensure(deadline) returns (uint amountA, uint amountB, uint liquidity) {\n        (amountA, amountB) = _addLiquidity(tokenA, tokenB, amountADesired, amountBDesired, amountAMin, amountBMin);\n        address pair = CookDEXV2Library.pairFor(factory, tokenA, tokenB);\n        TransferHelper.safeTransferFrom(tokenA, msg.sender, pair, amountA);\n        TransferHelper.safeTransferFrom(tokenB, msg.sender, pair, amountB);\n        liquidity = IUniswapV2Pair(pair).mint(to);\n    }\n    function addLiquidityETH(\n        address token,\n        uint amountTokenDesired,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) external virtual override payable ensure(deadline) returns (uint amountToken, uint amountETH, uint liquidity) {\n        (amountToken, amountETH) = _addLiquidity(\n            token,\n            WETH,\n            amountTokenDesired,\n            msg.value,\n            amountTokenMin,\n            amountETHMin\n        );\n        address pair = CookDEXV2Library.pairFor(factory, token, WETH);\n        TransferHelper.safeTransferFrom(token, msg.sender, pair, amountToken);\n        IWETH(WETH).deposit{value: amountETH}();\n        assert(IWETH(WETH).transfer(pair, amountETH));\n        liquidity = IUniswapV2Pair(pair).mint(to);\n        // refund dust eth, if any\n        if (msg.value > amountETH) TransferHelper.safeTransferETH(msg.sender, msg.value - amountETH);\n    }\n\n    // **** REMOVE LIQUIDITY ****\n    function removeLiquidity(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline\n    ) public virtual override ensure(deadline) returns (uint amountA, uint amountB) {\n        address pair = CookDEXV2Library.pairFor(factory, tokenA, tokenB);\n        IUniswapV2Pair(pair).transferFrom(msg.sender, pair, liquidity); // send liquidity to pair\n        (uint amount0, uint amount1) = IUniswapV2Pair(pair).burn(to);\n        (address token0,) = CookDEXV2Library.sortTokens(tokenA, tokenB);\n        (amountA, amountB) = tokenA == token0 ? (amount0, amount1) : (amount1, amount0);\n        require(amountA >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');\n        require(amountB >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');\n    }\n    function removeLiquidityETH(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) public virtual override ensure(deadline) returns (uint amountToken, uint amountETH) {\n        (amountToken, amountETH) = removeLiquidity(\n            token,\n            WETH,\n            liquidity,\n            amountTokenMin,\n            amountETHMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(token, to, amountToken);\n        IWETH(WETH).withdraw(amountETH);\n        TransferHelper.safeTransferETH(to, amountETH);\n    }\n    function removeLiquidityWithPermit(\n        address tokenA,\n        address tokenB,\n        uint liquidity,\n        uint amountAMin,\n        uint amountBMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external virtual override returns (uint amountA, uint amountB) {\n        address pair = CookDEXV2Library.pairFor(factory, tokenA, tokenB);\n        uint value = approveMax ? uint(-1) : liquidity;\n        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n        (amountA, amountB) = removeLiquidity(tokenA, tokenB, liquidity, amountAMin, amountBMin, to, deadline);\n    }\n    function removeLiquidityETHWithPermit(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external virtual override returns (uint amountToken, uint amountETH) {\n        address pair = CookDEXV2Library.pairFor(factory, token, WETH);\n        uint value = approveMax ? uint(-1) : liquidity;\n        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n        (amountToken, amountETH) = removeLiquidityETH(token, liquidity, amountTokenMin, amountETHMin, to, deadline);\n    }\n\n    // **** REMOVE LIQUIDITY (supporting fee-on-transfer tokens) ****\n    function removeLiquidityETHSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline\n    ) public virtual override ensure(deadline) returns (uint amountETH) {\n        (, amountETH) = removeLiquidity(\n            token,\n            WETH,\n            liquidity,\n            amountTokenMin,\n            amountETHMin,\n            address(this),\n            deadline\n        );\n        TransferHelper.safeTransfer(token, to, IERC20(token).balanceOf(address(this)));\n        IWETH(WETH).withdraw(amountETH);\n        TransferHelper.safeTransferETH(to, amountETH);\n    }\n    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(\n        address token,\n        uint liquidity,\n        uint amountTokenMin,\n        uint amountETHMin,\n        address to,\n        uint deadline,\n        bool approveMax, uint8 v, bytes32 r, bytes32 s\n    ) external virtual override returns (uint amountETH) {\n        address pair = CookDEXV2Library.pairFor(factory, token, WETH);\n        uint value = approveMax ? uint(-1) : liquidity;\n        IUniswapV2Pair(pair).permit(msg.sender, address(this), value, deadline, v, r, s);\n        amountETH = removeLiquidityETHSupportingFeeOnTransferTokens(\n            token, liquidity, amountTokenMin, amountETHMin, to, deadline\n        );\n    }\n\n    // **** SWAP ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swap(uint[] memory amounts, address[] memory path, address _to) internal virtual {\n        for (uint i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0,) = CookDEXV2Library.sortTokens(input, output);\n            uint amountOut = amounts[i + 1];\n            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOut) : (amountOut, uint(0));\n            address to = i < path.length - 2 ? CookDEXV2Library.pairFor(factory, output, path[i + 2]) : _to;\n            IUniswapV2Pair(CookDEXV2Library.pairFor(factory, input, output)).swap(\n                amount0Out, amount1Out, to, new bytes(0)\n            );\n        }\n    }\n    function swapExactTokensForTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\n        amounts = CookDEXV2Library.getAmountsOut(factory, amountIn, path);\n        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n    function swapTokensForExactTokens(\n        uint amountOut,\n        uint amountInMax,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external virtual override ensure(deadline) returns (uint[] memory amounts) {\n        amounts = CookDEXV2Library.getAmountsIn(factory, amountOut, path);\n        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n        );\n        _swap(amounts, path, to);\n    }\n    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        virtual\n        override\n        payable\n        ensure(deadline)\n        returns (uint[] memory amounts)\n    {\n        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n        amounts = CookDEXV2Library.getAmountsOut(factory, msg.value, path);\n        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n        IWETH(WETH).deposit{value: amounts[0]}();\n        assert(IWETH(WETH).transfer(CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n        _swap(amounts, path, to);\n    }\n    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint[] memory amounts)\n    {\n        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n        amounts = CookDEXV2Library.getAmountsIn(factory, amountOut, path);\n        require(amounts[0] <= amountInMax, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\n    }\n    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)\n        external\n        virtual\n        override\n        ensure(deadline)\n        returns (uint[] memory amounts)\n    {\n        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n        amounts = CookDEXV2Library.getAmountsOut(factory, amountIn, path);\n        require(amounts[amounts.length - 1] >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]\n        );\n        _swap(amounts, path, address(this));\n        IWETH(WETH).withdraw(amounts[amounts.length - 1]);\n        TransferHelper.safeTransferETH(to, amounts[amounts.length - 1]);\n    }\n    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)\n        external\n        virtual\n        override\n        payable\n        ensure(deadline)\n        returns (uint[] memory amounts)\n    {\n        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n        amounts = CookDEXV2Library.getAmountsIn(factory, amountOut, path);\n        require(amounts[0] <= msg.value, 'UniswapV2Router: EXCESSIVE_INPUT_AMOUNT');\n        IWETH(WETH).deposit{value: amounts[0]}();\n        assert(IWETH(WETH).transfer(CookDEXV2Library.pairFor(factory, path[0], path[1]), amounts[0]));\n        _swap(amounts, path, to);\n        // refund dust eth, if any\n        if (msg.value > amounts[0]) TransferHelper.safeTransferETH(msg.sender, msg.value - amounts[0]);\n    }\n\n    // **** SWAP (supporting fee-on-transfer tokens) ****\n    // requires the initial amount to have already been sent to the first pair\n    function _swapSupportingFeeOnTransferTokens(address[] memory path, address _to) internal virtual {\n        for (uint i; i < path.length - 1; i++) {\n            (address input, address output) = (path[i], path[i + 1]);\n            (address token0,) = CookDEXV2Library.sortTokens(input, output);\n            IUniswapV2Pair pair = IUniswapV2Pair(CookDEXV2Library.pairFor(factory, input, output));\n            uint amountInput;\n            uint amountOutput;\n            { // scope to avoid stack too deep errors\n            (uint reserve0, uint reserve1,) = pair.getReserves();\n            (uint reserveInput, uint reserveOutput) = input == token0 ? (reserve0, reserve1) : (reserve1, reserve0);\n            amountInput = IERC20(input).balanceOf(address(pair)).sub(reserveInput);\n            amountOutput = CookDEXV2Library.getAmountOut(amountInput, reserveInput, reserveOutput);\n            }\n            (uint amount0Out, uint amount1Out) = input == token0 ? (uint(0), amountOutput) : (amountOutput, uint(0));\n            address to = i < path.length - 2 ? CookDEXV2Library.pairFor(factory, output, path[i + 2]) : _to;\n            pair.swap(amount0Out, amount1Out, to, new bytes(0));\n        }\n    }\n    function swapExactTokensForTokensSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    ) external virtual override ensure(deadline) {\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amountIn\n        );\n        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\n        );\n    }\n    function swapExactETHForTokensSupportingFeeOnTransferTokens(\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    )\n        external\n        virtual\n        override\n        payable\n        ensure(deadline)\n    {\n        require(path[0] == WETH, 'UniswapV2Router: INVALID_PATH');\n        uint amountIn = msg.value;\n        IWETH(WETH).deposit{value: amountIn}();\n        assert(IWETH(WETH).transfer(CookDEXV2Library.pairFor(factory, path[0], path[1]), amountIn));\n        uint balanceBefore = IERC20(path[path.length - 1]).balanceOf(to);\n        _swapSupportingFeeOnTransferTokens(path, to);\n        require(\n            IERC20(path[path.length - 1]).balanceOf(to).sub(balanceBefore) >= amountOutMin,\n            'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT'\n        );\n    }\n    function swapExactTokensForETHSupportingFeeOnTransferTokens(\n        uint amountIn,\n        uint amountOutMin,\n        address[] calldata path,\n        address to,\n        uint deadline\n    )\n        external\n        virtual\n        override\n        ensure(deadline)\n    {\n        require(path[path.length - 1] == WETH, 'UniswapV2Router: INVALID_PATH');\n        TransferHelper.safeTransferFrom(\n            path[0], msg.sender, CookDEXV2Library.pairFor(factory, path[0], path[1]), amountIn\n        );\n        _swapSupportingFeeOnTransferTokens(path, address(this));\n        uint amountOut = IERC20(WETH).balanceOf(address(this));\n        require(amountOut >= amountOutMin, 'UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT');\n        IWETH(WETH).withdraw(amountOut);\n        TransferHelper.safeTransferETH(to, amountOut);\n    }\n\n    // **** LIBRARY FUNCTIONS ****\n    function quote(uint amountA, uint reserveA, uint reserveB) public pure virtual override returns (uint amountB) {\n        return CookDEXV2Library.quote(amountA, reserveA, reserveB);\n    }\n\n    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut)\n        public\n        pure\n        virtual\n        override\n        returns (uint amountOut)\n    {\n        return CookDEXV2Library.getAmountOut(amountIn, reserveIn, reserveOut);\n    }\n\n    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut)\n        public\n        pure\n        virtual\n        override\n        returns (uint amountIn)\n    {\n        return CookDEXV2Library.getAmountIn(amountOut, reserveIn, reserveOut);\n    }\n\n    function getAmountsOut(uint amountIn, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint[] memory amounts)\n    {\n        return CookDEXV2Library.getAmountsOut(factory, amountIn, path);\n    }\n\n    function getAmountsIn(uint amountOut, address[] memory path)\n        public\n        view\n        virtual\n        override\n        returns (uint[] memory amounts)\n    {\n        return CookDEXV2Library.getAmountsIn(factory, amountOut, path);\n    }\n}\n"
        }
      },
      "settings": {
        "optimizer": {
          "enabled": true,
          "runs": 999999
        },
        "outputSelection": {
          "contracts/CookDEXV2Router02.sol": {
            "CookDEXV2Router02": [
              "abi",
              "metadata",
              "evm.bytecode",
              "evm.deployedBytecode"
            ],
            "": [
              "ast"
            ]
          }
        }
      }
    },
    "metadata": {
      "compiler": {
        "version": "0.6.6+commit.6c089d02"
      },
      "language": "Solidity",
      "output": {
        "abi": [
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "factory_",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "wrappedNative_",
                "type": "address"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "constructor"
          },
          {
            "inputs": [],
            "name": "WETH",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "tokenA",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "tokenB",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "amountADesired",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountBDesired",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountAMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountBMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "addLiquidity",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountA",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountB",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenDesired",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETHMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "addLiquidityETH",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountToken",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETH",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              }
            ],
            "stateMutability": "payable",
            "type": "function"
          },
          {
            "inputs": [],
            "name": "factory",
            "outputs": [
              {
                "internalType": "address",
                "name": "",
                "type": "address"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveOut",
                "type": "uint256"
              }
            ],
            "name": "getAmountIn",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              }
            ],
            "stateMutability": "pure",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveOut",
                "type": "uint256"
              }
            ],
            "name": "getAmountOut",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              }
            ],
            "stateMutability": "pure",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              }
            ],
            "name": "getAmountsIn",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              }
            ],
            "name": "getAmountsOut",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "view",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountA",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveA",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "reserveB",
                "type": "uint256"
              }
            ],
            "name": "quote",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountB",
                "type": "uint256"
              }
            ],
            "stateMutability": "pure",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "tokenA",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "tokenB",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountAMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountBMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "removeLiquidity",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountA",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountB",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETHMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "removeLiquidityETH",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountToken",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETH",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETHMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "removeLiquidityETHSupportingFeeOnTransferTokens",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountETH",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETHMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              },
              {
                "internalType": "bool",
                "name": "approveMax",
                "type": "bool"
              },
              {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
              },
              {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
              }
            ],
            "name": "removeLiquidityETHWithPermit",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountToken",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETH",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "token",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountTokenMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountETHMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              },
              {
                "internalType": "bool",
                "name": "approveMax",
                "type": "bool"
              },
              {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
              },
              {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
              }
            ],
            "name": "removeLiquidityETHWithPermitSupportingFeeOnTransferTokens",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountETH",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "address",
                "name": "tokenA",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "tokenB",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "liquidity",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountAMin",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountBMin",
                "type": "uint256"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              },
              {
                "internalType": "bool",
                "name": "approveMax",
                "type": "bool"
              },
              {
                "internalType": "uint8",
                "name": "v",
                "type": "uint8"
              },
              {
                "internalType": "bytes32",
                "name": "r",
                "type": "bytes32"
              },
              {
                "internalType": "bytes32",
                "name": "s",
                "type": "bytes32"
              }
            ],
            "name": "removeLiquidityWithPermit",
            "outputs": [
              {
                "internalType": "uint256",
                "name": "amountA",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountB",
                "type": "uint256"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapETHForExactTokens",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "payable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactETHForTokens",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "payable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactETHForTokensSupportingFeeOnTransferTokens",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactTokensForETH",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactTokensForETHSupportingFeeOnTransferTokens",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactTokensForTokens",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountIn",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountOutMin",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapExactTokensForTokensSupportingFeeOnTransferTokens",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountInMax",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapTokensForExactETH",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "inputs": [
              {
                "internalType": "uint256",
                "name": "amountOut",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "amountInMax",
                "type": "uint256"
              },
              {
                "internalType": "address[]",
                "name": "path",
                "type": "address[]"
              },
              {
                "internalType": "address",
                "name": "to",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "deadline",
                "type": "uint256"
              }
            ],
            "name": "swapTokensForExactTokens",
            "outputs": [
              {
                "internalType": "uint256[]",
                "name": "amounts",
                "type": "uint256[]"
              }
            ],
            "stateMutability": "nonpayable",
            "type": "function"
          },
          {
            "stateMutability": "payable",
            "type": "receive"
          }
        ],
        "devdoc": {
          "methods": {}
        },
        "userdoc": {
          "methods": {},
          "notice": "Standard Uniswap V2 Router02 deployed for CookDEX."
        }
      },
      "settings": {
        "compilationTarget": {
          "contracts/CookDEXV2Router02.sol": "CookDEXV2Router02"
        },
        "evmVersion": "istanbul",
        "libraries": {},
        "metadata": {
          "bytecodeHash": "ipfs"
        },
        "optimizer": {
          "enabled": true,
          "runs": 999999
        },
        "remappings": []
      },
      "sources": {
        "@uniswap/lib/contracts/libraries/TransferHelper.sol": {
          "keccak256": "0x0920a26df9837a073c6b24c4e2542d9409c173748e0c6728a1ae39ce5c368899",
          "urls": [
            "bzz-raw://46c191c0fc6452e0c1c75725b4f577309cc20f081f85a1d10f706d0d9127297e",
            "dweb:/ipfs/QmVuExKwURcyQVax2YDKZqYZELwjNQ4KRyLnKwvHD8rz44"
          ]
        },
        "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol": {
          "keccak256": "0xe5905c0989cf5a865ed9bb7b9252536ca011c5b744017a82a7d4443b9c00a891",
          "urls": [
            "bzz-raw://5d2a90a0a796491507462a3da18c3f8819721d571572d765a2207c35bf0a0389",
            "dweb:/ipfs/Qmf9ACYiT3qzjgsYuhm866FBdiBpRMXAPpQhSFbgqcyhHt"
          ]
        },
        "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol": {
          "keccak256": "0x7c9bc70e5996c763e02ff38905282bc24fb242b0ef2519a003b36824fc524a4b",
          "urls": [
            "bzz-raw://85d5ad2dd23ee127f40907a12865a1e8cb5828814f6f2480285e1827dd72dedf",
            "dweb:/ipfs/QmayKQWJgWmr46DqWseADyUanmqxh662hPNdAkdHRjiQQH"
          ]
        },
        "@uniswap/v2-periphery/contracts/interfaces/IERC20.sol": {
          "keccak256": "0x61db17aebc5d812c7002d15c1da954065e56abe49d64b14c034abe5604d70eb3",
          "urls": [
            "bzz-raw://b006685e753f9120469f10b09c159f222d4cb8b507a6c1f0c14ed50c883ebe66",
            "dweb:/ipfs/QmSyY7iTugbczPwfGK67etiyPULenYGzzRYbt8aabwwkUb"
          ]
        },
        "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol": {
          "keccak256": "0x8a3c5c449d4b7cd76513ed6995f4b86e4a86f222c770f8442f5fc128ce29b4d2",
          "urls": [
            "bzz-raw://1df63ca373dafae3bd0ee7fe70f890a1dc7c45ed869c01de68413e0e97ff9deb",
            "dweb:/ipfs/QmefJgEYGUL8KX7kQKYTrDweF8GB7yjy3nw5Bmqzryg7PG"
          ]
        },
        "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol": {
          "keccak256": "0x744e30c133bd0f7ca9e7163433cf6d72f45c6bb1508c2c9c02f1a6db796ae59d",
          "urls": [
            "bzz-raw://9bf2f4454ad63d4cff03a0630e787d9e8a9deed80aec89682cd8ad6379d9ef8c",
            "dweb:/ipfs/Qme51hQNR2wpax7ooUadhtqLtXm8ffeVVYyubLkTT4wMCG"
          ]
        },
        "@uniswap/v2-periphery/contracts/interfaces/IWETH.sol": {
          "keccak256": "0xfc10758fd8dba790c39468dccd358cb7cef06ae7c4781832cc7aa76f91f167e6",
          "urls": [
            "bzz-raw://dc22493dea6c60d47835eeba53726f8a6f76f4fcd798d40e54608a1380515d49",
            "dweb:/ipfs/QmS1QVcBRH4TELYNE7XCfjSVQEWFupyaNLKmMkKH7iPjrm"
          ]
        },
        "@uniswap/v2-periphery/contracts/libraries/SafeMath.sol": {
          "keccak256": "0x27f0ea82f879b3b01387b583e6d9d0ec858dca3b22b0aad173f8fbda06e761e1",
          "urls": [
            "bzz-raw://0db9cf37793eb7035f0bfced36323d240f0212150009c39a3a108701d9b50b6c",
            "dweb:/ipfs/QmUAdiG9XNcieXkKfiMB49zQqD34FbXFE15csV2KQzwEqg"
          ]
        },
        "contracts/CookDEXV2Router02.sol": {
          "keccak256": "0x703b6258f48cdb79922bf8ca822ebfa0765db91f7787bab9a34cfff81fb99850",
          "urls": [
            "bzz-raw://3cacf0c98f0cc1d70bd005aab74fe3ecc37ae0b7478cbaaaca940a06e20be451",
            "dweb:/ipfs/QmQD72kcmdV5BvGxDazSZAhJiquEJtp1wxww459t6AW548"
          ]
        },
        "contracts/v2/CookDEXV2Library.sol": {
          "keccak256": "0x13fdaabfd1245324ad92c6a7e5484384405194c98af9ebbb01f11876c8cc6603",
          "urls": [
            "bzz-raw://3aba9a05f64154612387179d63bf8b6473ed07f8a7e03442e7a57b996a25dd57",
            "dweb:/ipfs/QmU5E4i1kSUe3fcMvFvyhAxRuFWqSGcHpgXygJ2cPEtFZz"
          ]
        },
        "contracts/v2/CookDEXV2RouterCore.sol": {
          "keccak256": "0x5e654f353fe3287dc54308cd173f78f11cc24d1f75b0425160d1cacfaf02d5b5",
          "urls": [
            "bzz-raw://af31f6271d4bbd87bdb55e9a1e0f087265cae7e74cb67fb39362558bc8273138",
            "dweb:/ipfs/QmZfLi1zxEzgTmmtFb68dcdsPAUcwzM9BbXghox5PPAqPR"
          ]
        }
      },
      "version": 1
    }
  },
  "deployment": {
    "txid": "0xb24fe931d698ad6d8d95f2ed9ef333a858fc7feb313cdb85559cd923255c73fb",
    "hash": "0xb24fe931d698ad6d8d95f2ed9ef333a858fc7feb313cdb85559cd923255c73fb",
    "sender": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
    "recipient": "0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4",
    "amount_dec": "0",
    "value_raw": "0",
    "fee_dec": "0.00000004771346",
    "fee_raw": "47713460000",
    "asset": "COOK",
    "timestamp_ms": 1790880922000,
    "block": 14761,
    "status": "Success",
    "kind": "Contract creation",
    "source": "EVM",
    "nonce": 67,
    "transaction_type": 2,
    "gas_limit": "4810381",
    "gas_used": "4771346",
    "gas_price_wei": "10000",
    "gas_price_gwei": "0.00001",
    "data_hex": "0x60c06040523480156200001157600080fd5b506040516200577e3803806200577e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155f762000187600039806101ac5280610e5d5280610e985280610fd7528061129a52806116f452806118d85280611e205280611fa45280612074528061217b528061232e52806123c35280612675528061271c52806127f152806128f652806129de5280612a5f52806130ee5280613424528061347a52806134ae528061352f528061374952806138f9528061398e5250806110c952806111c7528061136d52806113a6528061155152806117e652806118b65280611aa35280612261528061240252806125ab5280612a9e5280612de15280613073528061309c52806130cc52806132a95280613458528061382f52806139cd528061448a52806144cd528061482d5280614a0e5280614f89528061506a52806150ea52506155f76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611366945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139c565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114da565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561166b565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ae565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a00565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d99565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612107565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612527565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612534565b34801561096057600080fd5b50610969612673565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612697565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a4565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612884565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d67565b348015610b3157600080fd5b50610969613071565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613095945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c2565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561321a565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a9565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d5565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d67565b9093509150610e96898685613b24565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613d01565b50965096945050505050565b6000610f44848484613e3e565b90505b9392505050565b60608142811015610fc057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111227f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b9150868260018451038151811061113557fe5b60200260200101511015611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b611259868660008181106111a457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123f7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c8565b8560008151811061124c57fe5b60200260200101516141f1565b611298828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506143c1915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e457fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b5050505061135b848360018551038151811061134e57fe5b6020026020010151613d01565b509695505050505050565b60606113937f00000000000000000000000000000000000000000000000000000000000000008484614648565b90505b92915050565b60008060006113cc7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c8565b90506000876113db578c6113fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149957600080fd5b505af11580156114ad573d6000803e3d6000fd5b505050506114c08f8f8f8f8f8f8f612d67565b809450819550505050509b509b9950505050505050505050565b6060814281101561154c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115aa7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106115bd57fe5b6020026020010151101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b61162c868660008181106111a457fe5b61135b828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b606081428110156116dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183f7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061184f57fe5b60200260200101511115611194576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b6000806118fc7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c8565b905060008661190b578b61192d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505050506119ef8d8d8d8d8d8d6126a4565b9d9c50505050505050505050505050565b8042811015611a7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611aff85856000818110611a8057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af97f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121d57fe5b8a6141f1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc857600080fd5b505afa158015611bdc573d6000803e3d6000fd5b505050506040513d6020811015611bf257600080fd5b50516040805160208881028281018201909352888252929350611c349290918991899182918501908490808284376000920191909152508892506147d6915050565b86611d388288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b505afa158015611d14573d6000803e3d6000fd5b505050506040513d6020811015611d2a57600080fd5b50519063ffffffff614b6916565b1015611d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1d85856000818110611a8057fe5b611f5b8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506147d6915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b5051905086811015612072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050611d8f8482613d01565b6060814281101561217957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122ba7f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106122cd57fe5b6020026020010151101561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242e7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b8460008151811061243b57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124ac57600080fd5b505af11580156124c0573d6000803e3d6000fd5b505050506040513d60208110156124d657600080fd5b50516124de57fe5b61251d828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b5095945050505050565b6000610f44848484614bdb565b606081428110156125a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126047f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061261457fe5b6020026020010151111561161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cff565b6000814281101561271657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612745887f00000000000000000000000000000000000000000000000000000000000000008989893089612d67565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ef92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127be57600080fd5b505afa1580156127d2573d6000803e3d6000fd5b505050506040513d60208110156127e857600080fd5b5051613b24565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286257600080fd5b505af1158015612876573d6000803e3d6000fd5b5050505061135b8483613d01565b80428110156128f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612aca7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3457600080fd5b505af1158015612b48573d6000803e3d6000fd5b505050506040513d6020811015612b5e57600080fd5b5051612b6657fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2f57600080fd5b505afa158015612c43573d6000803e3d6000fd5b505050506040513d6020811015612c5957600080fd5b50516040805160208981028281018201909352898252929350612c9b9290918a918a9182918501908490808284376000920191909152508992506147d6915050565b87611d388289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612cce57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b6000808242811015612dda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e077f00000000000000000000000000000000000000000000000000000000000000008c8c6140c8565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505050506040513d6020811015612eb257600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050506040513d6040811015612f4f57600080fd5b50805160209091015190925090506000612f698e8e614ddf565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa6578183612fa9565b82825b90975095508a871015613007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b89861015613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113937f00000000000000000000000000000000000000000000000000000000000000008484613f62565b60008060006131127f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c8565b9050600087613121578c613143565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131df57600080fd5b505af11580156131f3573d6000803e3d6000fd5b505050506132058e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329d8c8c8c8c8c8c614f32565b909450925060006132cf7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c8565b90506132dd8d3383886141f1565b6132e98c3383876141f1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336857600080fd5b505af115801561337c573d6000803e3d6000fd5b505050506040513d602081101561339257600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344c8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614f32565b9094509250600061349e7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c8565b90506134ac8b3383886141f1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351457600080fd5b505af1158015613528573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d457600080fd5b505af11580156135e8573d6000803e3d6000fd5b505050506040513d60208110156135fe57600080fd5b505161360657fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368557600080fd5b505af1158015613699573d6000803e3d6000fd5b505050506040513d60208110156136af57600080fd5b50519250348410156136c7576136c733853403613d01565b505096509650969350505050565b6060814281101561374757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138887f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150348260008151811061389857fe5b602002602001015111156138f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061394057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397357600080fd5b505af1158015613987573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f97f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b84600081518110613a0657fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050506040513d6020811015613aa157600080fd5b5051613aa957fe5b613ae8828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b81600081518110613af557fe5b602002602001015134111561251d5761251d3383600081518110613b1557fe5b60200260200101513403613d01565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bfa57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5c576040519150601f19603f3d011682016040523d82523d6000602084013e613c61565b606091505b5091509150818015613c8f575080511580613c8f5750808060200190516020811015613c8c57600080fd5b50515b613cfa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dda576040519150601f19603f3d011682016040523d82523d6000602084013e613ddf565b606091505b5050905080613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155246023913960400191505060405180910390fd5b505050565b6000808411613e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615414602b913960400191505060405180910390fd5b600083118015613ea85750600082115b613efd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000613f11856103e563ffffffff61523316565b90506000613f25828563ffffffff61523316565b90506000613f4b83613f3f886103e863ffffffff61523316565b9063ffffffff6152b916565b9050808281613f5657fe5b04979650505050505050565b6060600282511015613fd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fed57600080fd5b50604051908082528060200260200182016040528015614017578160200160208202803683370190505b509050828160008151811061402857fe5b60200260200101818152505060005b60018351038110156140c05760008061407a8786858151811061405657fe5b602002602001015187866001018151811061406d57fe5b602002602001015161532b565b9150915061409c84848151811061408d57fe5b60200260200101518383613e3e565b8484600101815181106140ab57fe5b60209081029190910101525050600101614037565b509392505050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152915160009286169163e6a43905916044808301926020929190829003018186803b15801561414157600080fd5b505afa158015614155573d6000803e3d6000fd5b505050506040513d602081101561416b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610f4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f436f6f6b44455856324c6962726172793a20504149525f4e4f545f464f554e44604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106142cf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614292565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614331576040519150601f19603f3d011682016040523d82523d6000602084013e614336565b606091505b5091509150818015614364575080511580614364575080806020019051602081101561436157600080fd5b50515b6143b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061559e6024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614642576000808483815181106143df57fe5b60200260200101518584600101815181106143f657fe5b602002602001015191509150600061440e8383614ddf565b509050600087856001018151811061442257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461446a5782600061446e565b6000835b91509150600060028a5103881061448557886144c6565b6144c67f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106144b957fe5b60200260200101516140c8565b90506144f37f000000000000000000000000000000000000000000000000000000000000000088886140c8565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561453d576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145c85781810151838201526020016145b0565b50505050905090810190601f1680156145f55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561461757600080fd5b505af115801561462b573d6000803e3d6000fd5b5050600190990198506143c4975050505050505050565b50505050565b60606002825110156146bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156146d357600080fd5b506040519080825280602002602001820160405280156146fd578160200160208202803683370190505b509050828160018351038151811061471157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140c0576000806147718786600186038151811061475d57fe5b602002602001015187868151811061406d57fe5b9150915061479384848151811061478457fe5b60200260200101518383614bdb565b8460018503815181106147a257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614741565b60005b6001835103811015613e39576000808483815181106147f457fe5b602002602001015185846001018151811061480b57fe5b60200260200101519150915060006148238383614ddf565b50905060006148537f000000000000000000000000000000000000000000000000000000000000000085856140c8565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156148a157600080fd5b505afa1580156148b5573d6000803e3d6000fd5b505050506040513d60608110156148cb57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a811690891614614915578284614918565b83835b9150915061499d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b95506149aa868383613e3e565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ee578260006149f2565b6000835b91509150600060028c51038a10614a09578a614a3d565b614a3d7f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106144b957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aed578181015183820152602001614ad5565b50505050905090810190601f168015614b1a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614b3c57600080fd5b505af1158015614b50573d6000803e3d6000fd5b50506001909b019a506147d99950505050505050505050565b8082038281111561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615572602c913960400191505060405180910390fd5b600083118015614c455750600082115b614c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000614cbe6103e8614cb2868863ffffffff61523316565b9063ffffffff61523316565b90506000614cd86103e5614cb2868963ffffffff614b6916565b9050614cf56001828481614ce857fe5b049063ffffffff6152b916565b9695505050505050565b6000808411614d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154b26025913960400191505060405180910390fd5b600083118015614d695750600082115b614dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b82614dcf858463ffffffff61523316565b81614dd657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154656025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614ea1578284614ea4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614f2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614fd257600080fd5b505afa158015614fe6573d6000803e3d6000fd5b505050506040513d6020811015614ffc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150e257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156150b557600080fd5b505af11580156150c9573d6000803e3d6000fd5b505050506040513d60208110156150df57600080fd5b50505b6000806151107f00000000000000000000000000000000000000000000000000000000000000008b8b61532b565b91509150816000148015615122575080155b1561513257879350869250615226565b600061513f898484614cff565b90508781116151ac57858110156151a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b889450925082615224565b60006151b9898486614cff565b9050898111156151c557fe5b8781101561521e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061524e5750508082028282828161524b57fe5b04145b61139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080600061533a8585614ddf565b50905060008061534b8888886140c8565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561539057600080fd5b505afa1580156153a4573d6000803e3d6000fd5b505050506040513d60608110156153ba57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614615401578082615404565b81815b9099909850965050505050505056fe436f6f6b44455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54436f6f6b44455856324c6962726172793a204944454e544943414c5f414444524553534553436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6f6b44455856324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220cfe93f205c456dc510fd4680508e93f8f99b6ea81926b8ac111f76980f4b912464736f6c634300060600330000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da869",
    "receipt": {
      "blockHash": "0x4af340cd0d3ae7cda81f77f3205446fd52b9d6d37d2101f34526c5d8310c6dda",
      "blockNumber": "0x39a9",
      "contractAddress": "0x086cf2482f13bfcaad24ae55ae083f02ffbd8ef4",
      "cumulativeGasUsed": "0x48ce12",
      "from": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
      "gasUsed": "0x48ce12",
      "effectiveGasPrice": "0x2710",
      "logs": [],
      "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "status": "0x1",
      "to": null,
      "transactionHash": "0xb24fe931d698ad6d8d95f2ed9ef333a858fc7feb313cdb85559cd923255c73fb",
      "transactionIndex": "0x0",
      "type": "0x2"
    },
    "logs": [],
    "raw_transaction": {
      "accessList": [],
      "blockHash": "0x4af340cd0d3ae7cda81f77f3205446fd52b9d6d37d2101f34526c5d8310c6dda",
      "blockNumber": "0x39a9",
      "blockTimestamp": "0x6abeac9a",
      "chainId": "0x1352889",
      "from": "0xdf6e7e94ed8c6fe335c28a8ec50381e9172f7d30",
      "gas": "0x49668d",
      "gasPrice": "0x2710",
      "maxPriorityFeePerGas": "0x2710",
      "maxFeePerGas": "0x2710",
      "hash": "0xb24fe931d698ad6d8d95f2ed9ef333a858fc7feb313cdb85559cd923255c73fb",
      "input": "0x60c06040523480156200001157600080fd5b506040516200577e3803806200577e833981810160405260408110156200003757600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c6155f762000187600039806101ac5280610e5d5280610e985280610fd7528061129a52806116f452806118d85280611e205280611fa45280612074528061217b528061232e52806123c35280612675528061271c52806127f152806128f652806129de5280612a5f52806130ee5280613424528061347a52806134ae528061352f528061374952806138f9528061398e5250806110c952806111c7528061136d52806113a6528061155152806117e652806118b65280611aa35280612261528061240252806125ab5280612a9e5280612de15280613073528061309c52806130cc52806132a95280613458528061382f52806139cd528061448a52806144cd528061482d5280614a0e5280614f89528061506a52806150ea52506155f76000f3fe60806040526004361061018f5760003560e01c80638803dbee116100d6578063c45a01551161007f578063e8e3370011610059578063e8e3370014610c71578063f305d71914610cfe578063fb3bdb4114610d51576101d5565b8063c45a015514610b25578063d06ca61f14610b3a578063ded9382a14610bf1576101d5565b8063af2979eb116100b0578063af2979eb146109c8578063b6f9de9514610a28578063baa2abde14610abb576101d5565b80638803dbee146108af578063ad5c464814610954578063ad615dec14610992576101d5565b80634a25d94a11610138578063791ac94711610112578063791ac947146107415780637ff36ab5146107e657806385f8c25914610879576101d5565b80634a25d94a146105775780635b0d59841461061c5780635c11d7951461069c576101d5565b80631f00ca74116101695780631f00ca74146103905780632195995c1461044757806338ed1739146104d2576101d5565b806302751cec146101da578063054d50d41461025357806318cbafe51461029b576101d5565b366101d5573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101d357fe5b005b600080fd5b3480156101e657600080fd5b5061023a600480360360c08110156101fd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610de4565b6040805192835260208301919091528051918290030190f35b34801561025f57600080fd5b506102896004803603606081101561027657600080fd5b5080359060208101359060400135610f37565b60408051918252519081900360200190f35b3480156102a757600080fd5b50610340600480360360a08110156102be57600080fd5b8135916020810135918101906060810160408201356401000000008111156102e557600080fd5b8201836020820111156102f757600080fd5b8035906020019184602083028401116401000000008311171561031957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f4e565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561037c578181015183820152602001610364565b505050509050019250505060405180910390f35b34801561039c57600080fd5b50610340600480360360408110156103b357600080fd5b813591908101906040810160208201356401000000008111156103d557600080fd5b8201836020820111156103e757600080fd5b8035906020019184602083028401116401000000008311171561040957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611366945050505050565b34801561045357600080fd5b5061023a600480360361016081101561046b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff610100820135169061012081013590610140013561139c565b3480156104de57600080fd5b50610340600480360360a08110156104f557600080fd5b81359160208101359181019060608101604082013564010000000081111561051c57600080fd5b82018360208201111561052e57600080fd5b8035906020019184602083028401116401000000008311171561055057600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356114da565b34801561058357600080fd5b50610340600480360360a081101561059a57600080fd5b8135916020810135918101906060810160408201356401000000008111156105c157600080fd5b8201836020820111156105d357600080fd5b803590602001918460208302840111640100000000831117156105f557600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561166b565b34801561062857600080fd5b50610289600480360361014081101561064057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356118ae565b3480156106a857600080fd5b506101d3600480360360a08110156106bf57600080fd5b8135916020810135918101906060810160408201356401000000008111156106e657600080fd5b8201836020820111156106f857600080fd5b8035906020019184602083028401116401000000008311171561071a57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611a00565b34801561074d57600080fd5b506101d3600480360360a081101561076457600080fd5b81359160208101359181019060608101604082013564010000000081111561078b57600080fd5b82018360208201111561079d57600080fd5b803590602001918460208302840111640100000000831117156107bf57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611d99565b610340600480360360808110156107fc57600080fd5b8135919081019060408101602082013564010000000081111561081e57600080fd5b82018360208201111561083057600080fd5b8035906020019184602083028401116401000000008311171561085257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612107565b34801561088557600080fd5b506102896004803603606081101561089c57600080fd5b5080359060208101359060400135612527565b3480156108bb57600080fd5b50610340600480360360a08110156108d257600080fd5b8135916020810135918101906060810160408201356401000000008111156108f957600080fd5b82018360208201111561090b57600080fd5b8035906020019184602083028401116401000000008311171561092d57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612534565b34801561096057600080fd5b50610969612673565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561099e57600080fd5b50610289600480360360608110156109b557600080fd5b5080359060208101359060400135612697565b3480156109d457600080fd5b50610289600480360360c08110156109eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356126a4565b6101d360048036036080811015610a3e57600080fd5b81359190810190604081016020820135640100000000811115610a6057600080fd5b820183602082011115610a7257600080fd5b80359060200191846020830284011164010000000083111715610a9457600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135612884565b348015610ac757600080fd5b5061023a600480360360e0811015610ade57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135612d67565b348015610b3157600080fd5b50610969613071565b348015610b4657600080fd5b5061034060048036036040811015610b5d57600080fd5b81359190810190604081016020820135640100000000811115610b7f57600080fd5b820183602082011115610b9157600080fd5b80359060200191846020830284011164010000000083111715610bb357600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550613095945050505050565b348015610bfd57600080fd5b5061023a6004803603610140811015610c1557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e082013516906101008101359061012001356130c2565b348015610c7d57600080fd5b50610ce06004803603610100811015610c9557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e0013561321a565b60408051938452602084019290925282820152519081900360600190f35b610ce0600480360360c0811015610d1457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a001356133a9565b61034060048036036080811015610d6757600080fd5b81359190810190604081016020820135640100000000811115610d8957600080fd5b820183602082011115610d9b57600080fd5b80359060200191846020830284011164010000000083111715610dbd57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356136d5565b6000808242811015610e5757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b610e86897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a612d67565b9093509150610e96898685613b24565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050610f2b8583613d01565b50965096945050505050565b6000610f44848484613e3e565b90505b9392505050565b60608142811015610fc057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061102557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110c457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6111227f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b9150868260018451038151811061113557fe5b60200260200101511015611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b611259868660008181106111a457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff163361123f7f00000000000000000000000000000000000000000000000000000000000000008a8a60008181106111f357fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b600181811061121d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff166140c8565b8560008151811061124c57fe5b60200260200101516141f1565b611298828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506143c1915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836001855103815181106112e457fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561132257600080fd5b505af1158015611336573d6000803e3d6000fd5b5050505061135b848360018551038151811061134e57fe5b6020026020010151613d01565b509695505050505050565b60606113937f00000000000000000000000000000000000000000000000000000000000000008484614648565b90505b92915050565b60008060006113cc7f00000000000000000000000000000000000000000000000000000000000000008f8f6140c8565b90506000876113db578c6113fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561149957600080fd5b505af11580156114ad573d6000803e3d6000fd5b505050506114c08f8f8f8f8f8f8f612d67565b809450819550505050509b509b9950505050505050505050565b6060814281101561154c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6115aa7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106115bd57fe5b6020026020010151101561161c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b61162c868660008181106111a457fe5b61135b828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b606081428110156116dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061174257fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b61183f7f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061184f57fe5b60200260200101511115611194576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b6000806118fc7f00000000000000000000000000000000000000000000000000000000000000008d7f00000000000000000000000000000000000000000000000000000000000000006140c8565b905060008661190b578b61192d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018b905260ff8916608482015260a4810188905260c48101879052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156119c957600080fd5b505af11580156119dd573d6000803e3d6000fd5b505050506119ef8d8d8d8d8d8d6126a4565b9d9c50505050505050505050505050565b8042811015611a7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b611aff85856000818110611a8057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633611af97f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a600181811061121d57fe5b8a6141f1565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611b2f57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611bc857600080fd5b505afa158015611bdc573d6000803e3d6000fd5b505050506040513d6020811015611bf257600080fd5b50516040805160208881028281018201909352888252929350611c349290918991899182918501908490808284376000920191909152508892506147d6915050565b86611d388288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611c6757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b505afa158015611d14573d6000803e3d6000fd5b505050506040513d6020811015611d2a57600080fd5b50519063ffffffff614b6916565b1015611d8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b5050505050505050565b8042811015611e0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611e6e57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b611f1d85856000818110611a8057fe5b611f5b8585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152503092506147d6915050565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b158015611feb57600080fd5b505afa158015611fff573d6000803e3d6000fd5b505050506040513d602081101561201557600080fd5b5051905086811015612072576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156120e557600080fd5b505af11580156120f9573d6000803e3d6000fd5b50505050611d8f8482613d01565b6060814281101561217957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106121bd57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461225c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6122ba7f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250613f6292505050565b915086826001845103815181106122cd57fe5b6020026020010151101561232c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615547602b913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061237557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b1580156123a857600080fd5b505af11580156123bc573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61242e7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b8460008151811061243b57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156124ac57600080fd5b505af11580156124c0573d6000803e3d6000fd5b505050506040513d60208110156124d657600080fd5b50516124de57fe5b61251d828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b5095945050505050565b6000610f44848484614bdb565b606081428110156125a657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6126047f00000000000000000000000000000000000000000000000000000000000000008988888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150868260008151811061261457fe5b6020026020010151111561161c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610f44848484614cff565b6000814281101561271657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b612745887f00000000000000000000000000000000000000000000000000000000000000008989893089612d67565b604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290519194506127ef92508a91879173ffffffffffffffffffffffffffffffffffffffff8416916370a0823191602480820192602092909190829003018186803b1580156127be57600080fd5b505afa1580156127d2573d6000803e3d6000fd5b505050506040513d60208110156127e857600080fd5b5051613b24565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561286257600080fd5b505af1158015612876573d6000803e3d6000fd5b5050505061135b8483613d01565b80428110156128f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061293857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a4457600080fd5b505af1158015612a58573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb612aca7f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015612b3457600080fd5b505af1158015612b48573d6000803e3d6000fd5b505050506040513d6020811015612b5e57600080fd5b5051612b6657fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612b9657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c2f57600080fd5b505afa158015612c43573d6000803e3d6000fd5b505050506040513d6020811015612c5957600080fd5b50516040805160208981028281018201909352898252929350612c9b9290918a918a9182918501908490808284376000920191909152508992506147d6915050565b87611d388289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110612cce57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b6000808242811015612dda57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b6000612e077f00000000000000000000000000000000000000000000000000000000000000008c8c6140c8565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b505050506040513d6020811015612eb257600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015612f2557600080fd5b505af1158015612f39573d6000803e3d6000fd5b505050506040513d6040811015612f4f57600080fd5b50805160209091015190925090506000612f698e8e614ddf565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614612fa6578183612fa9565b82825b90975095508a871015613007576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b89861015613060576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606113937f00000000000000000000000000000000000000000000000000000000000000008484613f62565b60008060006131127f00000000000000000000000000000000000000000000000000000000000000008e7f00000000000000000000000000000000000000000000000000000000000000006140c8565b9050600087613121578c613143565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b1580156131df57600080fd5b505af11580156131f3573d6000803e3d6000fd5b505050506132058e8e8e8e8e8e610de4565b909f909e509c50505050505050505050505050565b6000806000834281101561328f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61329d8c8c8c8c8c8c614f32565b909450925060006132cf7f00000000000000000000000000000000000000000000000000000000000000008e8e6140c8565b90506132dd8d3383886141f1565b6132e98c3383876141f1565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561336857600080fd5b505af115801561337c573d6000803e3d6000fd5b505050506040513d602081101561339257600080fd5b5051949d939c50939a509198505050505050505050565b6000806000834281101561341e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b61344c8a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c614f32565b9094509250600061349e7f00000000000000000000000000000000000000000000000000000000000000008c7f00000000000000000000000000000000000000000000000000000000000000006140c8565b90506134ac8b3383886141f1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351457600080fd5b505af1158015613528573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156135d457600080fd5b505af11580156135e8573d6000803e3d6000fd5b505050506040513d60208110156135fe57600080fd5b505161360657fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561368557600080fd5b505af1158015613699573d6000803e3d6000fd5b505050506040513d60208110156136af57600080fd5b50519250348410156136c7576136c733853403613d01565b505096509650969350505050565b6060814281101561374757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f556e69737761705632526f757465723a20455850495245440000000000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061378b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461382a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f556e69737761705632526f757465723a20494e56414c49445f50415448000000604482015290519081900360640190fd5b6138887f00000000000000000000000000000000000000000000000000000000000000008888888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061464892505050565b9150348260008151811061389857fe5b602002602001015111156138f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806154d76027913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061394057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561397357600080fd5b505af1158015613987573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6139f97f000000000000000000000000000000000000000000000000000000000000000089896000818110611acf57fe5b84600081518110613a0657fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613a7757600080fd5b505af1158015613a8b573d6000803e3d6000fd5b505050506040513d6020811015613aa157600080fd5b5051613aa957fe5b613ae8828787808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508992506143c1915050565b81600081518110613af557fe5b602002602001015134111561251d5761251d3383600081518110613b1557fe5b60200260200101513403613d01565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b60208310613bfa57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613bbd565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613c5c576040519150601f19603f3d011682016040523d82523d6000602084013e613c61565b606091505b5091509150818015613c8f575080511580613c8f5750808060200190516020811015613c8c57600080fd5b50515b613cfa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310613d7857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101613d3b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613dda576040519150601f19603f3d011682016040523d82523d6000602084013e613ddf565b606091505b5050905080613e39576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806155246023913960400191505060405180910390fd5b505050565b6000808411613e98576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180615414602b913960400191505060405180910390fd5b600083118015613ea85750600082115b613efd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000613f11856103e563ffffffff61523316565b90506000613f25828563ffffffff61523316565b90506000613f4b83613f3f886103e863ffffffff61523316565b9063ffffffff6152b916565b9050808281613f5657fe5b04979650505050505050565b6060600282511015613fd557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff81118015613fed57600080fd5b50604051908082528060200260200182016040528015614017578160200160208202803683370190505b509050828160008151811061402857fe5b60200260200101818152505060005b60018351038110156140c05760008061407a8786858151811061405657fe5b602002602001015187866001018151811061406d57fe5b602002602001015161532b565b9150915061409c84848151811061408d57fe5b60200260200101518383613e3e565b8484600101815181106140ab57fe5b60209081029190910101525050600101614037565b509392505050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301528381166024830152915160009286169163e6a43905916044808301926020929190829003018186803b15801561414157600080fd5b505afa158015614155573d6000803e3d6000fd5b505050506040513d602081101561416b57600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff8116610f4757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f436f6f6b44455856324c6962726172793a20504149525f4e4f545f464f554e44604482015290519081900360640190fd5b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b602083106142cf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101614292565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614331576040519150601f19603f3d011682016040523d82523d6000602084013e614336565b606091505b5091509150818015614364575080511580614364575080806020019051602081101561436157600080fd5b50515b6143b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061559e6024913960400191505060405180910390fd5b505050505050565b60005b6001835103811015614642576000808483815181106143df57fe5b60200260200101518584600101815181106143f657fe5b602002602001015191509150600061440e8383614ddf565b509050600087856001018151811061442257fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161461446a5782600061446e565b6000835b91509150600060028a5103881061448557886144c6565b6144c67f0000000000000000000000000000000000000000000000000000000000000000878c8b600201815181106144b957fe5b60200260200101516140c8565b90506144f37f000000000000000000000000000000000000000000000000000000000000000088886140c8565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f19166020018201604052801561453d576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156145c85781810151838201526020016145b0565b50505050905090810190601f1680156145f55780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561461757600080fd5b505af115801561462b573d6000803e3d6000fd5b5050600190990198506143c4975050505050505050565b50505050565b60606002825110156146bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a20494e56414c49445f504154480000604482015290519081900360640190fd5b815167ffffffffffffffff811180156146d357600080fd5b506040519080825280602002602001820160405280156146fd578160200160208202803683370190505b509050828160018351038151811061471157fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b80156140c0576000806147718786600186038151811061475d57fe5b602002602001015187868151811061406d57fe5b9150915061479384848151811061478457fe5b60200260200101518383614bdb565b8460018503815181106147a257fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01614741565b60005b6001835103811015613e39576000808483815181106147f457fe5b602002602001015185846001018151811061480b57fe5b60200260200101519150915060006148238383614ddf565b50905060006148537f000000000000000000000000000000000000000000000000000000000000000085856140c8565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156148a157600080fd5b505afa1580156148b5573d6000803e3d6000fd5b505050506040513d60608110156148cb57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905060008073ffffffffffffffffffffffffffffffffffffffff8a811690891614614915578284614918565b83835b9150915061499d828b73ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611d0057600080fd5b95506149aa868383613e3e565b9450505050506000808573ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146149ee578260006149f2565b6000835b91509150600060028c51038a10614a09578a614a3d565b614a3d7f0000000000000000000000000000000000000000000000000000000000000000898e8d600201815181106144b957fe5b60408051600080825260208201928390527f022c0d9f000000000000000000000000000000000000000000000000000000008352602482018781526044830187905273ffffffffffffffffffffffffffffffffffffffff8086166064850152608060848501908152845160a48601819052969750908c169563022c0d9f958a958a958a9591949193919260c486019290918190849084905b83811015614aed578181015183820152602001614ad5565b50505050905090810190601f168015614b1a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015614b3c57600080fd5b505af1158015614b50573d6000803e3d6000fd5b50506001909b019a506147d99950505050505050505050565b8082038281111561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6000808411614c35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180615572602c913960400191505060405180910390fd5b600083118015614c455750600082115b614c9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b6000614cbe6103e8614cb2868863ffffffff61523316565b9063ffffffff61523316565b90506000614cd86103e5614cb2868963ffffffff614b6916565b9050614cf56001828481614ce857fe5b049063ffffffff6152b916565b9695505050505050565b6000808411614d59576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154b26025913960400191505060405180910390fd5b600083118015614d695750600082115b614dbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061548a6028913960400191505060405180910390fd5b82614dcf858463ffffffff61523316565b81614dd657fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415614e67576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806154656025913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1610614ea1578284614ea4565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216614f2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f436f6f6b44455856324c6962726172793a205a45524f5f414444524553530000604482015290519081900360640190fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b158015614fd257600080fd5b505afa158015614fe6573d6000803e3d6000fd5b505050506040513d6020811015614ffc57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156150e257604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156150b557600080fd5b505af11580156150c9573d6000803e3d6000fd5b505050506040513d60208110156150df57600080fd5b50505b6000806151107f00000000000000000000000000000000000000000000000000000000000000008b8b61532b565b91509150816000148015615122575080155b1561513257879350869250615226565b600061513f898484614cff565b90508781116151ac57858110156151a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061543f6026913960400191505060405180910390fd5b889450925082615224565b60006151b9898486614cff565b9050898111156151c557fe5b8781101561521e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806154fe6026913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b600081158061524e5750508082028282828161524b57fe5b04145b61139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561139657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b600080600061533a8585614ddf565b50905060008061534b8888886140c8565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801561539057600080fd5b505afa1580156153a4573d6000803e3d6000fd5b505050506040513d60608110156153ba57600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614615401578082615404565b81815b9099909850965050505050505056fe436f6f6b44455856324c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e54436f6f6b44455856324c6962726172793a204944454e544943414c5f414444524553534553436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4c4951554944495459436f6f6b44455856324c6962726172793a20494e53554646494349454e545f414d4f554e54556e69737761705632526f757465723a204558434553534956455f494e5055545f414d4f554e54556e69737761705632526f757465723a20494e53554646494349454e545f415f414d4f554e545472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544556e69737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54436f6f6b44455856324c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e545472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544a2646970667358221220cfe93f205c456dc510fd4680508e93f8f99b6ea81926b8ac111f76980f4b912464736f6c634300060600330000000000000000000000001bc619b7f70d2537daeeb30d4098cc9b7e32e9aa000000000000000000000000f800bf07394e8290807b4ce579f4e9f99c3da869",
      "nonce": "0x43",
      "to": null,
      "transactionIndex": "0x0",
      "type": "0x2",
      "value": "0x0",
      "yParity": "0x1",
      "v": "0x1",
      "r": "0xf3052c5969f06b7a0ad62b3f748413ef6e411cb745b0c7784a6879adb67b318d",
      "s": "0x42e82db7339fc944c1a194858c28416c74f321bd74bc5764fbec42ebe0b0e4d2"
    }
  }
}