UNPKG

@scibux/v2-periphery

Version:

🎚 Peripheral smart contracts for interacting with Scibuxswap V2

776 lines • 296 kB
{ "abi": [ { "inputs": [ { "internalType": "address", "name": "_factory", "type": "address" }, { "internalType": "address", "name": "_WETH", "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" }, { "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": "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": "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": "swapExactTokensForTokens", "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": "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" } ], "evm": { "bytecode": { "linkReferences": {}, "object": "60c060405234801561001057600080fd5b506040516141773803806141778339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606092831b8116608052911b1660a05260805160601c60a05160601c61403b61013c600039806101655280610b235280610b5e5280610c9b5280610f5e52806113b852806115e65280611799528061182e5280611afd5280611eb352806121e9528061223f528061227352806122f4528061250e52806126be5280612753525080610d8d5280610e8b5280611031528061106a528061121552806114aa52806116cc528061186d5280611a335280611ba65280611e385280611e615280611e91528061206e528061221d52806125f4528061279252806131e55280613228528061378f528061387052806138f0525061403b6000f3fe6080604052600436106101485760003560e01c80638803dbee116100c0578063d06ca61f11610074578063e8e3370011610059578063e8e3370014610937578063f305d719146109c4578063fb3bdb4114610a175761018e565b8063d06ca61f14610800578063ded9382a146108b75761018e565b8063ad615dec116100a5578063ad615dec1461074b578063baa2abde14610781578063c45a0155146107eb5761018e565b80638803dbee14610668578063ad5c46481461070d5761018e565b80632195995c116101175780634a25d94a116100fc5780634a25d94a146105305780637ff36ab5146105d557806385f8c2591461020c5761018e565b80632195995c1461040057806338ed17391461048b5761018e565b806302751cec14610193578063054d50d41461020c57806318cbafe5146102545780631f00ca74146103495761018e565b3661018e573373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461018c57fe5b005b600080fd5b34801561019f57600080fd5b506101f3600480360360c08110156101b657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a00135610aaa565b6040805192835260208301919091528051918290030190f35b34801561021857600080fd5b506102426004803603606081101561022f57600080fd5b5080359060208101359060400135610bfd565b60408051918252519081900360200190f35b34801561026057600080fd5b506102f9600480360360a081101561027757600080fd5b81359160208101359181019060608101604082013564010000000081111561029e57600080fd5b8201836020820111156102b057600080fd5b803590602001918460208302840111640100000000831117156102d257600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c12565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561033557818101518382015260200161031d565b505050509050019250505060405180910390f35b34801561035557600080fd5b506102f96004803603604081101561036c57600080fd5b8135919081019060408101602082013564010000000081111561038e57600080fd5b8201836020820111156103a057600080fd5b803590602001918460208302840111640100000000831117156103c257600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061102a945050505050565b34801561040c57600080fd5b506101f3600480360361016081101561042457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c08101359060e081013515159060ff6101008201351690610120810135906101400135611060565b34801561049757600080fd5b506102f9600480360360a08110156104ae57600080fd5b8135916020810135918101906060810160408201356401000000008111156104d557600080fd5b8201836020820111156104e757600080fd5b8035906020019184602083028401116401000000008311171561050957600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561119e565b34801561053c57600080fd5b506102f9600480360360a081101561055357600080fd5b81359160208101359181019060608101604082013564010000000081111561057a57600080fd5b82018360208201111561058c57600080fd5b803590602001918460208302840111640100000000831117156105ae57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561132f565b6102f9600480360360808110156105eb57600080fd5b8135919081019060408101602082013564010000000081111561060d57600080fd5b82018360208201111561061f57600080fd5b8035906020019184602083028401116401000000008311171561064157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611572565b34801561067457600080fd5b506102f9600480360360a081101561068b57600080fd5b8135916020810135918101906060810160408201356401000000008111156106b257600080fd5b8201836020820111156106c457600080fd5b803590602001918460208302840111640100000000831117156106e657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356119bc565b34801561071957600080fd5b50610722611afb565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561075757600080fd5b506102426004803603606081101561076e57600080fd5b5080359060208101359060400135611b1f565b34801561078d57600080fd5b506101f3600480360360e08110156107a457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359091169060c00135611b2c565b3480156107f757600080fd5b50610722611e36565b34801561080c57600080fd5b506102f96004803603604081101561082357600080fd5b8135919081019060408101602082013564010000000081111561084557600080fd5b82018360208201111561085757600080fd5b8035906020019184602083028401116401000000008311171561087957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550611e5a945050505050565b3480156108c357600080fd5b506101f360048036036101408110156108db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a08101359060c081013515159060ff60e08201351690610100810135906101200135611e87565b34801561094357600080fd5b506109a6600480360361010081101561095b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013582169160408201359160608101359160808201359160a08101359160c0820135169060e00135611fdf565b60408051938452602084019290925282820152519081900360600190f35b6109a6600480360360c08110156109da57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135916040820135916060810135916080820135169060a0013561216e565b6102f960048036036080811015610a2d57600080fd5b81359190810190604081016020820135640100000000811115610a4f57600080fd5b820183602082011115610a6157600080fd5b80359060200191846020830284011164010000000083111715610a8357600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561249a565b6000808242811015610b1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b610b4c897f00000000000000000000000000000000000000000000000000000000000000008a8a8a308a611b2c565b9093509150610b5c8986856128e9565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b50505050610bf18583612ab0565b50965096945050505050565b6000610c0a848484612bed565b949350505050565b60608142811015610c8457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610ce957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536369627578737761705632526f757465723a20494e56414c49445f50415448604482015290519081900360640190fd5b610de67f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b91508682600184510381518110610df957fe5b60200260200101511015610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613e89602e913960400191505060405180910390fd5b610f1d86866000818110610e6857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1633610f037f00000000000000000000000000000000000000000000000000000000000000008a8a6000818110610eb757fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168b8b6001818110610ee157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff16612e61565b85600081518110610f1057fe5b6020026020010151612f4c565b610f5c8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061311c915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d83600185510381518110610fa857fe5b60200260200101516040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610fe657600080fd5b505af1158015610ffa573d6000803e3d6000fd5b5050505061101f848360018551038151811061101257fe5b6020026020010151612ab0565b509695505050505050565b60606110577f000000000000000000000000000000000000000000000000000000000000000084846133a3565b90505b92915050565b60008060006110907f00000000000000000000000000000000000000000000000000000000000000008f8f612e61565b905060008761109f578c6110c1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b15801561115d57600080fd5b505af1158015611171573d6000803e3d6000fd5b505050506111848f8f8f8f8f8f8f611b2c565b809450819550505050509b509b9950505050505050505050565b6060814281101561121057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b61126e7f000000000000000000000000000000000000000000000000000000000000000089888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061128157fe5b602002602001015110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613e89602e913960400191505060405180910390fd5b6112f086866000818110610e6857fe5b61101f8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061311c915050565b606081428110156113a157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061140657fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536369627578737761705632526f757465723a20494e56414c49445f50415448604482015290519081900360640190fd5b6115037f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133a392505050565b9150868260008151811061151357fe5b60200260200101511115610e58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613fad602a913960400191505060405180910390fd5b606081428110156115e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061162857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536369627578737761705632526f757465723a20494e56414c49445f50415448604482015290519081900360640190fd5b6117257f000000000000000000000000000000000000000000000000000000000000000034888880806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612d1192505050565b9150868260018451038151811061173857fe5b60200260200101511015611797576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613e89602e913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836000815181106117e057fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561181357600080fd5b505af1158015611827573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6118c37f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff168a8a6001818110610ee157fe5b846000815181106118d057fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561194157600080fd5b505af1158015611955573d6000803e3d6000fd5b505050506040513d602081101561196b57600080fd5b505161197357fe5b6119b28287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061311c915050565b5095945050505050565b60608142811015611a2e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b611a8c7f0000000000000000000000000000000000000000000000000000000000000000898888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133a392505050565b91508682600081518110611a9c57fe5b602002602001015111156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613fad602a913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610c0a84848461351b565b6000808242811015611b9f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b6000611bcc7f00000000000000000000000000000000000000000000000000000000000000008c8c612e61565b604080517f23b872dd00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff831660248201819052604482018d9052915192935090916323b872dd916064808201926020929091908290030181600087803b158015611c4d57600080fd5b505af1158015611c61573d6000803e3d6000fd5b505050506040513d6020811015611c7757600080fd5b5050604080517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015282516000938493928616926389afcb44926024808301939282900301818787803b158015611cea57600080fd5b505af1158015611cfe573d6000803e3d6000fd5b505050506040513d6040811015611d1457600080fd5b50805160209091015190925090506000611d2e8e8e6135fb565b5090508073ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff1614611d6b578183611d6e565b82825b90975095508a871015611dcc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613f576029913960400191505060405180910390fd5b89861015611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613f006029913960400191505060405180910390fd5b505050505097509795505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606110577f00000000000000000000000000000000000000000000000000000000000000008484612d11565b6000806000611ed77f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000612e61565b9050600087611ee6578c611f08565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b604080517fd505accf00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101839052606481018c905260ff8a16608482015260a4810189905260c48101889052905191925073ffffffffffffffffffffffffffffffffffffffff84169163d505accf9160e48082019260009290919082900301818387803b158015611fa457600080fd5b505af1158015611fb8573d6000803e3d6000fd5b50505050611fca8e8e8e8e8e8e610aaa565b909f909e509c50505050505050505050505050565b6000806000834281101561205457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b6120628c8c8c8c8c8c613738565b909450925060006120947f00000000000000000000000000000000000000000000000000000000000000008e8e612e61565b90506120a28d338388612f4c565b6120ae8c338387612f4c565b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561212d57600080fd5b505af1158015612141573d6000803e3d6000fd5b505050506040513d602081101561215757600080fd5b5051949d939c50939a509198505050505050505050565b600080600083428110156121e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b6122118a7f00000000000000000000000000000000000000000000000000000000000000008b348c8c613738565b909450925060006122637f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000612e61565b90506122718b338388612f4c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0856040518263ffffffff1660e01b81526004016000604051808303818588803b1580156122d957600080fd5b505af11580156122ed573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561239957600080fd5b505af11580156123ad573d6000803e3d6000fd5b505050506040513d60208110156123c357600080fd5b50516123cb57fe5b8073ffffffffffffffffffffffffffffffffffffffff16636a627842886040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561244a57600080fd5b505af115801561245e573d6000803e3d6000fd5b505050506040513d602081101561247457600080fd5b505192503484101561248c5761248c33853403612ab0565b505096509650969350505050565b6060814281101561250c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536369627578737761705632526f757465723a20455850495245440000000000604482015290519081900360640190fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061255057fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f536369627578737761705632526f757465723a20494e56414c49445f50415448604482015290519081900360640190fd5b61264d7f0000000000000000000000000000000000000000000000000000000000000000888888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506133a392505050565b9150348260008151811061265d57fe5b602002602001015111156126bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613fad602a913960400191505060405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08360008151811061270557fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6127be7f00000000000000000000000000000000000000000000000000000000000000008989600081811061189957fe5b846000815181106127cb57fe5b60200260200101516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050506040513d602081101561286657600080fd5b505161286e57fe5b6128ad8287878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525089925061311c915050565b816000815181106128ba57fe5b60200260200101513411156119b2576119b233836000815181106128da57fe5b60200260200101513403612ab0565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b602083106129bf57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612982565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612a21576040519150601f19603f3d011682016040523d82523d6000602084013e612a26565b606091505b5091509150818015612a54575080511580612a545750808060200190516020811015612a5157600080fd5b50515b612aa9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180613f80602d913960400191505060405180910390fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b60208310612b2757805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612aea565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612b89576040519150601f19603f3d011682016040523d82523d6000602084013e612b8e565b606091505b5050905080612be8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526034815260200180613e2d6034913960400191505060405180910390fd5b505050565b6000808411612c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180613f29602e913960400191505060405180910390fd5b600083118015612c575750600082115b612cac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613db0602b913960400191505060405180910390fd5b6000612cc0856103e563ffffffff613a3916565b90506000612cd4828563ffffffff613a3916565b90506000612cfa83612cee886103e863ffffffff613a3916565b9063ffffffff613abf16565b9050808281612d0557fe5b04979650505050505050565b6060600282511015612d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eb76021913960400191505060405180910390fd5b815167ffffffffffffffff81118015612d8657600080fd5b50604051908082528060200260200182016040528015612db0578160200160208202803683370190505b5090508281600081518110612dc157fe5b60200260200101818152505060005b6001835103811015612e5957600080612e1387868581518110612def57fe5b6020026020010151878660010181518110612e0657fe5b6020026020010151613b31565b91509150612e35848481518110612e2657fe5b60200260200101518383612bed565b848460010181518110612e4457fe5b60209081029190910101525050600101612dd0565b509392505050565b6000806000612e7085856135fb565b604080517fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606094851b811660208084019190915293851b81166034830152825160288184030181526048830184528051908501207fff0000000000000000000000000000000000000000000000000000000000000060688401529a90941b9093166069840152607d8301989098527f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f609d808401919091528851808403909101815260bd909201909752805196019590952095945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061302a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101612fed565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461308c576040519150601f19603f3d011682016040523d82523d6000602084013e613091565b606091505b50915091508180156130bf5750805115806130bf57508080602001905160208110156130bc57600080fd5b50515b613114576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180613ddb6031913960400191505060405180910390fd5b505050505050565b60005b600183510381101561339d5760008084838151811061313a57fe5b602002602001015185846001018151811061315157fe5b602002602001015191509150600061316983836135fb565b509050600087856001018151811061317d57fe5b602002602001015190506000808373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146131c5578260006131c9565b6000835b91509150600060028a510388106131e05788613221565b6132217f0000000000000000000000000000000000000000000000000000000000000000878c8b6002018151811061321457fe5b6020026020010151612e61565b905061324e7f00000000000000000000000000000000000000000000000000000000000000008888612e61565b73ffffffffffffffffffffffffffffffffffffffff1663022c0d9f84848460006040519080825280601f01601f191660200182016040528015613298576020820181803683370190505b506040518563ffffffff1660e01b8152600401808581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561332357818101518382015260200161330b565b50505050905090810190601f1680156133505780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561337257600080fd5b505af1158015613386573d6000803e3d6000fd5b50506001909901985061311f975050505050505050565b50505050565b6060600282511015613400576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613eb76021913960400191505060405180910390fd5b815167ffffffffffffffff8111801561341857600080fd5b50604051908082528060200260200182016040528015613442578160200160208202803683370190505b509050828160018351038151811061345657fe5b602090810291909101015281517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff015b8015612e59576000806134b6878660018603815181106134a257fe5b6020026020010151878681518110612e0657fe5b915091506134d88484815181106134c957fe5b60200260200101518383613c19565b8460018503815181106134e757fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613486565b6000808411613575576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613ed86028913960400191505060405180910390fd5b6000831180156135855750600082115b6135da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613db0602b913960400191505060405180910390fd5b826135eb858463ffffffff613a3916565b816135f257fe5b04949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415613683576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526028815260200180613e616028913960400191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16106136bd5782846136c0565b83835b909250905073ffffffffffffffffffffffffffffffffffffffff8216613731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180613e0c6021913960400191505060405180910390fd5b9250929050565b604080517fe6a4390500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301529151600092839283927f00000000000000000000000000000000000000000000000000000000000000009092169163e6a4390591604480820192602092909190829003018186803b1580156137d857600080fd5b505afa1580156137ec573d6000803e3d6000fd5b505050506040513d602081101561380257600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614156138e857604080517fc9c6539600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152898116602483015291517f00000000000000000000000000000000000000000000000000000000000000009092169163c9c65396916044808201926020929091908290030181600087803b1580156138bb57600080fd5b505af11580156138cf573d6000803e3d6000fd5b505050506040513d60208110156138e557600080fd5b50505b6000806139167f00000000000000000000000000000000000000000000000000000000000000008b8b613b31565b91509150816000148015613928575080155b1561393857879350869250613a2c565b600061394589848461351b565b90508781116139b257858110156139a7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613f006029913960400191505060405180910390fd5b889450925082613a2a565b60006139bf89848661351b565b9050898111156139cb57fe5b87811015613a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526029815260200180613f576029913960400191505060405180910390fd5b94508793505b505b5050965096945050505050565b6000811580613a5457505080820282828281613a5157fe5b04145b61105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082018281101561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b6000806000613b4085856135fb565b509050600080613b51888888612e61565b73ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015613b9657600080fd5b505afa158015613baa573d6000803e3d6000fd5b505050506040513d6060811015613bc057600080fd5b5080516020909101516dffffffffffffffffffffffffffff918216935016905073ffffffffffffffffffffffffffffffffffffffff87811690841614613c07578082613c0a565b81815b90999098509650505050505050565b6000808411613c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180613fd7602f913960400191505060405180910390fd5b600083118015613c835750600082115b613cd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613db0602b913960400191505060405180910390fd5b6000613cfc6103e8613cf0868863ffffffff613a3916565b9063ffffffff613a3916565b90506000613d166103e5613cf0868963ffffffff613d3d16565b9050613d336001828481613d2657fe5b049063ffffffff613abf16565b9695505050505050565b8082038281111561105a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfe5363696275787377617056324c6962726172793a20494e53554646494349454e545f4c49515549444954595472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65645363696275787377617056324c6962726172793a205a45524f5f414444524553535472616e7366657248656c7065723a3a736166655472616e736665724554483a20455448207472616e73666572206661696c65645363696275787377617056324c6962726172793a204944454e544943414c5f414444524553534553536369627578737761705632526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e545363696275787377617056324c6962726172793a20494e56414c49445f504154485363696275787377617056324c6962726172793a20494e53554646494349454e545f414d4f554e54536369627578737761705632526f757465723a20494e53554646494349454e545f425f414d4f554e545363696275787377617056324c6962726172793a20494e5355464649