0x000000000000000000000000000000000000000000000000000000000000000061208961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100dd5760003560e01c80635c99dd3b1161008b578063a5588bc311610065578063a5588bc3146102c6578063c8a8542114610306578063d3b9f6911461031957600080fd5b80635c99dd3b14610241578063951ae434146102865780639a90e483146102a657600080fd5b806323c0efbd116100bc57806323c0efbd1461019d57806324e7c85b146101dc5780634e5c77511461022e57600080fd5b8062be7f54146100e257806303193d0e1461011f57806304a2d66d14610154575b600080fd5b8180156100ee57600080fd5b506101026100fd366004611b7f565b61032c565b6040516001600160801b0390911681526020015b60405180910390f35b81801561012b57600080fd5b5061013f61013a366004611ba9565b6103f7565b60408051928352602083019190915201610116565b610167610162366004611b7f565b610610565b604080516001600160801b039687168152602081019590955284019290925283166060830152909116608082015260a001610116565b6101b06101ab366004611bfc565b610715565b604080516001600160a01b03909416845260029290920b602084015261ffff1690820152606001610116565b8180156101e857600080fd5b506101fc6101f7366004611c2e565b61078e565b604080516001600160801b0390961686526020860194909452928401919091526060830152608082015260a001610116565b61013f61023c366004611c66565b6109cb565b81801561024d57600080fd5b5061026161025c366004611c9e565b610b22565b604080516001600160801b039094168452602084019290925290820152606001610116565b81801561029257600080fd5b506102616102a1366004611c9e565b610bb2565b8180156102b257600080fd5b5061013f6102c1366004611cd2565b610e11565b8180156102d257600080fd5b506102e66102e1366004611c66565b610ee8565b604080519485526020850193909352918301526060820152608001610116565b610102610314366004611c9e565b6110ab565b61013f610327366004611d22565b61114c565b600061033782610610565b5092935050506001600160801b0382161590506103f2578151602083015160408085015190517fa34123a7000000000000000000000000000000000000000000000000000000008152600292830b6004820152910b6024820152600060448201526001600160a01b039091169063a34123a79060640160408051808303816000875af11580156103cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ef9190611d66565b50505b919050565b600080856001600160a01b031663128acb083087878760405180606001604052808d6001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a9190611d8a565b6001600160a01b031681526020018d6001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea9190611d8a565b6001600160a01b031681526020018d6001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610536573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061055a9190611da7565b62ffffff9081169091526040805183516001600160a01b0390811660208084019190915285015116818301529201511660608201526080016040516020818303038152906040526040518663ffffffff1660e01b81526004016105c1959493929190611e37565b60408051808303816000875af11580156105df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106039190611d66565b9097909650945050505050565b60208082015160408084015181513060601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000168186015260e893841b6034820152921b60378301528051601a818403018152603a909201905280519101206000908190819081908190819087516040517f514ea4bf000000000000000000000000000000000000000000000000000000008152600481018390529192506001600160a01b03169063514ea4bf9060240160a060405180830381865afa1580156106de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107029190611e71565b939b929a50909850965090945092505050565b6000806000836001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077c9190611ee5565b50949993985090965091945050505050565b6000808080806001600160801b038716156109c0576107c76107c2886001600160801b031688670de0b6b3a764000061118f565b611241565b88546040517fa34123a7000000000000000000000000000000000000000000000000000000008152740100000000000000000000000000000000000000008204600290810b6004830152770100000000000000000000000000000000000000000000008304900b60248201526001600160801b03831660448201529196506001600160a01b03169063a34123a79060640160408051808303816000875af1158015610876573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089a9190611d66565b9094509250831515806108ad5750600083115b156109c05787546040517f4f1eb3d8000000000000000000000000000000000000000000000000000000008152306004820152740100000000000000000000000000000000000000008204600290810b6024830152770100000000000000000000000000000000000000000000008304900b60448201526001600160801b0360648201819052608482015260009182916001600160a01b0390911690634f1eb3d89060a40160408051808303816000875af1158015610970573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109949190611f7d565b6001600160801b0391821693501690506109ae8683611fdb565b6109b88683611fdb565b909450925050505b939792965093509350565b60008060008085600001516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa158015610a13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a379190611ee5565b505050505091509150600080876020015160020b8360020b1215610a9057610a89610a6589602001516112ec565b610a728a604001516112ec565b610a848a6001600160801b0316611635565b611702565b9150610603565b876040015160020b8360020b1215610ae457610ab384610a728a604001516112ec565b9150610add610ac589602001516112ec565b85610ad88a6001600160801b0316611635565b611747565b9050610603565b610b13610af489602001516112ec565b610b018a604001516112ec565b610ad88a6001600160801b0316611635565b90509097909650945050505050565b6000806000806000610b3d886001600160801b038030610e11565b9092509050600080610b4f8985611ff2565b610b598985611ff2565b915091506000610b6a8b84846110ab565b6001600160801b03161115610ba557610b848a8383610bb2565b91985094509250610b958483611fdb565b610b9f8483611fdb565b90965094505b5050505093509350939050565b6000806000610bc28686866110ab565b925085600001516001600160a01b0316633c8a7d8d30886020015189604001518760405180608001604052808d600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190611d8a565b6001600160a01b031681526020018d600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc89190611d8a565b6001600160a01b031681526020018d600001516001600160a01b031663ddca3f436040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190611da7565b62ffffff16815230602091820152604051610d9192910181516001600160a01b03908116825260208084015182169083015260408084015162ffffff1690830152606092830151169181019190915260800190565b6040516020818303038152906040526040518663ffffffff1660e01b8152600401610dc095949392919061200a565b60408051808303816000875af1158015610dde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e029190611d66565b93979096509294509192505050565b8351602085015160408087015190517f4f1eb3d80000000000000000000000000000000000000000000000000000000081526001600160a01b038581166004830152600293840b60248301529190920b60448301526001600160801b038087166064840152851660848301526000928392911690634f1eb3d89060a40160408051808303816000875af1158015610eac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed09190611f7d565b6001600160801b039182169891169650945050505050565b60008080806001600160801b038516156110a2578551602087015160408089015190517fa34123a7000000000000000000000000000000000000000000000000000000008152600292830b6004820152910b60248201526001600160801b03871660448201526001600160a01b039091169063a34123a79060640160408051808303816000875af1158015610f81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa59190611d66565b909450925083151580610fb85750600083115b156110a2578551602087015160408089015190517f4f1eb3d8000000000000000000000000000000000000000000000000000000008152306004820152600292830b6024820152910b60448201526001600160801b0360648201819052608482015260009182916001600160a01b0390911690634f1eb3d89060a40160408051808303816000875af1158015611052573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110769190611f7d565b6001600160801b0391821693501690506110908683611fdb565b61109a8683611fdb565b909450925050505b92959194509250565b60008084600001516001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156110f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111149190611ee5565b50505050505090506111418161112d87602001516112ec565b61113a88604001516112ec565b8787611776565b9150505b9392505050565b6000808661116d5761115e8487611ff2565b6111688487611fdb565b611181565b6111778487611fdb565b6111818487611ff2565b909890975095505050505050565b60008080600019858709858702925082811083820303915050806000036111c857600084116111bd57600080fd5b508290049050611145565b8084116111d457600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b600070010000000000000000000000000000000082106112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5090565b60008060008360020b12611303578260020b61130b565b8260020b6000035b9050620d89e881111561134a576040517f2bc80f3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008160011660000361136e57700100000000000000000000000000000000611380565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156113b4576ffff97272373d413259a46990580e213a0260801c5b60048216156113d3576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156113f2576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611411576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611430576fff973b41fa98c081472e6896dfb254c00260801c5b604082161561144f576fff2ea16466c96a3843ec78b326b528610260801c5b608082161561146e576ffe5dee046a99a2a811c461f1969c30530260801c5b61010082161561148e576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156114ae576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156114ce576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156114ee576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561150e576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561152e576fa9f746462d870fdf8a65dc1f90e061e50260801c5b61400082161561154e576f70d869a156d2a1b890bb3df62baf32f70260801c5b61800082161561156e576f31be135f97d08fd981231505542fcfa60260801c5b6201000082161561158f576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156115af576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156115ce576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156115eb576b048a170391f7dc42444e8fa20260801c5b60008460020b131561160c5780600019816116085761160861204d565b0490505b640100000000810615611620576001611623565b60005b60ff16602082901c0192505050919050565b60007fffffffffffffffffffffffffffffffff80000000000000000000000000000000821215801561167657506f8000000000000000000000000000000082125b6112e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f323820626974730000000000000000000000000000000000000000000000000060648201526084016112df565b60008082600f0b126117285761172361171e858585600161183a565b611903565b61173f565b61173b61171e858585600003600061183a565b6000035b949350505050565b60008082600f0b126117635761172361171e8585856001611931565b61173b61171e8585856000036000611931565b6000836001600160a01b0316856001600160a01b03161115611796579293925b846001600160a01b0316866001600160a01b0316116117c1576117ba8585856119b3565b9050611831565b836001600160a01b0316866001600160a01b031610156118235760006117e88786866119b3565b905060006117f7878986611a1f565b9050806001600160801b0316826001600160801b031610611818578061181a565b815b92505050611831565b61182e858584611a1f565b90505b95945050505050565b6000836001600160a01b0316856001600160a01b0316111561185a579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661189657600080fd5b836118cc57866001600160a01b03166118b98383896001600160a01b031661118f565b816118c6576118c661204d565b046118f8565b6118f86118e38383896001600160a01b0316611a65565b886001600160a01b0316808204910615150190565b979650505050505050565b60007f800000000000000000000000000000000000000000000000000000000000000082106112e857600080fd5b6000836001600160a01b0316856001600160a01b03161115611951579293925b8161198757611982836001600160801b03168686036001600160a01b03166c0100000000000000000000000061118f565b611831565b611831836001600160801b03168686036001600160a01b03166c01000000000000000000000000611a65565b6000826001600160a01b0316846001600160a01b031611156119d3579192915b60006119ff856001600160a01b0316856001600160a01b03166c0100000000000000000000000061118f565b9050611141611a1a84838888036001600160a01b031661118f565b611aa5565b6000826001600160a01b0316846001600160a01b03161115611a3f579192915b61173f611a1a836c010000000000000000000000008787036001600160a01b031661118f565b6000611a7284848461118f565b905060008280611a8457611a8461204d565b8486091115611145576000198110611a9b57600080fd5b6001019392505050565b806001600160801b03811681146103f257600080fd5b6001600160a01b0381168114611ad057600080fd5b50565b8060020b8114611ad057600080fd5b600060608284031215611af457600080fd5b6040516060810181811067ffffffffffffffff82111715611b3e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040529050808235611b4f81611abb565b81526020830135611b5f81611ad3565b60208201526040830135611b7281611ad3565b6040919091015292915050565b600060608284031215611b9157600080fd5b6111458383611ae2565b8015158114611ad057600080fd5b60008060008060808587031215611bbf57600080fd5b8435611bca81611abb565b93506020850135611bda81611b9b565b9250604085013591506060850135611bf181611abb565b939692955090935050565b600060208284031215611c0e57600080fd5b813561114581611abb565b6001600160801b0381168114611ad057600080fd5b600080600060608486031215611c4357600080fd5b833592506020840135611c5581611c19565b929592945050506040919091013590565b60008060808385031215611c7957600080fd5b611c838484611ae2565b91506060830135611c9381611c19565b809150509250929050565b600080600060a08486031215611cb357600080fd5b611cbd8585611ae2565b95606085013595506080909401359392505050565b60008060008060c08587031215611ce857600080fd5b611cf28686611ae2565b93506060850135611d0281611c19565b92506080850135611d1281611c19565b915060a0850135611bf181611abb565b600080600080600060a08688031215611d3a57600080fd5b8535611d4581611b9b565b97602087013597506040870135966060810135965060800135945092505050565b60008060408385031215611d7957600080fd5b505080516020909101519092909150565b600060208284031215611d9c57600080fd5b815161114581611abb565b600060208284031215611db957600080fd5b815162ffffff8116811461114557600080fd5b6000815180845260005b81811015611df257602081850181015186830182015201611dd6565b81811115611e04576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006001600160a01b038088168352861515602084015285604084015280851660608401525060a060808301526118f860a0830184611dcc565b600080600080600060a08688031215611e8957600080fd5b8551611e9481611c19565b8095505060208601519350604086015192506060860151611eb481611c19565b6080870151909250611ec581611c19565b809150509295509295909350565b805161ffff811681146103f257600080fd5b600080600080600080600060e0888a031215611f0057600080fd5b8751611f0b81611abb565b6020890151909750611f1c81611ad3565b9550611f2a60408901611ed3565b9450611f3860608901611ed3565b9350611f4660808901611ed3565b925060a088015160ff81168114611f5c57600080fd5b60c0890151909250611f6d81611b9b565b8091505092959891949750929550565b60008060408385031215611f9057600080fd5b8251611f9b81611c19565b6020840151909250611c9381611c19565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611fed57611fed611fac565b500390565b6000821982111561200557612005611fac565b500190565b6001600160a01b03861681528460020b60208201528360020b60408201526001600160801b038316606082015260a0608082015260006118f860a0830184611dcc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea164736f6c634300080f000a