{
  "_format": "hh-sol-artifact-1",
  "contractName": "FlashloanStrategyMock",
  "sourceName": "contracts/mocks/FlashloanStrategyMock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IBentoBoxV1",
          "name": "bentoBox_",
          "type": "address"
        },
        {
          "internalType": "contract KashiPair",
          "name": "_kashiPair",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "asset",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "collateral",
          "type": "address"
        },
        {
          "internalType": "contract ISwapper",
          "name": "_swapper",
          "type": "address"
        },
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "_factory",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        }
      ],
      "name": "exit",
      "outputs": [
        {
          "internalType": "int256",
          "name": "amountAdded",
          "type": "int256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract IUniswapV2Factory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract KashiPair",
          "name": "kashiPair",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "borrowPart",
          "type": "uint256"
        }
      ],
      "name": "getCollateralSharesForBorrowPart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "harvest",
      "outputs": [
        {
          "internalType": "int256",
          "name": "amountAdded",
          "type": "int256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "contract IERC20",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "onFlashLoan",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "skim",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "actualAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x61014060405234801561001157600080fd5b50604051611e3f380380611e3f833981810160405260c081101561003457600080fd5b5080516020820151604083015160608085015160808087015160a09788015187851b6001600160601b031990811660e05287861b811660c05286861b811690935283851b831690985280841b90911661010052600080546001600160a01b0319166001600160a01b03988916178155339384901b6101205293871696918216959482169482169391169190611ca69061019990398061097c5280610a3b5280610b635250508061020b52806102a052806103a15280610538528061056f5280610611528061077652806108665280610e175280610f765280611408528061149952806114cd528061153f52806115d352508061064152806108f452806109ae5280610a6b5280610ae65280610bd6525080610d1e5280610dd652806111325250806102715280610354528061046a528061051652806105d35280610747528061081f5280610d465280610f3852806113c5528061147752806115b15250611ca66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80636939aaf51161005b5780636939aaf5146101745780637f8661a114610191578063abe28dd7146101ae578063c45a0155146101da5761007d565b806318fccc761461008257806323e30c8b146100c05780632e1a7d4d14610157575b600080fd5b6100ae6004803603604081101561009857600080fd5b50803590602001356001600160a01b03166101fe565b60408051918252519081900360200190f35b610155600480360360a08110156100d657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561011657600080fd5b82018360208201111561012857600080fd5b8035906020019184600183028401116401000000008311171561014a57600080fd5b509092509050610564565b005b6100ae6004803603602081101561016d57600080fd5b50356113fb565b6101556004803603602081101561018a57600080fd5b50356114c2565b6100ae600480360360208110156101a757600080fd5b5035611532565b6100ae600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356115fd565b6101e26118be565b604080516001600160a01b039092168252519081900360200190f35b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026d576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156102fc57600080fd5b505afa158015610310573d6000803e3d6000fd5b505050506040513d602081101561032657600080fd5b5051604080516000808252602082019283905263f1676d3760e01b83523060248301818152604484018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660648701526084860188905260a060a48701908152865160c488018190529899507f0000000000000000000000000000000000000000000000000000000000000000919091169763f1676d37979496879693958b95919491939260e48601928190849084905b838110156103fc5781810151838201526020016103e4565b50505050905090810190601f1680156104295780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b50505050610507847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156104d557600080fd5b505afa1580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b5051906118cd565b915061055d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b5092915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d1576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461060f57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c0a47c93307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd446e226040518163ffffffff1660e01b815260040160206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d60208110156106c257600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600160448301526000606483018190526084830181905260a48301819052905160c48084019382900301818387803b15801561072d57600080fd5b505af1158015610741573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107dc57600080fd5b505af11580156107f0573d6000803e3d6000fd5b505050506040513d602081101561080657600080fd5b50506040805162ae511b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830181905260448301526064820187905260006084830181905283517f0000000000000000000000000000000000000000000000000000000000000000909216936302b9446c9360a4808201949293918390030190829087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b505050506040513d60408110156108d857600080fd5b5050604080516302ce728f60e01b815281516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926302ce728f92600480820193918290030181600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d604081101561096257600080fd5b5050604080516324720b1f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529151620186a0926000927f0000000000000000000000000000000000000000000000000000000000000000909116916348e4163e91602480820192602092909190829003018186803b1580156109f757600080fd5b505afa158015610a0b573d6000803e3d6000fd5b505050506040513d6020811015610a2157600080fd5b505160408051631c9e379b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291519293506000927f000000000000000000000000000000000000000000000000000000000000000090921691631c9e379b91602480820192602092909190829003018186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d6020811015610ade57600080fd5b505183610b0b7f0000000000000000000000000000000000000000000000000000000000000000856115fd565b0281610b1357fe5b6040805160018082528183019092529290910481019250606091906020808301908036833750506040805160018082528183019092529293506060929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000082600081518110610b8f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508285850281610bba57fe5b0481600081518110610bc857fe5b6020026020010181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376ee101b838330600060016040518663ffffffff1660e01b8152600401808060200180602001866001600160a01b03168152602001856001600160a01b031681526020018415158152602001838103835288818151815260200191508051906020019060200280838360005b83811015610c83578181015183820152602001610c6b565b50505050905001838103825287818151815260200191508051906020019060200280838360005b83811015610cc2578181015183820152602001610caa565b50505050905001975050505050505050600060405180830381600087803b158015610cec57600080fd5b505af1158015610d00573d6000803e3d6000fd5b5050600080546040805163e6a4390560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015291519395509116925063e6a43905916044808301926020929190829003018186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b505160408051633de222bb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166004840152306024840181905293519495506000947f000000000000000000000000000000000000000000000000000000000000000091909116936397da6d3093909187918791879163f7888aec916044808301926020929190829003018186803b158015610e6e57600080fd5b505afa158015610e82573d6000803e3d6000fd5b505050506040513d6020811015610e9857600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039687166004820152948616602486015292909416604484015260648301526084820192909252815160a480830193928290030181600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6040811015610f2657600080fd5b505160408051633de222bb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166004840152306024840181905293519495507f000000000000000000000000000000000000000000000000000000000000000016936397da6d309391928291600091879163f7888aec91604480820192602092909190829003018186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d6020811015610ff657600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039687166004820152948616602486015292909416604484015260648301526084820192909252815160a480830193928290030181600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b505050506040513d604081101561108457600080fd5b505060408051630240bc6b60e21b8152905160009182916001600160a01b03861691630902f1ac916004808301926060929190829003018186803b1580156110cb57600080fd5b505afa1580156110df573d6000803e3d6000fd5b505050506040513d60608110156110f557600080fd5b50805160209182015160408051630dfe168160e01b815290516dffffffffffffffffffffffffffff93841696509290911693506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169390881692630dfe1681926004808201939291829003018186803b15801561117a57600080fd5b505afa15801561118e573d6000803e3d6000fd5b505050506040513d60208110156111a457600080fd5b50516001600160a01b031614156112b45760006111c2848484611aa4565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590523060648401819052608060848501908152845160a486018190529697506001600160a01b038c169663022c0d9f96949589959394909390929160c4850191908083838b5b8381101561124757818101518382015260200161122f565b50505050905090810190601f1680156112745780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561129657600080fd5b505af11580156112aa573d6000803e3d6000fd5b50505050506113aa565b60006112c1848385611aa4565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290523060648401819052608060848501908152845160a486018190529697506001600160a01b038c169663022c0d9f9689969394929160c4850191908083838a5b83811015611341578181015183820152602001611329565b50505050905090810190601f16801561136e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561139057600080fd5b505af11580156113a4573d6000803e3d6000fd5b50505050505b506113ec9050336113bb8d8d611af2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190611925565b50505050505050505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461146a576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b6114be6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b5090565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152f576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b50565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a1576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b5060006115f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b919050565b600080670de0b6b3a7640000905060006201b58090506000620186a09050600080876001600160a01b0316638285ef406040518163ffffffff1660e01b8152600401604080518083038186803b15801561165657600080fd5b505afa15801561166a573d6000803e3d6000fd5b505050506040513d604081101561168057600080fd5b5080516020909101519092509050611696611c59565b50604080518082019091526001600160801b0380841682528216602082015260006116c2828a83611b4a565b9050896001600160a01b0316636b2ace876040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fd57600080fd5b505afa158015611711573d6000803e3d6000fd5b505050506040513d602081101561172757600080fd5b50516040805163d8dfeb4560e01b815290516001600160a01b039283169263da5139ca92908e169163d8dfeb4591600480820192602092909190829003018186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d602081101561179f57600080fd5b810190808051906020019092919050505089880261182b8e6001600160a01b0316633ba0b9a96040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ef57600080fd5b505afa158015611803573d6000803e3d6000fd5b505050506040513d602081101561181957600080fd5b5051611825878d611bed565b90611bed565b8161183257fe5b0460006040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018215158152602001935050505060206040518083038186803b15801561188257600080fd5b505afa158015611896573d6000803e3d6000fd5b505050506040513d60208110156118ac57600080fd5b50519750505050505050505b92915050565b6000546001600160a01b031681565b808203828111156118b8576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106119b75780518252601f199092019160209182019101611998565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a19576040519150601f19603f3d011682016040523d82523d6000602084013e611a1e565b606091505b5091509150818015611a4c575080511580611a4c5750808060200190516020811015611a4957600080fd5b50515b611a9d576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b5050505050565b600080611ab3856103e5611bed565b90506000611ac18285611bed565b90506000611adb83611ad5886103e8611bed565b90611af2565b9050808281611ae657fe5b04979650505050505050565b818101818110156118b8576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fd5b600083602001516001600160801b031660001415611b69575081611be6565b602084015184516001600160801b0391821691611b8891869116611bed565b81611b8f57fe5b049050818015611bd357508284600001516001600160801b0316611bc986602001516001600160801b031684611bed90919063ffffffff16565b81611bd057fe5b04105b15611be657611be3816001611af2565b90505b9392505050565b6000811580611c0857505080820282828281611c0557fe5b04145b6118b8576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b60408051808201909152600080825260208201529056fea264697066735822122027e73752169e45574f37c2f16976e88aa93ebeef2b54ad08d7eb04bb27c2274b64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80636939aaf51161005b5780636939aaf5146101745780637f8661a114610191578063abe28dd7146101ae578063c45a0155146101da5761007d565b806318fccc761461008257806323e30c8b146100c05780632e1a7d4d14610157575b600080fd5b6100ae6004803603604081101561009857600080fd5b50803590602001356001600160a01b03166101fe565b60408051918252519081900360200190f35b610155600480360360a08110156100d657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a08101608082013564010000000081111561011657600080fd5b82018360208201111561012857600080fd5b8035906020019184600183028401116401000000008311171561014a57600080fd5b509092509050610564565b005b6100ae6004803603602081101561016d57600080fd5b50356113fb565b6101556004803603602081101561018a57600080fd5b50356114c2565b6100ae600480360360208110156101a757600080fd5b5035611532565b6100ae600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356115fd565b6101e26118be565b604080516001600160a01b039092168252519081900360200190f35b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461026d576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a082317f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156102fc57600080fd5b505afa158015610310573d6000803e3d6000fd5b505050506040513d602081101561032657600080fd5b5051604080516000808252602082019283905263f1676d3760e01b83523060248301818152604484018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0381811660648701526084860188905260a060a48701908152865160c488018190529899507f0000000000000000000000000000000000000000000000000000000000000000919091169763f1676d37979496879693958b95919491939260e48601928190849084905b838110156103fc5781810151838201526020016103e4565b50505050905090810190601f1680156104295780820380516001836020036101000a031916815260200191505b509650505050505050600060405180830381600087803b15801561044c57600080fd5b505af1158015610460573d6000803e3d6000fd5b50505050610507847f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156104d557600080fd5b505afa1580156104e9573d6000803e3d6000fd5b505050506040513d60208110156104ff57600080fd5b5051906118cd565b915061055d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b5092915050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105d1576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161461060f57600080fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c0a47c93307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663cd446e226040518163ffffffff1660e01b815260040160206040518083038186803b15801561069857600080fd5b505afa1580156106ac573d6000803e3d6000fd5b505050506040513d60208110156106c257600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b039384166004820152929091166024830152600160448301526000606483018190526084830181905260a48301819052905160c48084019382900301818387803b15801561072d57600080fd5b505af1158015610741573d6000803e3d6000fd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000866040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156107dc57600080fd5b505af11580156107f0573d6000803e3d6000fd5b505050506040513d602081101561080657600080fd5b50506040805162ae511b60e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152306024830181905260448301526064820187905260006084830181905283517f0000000000000000000000000000000000000000000000000000000000000000909216936302b9446c9360a4808201949293918390030190829087803b1580156108ae57600080fd5b505af11580156108c2573d6000803e3d6000fd5b505050506040513d60408110156108d857600080fd5b5050604080516302ce728f60e01b815281516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926302ce728f92600480820193918290030181600087803b15801561093857600080fd5b505af115801561094c573d6000803e3d6000fd5b505050506040513d604081101561096257600080fd5b5050604080516324720b1f60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529151620186a0926000927f0000000000000000000000000000000000000000000000000000000000000000909116916348e4163e91602480820192602092909190829003018186803b1580156109f757600080fd5b505afa158015610a0b573d6000803e3d6000fd5b505050506040513d6020811015610a2157600080fd5b505160408051631c9e379b60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015291519293506000927f000000000000000000000000000000000000000000000000000000000000000090921691631c9e379b91602480820192602092909190829003018186803b158015610ab457600080fd5b505afa158015610ac8573d6000803e3d6000fd5b505050506040513d6020811015610ade57600080fd5b505183610b0b7f0000000000000000000000000000000000000000000000000000000000000000856115fd565b0281610b1357fe5b6040805160018082528183019092529290910481019250606091906020808301908036833750506040805160018082528183019092529293506060929150602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000082600081518110610b8f57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250508285850281610bba57fe5b0481600081518110610bc857fe5b6020026020010181815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166376ee101b838330600060016040518663ffffffff1660e01b8152600401808060200180602001866001600160a01b03168152602001856001600160a01b031681526020018415158152602001838103835288818151815260200191508051906020019060200280838360005b83811015610c83578181015183820152602001610c6b565b50505050905001838103825287818151815260200191508051906020019060200280838360005b83811015610cc2578181015183820152602001610caa565b50505050905001975050505050505050600060405180830381600087803b158015610cec57600080fd5b505af1158015610d00573d6000803e3d6000fd5b5050600080546040805163e6a4390560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301527f00000000000000000000000000000000000000000000000000000000000000008116602483015291519395509116925063e6a43905916044808301926020929190829003018186803b158015610d9a57600080fd5b505afa158015610dae573d6000803e3d6000fd5b505050506040513d6020811015610dc457600080fd5b505160408051633de222bb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166004840152306024840181905293519495506000947f000000000000000000000000000000000000000000000000000000000000000091909116936397da6d3093909187918791879163f7888aec916044808301926020929190829003018186803b158015610e6e57600080fd5b505afa158015610e82573d6000803e3d6000fd5b505050506040513d6020811015610e9857600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039687166004820152948616602486015292909416604484015260648301526084820192909252815160a480830193928290030181600087803b158015610efc57600080fd5b505af1158015610f10573d6000803e3d6000fd5b505050506040513d6040811015610f2657600080fd5b505160408051633de222bb60e21b81527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b038181166004840152306024840181905293519495507f000000000000000000000000000000000000000000000000000000000000000016936397da6d309391928291600091879163f7888aec91604480820192602092909190829003018186803b158015610fcc57600080fd5b505afa158015610fe0573d6000803e3d6000fd5b505050506040513d6020811015610ff657600080fd5b5051604080516001600160e01b031960e089901b1681526001600160a01b039687166004820152948616602486015292909416604484015260648301526084820192909252815160a480830193928290030181600087803b15801561105a57600080fd5b505af115801561106e573d6000803e3d6000fd5b505050506040513d604081101561108457600080fd5b505060408051630240bc6b60e21b8152905160009182916001600160a01b03861691630902f1ac916004808301926060929190829003018186803b1580156110cb57600080fd5b505afa1580156110df573d6000803e3d6000fd5b505050506040513d60608110156110f557600080fd5b50805160209182015160408051630dfe168160e01b815290516dffffffffffffffffffffffffffff93841696509290911693506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169390881692630dfe1681926004808201939291829003018186803b15801561117a57600080fd5b505afa15801561118e573d6000803e3d6000fd5b505050506040513d60208110156111a457600080fd5b50516001600160a01b031614156112b45760006111c2848484611aa4565b604080516000808252602082019283905263022c0d9f60e01b835260248201818152604483018590523060648401819052608060848501908152845160a486018190529697506001600160a01b038c169663022c0d9f96949589959394909390929160c4850191908083838b5b8381101561124757818101518382015260200161122f565b50505050905090810190601f1680156112745780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561129657600080fd5b505af11580156112aa573d6000803e3d6000fd5b50505050506113aa565b60006112c1848385611aa4565b604080516000808252602082019283905263022c0d9f60e01b835260248201848152604483018290523060648401819052608060848501908152845160a486018190529697506001600160a01b038c169663022c0d9f9689969394929160c4850191908083838a5b83811015611341578181015183820152602001611329565b50505050905090810190601f16801561136e5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561139057600080fd5b505af11580156113a4573d6000803e3d6000fd5b50505050505b506113ec9050336113bb8d8d611af2565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190611925565b50505050505050505050505050565b6000336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461146a576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b6114be6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b5090565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461152f576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b50565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a1576040805162461bcd60e51b815260206004820152600d60248201526c0dedcd8f240c4cadce8de84def609b1b604482015290519081900360640190fd5b5060006115f86001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000084611925565b919050565b600080670de0b6b3a7640000905060006201b58090506000620186a09050600080876001600160a01b0316638285ef406040518163ffffffff1660e01b8152600401604080518083038186803b15801561165657600080fd5b505afa15801561166a573d6000803e3d6000fd5b505050506040513d604081101561168057600080fd5b5080516020909101519092509050611696611c59565b50604080518082019091526001600160801b0380841682528216602082015260006116c2828a83611b4a565b9050896001600160a01b0316636b2ace876040518163ffffffff1660e01b815260040160206040518083038186803b1580156116fd57600080fd5b505afa158015611711573d6000803e3d6000fd5b505050506040513d602081101561172757600080fd5b50516040805163d8dfeb4560e01b815290516001600160a01b039283169263da5139ca92908e169163d8dfeb4591600480820192602092909190829003018186803b15801561177557600080fd5b505afa158015611789573d6000803e3d6000fd5b505050506040513d602081101561179f57600080fd5b810190808051906020019092919050505089880261182b8e6001600160a01b0316633ba0b9a96040518163ffffffff1660e01b815260040160206040518083038186803b1580156117ef57600080fd5b505afa158015611803573d6000803e3d6000fd5b505050506040513d602081101561181957600080fd5b5051611825878d611bed565b90611bed565b8161183257fe5b0460006040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018215158152602001935050505060206040518083038186803b15801561188257600080fd5b505afa158015611896573d6000803e3d6000fd5b505050506040513d60208110156118ac57600080fd5b50519750505050505050505b92915050565b6000546001600160a01b031681565b808203828111156118b8576040805162461bcd60e51b815260206004820152601560248201527f426f72696e674d6174683a20556e646572666c6f770000000000000000000000604482015290519081900360640190fd5b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b178152925182516000946060949389169392918291908083835b602083106119b75780518252601f199092019160209182019101611998565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611a19576040519150601f19603f3d011682016040523d82523d6000602084013e611a1e565b606091505b5091509150818015611a4c575080511580611a4c5750808060200190516020811015611a4957600080fd5b50515b611a9d576040805162461bcd60e51b815260206004820152601c60248201527f426f72696e6745524332303a205472616e73666572206661696c656400000000604482015290519081900360640190fd5b5050505050565b600080611ab3856103e5611bed565b90506000611ac18285611bed565b90506000611adb83611ad5886103e8611bed565b90611af2565b9050808281611ae657fe5b04979650505050505050565b818101818110156118b8576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604482015290519081900360640190fd5b600083602001516001600160801b031660001415611b69575081611be6565b602084015184516001600160801b0391821691611b8891869116611bed565b81611b8f57fe5b049050818015611bd357508284600001516001600160801b0316611bc986602001516001600160801b031684611bed90919063ffffffff16565b81611bd057fe5b04105b15611be657611be3816001611af2565b90505b9392505050565b6000811580611c0857505080820282828281611c0557fe5b04145b6118b8576040805162461bcd60e51b815260206004820152601860248201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604482015290519081900360640190fd5b60408051808201909152600080825260208201529056fea264697066735822122027e73752169e45574f37c2f16976e88aa93ebeef2b54ad08d7eb04bb27c2274b64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
