{
  "_format": "hh-sol-artifact-1",
  "contractName": "ElixirQuoter",
  "sourceName": "contracts/elixir-periphery/lens/ElixirQuoter.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": "path",
          "type": "bytes"
        }
      ],
      "name": "elixirSwapCallback",
      "outputs": [],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        },
        {
          "internalType": "uint24",
          "name": "fee",
          "type": "uint24"
        }
      ],
      "name": "getPool",
      "outputs": [
        {
          "internalType": "contract IElixirPool",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "quoteExactInput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160[]",
          "name": "sqrtPriceX96AfterList",
          "type": "uint160[]"
        },
        {
          "internalType": "uint32[]",
          "name": "initializedTicksCrossedList",
          "type": "uint32[]"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IElixirQuoter.QuoteExactInputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactInputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "path",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "name": "quoteExactOutput",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160[]",
          "name": "sqrtPriceX96AfterList",
          "type": "uint160[]"
        },
        {
          "internalType": "uint32[]",
          "name": "initializedTicksCrossedList",
          "type": "uint32[]"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenOut",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amount",
              "type": "uint256"
            },
            {
              "internalType": "uint24",
              "name": "fee",
              "type": "uint24"
            },
            {
              "internalType": "uint160",
              "name": "sqrtPriceLimitX96",
              "type": "uint160"
            }
          ],
          "internalType": "struct IElixirQuoter.QuoteExactOutputSingleParams",
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "quoteExactOutputSingle",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        },
        {
          "internalType": "uint160",
          "name": "sqrtPriceX96After",
          "type": "uint160"
        },
        {
          "internalType": "uint32",
          "name": "initializedTicksCrossed",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "gasEstimate",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001cc738038062001cc7833981016040819052620000349162000070565b6001600160601b0319606092831b8116608052911b1660a052620000a7565b80516001600160a01b03811681146200006b57600080fd5b919050565b6000806040838503121562000083578182fd5b6200008e8362000053565b91506200009e6020840162000053565b90509250929050565b60805160601c60a05160601c611bec620000db6000398061033c52508061014e528061053352806108935250611bec6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610104578063c6a5026a1461010c578063cdca17531461011f578063d804d7a71461013257610088565b80631698ee821461008d5780632f80bb1d146100b65780634aa4a4fc146100d9578063bd21704a146100e1575b600080fd5b6100a061009b3660046116f0565b610147565b6040516100ad91906119c0565b60405180910390f35b6100c96100c4366004611736565b610185565b6040516100ad9493929190611a63565b6100a061033a565b6100f46100ef366004611854565b61035e565b6040516100ad9493929190611afe565b6100a0610531565b6100f461011a366004611854565b610555565b6100c961012d366004611736565b6106cb565b61014561014036600461179c565b610862565b005b600061017d7f00000000000000000000000000000000000000000000000000000000000000006101788686866109dd565b610a33565b949350505050565b6000606080600061019586610b2f565b67ffffffffffffffff811180156101ab57600080fd5b506040519080825280602002602001820160405280156101d5578160200160208202803683370190505b5092506101e186610b2f565b67ffffffffffffffff811180156101f757600080fd5b50604051908082528060200260200182016040528015610221578160200160208202803683370190505b50915060005b60008060006102358a610b40565b9250925092506000806000806102916040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b031681525061035e565b9350935093509350828b89815181106102a657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106102d357fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926103008e610b71565b156103155761030e8e610b79565b9d50610325565b8c9b505050505050505050610331565b50505050505050610227565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261038f9290610147565b905086608001516001600160a01b0316600014156103b05760408701516000555b60005a9050816001600160a01b031663128acb0830856103d38c60400151610b96565b6000038c608001516001600160a01b03166000146103f5578c6080015161041b565b876104145773fffd8963efd1fc6a506488495d951d5263988d2561041b565b6401000276a45b8d602001518e606001518f6000015160405160200161043c9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046b9594939291906119d4565b6040805180830381600087803b15801561048457600080fd5b505af19250505080156104b4575060408051601f3d908101601f191682019092526104b191810190611779565b60015b610524573d8080156104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b505a8203945088608001516001600160a01b03166000141561050857600080555b610513818487610bac565b97509750975097505050505061052a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105869290610147565b905060005a9050816001600160a01b031663128acb0830856105ab8c60400151610b96565b60808d01516001600160a01b0316156105c8578c608001516105ee565b876105e75773fffd8963efd1fc6a506488495d951d5263988d256105ee565b6401000276a45b8d600001518e606001518f6020015160405160200161060f9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161063e9594939291906119d4565b6040805180830381600087803b15801561065757600080fd5b505af1925050508015610687575060408051601f3d908101601f1916820190925261068491810190611779565b60015b610524573d8080156106b5576040519150601f19603f3d011682016040523d82523d6000602084013e6106ba565b606091505b505a82039450610513818487610bac565b600060608060006106db86610b2f565b67ffffffffffffffff811180156106f157600080fd5b5060405190808252806020026020018201604052801561071b578160200160208202803683370190505b50925061072786610b2f565b67ffffffffffffffff8111801561073d57600080fd5b50604051908082528060200260200182016040528015610767578160200160208202803683370190505b50915060005b600080600061077b8a610b40565b9250925092506000806000806107d76040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610555565b9350935093509350828b89815181106107ec57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061081957fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108468e610b71565b15610315576108548e610b79565b9d505050505050505061076d565b60008313806108715750600082135b61087a57600080fd5b600080600061088884610b40565b9250925092506108ba7f0000000000000000000000000000000000000000000000000000000000000000848484610c66565b5060008060008089136108e657856001600160a01b0316856001600160a01b031610888a600003610901565b846001600160a01b0316866001600160a01b03161089896000035b9250925092506000610914878787610147565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611876565b50505050509150915085156109b057604051848152826020820152816040820152606081fd5b600054156109c65760005484146109c657600080fd5b604051858152826020820152816040820152606081fd5b6109e56115be565b826001600160a01b0316846001600160a01b03161115610a03579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a5b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b80516017601319909101045b919050565b60008080610b4e8482610c85565b9250610b5b846014610d51565b9050610b68846017610c85565b91509193909250565b516042111590565b8051606090610b9090839060179060161901610e0d565b92915050565b6000600160ff1b8210610ba857600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611876565b50939650610c3b94508d9350610f6a92505050565b91975095509050610c566001600160a01b0389168383610ff7565b9350869250505093509350935093565b6000610c7c85610c778686866109dd565b611580565b95945050505050565b600081826014011015610cdf576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610d38576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610dab576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610e04576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f011015610e58576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610ea0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610ef8576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610f175760405191506000825260208201604052610f61565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f50578051835260209283019201610f38565b5050858452601f01601f1916604052505b50949350505050565b60008060008351606014610fd657604484511015610fa35760405162461bcd60e51b8152600401610f9a90611a2c565b60405180910390fd5b60048401935083806020019051810190610fbd91906117ea565b60405162461bcd60e51b8152600401610f9a9190611a19565b83806020019051810190610fea919061190d565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051600290810b908c900b8161107a57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5051600290810b908d900b816110fc57fe5b0560020b8161110757fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b5051600290810b908d900b8161118357fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051600290810b908e900b8161120557fe5b0560020b8161121057fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b50511611801561131457508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d60208110156112fc57600080fd5b5051600290810b908d900b8161130e57fe5b0760020b155b801561132557508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d60208110156113a257600080fd5b50511611801561142857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e657600080fd5b505afa1580156113fa573d6000803e3d6000fd5b505050506040513d602081101561141057600080fd5b5051600290810b908e900b8161142257fe5b0760020b155b801561143957508b60020b8d60020b125b95508160010b8460010b128061146557508160010b8460010b14801561146557508060ff168360ff1611155b1561147b57839950829750819850809650611488565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13611558578560010b8760010b14156114bd5760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b505116905061153f816115a3565b61ffff1698909801975050600190950194600019611496565b8115611565576001880397505b8215611572576001880397505b505050505050509392505050565b600061158c8383610a33565b9050336001600160a01b03821614610b9057600080fd5b6000805b8215610b90576000198301909216916001016115a7565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115ee578081fd5b81356116016115fc82611b4c565b611b28565b818152846020838601011115611615578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610b3b57600080fd5b600060a08284031215611652578081fd5b60405160a0810181811067ffffffffffffffff8211171561166f57fe5b604052905080823561168081611b9e565b8152602083013561169081611b9e565b6020820152604083810135908201526116ab606084016116dd565b606082015260808301356116be81611b9e565b6080919091015292915050565b805161ffff81168114610b3b57600080fd5b803562ffffff81168114610b3b57600080fd5b600080600060608486031215611704578283fd5b833561170f81611b9e565b9250602084013561171f81611b9e565b915061172d604085016116dd565b90509250925092565b60008060408385031215611748578182fd5b823567ffffffffffffffff81111561175e578283fd5b61176a858286016115de565b95602094909401359450505050565b6000806040838503121561178b578182fd5b505080516020909101519092909150565b6000806000606084860312156117b0578283fd5b8335925060208401359150604084013567ffffffffffffffff8111156117d4578182fd5b6117e0868287016115de565b9150509250925092565b6000602082840312156117fb578081fd5b815167ffffffffffffffff811115611811578182fd5b8201601f81018413611821578182fd5b805161182f6115fc82611b4c565b818152856020838501011115611843578384fd5b610c7c826020830160208601611b6e565b600060a08284031215611865578081fd5b61186f8383611641565b9392505050565b600080600080600080600060e0888a031215611890578485fd5b875161189b81611b9e565b96506118a96020890161162f565b95506118b7604089016116cb565b94506118c5606089016116cb565b93506118d3608089016116cb565b925060a088015160ff811681146118e8578283fd5b60c089015190925080151581146118fd578182fd5b8091505092959891949750929550565b600080600060608486031215611921578081fd5b83519250602084015161193381611b9e565b915061172d6040850161162f565b60008151808452611959816020860160208601611b6e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152611a0e60a0830184611941565b979650505050505050565b60006020825261186f6020830184611941565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611aac5784516001600160a01b031683529383019391830191600101611a87565b505084810360408601528651808252908201925081870190845b81811015611ae857825163ffffffff1685529383019391830191600101611ac6565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611b4457fe5b604052919050565b600067ffffffffffffffff821115611b6057fe5b50601f01601f191660200190565b60005b83811015611b89578181015183820152602001611b71565b83811115611b98576000848401525b50505050565b6001600160a01b0381168114611bb357600080fd5b5056fea264697066735822122024fda544cd6acfc18f8c2e5abdde87380f19bc6e00aa6a2845247440717f7cde64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c8063c45a01551161005b578063c45a015514610104578063c6a5026a1461010c578063cdca17531461011f578063d804d7a71461013257610088565b80631698ee821461008d5780632f80bb1d146100b65780634aa4a4fc146100d9578063bd21704a146100e1575b600080fd5b6100a061009b3660046116f0565b610147565b6040516100ad91906119c0565b60405180910390f35b6100c96100c4366004611736565b610185565b6040516100ad9493929190611a63565b6100a061033a565b6100f46100ef366004611854565b61035e565b6040516100ad9493929190611afe565b6100a0610531565b6100f461011a366004611854565b610555565b6100c961012d366004611736565b6106cb565b61014561014036600461179c565b610862565b005b600061017d7f00000000000000000000000000000000000000000000000000000000000000006101788686866109dd565b610a33565b949350505050565b6000606080600061019586610b2f565b67ffffffffffffffff811180156101ab57600080fd5b506040519080825280602002602001820160405280156101d5578160200160208202803683370190505b5092506101e186610b2f565b67ffffffffffffffff811180156101f757600080fd5b50604051908082528060200260200182016040528015610221578160200160208202803683370190505b50915060005b60008060006102358a610b40565b9250925092506000806000806102916040518060a00160405280886001600160a01b03168152602001896001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b031681525061035e565b9350935093509350828b89815181106102a657fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a89815181106102d357fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926103008e610b71565b156103155761030e8e610b79565b9d50610325565b8c9b505050505050505050610331565b50505050505050610227565b92959194509250565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b038082169084161092849261038f9290610147565b905086608001516001600160a01b0316600014156103b05760408701516000555b60005a9050816001600160a01b031663128acb0830856103d38c60400151610b96565b6000038c608001516001600160a01b03166000146103f5578c6080015161041b565b876104145773fffd8963efd1fc6a506488495d951d5263988d2561041b565b6401000276a45b8d602001518e606001518f6000015160405160200161043c9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161046b9594939291906119d4565b6040805180830381600087803b15801561048457600080fd5b505af19250505080156104b4575060408051601f3d908101601f191682019092526104b191810190611779565b60015b610524573d8080156104e2576040519150601f19603f3d011682016040523d82523d6000602084013e6104e7565b606091505b505a8203945088608001516001600160a01b03166000141561050857600080555b610513818487610bac565b97509750975097505050505061052a565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926105869290610147565b905060005a9050816001600160a01b031663128acb0830856105ab8c60400151610b96565b60808d01516001600160a01b0316156105c8578c608001516105ee565b876105e75773fffd8963efd1fc6a506488495d951d5263988d256105ee565b6401000276a45b8d600001518e606001518f6020015160405160200161060f9392919061196d565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161063e9594939291906119d4565b6040805180830381600087803b15801561065757600080fd5b505af1925050508015610687575060408051601f3d908101601f1916820190925261068491810190611779565b60015b610524573d8080156106b5576040519150601f19603f3d011682016040523d82523d6000602084013e6106ba565b606091505b505a82039450610513818487610bac565b600060608060006106db86610b2f565b67ffffffffffffffff811180156106f157600080fd5b5060405190808252806020026020018201604052801561071b578160200160208202803683370190505b50925061072786610b2f565b67ffffffffffffffff8111801561073d57600080fd5b50604051908082528060200260200182016040528015610767578160200160208202803683370190505b50915060005b600080600061077b8a610b40565b9250925092506000806000806107d76040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018762ffffff16815260200160006001600160a01b0316815250610555565b9350935093509350828b89815181106107ec57fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061081957fe5b63ffffffff90921660209283029190910190910152929b50968201966001909601958b926108468e610b71565b15610315576108548e610b79565b9d505050505050505061076d565b60008313806108715750600082135b61087a57600080fd5b600080600061088884610b40565b9250925092506108ba7f0000000000000000000000000000000000000000000000000000000000000000848484610c66565b5060008060008089136108e657856001600160a01b0316856001600160a01b031610888a600003610901565b846001600160a01b0316866001600160a01b03161089896000035b9250925092506000610914878787610147565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561095257600080fd5b505afa158015610966573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098a9190611876565b50505050509150915085156109b057604051848152826020820152816040820152606081fd5b600054156109c65760005484146109c657600080fd5b604051858152826020820152816040820152606081fd5b6109e56115be565b826001600160a01b0316846001600160a01b03161115610a03579192915b50604080516060810182526001600160a01b03948516815292909316602083015262ffffff169181019190915290565b600081602001516001600160a01b031682600001516001600160a01b031610610a5b57600080fd5b50805160208083015160409384015184516001600160a01b0394851681850152939091168385015262ffffff166060808401919091528351808403820181526080840185528051908301207fff0000000000000000000000000000000000000000000000000000000000000060a085015294901b6bffffffffffffffffffffffff191660a183015260b58201939093527f41a723f9e6457830b1b7a44df4435fab88581d073226894b33131815dd674c2260d5808301919091528251808303909101815260f5909101909152805191012090565b80516017601319909101045b919050565b60008080610b4e8482610c85565b9250610b5b846014610d51565b9050610b68846017610c85565b91509193909250565b516042111590565b8051606090610b9090839060179060161901610e0d565b92915050565b6000600160ff1b8210610ba857600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610bee57600080fd5b505afa158015610c02573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c269190611876565b50939650610c3b94508d9350610f6a92505050565b91975095509050610c566001600160a01b0389168383610ff7565b9350869250505093509350935093565b6000610c7c85610c778686866109dd565b611580565b95945050505050565b600081826014011015610cdf576040805162461bcd60e51b815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015290519081900360640190fd5b8160140183511015610d38576040805162461bcd60e51b815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015290519081900360640190fd5b5001602001516c01000000000000000000000000900490565b600081826003011015610dab576040805162461bcd60e51b815260206004820152601160248201527f746f55696e7432345f6f766572666c6f77000000000000000000000000000000604482015290519081900360640190fd5b8160030183511015610e04576040805162461bcd60e51b815260206004820152601460248201527f746f55696e7432345f6f75744f66426f756e6473000000000000000000000000604482015290519081900360640190fd5b50016003015190565b60608182601f011015610e58576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b828284011015610ea0576040805162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015290519081900360640190fd5b81830184511015610ef8576040805162461bcd60e51b815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015290519081900360640190fd5b606082158015610f175760405191506000825260208201604052610f61565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015610f50578051835260209283019201610f38565b5050858452601f01601f1916604052505b50949350505050565b60008060008351606014610fd657604484511015610fa35760405162461bcd60e51b8152600401610f9a90611a2c565b60405180910390fd5b60048401935083806020019051810190610fbd91906117ea565b60405162461bcd60e51b8152600401610f9a9190611a19565b83806020019051810190610fea919061190d565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561103e57600080fd5b505afa158015611052573d6000803e3d6000fd5b505050506040513d602081101561106857600080fd5b5051600290810b908c900b8161107a57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c057600080fd5b505afa1580156110d4573d6000803e3d6000fd5b505050506040513d60208110156110ea57600080fd5b5051600290810b908d900b816110fc57fe5b0560020b8161110757fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b15801561114757600080fd5b505afa15801561115b573d6000803e3d6000fd5b505050506040513d602081101561117157600080fd5b5051600290810b908d900b8161118357fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c957600080fd5b505afa1580156111dd573d6000803e3d6000fd5b505050506040513d60208110156111f357600080fd5b5051600290810b908e900b8161120557fe5b0560020b8161121057fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561126457600080fd5b505afa158015611278573d6000803e3d6000fd5b505050506040513d602081101561128e57600080fd5b50511611801561131457508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156112d257600080fd5b505afa1580156112e6573d6000803e3d6000fd5b505050506040513d60208110156112fc57600080fd5b5051600290810b908d900b8161130e57fe5b0760020b155b801561132557508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561137857600080fd5b505afa15801561138c573d6000803e3d6000fd5b505050506040513d60208110156113a257600080fd5b50511611801561142857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e657600080fd5b505afa1580156113fa573d6000803e3d6000fd5b505050506040513d602081101561141057600080fd5b5051600290810b908e900b8161142257fe5b0760020b155b801561143957508b60020b8d60020b125b95508160010b8460010b128061146557508160010b8460010b14801561146557508060ff168360ff1611155b1561147b57839950829750819850809650611488565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b13611558578560010b8760010b14156114bd5760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561150757600080fd5b505afa15801561151b573d6000803e3d6000fd5b505050506040513d602081101561153157600080fd5b505116905061153f816115a3565b61ffff1698909801975050600190950194600019611496565b8115611565576001880397505b8215611572576001880397505b505050505050509392505050565b600061158c8383610a33565b9050336001600160a01b03821614610b9057600080fd5b6000805b8215610b90576000198301909216916001016115a7565b604080516060810182526000808252602082018190529181019190915290565b600082601f8301126115ee578081fd5b81356116016115fc82611b4c565b611b28565b818152846020838601011115611615578283fd5b816020850160208301379081016020019190915292915050565b8051600281900b8114610b3b57600080fd5b600060a08284031215611652578081fd5b60405160a0810181811067ffffffffffffffff8211171561166f57fe5b604052905080823561168081611b9e565b8152602083013561169081611b9e565b6020820152604083810135908201526116ab606084016116dd565b606082015260808301356116be81611b9e565b6080919091015292915050565b805161ffff81168114610b3b57600080fd5b803562ffffff81168114610b3b57600080fd5b600080600060608486031215611704578283fd5b833561170f81611b9e565b9250602084013561171f81611b9e565b915061172d604085016116dd565b90509250925092565b60008060408385031215611748578182fd5b823567ffffffffffffffff81111561175e578283fd5b61176a858286016115de565b95602094909401359450505050565b6000806040838503121561178b578182fd5b505080516020909101519092909150565b6000806000606084860312156117b0578283fd5b8335925060208401359150604084013567ffffffffffffffff8111156117d4578182fd5b6117e0868287016115de565b9150509250925092565b6000602082840312156117fb578081fd5b815167ffffffffffffffff811115611811578182fd5b8201601f81018413611821578182fd5b805161182f6115fc82611b4c565b818152856020838501011115611843578384fd5b610c7c826020830160208601611b6e565b600060a08284031215611865578081fd5b61186f8383611641565b9392505050565b600080600080600080600060e0888a031215611890578485fd5b875161189b81611b9e565b96506118a96020890161162f565b95506118b7604089016116cb565b94506118c5606089016116cb565b93506118d3608089016116cb565b925060a088015160ff811681146118e8578283fd5b60c089015190925080151581146118fd578182fd5b8091505092959891949750929550565b600080600060608486031215611921578081fd5b83519250602084015161193381611b9e565b915061172d6040850161162f565b60008151808452611959816020860160208601611b6e565b601f01601f19169290920160200192915050565b606093841b6bffffffffffffffffffffffff19908116825260e89390931b7fffffff0000000000000000000000000000000000000000000000000000000000166014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a06080830152611a0e60a0830184611941565b979650505050505050565b60006020825261186f6020830184611941565b60208082526010908201527f556e6578706563746564206572726f7200000000000000000000000000000000604082015260600190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611aac5784516001600160a01b031683529383019391830191600101611a87565b505084810360408601528651808252908201925081870190845b81811015611ae857825163ffffffff1685529383019391830191600101611ac6565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611b4457fe5b604052919050565b600067ffffffffffffffff821115611b6057fe5b50601f01601f191660200190565b60005b83811015611b89578181015183820152602001611b71565b83811115611b98576000848401525b50505050565b6001600160a01b0381168114611bb357600080fd5b5056fea264697066735822122024fda544cd6acfc18f8c2e5abdde87380f19bc6e00aa6a2845247440717f7cde64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
