0x60e060405267016345785d8a00005f5573c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26080523360a05273a07f07c1cf041a0d552351ede3ca9e63e900503260c052600180546001600160a01b0319166e04444c5dc75cb358380d2e3de08a9017905534801561006f575f5ffd5b5060805160a05160c051614f516100f25f395f50505f61091001525f81816102a4015281816102d10152818161040d015281816104f50152818161068c015281816107b00152818161085a015281816114d0015281816118c80152818161238501528181612564015281816125a70152818161262f01526128110152614f515ff3fe608060405260043610610068575f3560e01c8063b61d27f611610042578063b61d27f614610123578063d9d5865d14610152578063f04f2707146101715761006f565b80638b76aea4146100ab57806391dd7346146100cc5780639b2cb5d8146101015761006f565b3661006f57005b5f366060826100818360048184613b2e565b81019061008e9190613b55565b905030811461009f5761009f610190565b50915050805190602001f35b3480156100b6575f5ffd5b506100ca6100c5366004613dc3565b610619565b005b3480156100d7575f5ffd5b506100eb6100e6366004613ef2565b6108c7565b6040516100f89190613f5f565b60405180910390f35b34801561010c575f5ffd5b506101155f5481565b6040519081526020016100f8565b34801561012e575f5ffd5b5061014261013d366004613f78565b61090d565b60405190151581526020016100f8565b34801561015d575f5ffd5b5061011561016c366004613fd0565b6109ec565b34801561017c575f5ffd5b506100ca61018b366004614038565b610aa3565b6040515f8080806004604435018035602081018288378601602001604052505060043590506024355f8212156101d3576101c982614133565b93508092506101e2565b6101dc81614133565b93508192505b50505f5f848060200190518101906101fa91906141dd565b9150915081600903610324575f5f5f5f8480602001905181019061021e919061427d565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018c9052939750919550935091506001600160a01b0384169063a9059cbb906044015f604051808303815f87803b158015610286575f5ffd5b505af1158015610298573d5f5f3e3d5ffd5b505050505f6102c989847f0000000000000000000000000000000000000000000000000000000000000000856109ec565b905061031a857f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031610833060405180602001604052805f8152506123f5565b5050505050610612565b81600a03610450575f5f5f8380602001905181019061034391906142e5565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018a905292955090935091506001600160a01b0383169063a9059cbb906044015f604051808303815f87803b1580156103a9575f5ffd5b505af11580156103bb573d5f5f3e3d5ffd5b5050604080516001600160a01b03851660208201526103e7935001905060408051601f19818403018152908290526103f6929160200161432f565b6040516020818303038152906040529750610448837f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161089308c61248c565b505050610612565b81600b03610534575f5f5f5f84806020019051810190610470919061434b565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018c9052939750919550935091506001600160a01b0384169063a9059cbb906044015f604051808303815f87803b1580156104d8575f5ffd5b505af11580156104ea573d5f5f3e3d5ffd5b5050505061052b84837f00000000000000000000000000000000000000000000000000000000000000008b308660405180602001604052805f815250612535565b50505050610612565b816103e7036105c5575f8180602001905181019061055291906143b3565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018690529091506001600160a01b0382169063a9059cbb906044015f604051808303815f87803b1580156105b3575f5ffd5b505af115801561031a573d5f5f3e3d5ffd5b60405162461bcd60e51b815260206004820152600f60248201527f756e6b6e6f776e207061747465726e000000000000000000000000000000000060448201526064015b60405180910390fd5b5050505050565b5f8787878787878760405160200161063797969594939291906144b8565b60405160208183030381529060405290505f60098260405160200161065d9291906145ce565b60408051601f19818403018152600180845283830190925292505f9190602080830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000815f815181106106bd576106bd6145e9565b6001600160a01b0392909216602092830291909101909101526040805160018082528183019092525f918160200160208202803683370190505090508a815f8151811061070c5761070c6145e9565b60209081029190910101526040517f5c38449e00000000000000000000000000000000000000000000000000000000815273ba12222222228d8ba445958a75a0704d566bf2c890635c38449e9061076d903090869086908990600401614616565b5f604051808303815f87803b158015610784575f5ffd5b505af1158015610796573d5f5f3e3d5ffd5b50506040516370a0823160e01b81523060048201525f92507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691506370a0823190602401602060405180830381865afa1580156107fe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610822919061465d565b6040517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018290529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015f604051808303815f87803b1580156108a3575f5ffd5b505af11580156108b5573d5f5f3e3d5ffd5b50505050505050505050505050505050565b60605f806108d7848601866146c1565b5091509150816001036108f3576108ed81612868565b50610905565b815f036109055761090381612868565b505b505092915050565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633146109865760405162461bcd60e51b815260206004820152600860248201527f6e6f746f776e65720000000000000000000000000000000000000000000000006044820152606401610609565b846001600160a01b03168484846040516109a192919061472e565b5f6040518083038185875af1925050503d805f81146109db576040519150601f19603f3d011682016040523d82523d5f602084013e6109e0565b606091505b50909695505050505050565b5f826001600160a01b0316846001600160a01b03161015610a6757610a6085835f81518110610a1d57610a1d6145e9565b602002602001015184600181518110610a3857610a386145e9565b602002602001015185600281518110610a5357610a536145e9565b6020026020010151613127565b9050610a9b565b610a988583600181518110610a7e57610a7e6145e9565b6020026020010151845f81518110610a3857610a386145e9565b90505b949350505050565b5f610ab08284018461473d565b9150505f5f5f5f5f5f86806020019051810190610acd91906148e9565b955095509550955095509550610b5b845f81518110610aee57610aee6145e9565b6020026020010151865f81518110610b0857610b086145e9565b602002602001015187600181518110610b2357610b236145e9565b60200260200101518930875f81518110610b3f57610b3f6145e9565b602002602001015160405180602001604052805f815250612535565b825f81518110610b6d57610b6d6145e9565b60200260200101516007148015610b9e575082600181518110610b9257610b926145e9565b60200260200101516002145b8015610bc4575082600281518110610bb857610bb86145e9565b60200260200101516002145b156110e2575f85600181518110610bdd57610bdd6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4f919061465d565b90505f86600281518110610c6557610c656145e9565b60200260200101516001600160a01b031687600181518110610c8957610c896145e9565b60200260200101516001600160a01b03161090505f83600181518110610cb157610cb16145e9565b602002602001015190505f610d0c848385610ccd576001610ccf565b5f5b60ff1681518110610ce257610ce26145e9565b60200260200101518486610cf6575f610cf9565b60015b60ff1681518110610a3857610a386145e9565b905088600181518110610d2157610d216145e9565b60200260200101516001600160a01b031663a9059cbb89600181518110610d4a57610d4a6145e9565b6020026020010151866040518363ffffffff1660e01b8152600401610d849291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015610d9b575f5ffd5b505af1158015610dad573d5f5f3e3d5ffd5b505050505f5f84610dbf57825f610dc2565b5f835b9150915089600181518110610dd957610dd96145e9565b60209081029190910101516040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052306044820152608060648201525f60848201526001600160a01b039091169063022c0d9f9060a4015f604051808303815f87803b158015610e57575f5ffd5b505af1158015610e69573d5f5f3e3d5ffd5b505050505050505050505f85600281518110610e8757610e876145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610ed5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ef9919061465d565b90505f865f81518110610f0e57610f0e6145e9565b60200260200101516001600160a01b031687600281518110610f3257610f326145e9565b60200260200101516001600160a01b03161090505f83600281518110610f5a57610f5a6145e9565b602002602001015190505f610f76848385610ccd576001610ccf565b905088600281518110610f8b57610f8b6145e9565b60200260200101516001600160a01b031663a9059cbb89600281518110610fb457610fb46145e9565b6020026020010151866040518363ffffffff1660e01b8152600401610fee9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b158015611005575f5ffd5b505af1158015611017573d5f5f3e3d5ffd5b505050505f5f8461102957825f61102c565b5f835b9150915089600281518110611043576110436145e9565b60209081029190910101516040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052306044820152608060648201525f60848201526001600160a01b039091169063022c0d9f9060a4015f604051808303815f87803b1580156110c1575f5ffd5b505af11580156110d3573d5f5f3e3d5ffd5b5050505050505050505061233c565b825f815181106110f4576110f46145e9565b60200260200101516007148015611125575082600181518110611119576111196145e9565b60200260200101516002145b801561114b57508260028151811061113f5761113f6145e9565b60200260200101516003145b1561152c575f85600181518110611164576111646145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111b2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d6919061465d565b90505f866002815181106111ec576111ec6145e9565b60200260200101516001600160a01b031687600181518110611210576112106145e9565b60200260200101516001600160a01b03161090505f83600181518110611238576112386145e9565b602002602001015190505f611254848385610ccd576001610ccf565b905088600181518110611269576112696145e9565b60200260200101516001600160a01b031663a9059cbb89600181518110611292576112926145e9565b6020026020010151866040518363ffffffff1660e01b81526004016112cc9291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b1580156112e3575f5ffd5b505af11580156112f5573d5f5f3e3d5ffd5b505050505f5f8461130757825f61130a565b5f835b9150915089600181518110611321576113216145e9565b60209081029190910101516040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052306044820152608060648201525f60848201526001600160a01b039091169063022c0d9f9060a4015f604051808303815f87803b15801561139f575f5ffd5b505af11580156113b1573d5f5f3e3d5ffd5b505050505050505050505f856002815181106113cf576113cf6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561141d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611441919061465d565b90505f6103e78760028151811061145a5761145a6145e9565b602002602001015160405160200161148191906001600160a01b0391909116815260200190565b60408051601f198184030181529082905261149f929160200161432f565b6040516020818303038152906040529050611525866002815181106114c6576114c66145e9565b60200260200101517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168960028151811061150b5761150b6145e9565b60200260200101516001600160a01b03161084308561248c565b505061233c565b825f8151811061153e5761153e6145e9565b6020026020010151600714801561156f575082600181518110611563576115636145e9565b60200260200101516002145b8015611595575082600281518110611589576115896145e9565b60200260200101516007145b15611902575f856001815181106115ae576115ae6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156115fc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611620919061465d565b90505f86600281518110611636576116366145e9565b60200260200101516001600160a01b03168760018151811061165a5761165a6145e9565b60200260200101516001600160a01b03161090505f83600181518110611682576116826145e9565b602002602001015190505f61169e848385610ccd576001610ccf565b9050886001815181106116b3576116b36145e9565b60200260200101516001600160a01b031663a9059cbb896001815181106116dc576116dc6145e9565b6020026020010151866040518363ffffffff1660e01b81526004016117169291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561172d575f5ffd5b505af115801561173f573d5f5f3e3d5ffd5b505050505f5f8461175157825f611754565b5f835b915091508960018151811061176b5761176b6145e9565b60209081029190910101516040517f022c0d9f0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052306044820152608060648201525f60848201526001600160a01b039091169063022c0d9f9060a4015f604051808303815f87803b1580156117e9575f5ffd5b505af11580156117fb573d5f5f3e3d5ffd5b505050505050505050505f85600281518110611819576118196145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611867573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061188b919061465d565b90506118fc856002815181106118a3576118a36145e9565b6020026020010151876002815181106118be576118be6145e9565b60200260200101517f0000000000000000000000000000000000000000000000000000000000000000843088600281518110610b3f57610b3f6145e9565b5061233c565b825f81518110611914576119146145e9565b60200260200101516007148015611945575082600181518110611939576119396145e9565b60200260200101516003145b801561196b57508260028151811061195f5761195f6145e9565b60200260200101516002145b15611b32575f85600181518110611984576119846145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119d2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119f6919061465d565b90505f600986600281518110611a0e57611a0e6145e9565b602002602001015188600181518110611a2957611a296145e9565b602002602001015189600281518110611a4457611a446145e9565b602002602001015186600281518110611a5f57611a5f6145e9565b6020026020010151604051602001611a7a94939291906149d5565b60408051601f1981840301815290829052611a9892916020016145ce565b604051602081830303815290604052905061152586600181518110611abf57611abf6145e9565b602002602001015188600281518110611ada57611ada6145e9565b60200260200101516001600160a01b031689600181518110611afe57611afe6145e9565b60200260200101516001600160a01b0316108489600281518110611b2457611b246145e9565b60200260200101518561248c565b825f81518110611b4457611b446145e9565b60200260200101516007148015611b75575082600181518110611b6957611b696145e9565b60200260200101516003145b8015611b9b575082600281518110611b8f57611b8f6145e9565b60200260200101516003145b15611cac575f85600181518110611bb457611bb46145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611c02573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c26919061465d565b90505f600a86600281518110611c3e57611c3e6145e9565b602002602001015188600181518110611c5957611c596145e9565b602002602001015189600281518110611c7457611c746145e9565b6020026020010151604051602001611a7a939291906001600160a01b0393841681529183166020830152909116604082015260600190565b825f81518110611cbe57611cbe6145e9565b60200260200101516007148015611cef575082600181518110611ce357611ce36145e9565b60200260200101516003145b8015611d15575082600281518110611d0957611d096145e9565b60200260200101516007145b15611ea8575f85600181518110611d2e57611d2e6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611d7c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611da0919061465d565b90505f600b86600281518110611db857611db86145e9565b602002602001015188600181518110611dd357611dd36145e9565b602002602001015189600281518110611dee57611dee6145e9565b602002602001015187600281518110611e0957611e096145e9565b6020026020010151604051602001611e249493929190614a1e565b60408051601f1981840301815290829052611e4292916020016145ce565b604051602081830303815290604052905061152586600181518110611e6957611e696145e9565b602002602001015188600281518110611e8457611e846145e9565b60200260200101516001600160a01b03168960018151811061150b5761150b6145e9565b825f81518110611eba57611eba6145e9565b60200260200101516007148015611eeb575082600181518110611edf57611edf6145e9565b60200260200101516007145b8015611f11575082600281518110611f0557611f056145e9565b60200260200101516002145b1561201c575f85600181518110611f2a57611f2a6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611f78573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f9c919061465d565b905061200785600181518110611fb457611fb46145e9565b602002602001015187600181518110611fcf57611fcf6145e9565b602002602001015188600281518110611fea57611fea6145e9565b6020026020010151843088600181518110610b3f57610b3f6145e9565b505f85600281518110610e8757610e876145e9565b825f8151811061202e5761202e6145e9565b6020026020010151600714801561205f575082600181518110612053576120536145e9565b60200260200101516007145b8015612085575082600281518110612079576120796145e9565b60200260200101516003145b1561213d575f8560018151811061209e5761209e6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156120ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612110919061465d565b905061212885600181518110611fb457611fb46145e9565b505f856002815181106113cf576113cf6145e9565b825f8151811061214f5761214f6145e9565b60200260200101516007148015612180575082600181518110612174576121746145e9565b60200260200101516007145b80156121a657508260028151811061219a5761219a6145e9565b60200260200101516007145b1561233c575f856001815181106121bf576121bf6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561220d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612231919061465d565b905061224985600181518110611fb457611fb46145e9565b505f8560028151811061225e5761225e6145e9565b60209081029190910101516040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156122ac573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122d0919061465d565b905061233a856002815181106122e8576122e86145e9565b602002602001015187600281518110612303576123036145e9565b6020026020010151885f8151811061231d5761231d6145e9565b6020026020010151843088600281518110610b3f57610b3f6145e9565b505b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ba12222222228d8ba445958a75a0704d566bf2c86004820152602481018790527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044015f604051808303815f87803b1580156123ce575f5ffd5b505af11580156123e0573d5f5f3e3d5ffd5b50505050505050505050505050505050505050565b5f5f8561240357845f612406565b5f855b6040517f022c0d9f00000000000000000000000000000000000000000000000000000000815291935091506001600160a01b0388169063022c0d9f90612456908590859089908990600401614a5d565b5f604051808303815f87803b15801561246d575f5ffd5b505af115801561247f573d5f5f3e3d5ffd5b5050505050505050505050565b846001600160a01b031663128acb0883866124a687613271565b886124c55773fffd8963efd1fc6a506488495d951d5263988d256124cc565b6401000276a45b866040518663ffffffff1660e01b81526004016124ed959493929190614a8a565b60408051808303815f875af1158015612508573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061252c9190614ac8565b50505050505050565b5f8280602001905181019061254a9190614b0d565b80519091505f90819061255d90826132e5565b156125e9577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316896001600160a01b0316146125a157886125a3565b5f5b98507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316886001600160a01b0316146125e457876125e6565b5f5b97505b6001600160a01b03808916908a169081109250612696576040517f2e1a7d4d000000000000000000000000000000000000000000000000000000008152600481018890527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632e1a7d4d906024015f604051808303815f87803b158015612678575f5ffd5b505af115801561268a573d5f5f3e3d5ffd5b505050508690506126a1565b6126a1898b896132fb565b5f6040518061014001604052808c6001600160a01b03168152602001306001600160a01b03168152602001855f01516001600160a01b0316815260200185602001516001600160a01b03168152602001856040015162ffffff168152602001856060015160020b815260200185608001516001600160a01b0316815260200184151581526020016127318a613271565b61273a90614133565b815260408051602081810183525f8252928301525161275a929101614ba1565b60408051601f19818403018152908290526001549092506001600160a01b0316906348c8949190612793905f9085908a90602001614c72565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016127be9190613f5f565b5f604051808303815f875af11580156127d9573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526128009190810190614c9f565b506001600160a01b03891661247f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d0e30db0476040518263ffffffff1660e01b81526004015f604051808303818588803b1580156108a3575f5ffd5b60605f8280602001905181019061287f9190614ce0565b80519091506001600160a01b03163314612897575f5ffd5b5f60405180606001604052808360e001511515815260200183610100015181526020018360e001516128e7576128e2600173fffd8963efd1fc6a506488495d951d5263988d26614de2565b6128f7565b6128f76401000276a36001614e01565b6001600160a01b031681525090505f6040518060a0016040528084604001516001600160a01b0316815260200184606001516001600160a01b03168152602001846080015162ffffff1681526020018460a0015160020b81526020018460c001516001600160a01b031681525090505f835f01516001600160a01b031663f3cd914c83858761012001516040518463ffffffff1660e01b815260040161299f93929190614e20565b6020604051808303815f875af11580156129bb573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129df919061465d565b90505f6129f0856040015130613410565b90505f612a01866060015130613410565b855190915015612d4b575f85602001511215612bb3578460200151821215612ab75760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f6563696669656400000000000000000000000000000000000000000000000000608482015260a401610609565b81612ac28460801d90565b600f0b14612b385760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152608401610609565b5f811215612bae5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152608401610609565b613086565b5f821315612c295760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f000000000000000000000000000000000000006064820152608401610609565b80612c3484600f0b90565b600f0b14612caa5760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152608401610609565b8460200151811315612bae5760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657231206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f6669656400000000000000000000000000000000000000000000000000000000608482015260a401610609565b5f85602001511215612eee578460200151811215612df75760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f6563696669656400000000000000000000000000000000000000000000000000608482015260a401610609565b80612e0284600f0b90565b600f0b14612e785760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152608401610609565b5f821215612bae5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152608401610609565b5f811315612f645760405162461bcd60e51b815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f2030000000000000000000000000000000000000000000006064820152608401610609565b81612f6f8460801d90565b600f0b14612fe55760405162461bcd60e51b815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152608401610609565b84602001518213156130865760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657230206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f6669656400000000000000000000000000000000000000000000000000000000608482015260a401610609565b5f8212156130aa576130aa86604001518760200151846130a590614133565b6134a8565b5f8112156130c9576130c986606001518760200151836130a590614133565b5f8213156130e4576130e48660400151876020015184613740565b5f8113156130ff576130ff8660600151876020015183613740565b6040805160208101859052016040516020818303038152906040529650505050505050919050565b5f5f851161319d5760405162461bcd60e51b815260206004820152602b60248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4960448201527f4e5055545f414d4f554e540000000000000000000000000000000000000000006064820152608401610609565b5f841180156131ab57505f83115b61321d5760405162461bcd60e51b815260206004820152602860248201527f556e697377617056324c6962726172793a20494e53554646494349454e545f4c60448201527f49515549444954590000000000000000000000000000000000000000000000006064820152608401610609565b5f61323361322c600a85614eb3565b87906137be565b90505f61324082866137be565b90505f61325983613253896103e86137be565b9061382d565b90506132658183614eb3565b98975050505050505050565b5f7f800000000000000000000000000000000000000000000000000000000000000082106132e15760405162461bcd60e51b815260206004820152600760248201527f546f6f20626967000000000000000000000000000000000000000000000000006044820152606401610609565b5090565b6001600160a01b03828116908216145b92915050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261337a848261388a565b61340a57604080516001600160a01b03851660248201525f6044808301919091528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261340090859061392b565b61340a848261392b565b50505050565b6001600160a01b038181165f908152838216602052604080822060015491517ff135baaa000000000000000000000000000000000000000000000000000000008152600481018290529293909291169063f135baaa90602401602060405180830381865afa158015613484573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a9b919061465d565b6001600160a01b03831661352d5760015f9054906101000a90046001600160a01b03166001600160a01b03166311da60b4826040518263ffffffff1660e01b815260040160206040518083038185885af1158015613508573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061340a919061465d565b6001546040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b0385811660048301529091169063a5841194906024015f604051808303815f87803b15801561358a575f5ffd5b505af115801561359c573d5f5f3e3d5ffd5b505050506001600160a01b038216301461364b576001546040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038481166004830152918216602482015260448101839052908416906323b872dd906064016020604051808303815f875af1158015613621573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136459190614eeb565b506136c6565b6001546040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018390529084169063a9059cbb906044015f604051808303815f87803b1580156136af575f5ffd5b505af11580156136c1573d5f5f3e3d5ffd5b505050505b60015f9054906101000a90046001600160a01b03166001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015613717573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061340a919061465d565b505050565b6001546040517f0b0d9c090000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015284811660248301526044820184905290911690630b0d9c09906064015f604051808303815f87803b1580156137ac575f5ffd5b505af115801561252c573d5f5f3e3d5ffd5b5f8115806137e1575082826137d38183614f04565b92506137df9083614eb3565b145b6132f55760405162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f770000000000000000000000006044820152606401610609565b5f826138398382614f1b565b91508110156132f55760405162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f770000000000000000000000006044820152606401610609565b5f5f5f846001600160a01b0316846040516138a59190614f2e565b5f604051808303815f865af19150503d805f81146138de576040519150601f19603f3d011682016040523d82523d5f602084013e6138e3565b606091505b509150915081801561390d57508051158061390d57508080602001905181019061390d9190614eeb565b801561392257506001600160a01b0385163b15155b95945050505050565b5f61397f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613a119092919063ffffffff16565b905080515f148061399f57508080602001905181019061399f9190614eeb565b61373b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610609565b6060610a9b84845f85855f5f866001600160a01b03168587604051613a369190614f2e565b5f6040518083038185875af1925050503d805f8114613a70576040519150601f19603f3d011682016040523d82523d5f602084013e613a75565b606091505b5091509150613a8687838387613a91565b979650505050505050565b60608315613aff5782515f03613af8576001600160a01b0385163b613af85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610609565b5081610a9b565b610a9b8383815115613b145781518083602001fd5b8060405162461bcd60e51b81526004016106099190613f5f565b5f5f85851115613b3c575f5ffd5b83861115613b48575f5ffd5b5050820193919092039150565b5f60208284031215613b65575f5ffd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051610140810167ffffffffffffffff81118282101715613bbd57613bbd613b6c565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715613bec57613bec613b6c565b604052919050565b5f67ffffffffffffffff821115613c0d57613c0d613b6c565b5060051b60200190565b6001600160a01b0381168114613c2b575f5ffd5b50565b5f82601f830112613c3d575f5ffd5b8135613c50613c4b82613bf4565b613bc3565b8082825260208201915060208360051b860101925085831115613c71575f5ffd5b602085015b83811015613c97578035613c8981613c17565b835260209283019201613c76565b5095945050505050565b5f82601f830112613cb0575f5ffd5b8135613cbe613c4b82613bf4565b8082825260208201915060208360051b860101925085831115613cdf575f5ffd5b602085015b83811015613c97578035835260209283019201613ce4565b5f5f83601f840112613d0c575f5ffd5b50813567ffffffffffffffff811115613d23575f5ffd5b6020830191508360208260051b8501011115613d3d575f5ffd5b9250929050565b5f82601f830112613d53575f5ffd5b8135613d61613c4b82613bf4565b8082825260208201915060208360051b860101925085831115613d82575f5ffd5b602085015b83811015613c9757803567ffffffffffffffff811115613da5575f5ffd5b613db4886020838a0101613ca1565b84525060209283019201613d87565b5f5f5f5f5f5f5f60c0888a031215613dd9575f5ffd5b87359650602088013567ffffffffffffffff811115613df6575f5ffd5b613e028a828b01613c2e565b965050604088013567ffffffffffffffff811115613e1e575f5ffd5b613e2a8a828b01613c2e565b955050606088013567ffffffffffffffff811115613e46575f5ffd5b613e528a828b01613ca1565b945050608088013567ffffffffffffffff811115613e6e575f5ffd5b613e7a8a828b01613cfc565b90945092505060a088013567ffffffffffffffff811115613e99575f5ffd5b613ea58a828b01613d44565b91505092959891949750929550565b5f5f83601f840112613ec4575f5ffd5b50813567ffffffffffffffff811115613edb575f5ffd5b602083019150836020828501011115613d3d575f5ffd5b5f5f60208385031215613f03575f5ffd5b823567ffffffffffffffff811115613f19575f5ffd5b613f2585828601613eb4565b90969095509350505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f613f716020830184613f31565b9392505050565b5f5f5f5f60608587031215613f8b575f5ffd5b8435613f9681613c17565b935060208501359250604085013567ffffffffffffffff811115613fb8575f5ffd5b613fc487828801613eb4565b95989497509550505050565b5f5f5f5f60808587031215613fe3575f5ffd5b843593506020850135613ff581613c17565b9250604085013561400581613c17565b9150606085013567ffffffffffffffff811115614020575f5ffd5b61402c87828801613ca1565b91505092959194509250565b5f5f5f5f5f5f5f5f6080898b03121561404f575f5ffd5b883567ffffffffffffffff811115614065575f5ffd5b6140718b828c01613cfc565b909950975050602089013567ffffffffffffffff811115614090575f5ffd5b61409c8b828c01613cfc565b909750955050604089013567ffffffffffffffff8111156140bb575f5ffd5b6140c78b828c01613cfc565b909550935050606089013567ffffffffffffffff8111156140e6575f5ffd5b6140f28b828c01613eb4565b999c989b5096995094979396929594505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f7f8000000000000000000000000000000000000000000000000000000000000000820361416357614163614106565b505f0390565b5f67ffffffffffffffff82111561418257614182613b6c565b50601f01601f191660200190565b5f82601f83011261419f575f5ffd5b81516141ad613c4b82614169565b8181528460208386010111156141c1575f5ffd5b8160208501602083015e5f918101602001919091529392505050565b5f5f604083850312156141ee575f5ffd5b8251602084015190925067ffffffffffffffff81111561420c575f5ffd5b61421885828601614190565b9150509250929050565b5f82601f830112614231575f5ffd5b815161423f613c4b82613bf4565b8082825260208201915060208360051b860101925085831115614260575f5ffd5b602085015b83811015613c97578051835260209283019201614265565b5f5f5f5f60808587031215614290575f5ffd5b845161429b81613c17565b60208601519094506142ac81613c17565b60408601519093506142bd81613c17565b606086015190925067ffffffffffffffff8111156142d9575f5ffd5b61402c87828801614222565b5f5f5f606084860312156142f7575f5ffd5b835161430281613c17565b602085015190935061431381613c17565b604085015190925061432481613c17565b809150509250925092565b61ffff83168152604060208201525f610a9b6040830184613f31565b5f5f5f5f6080858703121561435e575f5ffd5b845161436981613c17565b602086015190945061437a81613c17565b604086015190935061438b81613c17565b606086015190925067ffffffffffffffff8111156143a7575f5ffd5b61402c87828801614190565b5f602082840312156143c3575f5ffd5b8151613f7181613c17565b5f8151808452602084019350602083015f5b828110156144075781516001600160a01b03168652602095860195909101906001016143e0565b5093949350505050565b5f8151808452602084019350602083015f5b82811015614407578151865260209586019590910190600101614423565b81835281816020850137505f602082840101525f6020601f19601f840116840101905092915050565b5f82825180855260208501945060208160051b830101602085015f5b838110156109e057601f198584030188526144a2838351614411565b6020988901989093509190910190600101614486565b87815260c060208201525f6144d060c08301896143ce565b82810360408401526144e281896143ce565b905082810360608401526144f68188614411565b905082810360808401528085825260208201905060208660051b830101875f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18a3603015b898210156145a957601f198685030185528235818112614559575f5ffd5b8b0160208101903567ffffffffffffffff811115614575575f5ffd5b803603821315614583575f5ffd5b61458e868284614441565b9550505060208301925060208501945060018201915061453b565b50505084810360a08601526145be818761446a565b9c9b505050505050505050505050565b60ff83168152604060208201525f610a9b6040830184613f31565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6001600160a01b0385168152608060208201525f61463760808301866143ce565b82810360408401526146498186614411565b90508281036060840152613a868185613f31565b5f6020828403121561466d575f5ffd5b5051919050565b5f82601f830112614683575f5ffd5b8135614691613c4b82614169565b8181528460208386010111156146a5575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f606084860312156146d3575f5ffd5b83359250602084013567ffffffffffffffff8111156146f0575f5ffd5b6146fc86828701614674565b925050604084013567ffffffffffffffff811115614718575f5ffd5b61472486828701614674565b9150509250925092565b818382375f9101908152919050565b5f5f6040838503121561474e575f5ffd5b82359150602083013567ffffffffffffffff81111561476b575f5ffd5b61421885828601614674565b805161478281613c17565b919050565b5f82601f830112614796575f5ffd5b81516147a4613c4b82613bf4565b8082825260208201915060208360051b8601019250858311156147c5575f5ffd5b602085015b83811015613c975780516147dd81613c17565b8352602092830192016147ca565b5f82601f8301126147fa575f5ffd5b8151614808613c4b82613bf4565b8082825260208201915060208360051b860101925085831115614829575f5ffd5b602085015b83811015613c9757805167ffffffffffffffff81111561484c575f5ffd5b61485b886020838a0101614190565b8452506020928301920161482e565b5f82601f830112614879575f5ffd5b8151614887613c4b82613bf4565b8082825260208201915060208360051b8601019250858311156148a8575f5ffd5b602085015b83811015613c9757805167ffffffffffffffff8111156148cb575f5ffd5b6148da886020838a0101614222565b845250602092830192016148ad565b5f5f5f5f5f5f60c087890312156148fe575f5ffd5b8651602088015190965067ffffffffffffffff81111561491c575f5ffd5b61492889828a01614787565b955050604087015167ffffffffffffffff811115614944575f5ffd5b61495089828a01614787565b945050606087015167ffffffffffffffff81111561496c575f5ffd5b61497889828a01614222565b935050608087015167ffffffffffffffff811115614994575f5ffd5b6149a089828a016147eb565b92505060a087015167ffffffffffffffff8111156149bc575f5ffd5b6149c889828a0161486a565b9150509295509295509295565b6001600160a01b03851681526001600160a01b03841660208201526001600160a01b0383166040820152608060608201525f614a146080830184614411565b9695505050505050565b6001600160a01b03851681526001600160a01b03841660208201526001600160a01b0383166040820152608060608201525f614a146080830184613f31565b8481528360208201526001600160a01b0383166040820152608060608201525f614a146080830184613f31565b6001600160a01b038616815284151560208201528360408201526001600160a01b038316606082015260a060808201525f613a8660a0830184613f31565b5f5f60408385031215614ad9575f5ffd5b505080516020909101519092909150565b805162ffffff81168114614782575f5ffd5b8051600281900b8114614782575f5ffd5b5f60a0828403128015614b1e575f5ffd5b5060405160a0810167ffffffffffffffff81118282101715614b4257614b42613b6c565b6040528251614b5081613c17565b81526020830151614b6081613c17565b6020820152614b7160408401614aea565b6040820152614b8260608401614afc565b60608201526080830151614b9581613c17565b60808201529392505050565b60208152614bbb6020820183516001600160a01b03169052565b5f6020830151614bd660408401826001600160a01b03169052565b5060408301516001600160a01b03811660608401525060608301516001600160a01b038116608084015250608083015162ffffff811660a08401525060a0830151614c2660c084018260020b9052565b5060c08301516001600160a01b03811660e08401525060e08301518015156101008401525061010083015161012083015261012083015161014080840152610a9b610160840182613f31565b60ff84168152606060208201525f614c8d6060830185613f31565b8281036040840152614a148185613f31565b5f60208284031215614caf575f5ffd5b815167ffffffffffffffff811115614cc5575f5ffd5b610a9b84828501614190565b80518015158114614782575f5ffd5b5f60208284031215614cf0575f5ffd5b815167ffffffffffffffff811115614d06575f5ffd5b82016101408185031215614d18575f5ffd5b614d20613b99565b614d2982614777565b8152614d3760208301614777565b6020820152614d4860408301614777565b6040820152614d5960608301614777565b6060820152614d6a60808301614aea565b6080820152614d7b60a08301614afc565b60a0820152614d8c60c08301614777565b60c0820152614d9d60e08301614cd1565b60e0820152610100828101519082015261012082015167ffffffffffffffff811115614dc7575f5ffd5b614dd386828501614190565b61012083015250949350505050565b6001600160a01b0382811682821603908111156132f5576132f5614106565b6001600160a01b0381811683821601908111156132f5576132f5614106565b6001600160a01b0384511681526001600160a01b03602085015116602082015262ffffff6040850151166040820152606084015160020b60608201526001600160a01b036080850151166080820152614e9b60a0820184805115158252602080820151908301526040908101516001600160a01b0316910152565b6101206101008201525f610a98610120830184613f31565b5f82614ee6577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f60208284031215614efb575f5ffd5b613f7182614cd1565b80820281158282048414176132f5576132f5614106565b808201808211156132f5576132f5614106565b5f82518060208501845e5f92019182525091905056fea164736f6c634300081b000a