{
  "_format": "hh-sol-artifact-1",
  "contractName": "SwapRouter",
  "sourceName": "contracts/elixir-periphery/SwapRouter.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "int256",
          "name": "amount0Delta",
          "type": "int256"
        },
        {
          "internalType": "int256",
          "name": "amount1Delta",
          "type": "int256"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "elixirSwapCallback",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "path",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMinimum",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISwapRouter.ExactInputParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMinimum",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct ISwapRouter.ExactInputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes",
              "name": "path",
              "type": "bytes"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMaximum",
              "type": "uint256"
            }
          ],
          "internalType": "struct ISwapRouter.ExactOutputParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMaximum",
              "type": "uint256"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct ISwapRouter.ExactOutputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "exactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "refundETH",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowed",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitAllowedIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "selfPermitIfNecessary",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "sweepToken",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "feeBips",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "feeRecipient",
          "type": "address"
        }
      ],
      "name": "sweepTokenWithFee",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        }
      ],
      "name": "unwrapWETH9",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amountMinimum",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "feeBips",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "feeRecipient",
          "type": "address"
        }
      ],
      "name": "unwrapWETH9WithFee",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60c06040526000196000553480156200001757600080fd5b50604051620027df380380620027df8339810160408190526200003a9162000076565b6001600160601b0319606092831b8116608052911b1660a052620000ad565b80516001600160a01b03811681146200007157600080fd5b919050565b6000806040838503121562000089578182fd5b620000948362000059565b9150620000a46020840162000059565b90509250929050565b60805160601c60a05160601c6126d6620001096000398061012252806104a2528061059852806106255280610665528061075b52806113f7528061143d52806114b1525080610b535280610bba528061186352506126d66000f3fe6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a0146102db578063f28c0498146102ee578063f3995c671461030157610196565b8063db3e2198146102b5578063df2ab5bb146102c857610196565b8063c04b8d591461025a578063c2e3140a1461026d578063c45a015514610280578063d804d7a71461029557610196565b80634aa4a4fc116100e15780634aa4a4fc146101f25780639b2c0a3714610214578063a4a78f0c14610227578063ac9650d81461023a57610196565b806312210e8a1461019b578063414bf389146101a35780634659a494146101cc57806349404b7c146101df57610196565b3661019657336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610194576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b610194610314565b6101b66101b1366004612241565b61031e565b6040516101c391906125c4565b60405180910390f35b6101946101da366004611fbf565b610404565b6101946101ed366004612348565b61049e565b3480156101fe57600080fd5b50610207610623565b6040516101c3919061244f565b610194610222366004612377565b610647565b610194610235366004611fbf565b61081e565b61024d61024836600461201f565b6108af565b6040516101c391906124a8565b6101b6610268366004612196565b6109ef565b61019461027b366004611fbf565b610ac2565b34801561028c57600080fd5b50610207610b51565b3480156102a157600080fd5b506101946102b03660046120b1565b610b75565b6101b66102c3366004612241565b610c88565b6101946102d6366004611f20565b610d66565b6101946102e9366004611f61565b610e4f565b6101b66102fc36600461225d565b610f81565b61019461030f366004611fbf565b61102e565b61031c6110a0565b565b6000816080013561032e816110b0565b6103c760a08401356103466080860160608701611efd565b610357610100870160e08801611efd565b604080518082019091528061036f60208a018a611efd565b61037f60608b0160408c01612325565b61038f60408c0160208d01611efd565b6040516020016103a1939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611108565b91508260c001358210156103f65760405162461bcd60e51b81526004016103ed90612552565b60405180910390fd5b6103fe6110a0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b5051905082811015610590576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561061e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b5050505061061e828261125a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610658575060648211155b61066157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106d057600080fd5b505afa1580156106e4573d6000803e3d6000fd5b505050506040513d60208110156106fa57600080fd5b5051905084811015610753576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610817577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050505060006127106107ef858461134990919063ffffffff16565b816107f657fe5b049050801561080957610809838261125a565b6108158582840361125a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b5051101561081557610815868686868686610404565b60608167ffffffffffffffff811180156108c857600080fd5b506040519080825280602002602001820160405280156108fc57816020015b60608152602001906001900390816108e75790505b50905060005b828110156109e8576000803086868581811061091a57fe5b905060200281019061092c91906125cd565b60405161093a92919061243f565b600060405180830381855af49150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150816109c65760448151101561099357600080fd5b600481019050808060200190518101906109ad919061212c565b60405162461bcd60e51b81526004016103ed9190612508565b808484815181106109d357fe5b60209081029190910101525050600101610902565b5092915050565b600081604001516109ff816110b0565b335b6000610a108560000151611373565b9050610a5c856060015182610a29578660200151610a2b565b305b60006040518060400160405280610a458b6000015161137f565b8152602001876001600160a01b0316815250611108565b60608601528015610a7c578451309250610a759061138e565b8552610a89565b8460600151935050610a8f565b50610a01565b8360800151831015610ab35760405162461bcd60e51b81526004016103ed90612552565b610abb6110a0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505110156108155761081586868686868661102e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610b845750600083135b610b8d57600080fd5b6000610b9b82840184612295565b90506000806000610baf84600001516113a5565b925092509250610be17f00000000000000000000000000000000000000000000000000000000000000008484846113d6565b5060008060008a13610c0857846001600160a01b0316846001600160a01b03161089610c1f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c3e57610c3985876020015133846113f5565b610492565b8551610c4990611373565b15610c6e578551610c599061138e565b8652610c688133600089611585565b50610492565b8060008190555083945061049285876020015133846113f5565b60008160800135610c98816110b0565b610d3460a0840135610cb06080860160608701611efd565b610cc1610100870160e08801611efd565b6040518060400160405280886020016020810190610cdf9190611efd565b610cef60608b0160408c01612325565b610cfc60208c018c611efd565b604051602001610d0e939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611585565b91508260c00135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db557600080fd5b505afa158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5051905082811015610e38576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e4957610e49848383611700565b50505050565b600082118015610e60575060648211155b610e6957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b5051905084811015610f3b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610815576000612710610f508386611349565b81610f5757fe5b0490508015610f6b57610f6b878483611700565b610f788786838503611700565b50505050505050565b60008160400135610f91816110b0565b6110046060840135610fa96040860160208701611efd565b6040805180820190915260009080610fc189806125cd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611585565b5060005491508260800135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561047e57600080fd5b471561031c5761031c334761125a565b80421115611105576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661111c573093505b600080600061112e85600001516113a5565b919450925090506001600160a01b038083169084161060008061115286868661185c565b6001600160a01b031663128acb088b8561116b8f61189a565b6001600160a01b038e1615611180578d6111a6565b8761119f5773fffd8963efd1fc6a506488495d951d5263988d256111a6565b6401000276a45b8d6040516020016111b79190612589565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016111e6959493929190612463565b6040805180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611237919061208e565b91509150826112465781611248565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112a65780518252601f199092019160209182019101611287565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b505090508061061e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113645750508181028183828161136157fe5b04145b61136d57600080fd5b92915050565b8051604211155b919050565b606061136d826000602b6118b0565b805160609061136d908390601790601619016118b0565b600080806113b38482611a0d565b92506113c0846014611ad9565b90506113cd846017611a0d565b91509193909250565b60006113ec856113e7868686611b95565b611beb565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114365750804710155b15611558577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050506040513d602081101561155057600080fd5b50610e499050565b6001600160a01b03831630141561157957611574848383611700565b610e49565b610e4984848484611c0e565b60006001600160a01b038416611599573093505b60008060006115ab85600001516113a5565b919450925090506001600160a01b03808416908316106000806115cf85878661185c565b6001600160a01b031663128acb088b856115e88f61189a565b6000036001600160a01b038e1615611600578d611626565b8761161f5773fffd8963efd1fc6a506488495d951d5263988d25611626565b6401000276a45b8d6040516020016116379190612589565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611666959493929190612463565b6040805180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061208e565b915091506000836116cc5781836000036116d2565b82826000035b90985090506001600160a01b038a166116f1578b81146116f157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117915780518252601f199092019160209182019101611772565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117f3576040519150601f19603f3d011682016040523d82523d6000602084013e6117f8565b606091505b5091509150818015611826575080511580611826575080806020019051602081101561182357600080fd5b50515b610817576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118927f000000000000000000000000000000000000000000000000000000000000000061188d868686611b95565b611d73565b949350505050565b6000600160ff1b82106118ac57600080fd5b5090565b60608182601f0110156118fb576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611943576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8183018451101561199b576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119ba5760405191506000825260208201604052611a04565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119f35780518352602092830192016119db565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611a67576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611ac0576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b33576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611b8c576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611b9d611e6f565b826001600160a01b0316846001600160a01b03161115611bbb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611bf78383611d73565b9050336001600160a01b0382161461136d57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca75780518252601f199092019160209182019101611c88565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d09576040519150601f19603f3d011682016040523d82523d6000602084013e611d0e565b606091505b5091509150818015611d3c575080511580611d3c5750808060200190516020811015611d3957600080fd5b50515b610815576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561137a8161268b565b600082601f830112611eaa578081fd5b8135611ebd611eb88261263d565b612619565b818152846020838601011115611ed1578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156103fe578081fd5b600060208284031215611f0e578081fd5b8135611f198161268b565b9392505050565b600080600060608486031215611f34578182fd5b8335611f3f8161268b565b9250602084013591506040840135611f568161268b565b809150509250925092565b600080600080600060a08688031215611f78578081fd5b8535611f838161268b565b9450602086013593506040860135611f9a8161268b565b9250606086013591506080860135611fb18161268b565b809150509295509295909350565b60008060008060008060c08789031215611fd7578081fd5b8635611fe28161268b565b95506020870135945060408701359350606087013560ff81168114612005578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612031578182fd5b823567ffffffffffffffff80821115612048578384fd5b818501915085601f83011261205b578384fd5b813581811115612069578485fd5b866020808302850101111561207c578485fd5b60209290920196919550909350505050565b600080604083850312156120a0578182fd5b505080516020909101519092909150565b600080600080606085870312156120c6578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120eb578384fd5b818701915087601f8301126120fe578384fd5b81358181111561210c578485fd5b88602082850101111561211d578485fd5b95989497505060200194505050565b60006020828403121561213d578081fd5b815167ffffffffffffffff811115612153578182fd5b8201601f81018413612163578182fd5b8051612171611eb88261263d565b818152856020838501011115612185578384fd5b6113ec82602083016020860161265f565b6000602082840312156121a7578081fd5b813567ffffffffffffffff808211156121be578283fd5b9083019060a082860312156121d1578283fd5b60405160a0810181811083821117156121e657fe5b6040528235828111156121f7578485fd5b61220387828601611e9a565b82525061221260208401611e8f565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612253578081fd5b611f198383611eeb565b60006020828403121561226e578081fd5b813567ffffffffffffffff811115612284578182fd5b820160a08185031215611f19578182fd5b6000602082840312156122a6578081fd5b813567ffffffffffffffff808211156122bd578283fd5b90830190604082860312156122d0578283fd5b6040516040810181811083821117156122e557fe5b6040528235828111156122f6578485fd5b61230287828601611e9a565b825250602083013592506123158361268b565b6020810192909252509392505050565b600060208284031215612336578081fd5b813562ffffff81168114611f19578182fd5b6000806040838503121561235a578182fd5b82359150602083013561236c8161268b565b809150509250929050565b6000806000806080858703121561238c578182fd5b84359350602085013561239e8161268b565b92506040850135915060608501356123b58161268b565b939692955090935050565b600081518084526123d881602086016020860161265f565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261249d60a08301846123c0565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124fb57603f198886030184526124e98583516123c0565b945092850192908501906001016124cd565b5092979650505050505050565b600060208252611f1960208301846123c0565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125a560608401826123c0565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e198436030181126125e3578283fd5b83018035915067ffffffffffffffff8211156125fd578283fd5b60200191503681900382131561261257600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561263557fe5b604052919050565b600067ffffffffffffffff82111561265157fe5b50601f01601f191660200190565b60005b8381101561267a578181015183820152602001612662565b83811115610e495750506000910152565b6001600160a01b038116811461110557600080fdfea2646970667358221220ec84789d9c1a39359d7c1faf092d42099441efa4511916e1f9a1c8daebc9b3fd64736f6c63430007060033",
  "deployedBytecode": "0x6080604052600436106101125760003560e01c8063c04b8d59116100a5578063db3e219811610074578063e0e189a011610059578063e0e189a0146102db578063f28c0498146102ee578063f3995c671461030157610196565b8063db3e2198146102b5578063df2ab5bb146102c857610196565b8063c04b8d591461025a578063c2e3140a1461026d578063c45a015514610280578063d804d7a71461029557610196565b80634aa4a4fc116100e15780634aa4a4fc146101f25780639b2c0a3714610214578063a4a78f0c14610227578063ac9650d81461023a57610196565b806312210e8a1461019b578063414bf389146101a35780634659a494146101cc57806349404b7c146101df57610196565b3661019657336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610194576040805162461bcd60e51b815260206004820152600960248201527f4e6f742057455448390000000000000000000000000000000000000000000000604482015290519081900360640190fd5b005b600080fd5b610194610314565b6101b66101b1366004612241565b61031e565b6040516101c391906125c4565b60405180910390f35b6101946101da366004611fbf565b610404565b6101946101ed366004612348565b61049e565b3480156101fe57600080fd5b50610207610623565b6040516101c3919061244f565b610194610222366004612377565b610647565b610194610235366004611fbf565b61081e565b61024d61024836600461201f565b6108af565b6040516101c391906124a8565b6101b6610268366004612196565b6109ef565b61019461027b366004611fbf565b610ac2565b34801561028c57600080fd5b50610207610b51565b3480156102a157600080fd5b506101946102b03660046120b1565b610b75565b6101b66102c3366004612241565b610c88565b6101946102d6366004611f20565b610d66565b6101946102e9366004611f61565b610e4f565b6101b66102fc36600461225d565b610f81565b61019461030f366004611fbf565b61102e565b61031c6110a0565b565b6000816080013561032e816110b0565b6103c760a08401356103466080860160608701611efd565b610357610100870160e08801611efd565b604080518082019091528061036f60208a018a611efd565b61037f60608b0160408c01612325565b61038f60408c0160208d01611efd565b6040516020016103a1939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611108565b91508260c001358210156103f65760405162461bcd60e51b81526004016103ed90612552565b60405180910390fd5b6103fe6110a0565b50919050565b604080516323f2ebc360e21b815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e4810183905290516001600160a01b03881691638fcbaf0c9161010480830192600092919082900301818387803b15801561047e57600080fd5b505af1158015610492573d6000803e3d6000fd5b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561050d57600080fd5b505afa158015610521573d6000803e3d6000fd5b505050506040513d602081101561053757600080fd5b5051905082811015610590576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b801561061e577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156105fc57600080fd5b505af1158015610610573d6000803e3d6000fd5b5050505061061e828261125a565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600082118015610658575060648211155b61066157600080fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156106d057600080fd5b505afa1580156106e4573d6000803e3d6000fd5b505050506040513d60208110156106fa57600080fd5b5051905084811015610753576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742057455448390000000000000000000000000000604482015290519081900360640190fd5b8015610817577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632e1a7d4d826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156107bf57600080fd5b505af11580156107d3573d6000803e3d6000fd5b5050505060006127106107ef858461134990919063ffffffff16565b816107f657fe5b049050801561080957610809838261125a565b6108158582840361125a565b505b5050505050565b60408051636eb1769f60e11b81523360048201523060248201529051600019916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b15801561086f57600080fd5b505afa158015610883573d6000803e3d6000fd5b505050506040513d602081101561089957600080fd5b5051101561081557610815868686868686610404565b60608167ffffffffffffffff811180156108c857600080fd5b506040519080825280602002602001820160405280156108fc57816020015b60608152602001906001900390816108e75790505b50905060005b828110156109e8576000803086868581811061091a57fe5b905060200281019061092c91906125cd565b60405161093a92919061243f565b600060405180830381855af49150503d8060008114610975576040519150601f19603f3d011682016040523d82523d6000602084013e61097a565b606091505b5091509150816109c65760448151101561099357600080fd5b600481019050808060200190518101906109ad919061212c565b60405162461bcd60e51b81526004016103ed9190612508565b808484815181106109d357fe5b60209081029190910101525050600101610902565b5092915050565b600081604001516109ff816110b0565b335b6000610a108560000151611373565b9050610a5c856060015182610a29578660200151610a2b565b305b60006040518060400160405280610a458b6000015161137f565b8152602001876001600160a01b0316815250611108565b60608601528015610a7c578451309250610a759061138e565b8552610a89565b8460600151935050610a8f565b50610a01565b8360800151831015610ab35760405162461bcd60e51b81526004016103ed90612552565b610abb6110a0565b5050919050565b60408051636eb1769f60e11b8152336004820152306024820152905186916001600160a01b0389169163dd62ed3e91604480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505110156108155761081586868686868661102e565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000841380610b845750600083135b610b8d57600080fd5b6000610b9b82840184612295565b90506000806000610baf84600001516113a5565b925092509250610be17f00000000000000000000000000000000000000000000000000000000000000008484846113d6565b5060008060008a13610c0857846001600160a01b0316846001600160a01b03161089610c1f565b836001600160a01b0316856001600160a01b0316108a5b915091508115610c3e57610c3985876020015133846113f5565b610492565b8551610c4990611373565b15610c6e578551610c599061138e565b8652610c688133600089611585565b50610492565b8060008190555083945061049285876020015133846113f5565b60008160800135610c98816110b0565b610d3460a0840135610cb06080860160608701611efd565b610cc1610100870160e08801611efd565b6040518060400160405280886020016020810190610cdf9190611efd565b610cef60608b0160408c01612325565b610cfc60208c018c611efd565b604051602001610d0e939291906123ec565b6040516020818303038152906040528152602001336001600160a01b0316815250611585565b91508260c00135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b50600019600055919050565b6000836001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610db557600080fd5b505afa158015610dc9573d6000803e3d6000fd5b505050506040513d6020811015610ddf57600080fd5b5051905082811015610e38576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610e4957610e49848383611700565b50505050565b600082118015610e60575060648211155b610e6957600080fd5b6000856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610eb857600080fd5b505afa158015610ecc573d6000803e3d6000fd5b505050506040513d6020811015610ee257600080fd5b5051905084811015610f3b576040805162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420746f6b656e0000000000000000000000000000604482015290519081900360640190fd5b8015610815576000612710610f508386611349565b81610f5757fe5b0490508015610f6b57610f6b878483611700565b610f788786838503611700565b50505050505050565b60008160400135610f91816110b0565b6110046060840135610fa96040860160208701611efd565b6040805180820190915260009080610fc189806125cd565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525033602090910152611585565b5060005491508260800135821115610d5a5760405162461bcd60e51b81526004016103ed9061251b565b6040805163d505accf60e01b8152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c4810183905290516001600160a01b0388169163d505accf9160e480830192600092919082900301818387803b15801561047e57600080fd5b471561031c5761031c334761125a565b80421115611105576040805162461bcd60e51b815260206004820152601360248201527f5472616e73616374696f6e20746f6f206f6c6400000000000000000000000000604482015290519081900360640190fd5b50565b60006001600160a01b03841661111c573093505b600080600061112e85600001516113a5565b919450925090506001600160a01b038083169084161060008061115286868661185c565b6001600160a01b031663128acb088b8561116b8f61189a565b6001600160a01b038e1615611180578d6111a6565b8761119f5773fffd8963efd1fc6a506488495d951d5263988d256111a6565b6401000276a45b8d6040516020016111b79190612589565b6040516020818303038152906040526040518663ffffffff1660e01b81526004016111e6959493929190612463565b6040805180830381600087803b1580156111ff57600080fd5b505af1158015611213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611237919061208e565b91509150826112465781611248565b805b6000039b9a5050505050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040518082805190602001908083835b602083106112a65780518252601f199092019160209182019101611287565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611308576040519150601f19603f3d011682016040523d82523d6000602084013e61130d565b606091505b505090508061061e576040805162461bcd60e51b815260206004820152600360248201526253544560e81b604482015290519081900360640190fd5b60008215806113645750508181028183828161136157fe5b04145b61136d57600080fd5b92915050565b8051604211155b919050565b606061136d826000602b6118b0565b805160609061136d908390601790601619016118b0565b600080806113b38482611a0d565b92506113c0846014611ad9565b90506113cd846017611a0d565b91509193909250565b60006113ec856113e7868686611b95565b611beb565b95945050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b03161480156114365750804710155b15611558577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561149657600080fd5b505af11580156114aa573d6000803e3d6000fd5b50505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561152657600080fd5b505af115801561153a573d6000803e3d6000fd5b505050506040513d602081101561155057600080fd5b50610e499050565b6001600160a01b03831630141561157957611574848383611700565b610e49565b610e4984848484611c0e565b60006001600160a01b038416611599573093505b60008060006115ab85600001516113a5565b919450925090506001600160a01b03808416908316106000806115cf85878661185c565b6001600160a01b031663128acb088b856115e88f61189a565b6000036001600160a01b038e1615611600578d611626565b8761161f5773fffd8963efd1fc6a506488495d951d5263988d25611626565b6401000276a45b8d6040516020016116379190612589565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401611666959493929190612463565b6040805180830381600087803b15801561167f57600080fd5b505af1158015611693573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b7919061208e565b915091506000836116cc5781836000036116d2565b82826000035b90985090506001600160a01b038a166116f1578b81146116f157600080fd5b50505050505050949350505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1781529251825160009485949389169392918291908083835b602083106117915780518252601f199092019160209182019101611772565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146117f3576040519150601f19603f3d011682016040523d82523d6000602084013e6117f8565b606091505b5091509150818015611826575080511580611826575080806020019051602081101561182357600080fd5b50515b610817576040805162461bcd60e51b815260206004820152600260248201526114d560f21b604482015290519081900360640190fd5b60006118927f000000000000000000000000000000000000000000000000000000000000000061188d868686611b95565b611d73565b949350505050565b6000600160ff1b82106118ac57600080fd5b5090565b60608182601f0110156118fb576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015611943576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b8183018451101561199b576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b6060821580156119ba5760405191506000825260208201604052611a04565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156119f35780518352602092830192016119db565b5050858452601f01601f1916604052505b50949350505050565b600081826014011015611a67576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015611ac0576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015611b33576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015611b8c576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b611b9d611e6f565b826001600160a01b0316846001600160a01b03161115611bbb579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b6000611bf78383611d73565b9050336001600160a01b0382161461136d57600080fd5b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166323b872dd60e01b178152925182516000948594938a169392918291908083835b60208310611ca75780518252601f199092019160209182019101611c88565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d09576040519150601f19603f3d011682016040523d82523d6000602084013e611d0e565b606091505b5091509150818015611d3c575080511580611d3c5750808060200190516020811015611d3957600080fd5b50515b610815576040805162461bcd60e51b815260206004820152600360248201526229aa2360e91b604482015290519081900360640190fd5b600081602001516001600160a01b031682600001516001600160a01b031610611d9b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b604080516060810182526000808252602082018190529181019190915290565b803561137a8161268b565b600082601f830112611eaa578081fd5b8135611ebd611eb88261263d565b612619565b818152846020838601011115611ed1578283fd5b816020850160208301379081016020019190915292915050565b600061010082840312156103fe578081fd5b600060208284031215611f0e578081fd5b8135611f198161268b565b9392505050565b600080600060608486031215611f34578182fd5b8335611f3f8161268b565b9250602084013591506040840135611f568161268b565b809150509250925092565b600080600080600060a08688031215611f78578081fd5b8535611f838161268b565b9450602086013593506040860135611f9a8161268b565b9250606086013591506080860135611fb18161268b565b809150509295509295909350565b60008060008060008060c08789031215611fd7578081fd5b8635611fe28161268b565b95506020870135945060408701359350606087013560ff81168114612005578182fd5b9598949750929560808101359460a0909101359350915050565b60008060208385031215612031578182fd5b823567ffffffffffffffff80821115612048578384fd5b818501915085601f83011261205b578384fd5b813581811115612069578485fd5b866020808302850101111561207c578485fd5b60209290920196919550909350505050565b600080604083850312156120a0578182fd5b505080516020909101519092909150565b600080600080606085870312156120c6578182fd5b8435935060208501359250604085013567ffffffffffffffff808211156120eb578384fd5b818701915087601f8301126120fe578384fd5b81358181111561210c578485fd5b88602082850101111561211d578485fd5b95989497505060200194505050565b60006020828403121561213d578081fd5b815167ffffffffffffffff811115612153578182fd5b8201601f81018413612163578182fd5b8051612171611eb88261263d565b818152856020838501011115612185578384fd5b6113ec82602083016020860161265f565b6000602082840312156121a7578081fd5b813567ffffffffffffffff808211156121be578283fd5b9083019060a082860312156121d1578283fd5b60405160a0810181811083821117156121e657fe5b6040528235828111156121f7578485fd5b61220387828601611e9a565b82525061221260208401611e8f565b602082015260408301356040820152606083013560608201526080830135608082015280935050505092915050565b60006101008284031215612253578081fd5b611f198383611eeb565b60006020828403121561226e578081fd5b813567ffffffffffffffff811115612284578182fd5b820160a08185031215611f19578182fd5b6000602082840312156122a6578081fd5b813567ffffffffffffffff808211156122bd578283fd5b90830190604082860312156122d0578283fd5b6040516040810181811083821117156122e557fe5b6040528235828111156122f6578485fd5b61230287828601611e9a565b825250602083013592506123158361268b565b6020810192909252509392505050565b600060208284031215612336578081fd5b813562ffffff81168114611f19578182fd5b6000806040838503121561235a578182fd5b82359150602083013561236c8161268b565b809150509250929050565b6000806000806080858703121561238c578182fd5b84359350602085013561239e8161268b565b92506040850135915060608501356123b58161268b565b939692955090935050565b600081518084526123d881602086016020860161265f565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6000828483379101908152919050565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a0608083015261249d60a08301846123c0565b979650505050505050565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156124fb57603f198886030184526124e98583516123c0565b945092850192908501906001016124cd565b5092979650505050505050565b600060208252611f1960208301846123c0565b60208082526012908201527f546f6f206d756368207265717565737465640000000000000000000000000000604082015260600190565b60208082526013908201527f546f6f206c6974746c6520726563656976656400000000000000000000000000604082015260600190565b6000602082528251604060208401526125a560608401826123c0565b90506001600160a01b0360208501511660408401528091505092915050565b90815260200190565b6000808335601e198436030181126125e3578283fd5b83018035915067ffffffffffffffff8211156125fd578283fd5b60200191503681900382131561261257600080fd5b9250929050565b60405181810167ffffffffffffffff8111828210171561263557fe5b604052919050565b600067ffffffffffffffff82111561265157fe5b50601f01601f191660200190565b60005b8381101561267a578181015183820152602001612662565b83811115610e495750506000910152565b6001600160a01b038116811461110557600080fdfea2646970667358221220ec84789d9c1a39359d7c1faf092d42099441efa4511916e1f9a1c8daebc9b3fd64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
