{
  "_format": "hh-sol-artifact-1",
  "contractName": "V3Migrator",
  "sourceName": "contracts/mainContracts/V3Migrator.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_WETH9",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_summaSwapV3Manager",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "WETH9",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token0",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "token1",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "fee",
          "type": "uint24"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96",
          "type": "uint160"
        }
      ],
      "name": "createAndInitializePoolIfNecessary",
      "outputs": [
        {
          "internalType": "address",
          "name": "pool",
          "type": "address"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityToMigrate",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "percentageToMigrate",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "token0",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "token1",
              "type": "address"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "int24",
              "name": "tickLower",
              "type": "int24"
            },
            {
              "internalType": "int24",
              "name": "tickUpper",
              "type": "int24"
            },
            {
              "internalType": "uint256",
              "name": "amount0Min",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1Min",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "recipient",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "refundAsETH",
              "type": "bool"
            }
          ],
          "internalType": "struct IV3Migrator.MigrateParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "migrate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "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": [],
      "name": "summaSwapV3Manager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b506040516200206538038062002065833981016040819052620000349162000079565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c2565b80516001600160a01b03811681146200007457600080fd5b919050565b6000806000606084860312156200008e578283fd5b62000099846200005c565b9250620000a9602085016200005c565b9150620000b9604085016200005c565b90509250925092565b60805160601c60a05160601c60c05160601c611f376200012e600039806106ba5280610c305280610c6a5280610c945280610e9352508060d252806106965280610eec5280610f76528061105e52806110e85250806102a4528061038752806109ca5250611f376000f3fe6080604052600436106100b55760003560e01c8063ac9650d811610069578063c45a01551161004e578063c45a0155146101e5578063d44f2bf2146101fa578063f3995c671461021a57610134565b8063ac9650d8146101b2578063c2e3140a146101d257610134565b80634aa4a4fc1161009a5780634aa4a4fc146101755780635d6de3bb1461018a578063a4a78f0c1461019f57610134565b806313ead562146101395780634659a4941461016257610134565b36610134573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611d03565b60405180910390fd5b005b600080fd5b61014c6101473660046117ab565b61022d565b6040516101599190611bb4565b60405180910390f35b610132610170366004611804565b6105d4565b34801561018157600080fd5b5061014c610694565b34801561019657600080fd5b5061014c6106b8565b6101326101ad366004611804565b6106dc565b6101c56101c036600461185f565b6107b9565b6040516101599190611c3b565b6101326101e0366004611804565b610913565b3480156101f157600080fd5b5061014c6109c8565b34801561020657600080fd5b506101326102153660046119d7565b6109ec565b610132610228366004611804565b61117c565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061026757600080fd5b6040517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631698ee82906102dd90889088908890600401611c06565b60206040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d919061178f565b905073ffffffffffffffffffffffffffffffffffffffff811661049e576040517fa167129500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a1671295906103c090889088908890600401611c06565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610412919061178f565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063f637731d90610467908590600401611bb4565b600060405180830381600087803b15801561048157600080fd5b505af1158015610495573d6000803e3d6000fd5b505050506105cc565b60008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e91906119ef565b50505050505090508073ffffffffffffffffffffffffffffffffffffffff16600014156105ca576040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063f637731d90610597908690600401611bb4565b600060405180830381600087803b1580156105b157600080fd5b505af11580156105c5573d6000803e3d6000fd5b505050505b505b949350505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b505110156107b1576107b18686868686866105d4565b505050505050565b60608167ffffffffffffffff811180156107d257600080fd5b5060405190808252806020026020018201604052801561080657816020015b60608152602001906001900390816107f15790505b50905060005b8281101561090c576000803086868581811061082457fe5b90506020028101906108369190611e3f565b604051610844929190611ba4565b600060405180830381855af49150503d806000811461087f576040519150601f19603f3d011682016040523d82523d6000602084013e610884565b606091505b5091509150816108ea5760448151101561089d57600080fd5b600481019050808060200190518101906108b79190611922565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101299190611cb9565b808484815181106108f757fe5b6020908102919091010152505060010161080c565b5092915050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b505110156107b1576107b186868686868661117c565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109fe6060830160408401611b0e565b60ff1611610a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611ccc565b6064610a4a6060830160408401611b0e565b60ff161115610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611d3a565b610a92602082018261176c565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610abb602085018561176c565b84602001356040518463ffffffff1660e01b8152600401610ade93929190611bd5565b602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3091906118ea565b50600080610b41602084018461176c565b73ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401610b799190611bb4565b6040805180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190611aeb565b909250905060006064610bf0610be66060870160408801611b0e565b859060ff16611214565b81610bf757fe5b04905060006064610c11610be66060880160408901611b0e565b81610c1857fe5b049050610c55610c2e608087016060880161176c565b7f00000000000000000000000000000000000000000000000000000000000000008461123e565b610c8f610c6860a087016080880161176c565b7f00000000000000000000000000000000000000000000000000000000000000008361123e565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663eb44fea46040518061018001604052808a6060016020810190610ced919061176c565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d1860a08c0160808d0161176c565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d4360c08c0160a08d01611a80565b62ffffff168152602001610d5d60e08c0160c08d01611906565b60020b8152602001610d766101008c0160e08d01611906565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610db46101608c016101408d0161176c565b73ffffffffffffffffffffffffffffffffffffffff1681526101608b013560208201526000604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152610e169190600401611d71565b608060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e689190611a9a565b935093505050858210156110085783821015610eb957610eb9610e916080890160608a0161176c565b7f0000000000000000000000000000000000000000000000000000000000000000600061123e565b818603610ece6101a089016101808a016118ce565b8015610f34575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f1c60808a0160608b0161176c565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610fab908490600401611e36565b600060405180830381600087803b158015610fc557600080fd5b505af1158015610fd9573d6000803e3d6000fd5b50505050610fe7338261141a565b611006565b611006610fff60808a0160608b0161176c565b338361156d565b505b84811015611173578281101561102b5761102b610e9160a0890160808a0161176c565b8085036110406101a089016101808a016118ce565b80156110a6575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661108e60a08a0160808b0161176c565b73ffffffffffffffffffffffffffffffffffffffff16145b1561115e576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061111d908490600401611e36565b600060405180830381600087803b15801561113757600080fd5b505af115801561114b573d6000803e3d6000fd5b50505050611159338261141a565b611171565b611171610fff60a08a0160808b0161176c565b505b50505050505050565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561067457600080fd5b600082158061122f5750508181028183828161122c57fe5b04145b61123857600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061131357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611375576040519150601f19603f3d011682016040523d82523d6000602084013e61137a565b606091505b50915091508180156113a85750805115806113a857508080602001905160208110156113a557600080fd5b50515b61141357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061149157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611454565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114f3576040519150601f19603f3d011682016040523d82523d6000602084013e6114f8565b606091505b505090508061156857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061164257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611605565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146116a4576040519150601f19603f3d011682016040523d82523d6000602084013e6116a9565b606091505b50915091508180156116d75750805115806116d757508080602001905160208110156116d457600080fd5b50515b61141357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b805161ffff8116811461175457600080fd5b919050565b803562ffffff8116811461175457600080fd5b60006020828403121561177d578081fd5b813561178881611ed9565b9392505050565b6000602082840312156117a0578081fd5b815161178881611ed9565b600080600080608085870312156117c0578283fd5b84356117cb81611ed9565b935060208501356117db81611ed9565b92506117e960408601611759565b915060608501356117f981611ed9565b939692955090935050565b60008060008060008060c0878903121561181c578182fd5b863561182781611ed9565b95506020870135945060408701359350606087013561184581611f1b565b9598949750929560808101359460a0909101359350915050565b60008060208385031215611871578182fd5b823567ffffffffffffffff80821115611888578384fd5b818501915085601f83011261189b578384fd5b8135818111156118a9578485fd5b86602080830285010111156118bc578485fd5b60209290920196919550909350505050565b6000602082840312156118df578081fd5b813561178881611efe565b6000602082840312156118fb578081fd5b815161178881611efe565b600060208284031215611917578081fd5b813561178881611f0c565b600060208284031215611933578081fd5b815167ffffffffffffffff8082111561194a578283fd5b818401915084601f83011261195d578283fd5b81518181111561196957fe5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156119a557fe5b6040528181528382016020018710156119bc578485fd5b6119cd826020830160208701611ea9565b9695505050505050565b60006101a082840312156119e9578081fd5b50919050565b600080600080600080600060e0888a031215611a09578485fd5b8751611a1481611ed9565b6020890151909750611a2581611f0c565b9550611a3360408901611742565b9450611a4160608901611742565b9350611a4f60808901611742565b925060a0880151611a5f81611f1b565b60c0890151909250611a7081611efe565b8091505092959891949750929550565b600060208284031215611a91578081fd5b61178882611759565b60008060008060808587031215611aaf578182fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611ad5578283fd5b6040860151606090960151949790965092505050565b60008060408385031215611afd578182fd5b505080516020909101519092909150565b600060208284031215611b1f578081fd5b813561178881611f1b565b73ffffffffffffffffffffffffffffffffffffffff169052565b15159052565b60008151808452611b62816020860160208601611ea9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff938416815291909216602082015262ffffff909116604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611cac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611c9a858351611b4a565b94509285019290850190600101611c60565b5092979650505050505050565b6000602082526117886020830184611b4a565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526009908201527f4e6f742057455448390000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b600061018082019050611d85828451611b2a565b6020830151611d976020840182611b2a565b506040830151611daa6040840182611b9b565b506060830151611dbd6060840182611b94565b506080830151611dd06080840182611b94565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e0e82850182611b2a565b5050610140838101519083015261016080840151611e2e82850182611b44565b505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e73578283fd5b83018035915067ffffffffffffffff821115611e8d578283fd5b602001915036819003821315611ea257600080fd5b9250929050565b60005b83811015611ec4578181015183820152602001611eac565b83811115611ed3576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611efb57600080fd5b50565b8015158114611efb57600080fd5b8060020b8114611efb57600080fd5b60ff81168114611efb57600080fdfea164736f6c6343000706000a",
  "deployedBytecode": "0x6080604052600436106100b55760003560e01c8063ac9650d811610069578063c45a01551161004e578063c45a0155146101e5578063d44f2bf2146101fa578063f3995c671461021a57610134565b8063ac9650d8146101b2578063c2e3140a146101d257610134565b80634aa4a4fc1161009a5780634aa4a4fc146101755780635d6de3bb1461018a578063a4a78f0c1461019f57610134565b806313ead562146101395780634659a4941461016257610134565b36610134573373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611d03565b60405180910390fd5b005b600080fd5b61014c6101473660046117ab565b61022d565b6040516101599190611bb4565b60405180910390f35b610132610170366004611804565b6105d4565b34801561018157600080fd5b5061014c610694565b34801561019657600080fd5b5061014c6106b8565b6101326101ad366004611804565b6106dc565b6101c56101c036600461185f565b6107b9565b6040516101599190611c3b565b6101326101e0366004611804565b610913565b3480156101f157600080fd5b5061014c6109c8565b34801561020657600080fd5b506101326102153660046119d7565b6109ec565b610132610228366004611804565b61117c565b60008373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161061026757600080fd5b6040517f1698ee8200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690631698ee82906102dd90889088908890600401611c06565b60206040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d919061178f565b905073ffffffffffffffffffffffffffffffffffffffff811661049e576040517fa167129500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063a1671295906103c090889088908890600401611c06565b602060405180830381600087803b1580156103da57600080fd5b505af11580156103ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610412919061178f565b6040517ff637731d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063f637731d90610467908590600401611bb4565b600060405180830381600087803b15801561048157600080fd5b505af1158015610495573d6000803e3d6000fd5b505050506105cc565b60008173ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b1580156104e657600080fd5b505afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e91906119ef565b50505050505090508073ffffffffffffffffffffffffffffffffffffffff16600014156105ca576040517ff637731d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83169063f637731d90610597908690600401611bb4565b600060405180830381600087803b1580156105b157600080fd5b505af11580156105c5573d6000803e3d6000fd5b505050505b505b949350505050565b604080517f8fcbaf0c00000000000000000000000000000000000000000000000000000000815233600482015230602482015260448101879052606481018690526001608482015260ff851660a482015260c4810184905260e48101839052905173ffffffffffffffffffffffffffffffffffffffff881691638fcbaf0c9161010480830192600092919082900301818387803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b50505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b604080517fdd62ed3e00000000000000000000000000000000000000000000000000000000815233600482015230602482015290517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561077157600080fd5b505afa158015610785573d6000803e3d6000fd5b505050506040513d602081101561079b57600080fd5b505110156107b1576107b18686868686866105d4565b505050505050565b60608167ffffffffffffffff811180156107d257600080fd5b5060405190808252806020026020018201604052801561080657816020015b60608152602001906001900390816107f15790505b50905060005b8281101561090c576000803086868581811061082457fe5b90506020028101906108369190611e3f565b604051610844929190611ba4565b600060405180830381855af49150503d806000811461087f576040519150601f19603f3d011682016040523d82523d6000602084013e610884565b606091505b5091509150816108ea5760448151101561089d57600080fd5b600481019050808060200190518101906108b79190611922565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101299190611cb9565b808484815181106108f757fe5b6020908102919091010152505060010161080c565b5092915050565b604080517fdd62ed3e0000000000000000000000000000000000000000000000000000000081523360048201523060248201529051869173ffffffffffffffffffffffffffffffffffffffff89169163dd62ed3e91604480820192602092909190829003018186803b15801561098857600080fd5b505afa15801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b505110156107b1576107b186868686868661117c565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006109fe6060830160408401611b0e565b60ff1611610a38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611ccc565b6064610a4a6060830160408401611b0e565b60ff161115610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012990611d3a565b610a92602082018261176c565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd33610abb602085018561176c565b84602001356040518463ffffffff1660e01b8152600401610ade93929190611bd5565b602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b3091906118ea565b50600080610b41602084018461176c565b73ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b8152600401610b799190611bb4565b6040805180830381600087803b158015610b9257600080fd5b505af1158015610ba6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bca9190611aeb565b909250905060006064610bf0610be66060870160408801611b0e565b859060ff16611214565b81610bf757fe5b04905060006064610c11610be66060880160408901611b0e565b81610c1857fe5b049050610c55610c2e608087016060880161176c565b7f00000000000000000000000000000000000000000000000000000000000000008461123e565b610c8f610c6860a087016080880161176c565b7f00000000000000000000000000000000000000000000000000000000000000008361123e565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663eb44fea46040518061018001604052808a6060016020810190610ced919061176c565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d1860a08c0160808d0161176c565b73ffffffffffffffffffffffffffffffffffffffff168152602001610d4360c08c0160a08d01611a80565b62ffffff168152602001610d5d60e08c0160c08d01611906565b60020b8152602001610d766101008c0160e08d01611906565b60020b815260208101889052604081018790526101008b013560608201526101208b0135608082015260a001610db46101608c016101408d0161176c565b73ffffffffffffffffffffffffffffffffffffffff1681526101608b013560208201526000604091820152517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152610e169190600401611d71565b608060405180830381600087803b158015610e3057600080fd5b505af1158015610e44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e689190611a9a565b935093505050858210156110085783821015610eb957610eb9610e916080890160608a0161176c565b7f0000000000000000000000000000000000000000000000000000000000000000600061123e565b818603610ece6101a089016101808a016118ce565b8015610f34575073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016610f1c60808a0160608b0161176c565b73ffffffffffffffffffffffffffffffffffffffff16145b15610fec576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90610fab908490600401611e36565b600060405180830381600087803b158015610fc557600080fd5b505af1158015610fd9573d6000803e3d6000fd5b50505050610fe7338261141a565b611006565b611006610fff60808a0160608b0161176c565b338361156d565b505b84811015611173578281101561102b5761102b610e9160a0890160808a0161176c565b8085036110406101a089016101808a016118ce565b80156110a6575073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661108e60a08a0160808b0161176c565b73ffffffffffffffffffffffffffffffffffffffff16145b1561115e576040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d9061111d908490600401611e36565b600060405180830381600087803b15801561113757600080fd5b505af115801561114b573d6000803e3d6000fd5b50505050611159338261141a565b611171565b611171610fff60a08a0160808b0161176c565b505b50505050505050565b604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c48101839052905173ffffffffffffffffffffffffffffffffffffffff88169163d505accf9160e480830192600092919082900301818387803b15801561067457600080fd5b600082158061122f5750508181028183828161122c57fe5b04145b61123857600080fd5b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061131357805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016112d6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611375576040519150601f19603f3d011682016040523d82523d6000602084013e61137a565b606091505b50915091508180156113a85750805115806113a857508080602001905160208110156113a557600080fd5b50515b61141357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5341000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040518082805190602001908083835b6020831061149157805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611454565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146114f3576040519150601f19603f3d011682016040523d82523d6000602084013e6114f8565b606091505b505090508061156857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600360248201527f5354450000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251825160009485949389169392918291908083835b6020831061164257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611605565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146116a4576040519150601f19603f3d011682016040523d82523d6000602084013e6116a9565b606091505b50915091508180156116d75750805115806116d757508080602001905160208110156116d457600080fd5b50515b61141357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600260248201527f5354000000000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b805161ffff8116811461175457600080fd5b919050565b803562ffffff8116811461175457600080fd5b60006020828403121561177d578081fd5b813561178881611ed9565b9392505050565b6000602082840312156117a0578081fd5b815161178881611ed9565b600080600080608085870312156117c0578283fd5b84356117cb81611ed9565b935060208501356117db81611ed9565b92506117e960408601611759565b915060608501356117f981611ed9565b939692955090935050565b60008060008060008060c0878903121561181c578182fd5b863561182781611ed9565b95506020870135945060408701359350606087013561184581611f1b565b9598949750929560808101359460a0909101359350915050565b60008060208385031215611871578182fd5b823567ffffffffffffffff80821115611888578384fd5b818501915085601f83011261189b578384fd5b8135818111156118a9578485fd5b86602080830285010111156118bc578485fd5b60209290920196919550909350505050565b6000602082840312156118df578081fd5b813561178881611efe565b6000602082840312156118fb578081fd5b815161178881611efe565b600060208284031215611917578081fd5b813561178881611f0c565b600060208284031215611933578081fd5b815167ffffffffffffffff8082111561194a578283fd5b818401915084601f83011261195d578283fd5b81518181111561196957fe5b60405160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011682010181811084821117156119a557fe5b6040528181528382016020018710156119bc578485fd5b6119cd826020830160208701611ea9565b9695505050505050565b60006101a082840312156119e9578081fd5b50919050565b600080600080600080600060e0888a031215611a09578485fd5b8751611a1481611ed9565b6020890151909750611a2581611f0c565b9550611a3360408901611742565b9450611a4160608901611742565b9350611a4f60808901611742565b925060a0880151611a5f81611f1b565b60c0890151909250611a7081611efe565b8091505092959891949750929550565b600060208284031215611a91578081fd5b61178882611759565b60008060008060808587031215611aaf578182fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114611ad5578283fd5b6040860151606090960151949790965092505050565b60008060408385031215611afd578182fd5b505080516020909101519092909150565b600060208284031215611b1f578081fd5b813561178881611f1b565b73ffffffffffffffffffffffffffffffffffffffff169052565b15159052565b60008151808452611b62816020860160208601611ea9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60020b9052565b62ffffff169052565b6000828483379101908152919050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff938416815291909216602082015262ffffff909116604082015260600190565b6000602080830181845280855180835260408601915060408482028701019250838701855b82811015611cac577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452611c9a858351611b4a565b94509285019290850190600101611c60565b5092979650505050505050565b6000602082526117886020830184611b4a565b60208082526014908201527f50657263656e7461676520746f6f20736d616c6c000000000000000000000000604082015260600190565b60208082526009908201527f4e6f742057455448390000000000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f50657263656e7461676520746f6f206c61726765000000000000000000000000604082015260600190565b600061018082019050611d85828451611b2a565b6020830151611d976020840182611b2a565b506040830151611daa6040840182611b9b565b506060830151611dbd6060840182611b94565b506080830151611dd06080840182611b94565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151611e0e82850182611b2a565b5050610140838101519083015261016080840151611e2e82850182611b44565b505092915050565b90815260200190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e73578283fd5b83018035915067ffffffffffffffff821115611e8d578283fd5b602001915036819003821315611ea257600080fd5b9250929050565b60005b83811015611ec4578181015183820152602001611eac565b83811115611ed3576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff81168114611efb57600080fd5b50565b8015158114611efb57600080fd5b8060020b8114611efb57600080fd5b60ff81168114611efb57600080fdfea164736f6c6343000706000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
