solc-0.8.35 0xdd3f50f8a6cafbe9b31a427582963f465e745af8 optimized-low-runs
10467 bytes
6080604052600436106100c2575f3560e01c806312065fe0146100c65780631b7dd4c0146100ed5780631e35fed8146100f75780631eddb6261461010b57806322b1751d1461011f57806327c8f193146101325780633b36f5921461014657806354fd4d501461016a578063606b64971461019457806363a5db9e146101b357806372f5158d146101d2578063888b042f146101da578063b7013dc1146101ee578063c095415d14610202578063d0e30db01461020a578063db82047b14610212575b5f5ffd5b3480156100d1575f5ffd5b506100da61021a565b6040519081526020015b60405180910390f35b6100f56102c9565b005b348015610102575f5ffd5b506100da610411565b348015610116575f5ffd5b506100da610428565b6100f561012d366004612504565b61065c565b34801561013d575f5ffd5b506100f561079f565b348015610151575f5ffd5b5061015a61087e565b60405190151581526020016100e4565b348015610175575f5ffd5b505f546101829060ff1681565b60405160ff90911681526020016100e4565b34801561019f575f5ffd5b506100f56101ae366004612504565b610902565b3480156101be575f5ffd5b506100f56101cd366004612504565b610abc565b6100f5610d06565b3480156101e5575f5ffd5b506100da610e51565b3480156101f9575f5ffd5b506100da610f07565b6100f5610f2c565b6100f5610fdb565b6100f5611585565b6040516335ee5f8760e01b81526020600482015260116024820152701c9bd8dad95d11195c1bdcda5d141bdbdb607a1b60448201525f907f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b0316906335ee5f8790606401602060405180830381865afa1580156102a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102c4919061251b565b905090565b6102df5f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146103185760405162461bcd60e51b815260040161030f90612532565b60405180910390fd5b604051806040016040528060148152602001733937b1b5b2ba20bab1ba34b7b726b0b730b3b2b960611b815250336103758260405160200161035a9190612568565b60405160208183030381529060405280519060200120611608565b6001600160a01b0316816001600160a01b0316146103a55760405162461bcd60e51b815260040161030f90612532565b5f6103d16040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b9050336001600160a01b03165f5160206128425f395f51905f5234426040516103fb92919061259a565b60405180910390a261040c816116e0565b505050565b5f6102c45f5160206128c35f395f51905f52611759565b5f5f6104556040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b9050806001600160a01b0316636ada78476040518163ffffffff1660e01b8152600401602060405180830381865afa158015610493573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b791906125a8565b6104c2575f91505090565b5f6104cb61021a565b90505f826001600160a01b031663fd6ce89e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052e919061251b565b9050826001600160a01b03166347fa434a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561056c573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061059091906125a8565b1561063a575f6105ca60405180604001604052806013815260200172726f636b65744d696e69706f6f6c517565756560681b81525061167d565b9050610636816001600160a01b031663e60b40bf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062f919061251b565b83906117c8565b9150505b80821061064a575f935050505090565b610654818361182b565b935050505090565b6106725f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146106a25760405162461bcd60e51b815260040161030f90612532565b604051806040016040528060118152602001701c9bd8dad95d139bd91951195c1bdcda5d607a1b815250336106e18260405160200161035a9190612568565b6001600160a01b0316816001600160a01b0316146107115760405162461bcd60e51b815260040161030f90612532565b3415610788577f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b03166398ea5fca346040518263ffffffff1660e01b81526004015f604051808303818588803b158015610770575f5ffd5b505af1158015610782573d5f5f3e3d5ffd5b50505050505b61040c5f5160206128c35f395f51905f5284611886565b6107b55f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146107e55760405162461bcd60e51b815260040161030f90612532565b5f6108116040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b905061081c816118ec565b61087b5760405162461bcd60e51b815260206004820152602a60248201527f4465706f7369742061737369676e6d656e7473206172652063757272656e746c6044820152691e48191a5cd8589b195960b21b606482015260840161030f565b50565b5f6108955f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146108c55760405162461bcd60e51b815260040161030f90612532565b5f6108f16040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b90506108fc816118ec565b91505090565b6109185f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146109485760405162461bcd60e51b815260040161030f90612532565b604051806040016040528060118152602001701c9bd8dad95d139bd91951195c1bdcda5d607a1b815250336109878260405160200161035a9190612568565b6001600160a01b0316816001600160a01b0316146109b75760405162461bcd60e51b815260040161030f90612532565b604051631df699e760e11b8152600481018490527f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690633bed33ce906024015f604051808303815f87803b158015610a16575f5ffd5b505af1158015610a28573d5f5f3e3d5ffd5b50506040515f925033915085908381818185875af1925050503d805f8114610a6b576040519150601f19603f3d011682016040523d82523d5f602084013e610a70565b606091505b5050905080610ab65760405162461bcd60e51b815260206004820152601260248201527108cc2d2d8cac840e8de40e6cadcc8408aa8960731b604482015260640161030f565b50505050565b610ad25f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b031614610b025760405162461bcd60e51b815260040161030f90612532565b6040518060400160405280600f81526020016e0e4dec6d6cae8a8ded6cadca48aa89608b1b81525033610b3f8260405160200161035a9190612568565b6001600160a01b0316816001600160a01b031614610b6f5760405162461bcd60e51b815260040161030f90612532565b610b77610e51565b831115610bd95760405162461bcd60e51b815260206004820152602a60248201527f496e73756666696369656e74206578636573732062616c616e636520666f72206044820152691dda5d1a191c985dd85b60b21b606482015260840161030f565b604051631df699e760e11b8152600481018490527f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690633bed33ce906024015f604051808303815f87803b158015610c38575f5ffd5b505af1158015610c4a573d5f5f3e3d5ffd5b505050507f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b0316636c985a88846040518263ffffffff1660e01b81526004015f604051808303818588803b158015610ca7575f5ffd5b505af1158015610cb9573d5f5f3e3d5ffd5b5050505050336001600160a01b03167f992f462cfb62e164bd03bf07baf2cffce83fbd9370cae10635842b20200121208442604051610cf992919061259a565b60405180910390a2505050565b610d1c5f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b031614610d4c5760405162461bcd60e51b815260040161030f90612532565b33610da781604051602001610d8c91906e6d696e69706f6f6c2e65786973747360881b815260609190911b6001600160601b031916600f82015260230190565b60405160208183030381529060405280519060200120611a08565b610de65760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081b5a5b9a5c1bdbdb60821b604482015260640161030f565b5f610e126040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b9050336001600160a01b03165f5160206128425f395f51905f523442604051610e3c92919061259a565b60405180910390a2610e4d816116e0565b5050565b5f5f610e8760405180604001604052806013815260200172726f636b65744d696e69706f6f6c517565756560681b81525061167d565b90505f816001600160a01b031663e60b40bf6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eea919061251b565b90505f610ef561021a565b905080821061064a575f935050505090565b5f6102c4610f1b610f16610411565b611a77565b610f26610f1661021a565b90611ae0565b610f425f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b031614610f725760405162461bcd60e51b815260040161030f90612532565b6040518060400160405280600b81526020016a1c9bd8dad95d15985d5b1d60aa1b81525033610fab8260405160200161035a9190612568565b6001600160a01b0316816001600160a01b031614610e4d5760405162461bcd60e51b815260040161030f90612532565b610ff15f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146110215760405162461bcd60e51b815260040161030f90612532565b5f61104d6040518060400160405280602081526020015f5160206128225f395f51905f5281525061167d565b9050806001600160a01b0316636ada78476040518163ffffffff1660e01b8152600401602060405180830381865afa15801561108b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110af91906125a8565b6111145760405162461bcd60e51b815260206004820152603060248201527f4465706f7369747320696e746f20526f636b657420506f6f6c2061726520637560448201526f1c9c995b9d1b1e48191a5cd8589b195960821b606482015260840161030f565b806001600160a01b031663035cf1426040518163ffffffff1660e01b8152600401602060405180830381865afa158015611150573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611174919061251b565b3410156111e65760405162461bcd60e51b815260206004820152603a60248201527f546865206465706f736974656420616d6f756e74206973206c657373207468616044820152796e20746865206d696e696d756d206465706f7369742073697a6560301b606482015260840161030f565b5f6111f9346111f361021a565b906117c8565b90505f826001600160a01b031663fd6ce89e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611238573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061125c919061251b565b90508082111561142a57826001600160a01b03166347fa434a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c691906125a8565b156113cf575f61130060405180604001604052806013815260200172726f636b65744d696e69706f6f6c517565756560681b81525061167d565b9050611341816001600160a01b031663e60b40bf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060b573d5f5f3e3d5ffd5b8311156113c95760405162461bcd60e51b815260206004820152605d60248201525f5160206128a35f395f51905f5260448201527f736974696e672028616e64206d61746368696e672077697468206d696e69706f60648201527f6f6c7329206578636565647320746865206d6178696d756d2073697a65000000608482015260a40161030f565b5061142a565b60405162461bcd60e51b815260206004820152603f60248201525f5160206128a35f395f51905f5260448201527f736974696e67206578636565647320746865206d6178696d756d2073697a6500606482015260840161030f565b5f6114a7670de0b6b3a76400006114a1866001600160a01b0316630de705b56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611476573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149a919061251b565b3490611b6a565b90611be8565b90505f6114b4348361182b565b6040516394bf804d60e01b8152600481018290523360248201529091507f000000000000000000000000ae78736cd615f374d3085123a210448e74fc63936001600160a01b0316906394bf804d906044015f604051808303815f87803b15801561151c575f5ffd5b505af115801561152e573d5f5f3e3d5ffd5b50505050336001600160a01b03167f7aa1a8eb998c779420645fc14513bf058edb347d95c2fc2e6845bdc22f888631344260405161156d92919061259a565b60405180910390a261157e856116e0565b5050505050565b61159b5f5160206128025f395f51905f52611608565b6001600160a01b0316306001600160a01b0316146115cb5760405162461bcd60e51b815260040161030f90612532565b6040518060400160405280600f81526020016e0e4dec6d6cae8a8ded6cadca48aa89608b1b815250336103758260405160200161035a9190612568565b5f80546040516321f8a72160e01b8152600481018490526101009091046001600160a01b0316906321f8a72190602401602060405180830381865afa158015611653573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167791906125e2565b92915050565b5f5f6116938360405160200161035a9190612568565b90506001600160a01b0381166116775760405162461bcd60e51b815260206004820152601260248201527110dbdb9d1c9858dd081b9bdd08199bdd5b9960721b604482015260640161030f565b7f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b03166398ea5fca346040518263ffffffff1660e01b81526004015f604051808303818588803b158015611739575f5ffd5b505af115801561174b573d5f5f3e3d5ffd5b5050505050610e4d816118ec565b5f805460405163bd02d0f560e01b8152600481018490526101009091046001600160a01b03169063bd02d0f590602401602060405180830381865afa1580156117a4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611677919061251b565b5f806117d4838561260f565b9050838110156118245760405162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015260640161030f565b9392505050565b5f8282111561187c5760405162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015260640161030f565b6118248284612622565b5f54604051632b6cd4f760e21b81526101009091046001600160a01b03169063adb353dc906118bb908590859060040161259a565b5f604051808303815f87803b1580156118d2575f5ffd5b505af11580156118e4573d5f5f3e3d5ffd5b505050505050565b5f816001600160a01b03166347fa434a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611929573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061194d91906125a8565b61195857505f919050565b5f61198d60405180604001604052806013815260200172726f636b65744d696e69706f6f6c517565756560681b81525061167d565b9050806001600160a01b0316638ed804536040518163ffffffff1660e01b8152600401602060405180830381865afa1580156119cb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119ef91906125a8565b156119fe576118248184611c3f565b61182481846120eb565b5f8054604051633d70e7e560e11b8152600481018490526101009091046001600160a01b031690637ae1cfca90602401602060405180830381865afa158015611a53573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061167791906125a8565b5f600160ff1b8210611adc5760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b606482015260840161030f565b5090565b5f80611aec8385612635565b90505f8312158015611afe5750838113155b80611b1257505f83128015611b1257508381135b6118245760405162461bcd60e51b8152602060048201526024808201527f5369676e6564536166654d6174683a207375627472616374696f6e206f766572604482015263666c6f7760e01b606482015260840161030f565b5f825f03611b7957505f611677565b5f611b84838561265b565b905082611b918583612672565b146118245760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b606482015260840161030f565b5f5f8211611c355760405162461bcd60e51b815260206004820152601a602482015279536166654d6174683a206469766973696f6e206279207a65726f60301b604482015260640161030f565b6118248284612672565b5f5f611c626040518060600160405280602181526020016128826021913961167d565b90505f611c6d61021a565b90505f5f90505f856001600160a01b0316633b474a656040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cb0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd4919061251b565b90505f816001600160401b03811115611cef57611cef612691565b604051908082528060200260200182016040528015611d3357816020015b604080518082019091525f8082526020820152815260200190600190039081611d0d5790505b5090505f8080805b85811015611f2d57825f03611e34578b6001600160a01b03166304b5466b6040518163ffffffff1660e01b81526004016040805180830381865afa158015611d85573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da991906126a5565b90945092505f846004811115611dc157611dc16126d4565b14611f2d576040516304a0030d60e21b81526001600160a01b038a16906312800c3490611df29087906004016126e8565b602060405180830381865afa158015611e0d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e31919061251b565b91505b82611e3e8161270e565b935050811580611e56575081611e54898961182b565b105b611f2d57604051631d33eeb960e31b81525f906001600160a01b038e169063e99f75c890611e889088906004016126e8565b6020604051808303815f875af1158015611ea4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ec891906125e2565b9050611ed488846117c8565b975082868381518110611ee957611ee9612723565b6020026020010151602001818152505080868381518110611f0c57611f0c612723565b60209081029190910101516001600160a01b03909116905250600101611d3b565b5085156120da57604051631df699e760e11b8152600481018790527f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690633bed33ce906024015f604051808303815f87803b158015611f93575f5ffd5b505af1158015611fa5573d5f5f3e3d5ffd5b505f925050505b858110156120d857848181518110611fc657611fc6612723565b6020026020010151602001515f03156120d8575f858281518110611fec57611fec612723565b60200260200101515f01519050806001600160a01b0316634814611387848151811061201a5761201a612723565b6020026020010151602001516040518263ffffffff1660e01b81526004015f604051808303818588803b15801561204f575f5ffd5b505af1158015612061573d5f5f3e3d5ffd5b505050505085828151811061207857612078612723565b60200260200101515f01516001600160a01b03165f5160206128625f395f51905f528784815181106120ac576120ac612723565b602002602001015160200151426040516120c792919061259a565b60405180910390a250600101611fac565b505b5060019a9950505050505050505050565b5f5f61210e6040518060600160405280602181526020016128826021913961167d565b90505f836001600160a01b0316633b474a656040518163ffffffff1660e01b8152600401602060405180830381865afa15801561214d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612171919061251b565b90505f826001600160a01b0316633469f7b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121d4919061251b565b90505f6121e13483611be8565b90505f6121f0836114a161021a565b90505f61225783896001600160a01b031663f19b41066040518163ffffffff1660e01b8152600401602060405180830381865afa158015612233573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111f3919061251b565b9050818111156122645750805b8481111561226f5750835b604051637e0e497b60e01b8152600481018290525f906001600160a01b038b1690637e0e497b906024015f604051808303815f875af11580156122b4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526122db9190810190612737565b8051909150156124bf5780515f906122f39087611b6a565b604051631df699e760e11b8152600481018290529091507f0000000000000000000000003bdc69c4e5e13e52a65f5583c23efb9636b469d66001600160a01b031690633bed33ce906024015f604051808303815f87803b158015612355575f5ffd5b505af1158015612367573d5f5f3e3d5ffd5b505f9250829150505b83518110156124a4575f84828151811061238c5761238c612723565b60200260200101519050806001600160a01b031663d0e30db08a6040518263ffffffff1660e01b81526004015f604051808303818588803b1580156123cf575f5ffd5b505af11580156123e1573d5f5f3e3d5ffd5b5050505050612450816001600160a01b031663d2ceebd16040518163ffffffff1660e01b8152600401602060405180830381865afa158015612425573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612449919061251b565b84906117c8565b925084828151811061246457612464612723565b60200260200101516001600160a01b03165f5160206128625f395f51905f528a4260405161249392919061259a565b60405180910390a250600101612370565b506124bc5f5160206128c35f395f51905f52826124cf565b50505b5060019998505050505050505050565b5f5460405163ebb9d8c960e01b81526101009091046001600160a01b03169063ebb9d8c9906118bb908590859060040161259a565b5f60208284031215612514575f5ffd5b5035919050565b5f6020828403121561252b575f5ffd5b5051919050565b6020808252601c908201527b125b9d985b1a59081bdc881bdd5d19185d19590818dbdb9d1c9858dd60221b604082015260600190565b6f636f6e74726163742e6164647265737360801b81525f82518060208501601085015e5f920160100191825250919050565b918252602082015260400190565b5f602082840312156125b8575f5ffd5b81518015158114611824575f5ffd5b80516001600160a01b03811681146125dd575f5ffd5b919050565b5f602082840312156125f2575f5ffd5b611824826125c7565b634e487b7160e01b5f52601160045260245ffd5b80820180821115611677576116776125fb565b81810381811115611677576116776125fb565b8181035f831280158383131683831282161715612654576126546125fb565b5092915050565b8082028115828204841417611677576116776125fb565b5f8261268c57634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52604160045260245ffd5b5f5f604083850312156126b6575f5ffd5b8251600581106126c4575f5ffd5b6020939093015192949293505050565b634e487b7160e01b5f52602160045260245ffd5b602081016005831061270857634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8161271c5761271c6125fb565b505f190190565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612747575f5ffd5b81516001600160401b0381111561275c575f5ffd5b8201601f8101841361276c575f5ffd5b80516001600160401b0381111561278557612785612691565b604051600582901b90603f8201601f191681016001600160401b03811182821017156127b3576127b3612691565b6040529182526020818401810192908101878411156127d0575f5ffd5b6020850194505b838510156127f6576127e8856125c7565b8152602094850194016127d7565b50969550505050505056fe65dd923ddfc8d8ae6088f80077201d2403cbd565f0ba25e09841e2799ec90bb2726f636b657444414f50726f746f636f6c53657474696e67734465706f7369743a6614e80d02b57255cbb1f8305fbeca53d7e05a4b779d406279196608512925a1811054b7d96716259cff0d366c2f6405951e0efe00c8db3e237cbf77fe7be9726f636b657444414f50726f746f636f6c53657474696e67734d696e69706f6f6c546865206465706f73697420706f6f6c2073697a65206166746572206465706f6465706f7369742e706f6f6c2e6e6f64652e62616c616e636500000000000000