0xeab5af65d71fa56cfb537a07f4ddb0c63b49e93490d50cd0483ac944a561fad1
Safe Transaction on 0x82bf...e7a1
Overview
Transaction Data
0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000cee400000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac00000000000000000000000082bf455e9ebd6a541ef10b683de1edcaf05ce7a182bf455e9ebd6a541ef10b683de1edcaf05ce7a1739a5557fca3a502b5c41a98000000000000000000000000000000000000000000000000000000000000001e00000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006d6461ff715f82bf455e9ebd6a541ef10b683de1edcaf05ce7a1739a5557fca3a502b5c41a9800000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000006cfb610120604052348015610010575f5ffd5b50604051616c7b380380616c7b83398101604081905261002f916100ee565b608084905260a08390526001600160a01b0380831661010052811660c05260405161005c602082016100c6565b601f1982820381018352601f90910116604081815260c0516001600160a01b031660208301520160408051601f19818403018152908290526100a19291602001610149565b60408051601f19818403018152919052805160209091012060e0525061016592505050565b610bef8061608c83390190565b80516001600160a01b03811681146100e9575f5ffd5b919050565b5f5f5f5f60808587031215610101575f5ffd5b845160208601519094509250610119604086016100d3565b9150610127606086016100d3565b905092959194509250565b5f81518060208401855e5f93019283525090919050565b5f61015d6101578386610132565b84610132565b949350505050565b60805160a05160c05160e05161010051615ece6101be5f395f81816105fc015261247d01525f612f3b01525f81816106d30152612f0a01525f81816103c90152610c8501525f818161047d0152610c2d0152615ece5ff3fe608060405234801561000f575f5ffd5b5060043610610345575f3560e01c8063724c184c116101be578063c215173b116100fe578063e35bff311161009e578063f05830b911610079578063f05830b9146107ba578063f3947427146107c2578063f696c88e146107e1578063fc4c2d54146107ea575f5ffd5b8063e35bff311461077c578063e84cfee01461078f578063ea800a0a146107b1575f5ffd5b8063d342cfa0116100d9578063d342cfa014610744578063d527f2a91461074c578063d91042b514610756578063e210c5191461075e575f5ffd5b8063c215173b14610720578063c54df14014610729578063c8fea2fb14610731575f5ffd5b80639a1a14d911610169578063a7a5fd9111610144578063a7a5fd9114610678578063b013993d146106a6578063b8c26a6f146106ce578063bd58855d146106f5575f5ffd5b80639a1a14d9146106545780639b568e561461065c578063a12ef25e14610665575f5ffd5b8063805ee24511610199578063805ee2451461063157806388cec3c6146106385780638afbe5b01461064b575f5ffd5b8063724c184c146105f757806374245ed81461061e578063774c049e1461039b575f5ffd5b806334b87dee116102895780635a92fa851161023457806364af311a1161020f57806364af311a1461055a57806368c54f38146105875780636f0a79c31461059a57806370fb2621146105cc575f5ffd5b80635a92fa851461051f5780635e14f9fc1461052757806363e17bb814610547575f5ffd5b806347b9b1ee1161026457806347b9b1ee146104c55780634dec783b146104f457806358f5cbad14610517575f5ffd5b806334b87dee1461045d5780634428382114610478578063451cead51461049f575f5ffd5b8063207d0636116102f457806327749480116102cf57806327749480146103eb5780632a995231146104295780632a99f37b1461044a5780632e0f262514610453575f5ffd5b8063207d0636146103af57806324c20daa146103c457806324f0808c14610349575f5ffd5b80630e04292b116103245780630e04292b14610376578063152257aa1461039b57806315e4824f146103a5575f5ffd5b80621937e714610349578063019ec38b146103665780630da0d02a1461036e575b5f5ffd5b610353621e848081565b6040519081526020015b60405180910390f35b6103536107f9565b610353601a81565b610389610384366004615200565b610811565b60405160ff909116815260200161035d565b610353620f424081565b6103536265b9ab81565b6103c26103bd36600461523f565b6108ac565b005b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6103fe6103f9366004615200565b610939565b60408051600295860b815293850b60208501529190930b90820152606081019190915260800161035d565b61043c61043736600461525a565b610965565b60405161035d92919061529c565b61035361753081565b6103536298968081565b610465600381565b60405161ffff909116815260200161035d565b6103537f000000000000000000000000000000000000000000000000000000000000000081565b6104b26104ad3660046152eb565b610b28565b60405160029190910b815260200161035d565b6104d76a03c00000f000007800003c81565b6040516bffffffffffffffffffffffff909116815260200161035d565b61050761050236600461534e565b610b88565b604051901515815260200161035d565b610353610d6d565b610353610d83565b61053a610535366004615422565b610d9a565b60405161035d91906154a2565b6103536105553660046154e4565b610f26565b61056d610568366004615504565b610f7a565b6040805160029390930b835260208301919091520161035d565b610353610595366004615525565b610fa0565b6105ad6105a83660046154e4565b611006565b604080516001600160801b03909316835260208301919091520161035d565b6105df6105da3660046152eb565b611021565b6040516001600160a01b03909116815260200161035d565b6105df7f000000000000000000000000000000000000000000000000000000000000000081565b61035361062c366004615555565b61107b565b6008610389565b6103c261064636600461523f565b611783565b61035361400081565b6103536117f6565b61046561020181565b6103c26106733660046155b7565b611809565b61068b6106863660046155ee565b61182e565b6040805193845260208401929092529082015260600161035d565b6106b96106b43660046156b9565b611892565b6040805192835260208301919091520161035d565b6105df7f000000000000000000000000000000000000000000000000000000000000000081565b6107086107033660046154e4565b611c44565b6040516001600160801b03909116815260200161035d565b610465610fa081565b61046560fa81565b6103c261073f366004615708565b611c59565b6104b2609581565b6103536289544081565b610353611cf7565b61076862015f9081565b60405162ffffff909116815260200161035d565b61035361078a366004615746565b611d0c565b6107a261079d3660046158c4565b611edc565b60405161035d93929190615999565b61046561138881565b610389600881565b6107cc62a2c2ab81565b60405163ffffffff909116815260200161035d565b6103536102d481565b610353673782dace9d90000081565b61080e6301e1338066038d7ea4c68000615a3c565b81565b5f5f5f5f5f61081f866123d8565b9450509350935093505f6102d461083a868a0360020b612458565b1390505f61016a61084f86880360020b612458565b1390505f61016a61086486860360020b612458565b139050600360768a901c16808261087b575f61087e565b60015b84610889575f61088c565b60015b86610897575f61089a565b60015b0101019b9a5050505050505050505050565b6108b4612472565b604051600181527f4d949b6be541be8080b28ac62decb3f9072c106310c62f1a4e24a42c7d4b69109060200160405180910390a1806001600160a01b031663537e4ab76040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610920575f5ffd5b505af1158015610932573d5f5f3e3d5ffd5b5050505050565b5f80808061095585876a03c00000f000007800003c60956124d6565b9299919850965090945092505050565b60605f80808080610984888a6a03c00000f000007800003c60956124d6565b9350935093509350606060026102d461099d9190615bf6565b60026109a9868d615c04565b60020b6109b69190615bf6565b60026109c28787615c04565b60020b6109cf9190615bf6565b60026109db888a615c04565b60020b6109e89190615bf6565b6109f29190615c29565b6109fc9190615c29565b1380610a0a57505f8860ff16115b15610ad05760408051600480825260a08201909252906020820160808036833701905050905084815f81518110610a4357610a43615c50565b602002602001019060020b908160020b815250508381600181518110610a6b57610a6b615c50565b600292830b60209182029290920101528151849183918110610a8f57610a8f615c50565b602002602001019060020b908160020b815250508981600381518110610ab757610ab7615c50565b602002602001019060020b908160020b81525050610b18565b604080516001808252818301909252906020808301908036833701905050905084815f81518110610b0357610b03615c50565b602002602001019060020b908160020b815250505b955093505050505b935093915050565b5f5f5f5f610b35856123d8565b5060020b935060020b935060020b935050600a81836003610b569190615c64565b610b61866006615c64565b610b6b9190615c29565b610b759190615c29565b610b7f9190615a3c565b95945050505050565b5f5f5f5f610b9e8f8f8f8f8f8f8f8f8f8f61250d565b9250925092505f610bae8c612746565b90505f610bd1610bbe8660801c90565b6001600160801b03168862989680612a7a565b90505f610bf4610be18660801c90565b6001600160801b03168962989680612a7a565b90506001600160801b038087169086165f610c5a858411610c15575f610c1f565b610c1f8685615c93565b610c51610c2b8a612ab6565b7f0000000000000000000000000000000000000000000000000000000000000000610f26565b62989680612ac8565b90505f610ca9858411610c6d575f610c77565b610c778685615c93565b610c51610c838b612b72565b7f0000000000000000000000000000000000000000000000000000000000000000610f26565b90506c01000000000000000000000000876001600160a01b03161015610d24575f86610cd5838a612b81565b610cdf9087615ca6565b101590505f610cee878a612bdd565b84610cf9878c612b81565b610d039190615ca6565b10159050818015610d115750805b9c50505050505050505050505050610d5e565b5f610d2f8789612c2d565b82610d3a878b612c78565b610d449190615ca6565b101590505f86610d54858b612c78565b610d039087615ca6565b9b9a5050505050505050505050565b61080e6301e13380671bc16d674ec80000615a3c565b61080e6301e133806802b5e3af16b1880000615a3c565b60605f610da78787612cc3565b9050858067ffffffffffffffff811115610dc357610dc3615785565b604051908082528060200260200182016040528015610dec578160200160208202803683370190505b5092505f5b818114610f1a575f878783818110610e0b57610e0b615c50565b9050602002013590505f610e348b8b85818110610e2a57610e2a615c50565b9050602002013590565b90505f5f5f5f5f610e448a612ab6565b9050610e5487878e846001612d53565b90955092505f9050610e658a612b72565b9050610e7487878e845f612d53565b909450915050818411610e87575f610e91565b610e918285615c93565b9350808311610ea0575f610eaa565b610eaa8184615c93565b92505050610eed610eba82612e16565b610ed2610ec685612e16565b6001600160801b031690565b9060801b6fffffffffffffffffffffffffffffffff19160190565b888681518110610eff57610eff615c50565b60200260200101818152505084600101945050505050610df1565b50505095945050505050565b5f6103e8830262895440811015610f405782915050610f74565b6290f56080821115610f56575f92505050610f74565b628954408103828203850281610f6e57610f6e615a14565b04925050505b92915050565b5f80610f9484846a03c00000f000007800003c6095612e40565b915091505b9250929050565b5f5f610fac8585610811565b90505f610fc9610fbb85612eaf565b6001600160a01b0316612e16565b90506f3451615582bf202013e8138803e800306fffffffffffffffffffffffffffffffff19608083901b1660ff84160101925050505b9392505050565b5f5f5f5f6110148686612f86565b9097909650945050505050565b5f61102b82612eaf565b9050811561107657806001600160a01b03163b5f03611076576040517f15b3fb4600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b5f5f61108685612746565b9050855f600f82900b8112611130576001600160a01b03861663c6e6f5926110ad84615cb9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160801b039091166004820152602401602060405180830381865afa158015611107573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061112b9190615cf5565b6111b8565b6040517f0a28a4770000000000000000000000000000000000000000000000000000000081526001600160801b03831660048201526001600160a01b03871690630a28a47790602401602060405180830381865afa158015611194573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111b89190615cf5565b90505f5f83600f0b136111d3576111ce82615d0c565b6111d5565b815b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038c811660048301528916906370a0823190602401602060405180830381865afa158015611232573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112569190615cf5565b61127f907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615d26565b6112899190615c29565b90505f811315611410576114056112a08a60801d90565b600f0b611319896001600160a01b03166307a2d13a856040518263ffffffff1660e01b81526004016112d491815260200190565b602060405180830381865afa1580156112ef573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113139190615cf5565b87612c2d565b6113239190615c29565b6113fd6113ef848b6001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611366573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061138a9190615cf5565b8c6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ea9190615cf5565b612a7a565b8c600f0b610ec69190615d26565b9060801b0190565b945050505050610b7f565b5f61141b8a60801d90565b90505f5f82600f0b136114c3576001600160a01b03881663c6e6f59261144084615cb9565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160801b039091166004820152602401602060405180830381865afa15801561149a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114be9190615cf5565b61154b565b6040517f0a28a4770000000000000000000000000000000000000000000000000000000081526001600160801b03831660048201526001600160a01b03891690630a28a47790602401602060405180830381865afa158015611527573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061154b9190615cf5565b90505f82600f0b136115655761156081615d0c565b611567565b805b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b038e811660048301528a16906370a0823190602401602060405180830381865afa1580156115c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115e89190615cf5565b611611907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff615d26565b61161b9190615c29565b92505f831315611773576117666116c8848a6001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611668573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061168c9190615cf5565b8b6001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113c6573d5f5f3e3d5ffd5b6116d28d60801d90565b600f0b6116df9190615d26565b6113fd8d600f0b61175c8c6001600160a01b03166307a2d13a896040518263ffffffff1660e01b815260040161171791815260200190565b602060405180830381865afa158015611732573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117569190615cf5565b8b612bdd565b610ec69190615c29565b9650505050505050610b7f565b50989a9950505050505050505050565b61178b612472565b6040515f81527f4d949b6be541be8080b28ac62decb3f9072c106310c62f1a4e24a42c7d4b69109060200160405180910390a1806001600160a01b031663738e571c6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610920575f5ffd5b61080e6003671bc16d674ec80000615a3c565b611811612472565b5f61181c83306130dd565b9050611829838383611c59565b505050565b5f8080878c1461186a576040517fff633a3800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61187c8d8d8b8b8f8f8d8d8d8d61250d565b9250925092509a509a509a975050505050505050565b5f8080806001600160801b038a8116908a1660808c811c908c901c6118ef6118ea629896806118c4621e848086615d4c565b6118ce9190615d63565b8685116118db575f613131565b6118e58786615c93565b613131565b613146565b95506119296118ea62989680611908621e848085615d4c565b6119129190615d63565b85841161191f575f613131565b6118e58685615c93565b9450505050505f6119378790565b6001600160801b03168b6001600160801b03166119549190615d26565b90505f6119618860801c90565b6001600160801b03168b6001600160801b031661197e9190615d26565b90506119e18484896001600160801b03168c61199d90600f0b87615d26565b6119a79190615d26565b6119b18b60801c90565b6001600160801b03166119c48e60801d90565b6119d190600f0b87615d26565b6119db9190615d26565b8e613188565b90945092505f876001600160801b03168a6119ff90600f0b87615c29565b611a099190615c29565b90505f611a168960801c90565b6001600160801b0316611a298c60801d90565b611a3690600f0b87615c29565b611a409190615c29565b90508382138015611a5057508281135b611b1b5783821315611aba57611a81611a698285615d26565b611a7c611a768786615d26565b8f613245565b6132be565b611a8b9086615c29565b9450611aad611aa3611a9d8386615d26565b8e6132cc565b611a7c8685615d26565b611ab79087615d26565b95505b82811315611b1b57611ae2611acf8386615d26565b611a7c611adc8685615d26565b8f613334565b611aec9087615c29565b9550611b0e611b04611afe8487615d26565b8e61339c565b611a7c8584615d26565b611b189086615d26565b94505b5f896001600160801b03168c611b3490600f0b87615d26565b611b3e9190615d26565b90505f611b4b8b60801c90565b6001600160801b0316611b5e8e60801d90565b611b6b90600f0b87615d26565b611b759190615d26565b90505f821215611b83575f91505b5f811215611b8e57505f5b81881315611b9a578197505b80871315611ba6578096505b8a6001600160801b03168d611bbe90600f0b8a615c29565b611bc89190615c29565b9350611bd48b60801c90565b6001600160801b0316611be78e60801d90565b611bf490600f0b89615c29565b611bfe9190615c29565b9250611c13876001600160801b038a166113fd565b611c2d611c208588615d26565b6113fd610ec6888b615d26565b995099505050505050505050965096945050505050565b5f5f611c508484612f86565b50949350505050565b611c61612472565b805f03611c9a576040517f13185bd700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ca58383836133fa565b816001600160a01b0316836001600160a01b03167f80757154671b7ae74ccfd96b462e7f17aaed359660bd1f556525f4868386df2383604051611cea91815260200190565b60405180910390a3505050565b61080e6301e13380668e1bc9bf040000615a3c565b5f8080805b611d1a866134b6565b8114611e4057611d2a86826134f0565b15611e3057611d398682613506565b60020b15611e30575f611d4f8787846001613519565b509050611d5c84826135b3565b93505f80611d7b611d6d8a86613506565b611d768b613664565b613673565b90925090505f611d908a86603002604c011c90565b9050611d9c8282615d76565b60020b8c60020b128015611dbf5750611db58382615c04565b60020b8c60020b12155b15611dc957600195505b5050505f5f5f5f5f611de28c88611ddd8e90565b6136aa565b9050611dee8e8261370c565b9095509350611dfd8d8261370c565b9093509150611e289050611e21611e148386615d9b565b6113fd610ec68689615d9b565b8a9061378a565b985050505050505b611e3981615de9565b9050611d11565b505f81611e5757611e526103e8615d0c565b611e62565b611e62617530615d0c565b9050611ed06298968082611e768660801d90565b600f0b611e839190615c64565b611e8d9190615a3c565b6113fd62989680611ea285600f89900b615c64565b611eac9190615a3c565b6fffffffffffffffffffffffffffffffff1988169088016001600160801b03160190565b98975050505050505050565b5f806060818080611ef1885b600f0b5f6132be565b5f0390505f611f03611ee88a60801d90565b5f90810391505b8b518114611fa8575f8c8281518110611f2557611f25615c50565b602002602001015190505f611f39826134b6565b90505f5b818114611f9a57611f4e83826134f0565b600103611f9257611f8f8e8581518110611f6a57611f6a615c50565b60200260200101518260048110611f8357611f83615c50565b6020020151889061378a565b96505b600101611f3d565b505050806001019050611f0a565b508183600f0b128015611fc6575080611fc18460801d90565b600f0b135b156120305780611fed84600f0b8403611a7c84611fe38860801d90565b600f0b038c613334565b5f0361201083611ffd8760801d90565b600f0b03611a7c87600f0b87038d613245565b9093509150612028818301855b600f0b9060801b0190565b9450506120e2565b8061203b8460801d90565b600f0b12801561204d57508183600f0b135b156120b657816120748185600f0b03611a7c6120698760801d90565b600f0b85038c613334565b6120956120818660801d90565b600f0b8403611a7c8688600f0b038d613245565b9093505f0391506120286120a98560801d90565b60801b848301600f0b0190565b6120d96120cf826120c78660801d90565b600f0b6132be565b61201d84866120c7565b93505f91505f90505b6120fa6120ee82613803565b6113fd610ec685613803565b96505050885167ffffffffffffffff81111561211857612118615785565b60405190808252806020026020018201604052801561215157816020015b61213e6151d1565b8152602001906001900390816121365790505b5092505f5b895181146123cb575f8a828151811061217157612171615c50565b60209081029190910101519050895f5b61218a836134b6565b81146123c05761219a83826134f0565b60011480156121d757508184815181106121b6576121b6615c50565b602002602001015181600481106121cf576121cf615c50565b602002015115155b156123b8575f6122138386815181106121f2576121f2615c50565b6020026020010151836004811061220b5761220b615c50565b602002015190565b600f0b15801590612226575085600f0b15155b156122b7576122b4612290886001600160801b031661226986898151811061225057612250615c50565b6020026020010151866004811061220b5761220b615c50565b5f036001600160801b03160261227c8990565b6001600160801b0316808204910615150190565b6fffffffffffffffffffffffffffffffff1983169083016001600160801b03160190565b90505b6122f08386815181106122cc576122cc615c50565b602002602001015183600481106122e5576122e5615c50565b602002015160801d90565b600f0b1580159061230c57506123068660801d90565b600f0b15155b156123795761237661236e6123218960801d90565b6001600160801b031661235886898151811061233f5761233f615c50565b602002602001015186600481106122e5576122e5615c50565b5f036001600160801b03160261227c8960801d90565b60801b820190565b90505b6123838982613828565b98508088868151811061239857612398615c50565b602002602001015183600481106123b1576123b1615c50565b6020020152505b600101612181565b505050600101612156565b5050509450945094915050565b5f5f5f5f5f5f6123f58760781c6affffffffffffffffffffff1690565b9050612405623fffff8216613881565b9550612419623fffff601683901c16613881565b945061242d623fffff602c83901c16613881565b9350612441623fffff604283901c16613881565b925061244c8761389f565b91505091939590929450565b5f5f821361246e5761246982615d0c565b610f74565b5090565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146124d4576040517fef6d0f0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f5f5f6124e3886138d9565b93506124ee886138ee565b91506124fc88888888612e40565b949990985091965092945092505050565b5f5f5f5f5f6125208f8f8f8f8f8d613909565b6040517f849e14f70000000000000000000000000000000000000000000000000000000081526001600160a01b038e811660048301529196509294509092505f918291829182918c169063849e14f7906024016040805180830381865afa15801561258d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b19190615e01565b8093508195505050896001600160a01b031663849e14f78f6040518263ffffffff1660e01b81526004016125f491906001600160a01b0391909116815260200190565b6040805180830381865afa15801561260e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126329190615e01565b909350905083821115612648575f93915061264e565b9203915f905b8281111561265e57505f91612664565b909103905f5b8c6001600160801b03168401935061267c8d60801c90565b6001600160801b0316830192506126908590565b6001600160801b0316840193506126a78560801c90565b6001600160801b031692909201916126e381610ed2888581016001600160801b03166fffffffffffffffffffffffffffffffff19919091160190565b9550612716866126f286612e16565b6001600160801b03169060801b6fffffffffffffffffffffffffffffffff19160190565b985061272e6127258760801c90565b6126f285612e16565b97505050505050509a509a509a975050505050505050565b5f5f5f8360020b1261275b578260020b612762565b8260020b5f035b9050620d89e88111156127a1576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f036127b657600160801b6127c8565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156127fc576ffff97272373d413259a46990580e213a0260801c5b600482161561281b576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b600882161561283a576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612859576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612878576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612897576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156128b6576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156128d6576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156128f6576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612916576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612936576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612956576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612976576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612996576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156129b6576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156129d7576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156129f7576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615612a16576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615612a33576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315612a5257805f1981612a4e57612a4e615a14565b0490505b640100000000810615612a66576001612a68565b5f5b60ff16602082901c0192505050919050565b5f612a86848484612ac8565b90505f8280612a9757612a97615a14565b8486091115610fff575f198110612aac575f5ffd5b6001019392505050565b5f62010000608083901c5b0692915050565b5f80805f19858709858702925082811083820303915050805f03612afc575f8411612af1575f5ffd5b508290049050610fff565b808411612b07575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f62010000609083901c612ac1565b5f6001600160801b036001600160a01b0383161015612bbc57612bb583600160c01b6002856001600160a01b03160a612ac8565b9050610f74565b612bb583600160801b612bd86001600160a01b03861680613a59565b612ac8565b5f6001600160801b036001600160a01b0383161015612c1157612bb583600160c01b6002856001600160a01b03160a612a7a565b612bb583600160801b6113ea6001600160a01b03861680613a59565b5f6001600160801b036001600160a01b0383161015612c5c57612bb5836002846001600160a01b03160a613ac1565b612bb583612c736001600160a01b03851680613a59565b613af3565b5f6001600160801b036001600160a01b0383161015612ca757612bb5836002846001600160a01b03160a613b0b565b612bb583612cbe6001600160a01b03851680613a59565b613b6e565b5f808083815b818114612d34575f878783818110612ce357612ce3615c50565b9050602002013590505f612cf682612ab6565b90505f612d0283612b72565b9050868213612d115786612d13565b815b9650858113612d225785612d24565b805b9550836001019350505050612cc9565b50612d495f601084901b85015f5f5f5f613bcc565b9695505050505050565b5f5f5f612d5f886134b6565b90505f5b818114612e0a5784612d76576001612d78565b5f5b60ff16612d858a83613c7e565b03612e0257612d948982613506565b60020b158015612dad5750612da989826134f0565b6001145b15612df0575f612dbf8a8a845f613c90565b9050612dcb8a83613c7e565b15612ddf57612dda8160801c90565b612de1565b805b6001600160801b031684019350505b612dfd89828a8a8a613d6c565b840193505b600101612d63565b50509550959350505050565b806001600160801b03811681146110765760405163b668004560e01b815260040160405180910390fd5b5f5f612e4b8661389f565b915062ffffff4260061c165f8080612e638a60e81c90565b62ffffff16905080841415925080840362ffffff166040029150508115612ea3575f612e90898b89613d9c565b9050612e9f8a8286858c613de9565b9450505b50505094509492505050565b5f815f03612ebe57505f919050565b6040517fff0000000000000000000000000000000000000000000000000000000000000060208201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060601b166021820152603581018390527f0000000000000000000000000000000000000000000000000000000000000000605582015282905f9060750160408051601f198184030181529190528051602090910120949350505050565b5f80838167094079cd1a42aaaa8213612fa75767094079cd1a42aaaa612fb1565b6704a03ce68d2155565b90505f612fe07ffffffffffffffffffffffffffffffffffffffffffffffffff6bf8632e5bd5556840183613f9e565b90505f612ff48760701c643fffffffff1690565b64ffffffffff1690505f60026130108960501c63ffffffff1690565b63ffffffff16901b63ffffffff1690505f5f835f036130375750634b9a1eff9050806130c3565b5f613048650171268b5ad487613fbc565b9050427ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc165f61307c8683036140006132be565b90508281025f819003613094578795508794506130be565b61309e8882613fd0565b94505f6130ae8960028405613fd0565b60046002909102878b0101059650505b505050505b6130cd8286614029565b9b909a5098505050505050505050565b5f6040517f70a0823100000000000000000000000000000000000000000000000000000000815282600482015260205f602483875afa61311b575f91505b5060203d101561312857505f5b50505f51919050565b5f81831061313f5781610fff565b5090919050565b5f7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561246e5760405163b668004560e01b815260040160405180910390fd5b5f5f5f5f6c01000000000000000000000000856001600160a01b031610156131db576131b486866132cc565b6131be9088615c29565b91506131ca88866132cc565b6131d4908a615c29565b9050613209565b856131e6888761339c565b6131f09190615c29565b91506131fc898661339c565b6132069089615c29565b90505b5f821215613215575f91505b8181131561323857613228898383612ac8565b9850613235888383612ac8565b97505b5096979596505050505050565b5f6001600160801b036001600160a01b038316101561329b575f6132806118ea61326e8661408c565b6002866001600160a01b03160a613b0b565b90505f841261328f5780613293565b805f035b915050610f74565b5f6132806118ea6132ab8661408c565b612cbe6001600160a01b03871680613a59565b5f81831261313f5781610fff565b5f6001600160801b036001600160a01b038316101561330c575f6132806118ea6132f58661408c565b600160c01b6002876001600160a01b03160a612a7a565b5f6132806118ea61331c8661408c565b600160801b6113ea6001600160a01b03881680613a59565b5f6001600160801b036001600160a01b0383161015613374575f6132806118ea61335d8661408c565b600160c01b6002876001600160a01b03160a612ac8565b5f6132806118ea6133848661408c565b600160801b612bd86001600160a01b03881680613a59565b5f6001600160801b036001600160a01b03831610156133d7575f6132806118ea6133c58661408c565b6002866001600160a01b03160a613ac1565b5f6132806118ea6133e78661408c565b612c736001600160a01b03871680613a59565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815283816004015282816024015260205f6044835f895af13d15601f3d1160015f5114161716915050806134b0575f61345885306130dd565b6040517f81f20f860000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152306024820152604481018590526064810182905290915060840160405180910390fd5b50505050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106134ea578160010191506134d2565b50919050565b5f60026048603084020184901c5b069392505050565b5f6110006064603084020184901c6134fe565b5f5f5f61352887878787613c90565b90505f61353588876134f0565b1590506135428887613c7e565b5f036135795780156135665761355f610ec68361409c565b61409c565b92506135a8565b613572610ec68361409c565b93506135a8565b80156135955761355f61358f61355a8460801c90565b60801b90565b6135a561358f61355a8460801c90565b93505b505094509492505050565b5f5f6135bf8360801d90565b600f0b6135cc8560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b1415806135f857508181600f0b14155b1561362f576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b613659836fffffffffffffffffffffffffffffffff1987168388016001600160801b0316016113fd565b979650505050505050565b5f62010000603083901c612ac1565b5f8060026136818486615e23565b61368b9190615e42565b610f946136988587615e7a565b62ffffff166002808204910615150190565b5f80806136b786866140c2565b90925090505f6136c787876140f9565b6136da906001600160801b038716615d4c565b90506136e6878761410b565b5f03613701576136f783838361411d565b9350505050610fff565b6136f7838383614207565b5f5f6137188360e81c90565b60020b8460020b12156137355761372e83614244565b9150610f99565b61373f8360d01c90565b60020b8460020b1261375b57613754836142b6565b9050610f99565b61376d61376884866142f5565b614244565b915061378161377c8486614343565b6142b6565b90509250929050565b5f5f6137968360801d90565b600f0b6137a38560801d90565b600f0b039050805f84600f0b86600f0b0390505f8190508383600f0b1415806135f857508181600f0b1461362f576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600f81900b81146110765760405163b668004560e01b815260040160405180910390fd5b8181018281108061384a5750826001600160801b0316816001600160801b0316105b15610f74576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f623fffff821662200000831615610f745763ffc000001792915050565b5f806138ac836003614391565b90505f6138ba846004614391565b90505f6138c6856143ca565b90506002838301810b0501949350505050565b5f6138e3826123d8565b509295945050505050565b5f6138f982826143dd565b613902836143ca565b0192915050565b5f5f5f6139168989612cc3565b90506139228385613828565b92505f5b808914613a4c575f5f5f5f5f8c8c8781811061394457613944615c50565b9050602002013590505f8f8f8881811061396057613960615c50565b9050602002013590505f6139718290565b90508c5f61397e8b612ab6565b905061398e858484846001612d53565b90995097505f905061399f8b612b72565b90506139ae858484845f612d53565b809750819850505050505050506139fa6139c783612e16565b610ed26139d387612e16565b8b9081016001600160801b03166fffffffffffffffffffffffffffffffff19919091160190565b9750613a3b613a0882612e16565b610ed2613a1486612e16565b8a9081016001600160801b03166fffffffffffffffffffffffffffffffff19919091160190565b965084600101945050505050613926565b5096509650969350505050565b5f80805f19848609848602925082811083820303915050805f03613a82575060401c9050610f74565b806801000000000000000011613a96575f5ffd5b5f6801000000000000000085870980840360401c9310909103600160c01b0291909117949350505050565b5f613acc8383613b0b565b90505f600160c01b5b8385091115610f74575f198110613aea575f5ffd5b60010192915050565b5f613afe8383613b6e565b90505f600160801b613ad5565b5f80805f19848609848602925082811083820303915050805f03613b34575060c01c9050610f74565b80600160c01b11613b43575f5ffd5b5f600160c01b85870980840360c01c9310909103680100000000000000000291909117949350505050565b5f80805f19848609848602925082811083820303915050805f03613b97575060801c9050610f74565b80600160801b11613ba6575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f6001600160801b03871673ffffffff00000000000000000000000000000000608088901b1676ffffff000000000000000000000000000000000000000060a088901b167affffffff000000000000000000000000000000000000000000000060b888901b167f7fffffffff00000000000000000000000000000000000000000000000000000060d888901b1660ff87613c66575f613c69565b60015b60ff16901b0101010101979650505050505050565b5f60026049603084020184901c6134fe565b5f808080613c9e8887613506565b60020b1515905080613cb9576002606460308802011b880197505b5f613cc589888a6136aa565b9050613cd189886134f0565b158015613cdb5750855b80613cf75750613ceb89886134f0565b15801590613cf7575085155b80613d00575081155b15613d2057613d0e816143f4565b9350613d1981614455565b9250613d37565b613d2981614244565b9350613d34816142b6565b92505b613d5f6001600160801b0385168460801b6fffffffffffffffffffffffffffffffff19160190565b9998505050505050505050565b5f84613d788782614494565b14613d8f57613d8a86868686866144a6565b612d49565b612d498686868686614656565b5f5f613da7846138ee565b905082810160020b8560020b1315613dc3578281019150613de1565b82810360020b8560020b1215613ddd578281039150613de1565b8491505b509392505050565b5f5f613df4876143ca565b9050808603610400600282900b1380613e3057507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00600282900b125b15613e4757613e3e88614973565b98509150508086035b5f5f613e538a60d01c90565b9050896001805f80805b60088160ff161015613ef357600762ffffff881660ff60038402161c81169350839003613e8f57600185039450613eeb565b613ea783600c0262ffffff1687901c610fff16614a07565b9150838015613ebb57508160020b8960020b135b15613eca576001850194505f93505b6001858260ff16010360030262ffffff168360010162ffffff16901b880197505b600101613e5d565b505050505050505f613f078a888b89614a25565b90505f60768b901c60031690505f8b9050613f8e8a8562ffffff168589858a8860ff1660e887901b60d087901b01607886901b016ec00000000000000000000000000000607683901b16016e3fffff000000000000000000000000606086901b16016bfffffffffffffffffffff000600c85901b1601610fff831601979650505050505050565b9c9b505050505050505050505050565b5f81613fb2670de0b6b3a764000085615c64565b610fff9190615a3c565b5f670de0b6b3a7640000613fb28385615c64565b5f610fff613fe684613fe185614bf5565b613fbc565b613ffb6301e1338066038d7ea4c68000615a3c565b6140116301e13380671bc16d674ec80000615a3c565b80831890831302909118818118918112919091021890565b5f5f5f8312614040576729a2241af62c0000614065565b61405a670de0b6b3a7640000673782dace9d900000613f9e565b670de0b6b3a7640000035b9050614084670de0b6b3a764000061407d8386613fbc565b0185613fbc565b949350505050565b5f5f821361246e57815f03610f74565b805f600f82900b12156110765760405163b668004560e01b815260040160405180910390fd5b5f806140ee6140d68585603002604c011c90565b6140e08686613506565b6140e987613664565b614ce5565b909590945092505050565b5f60806041603084020184901c6134fe565b5f60026040603084020184901c6134fe565b5f5f61412885612746565b90505f61413485612746565b90505f61416885614157846001600160a01b0316866001600160a01b0316614d03565b8585036001600160a01b0316612ac8565b90506001600160801b038111156141ab576040517fa500e7ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160801b03811660d087901b7cffffff00000000000000000000000000000000000000000000000000001660e889901b7fffffff0000000000000000000000000000000000000000000000000000000000160101613659565b5f5f61421285612746565b90505f61421e85612746565b90505f614168856c010000000000000000000000008585036001600160a01b0316612ac8565b5f5f6142586142538460e81c90565b612746565b90505f6142686142538560d01c90565b90506001600160a01b0382166142a06060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316612ac8565b816142ad576142ad615a14565b04949350505050565b5f5f6142c56142538460e81c90565b90505f6142d56142538560d01c90565b9050614084846001600160801b03168383036001600160a01b0316614d03565b5f610fff7cffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84168360e81b7fffffff0000000000000000000000000000000000000000000000000000000000160190565b5f610fff7fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff84168360d01b7cffffff0000000000000000000000000000000000000000000000000000160190565b5f5f61439d8460d01c90565b90505f8360030260ff168262ffffff16901c6007169050610b7f81600c0260ff1686901c610fff16614a07565b5f610f74623fffff606084901c16613881565b5f610fff82600c0260ff1684901c610fff16614a07565b5f5f6144036142538460e81c90565b90505f6144136142538560d01c90565b90506140846144446060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316612a7a565b6001846001600160a01b0316612a7a565b5f5f6144646142538460e81c90565b90505f6144746142538560d01c90565b9050614084846001600160801b03168383036001600160a01b0316614d84565b5f6004604a603084020184901c6134fe565b5f806144b28787614494565b90506144be878761410b565b6144c8888361410b565b1480156144e657506144da87876140f9565b6144e488836140f9565b145b1561464d575f806144f78989613506565b60020b1390505f806145098a85613506565b60020b1390505f61451a8a8a6134f0565b90505f6145278b866134f0565b90505f6145348c8c613c7e565b90505f6145418d88613c7e565b905085801561454d5750845b156145fc578082146145d95783158015614565575082155b15614585576145778d8d8d8d8d614da5565b975050505050505050610b7f565b8284141580156145b6575061459f8d88603002604c011c90565b60020b6145b18e8e603002604c011c90565b60020b145b156145d45783156145c7575f614577565b6145778d8d8d8d8d614656565b614646565b8284146145d457836001146145ee575f614577565b6145778d8c8e8a8e8e614dca565b8415158615151461464657808203614646578260010361462d5785614621575f614577565b6145778d8c8e8d615012565b85614638575f614577565b6145778d8c8e8a8e8e615023565b5050505050505b61365987878787875b5f806146628787613c7e565b90505f6146718887895f613c90565b90505f8215614689576146848260801c90565b61468b565b815b90505f6146988a8a6134f0565b90506146a48a8a613506565b60020b5f036146f357805f036146eb575f6146c58760010b620f424061506f565b90506146e3836001600160801b031662989680830162989680612a7a565b955050614966565b5f9450614966565b600194505f5f61470484848a6150ec565b97019691505f9050806147178d8d6140c2565b90925090505f61472c8e8e603002604c011c90565b9050845f03614895575f886001146147735761476e61425360028e85038102900b620d89e719620d89e880831890831302909118818118918112919091021890565b6147a3565b6147a36142536002848f038102900b620d89e719620d89e880831890831302909118818118918112919091021890565b905060028a045f806147be8d6001600160a01b038616614d84565b8a6001600160801b03160190505f6147e88b6001600160801b0316866001600160a01b0316614d84565b90508082116147f7575f6147fb565b8082035b925050505f8560020b8f60020b12801561481b57508660020b8f60020b12155b15614877575f61482c888803612746565b9050836148728a62989680038d6001600160801b0316028784036001600160a01b03166c01000000000000000000000000856001600160a01b0316016298968002612a7a565b019150505b61488a614884828461515c565b8461515c565b9c5050505050614961565b62ffffff838303165f6148d96148b2836002808204910615150190565b8460020b8f60020b136148cc578e850362ffffff1661515c565b848f0362ffffff1661515c565b90505f5f83629896808402816148f1576148f1615a14565b0490506269c4108082049082065f61490c826298968061516a565b905060808310156149215780831b945061492c565b6001600160801b0394505b505050505f8c905061495a8d61271084860287856298968002028161495357614953615a14565b0401613131565b9c50505050505b505050505b5050505095945050505050565b5f5f5f61497f846143ca565b905061498a8461389f565b92508083035f805b60088160ff1610156149c6575f6149a988836143dd565b849003610fff16600c830260ff161b929092019150600101614992565b50806bffffffffffffffffffffffff166060623fffff8762ffffff1616901b60016e4000000000000000000000000000000319881601019350505050915091565b5f610fff8216610800831615614a1c5761f000175b60010b92915050565b5f600282810b9068ffffffffffffffffff601885901c16810b9065ffffffffffff603086901c16810b9062ffffff604887901c16900b84614a738a60781c6affffffffffffffffffffff1690565b90505f614a88623fffff604284901c16613881565b9050600460038402058a1315614aa2576004600384020599505b82818a0360020b8b0281614ab857614ab8615a14565b058160020b0190505f614ad3623fffff602c85901c16613881565b9050600460038602058b1315614aed57600460038602059a505b84818b0360020b8c0281614b0357614b03615a14565b058160020b0190505f614b1e623fffff601686901c16613881565b9050600460038802058c1315614b3857600460038802059b505b86818c0360020b8d0281614b4e57614b4e615a14565b058160020b0190505f614b65623fffff8616613881565b9050600460038a02058d1315614b7f57600460038a02059c505b88818d0360020b8e0281614b9557614b95615a14565b0560029190910b01623fffff8116650fffffc00000601684901b16016803fffff00000000000602c85901b16016afffffc0000000000000000604286901b16016bffffffffffffffffffffffff169e9d5050505050505050505050505050565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffdc0d0570925a462d8821215614c2557505f919050565b6805168fd0946fc0415f8212614c555750780931d81650c7d88b8000000000000000000000000000000000919050565b5f5f8312614c6b576704cf46d8192b672e614c8d565b7ffffffffffffffffffffffffffffffffffffffffffffffffffb30b927e6d498d25b905067099e8db03256ce5d83820181900590810284035f6002670de0b6b3a7640000838002050582670de0b6b3a7640000010190505f8312614cd45790911b949350505050565b825f0381901d945050505050919050565b5f5f5f5f614cf38686613673565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f03614d2c575060601c9050610f74565b806c0100000000000000000000000011614d44575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f614d8f8383614d03565b90505f6c01000000000000000000000000613ad5565b5f8160010b5f14614db65781614db9565b60015b5f039150612d498686868686614656565b60015f80614ddb89888a8888614656565b90505f614deb8a888b8989614656565b9190910191505f905080808080614e028d8c613c7e565b90505f614e118e8e8e5f613c90565b90508d5f614e1f828e613506565b614e328f8461350690919063ffffffff16565b0390505f8160020b1215614e43575f035b835f03614e7e5762013880614e5783613664565b820260020b846001600160801b03160281614e7457614e74615a14565b048a019950614eb7565b62013880614e8b83613664565b820260020b614e9a8560801c90565b6001600160801b03160281614eb157614eb1615a14565b048a0199505b5050614ec08190565b9550614ecc8160801c90565b94505f614edb8f8f8e5f613c90565b9050809450614eea8160801c90565b9350829150614efb90508e8d61410b565b14614f7457805f03614f3e57826001600160801b0316856001600160801b031610614f2857828503614f2c565b8483035b6001600160801b031687019650614ff7565b816001600160801b0316846001600160801b031610614f5f57818403614f2c565b8382036001600160801b031687019650614ff7565b5f5f5f83600103614f965750506001600160801b038087169150841685614fa9565b50506001600160801b0380861691508316865b818310614fd257614fcd816001600160801b03168385030284808204910615150190565b614fef565b614fef816001600160801b03168484030283808204910615150190565b8a0199505050505b6150018688613131565b9d9c50505050505050505050505050565b5f5f612d4986858786612710614656565b5f5f6150328887898787614656565b90505f61504289878a8888614656565b905061504e89886134f0565b5f0361505c57019050612d49565b615066828261515c565b92505050612d49565b5f5f83121561508457600282049150825f0392505b6103e8830292506265b9ab83101561509d575080610f74565b628954408311156150b2575062989680610f74565b62239a95629896808390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9a4655850102048201905092915050565b5f5f835f0361512c576151058360010b621e848061506f565b905061512581866001600160801b03160262989680808204910615150190565b9150610b20565b83600103610b205750620f4240629896806001600160801b03861682028181061515919004019150935093915050565b5f81831161313f5781610fff565b5f81838261517e8280612bd8866002615d4c565b90505f6151918284612bd8896003615d4c565b90505f6151a48285612bd88a6004615d4c565b90508082846151b38789615ca6565b6151bd9190615ca6565b6151c79190615ca6565b611ed09190615ca6565b60405180608001604052806004906020820280368337509192915050565b8035600281900b8114611076575f5ffd5b5f5f60408385031215615211575f5ffd5b61521a836151ef565b946020939093013593505050565b6001600160a01b038116811461523c575f5ffd5b50565b5f6020828403121561524f575f5ffd5b8135610fff81615228565b5f5f5f6060848603121561526c575f5ffd5b615275846151ef565b925060208401359150604084013560ff81168114615291575f5ffd5b809150509250925092565b604080825283519082018190525f9060208501906060840190835b818110156152d857835160020b8352602093840193909201916001016152b7565b5050602093909301939093525092915050565b5f602082840312156152fb575f5ffd5b5035919050565b5f5f83601f840112615312575f5ffd5b50813567ffffffffffffffff811115615329575f5ffd5b6020830191508360208260051b8501011115610f99575f5ffd5b803561107681615228565b5f5f5f5f5f5f5f5f5f5f5f6101208c8e031215615369575f5ffd5b8b3567ffffffffffffffff81111561537f575f5ffd5b61538b8e828f01615302565b909c509a505060208c013567ffffffffffffffff8111156153aa575f5ffd5b6153b68e828f01615302565b909a5098506153c9905060408d016151ef565b965060608c01356153d981615228565b955060808c0135945060a08c013593506153f560c08d01615343565b925061540360e08d01615343565b91505f6101008d01359050809150509295989b509295989b9093969950565b5f5f5f5f5f60608688031215615436575f5ffd5b853567ffffffffffffffff81111561544c575f5ffd5b61545888828901615302565b909650945050602086013567ffffffffffffffff811115615477575f5ffd5b61548388828901615302565b90945092506154969050604087016151ef565b90509295509295909350565b602080825282518282018190525f918401906040840190835b818110156154d95783518352602093840193909201916001016154bb565b509095945050505050565b5f5f604083850312156154f5575f5ffd5b50508035926020909101359150565b5f5f60408385031215615515575f5ffd5b82359150613781602084016151ef565b5f5f5f60608486031215615537575f5ffd5b615540846151ef565b95602085013595506040909401359392505050565b5f5f5f5f5f60a08688031215615569575f5ffd5b853561557481615228565b945060208601359350615589604087016151ef565b9250606086013561559981615228565b915060808601356155a981615228565b809150509295509295909350565b5f5f604083850312156155c8575f5ffd5b82356155d381615228565b915060208301356155e381615228565b809150509250929050565b5f5f5f5f5f5f5f5f5f5f6101008b8d031215615608575f5ffd5b8a3567ffffffffffffffff81111561561e575f5ffd5b61562a8d828e01615302565b909b50995061563d905060208c016151ef565b975060408b013561564d81615228565b965060608b013567ffffffffffffffff811115615668575f5ffd5b6156748d828e01615302565b90975095505060808b0135935060a08b0135925060c08b013561569681615228565b915060e08b01356156a681615228565b809150509295989b9194979a5092959850565b5f5f5f5f5f5f60c087890312156156ce575f5ffd5b863595506020870135945060408701356156e781615228565b959894975094956060810135955060808101359460a0909101359350915050565b5f5f5f6060848603121561571a575f5ffd5b833561572581615228565b9250602084013561573581615228565b929592945050506040919091013590565b5f5f5f5f60808587031215615759575f5ffd5b615762856151ef565b9350615770602086016151ef565b93969395505050506040820135916060013590565b634e487b7160e01b5f52604160045260245ffd5b6040516080810167ffffffffffffffff811182821017156157bc576157bc615785565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156157eb576157eb615785565b604052919050565b5f67ffffffffffffffff82111561580c5761580c615785565b5060051b60200190565b5f82601f830112615825575f5ffd5b8135615838615833826157f3565b6157c2565b8082825260208201915060208360071b860101925085831115615859575f5ffd5b602085015b838110156158ba5786601f820112615874575f5ffd5b61587c615799565b80608083018981111561588d575f5ffd5b835b818110156158a757803584526020938401930161588f565b505084525060209092019160800161585e565b5095945050505050565b5f5f5f5f608085870312156158d7575f5ffd5b843567ffffffffffffffff8111156158ed575f5ffd5b8501601f810187136158fd575f5ffd5b803561590b615833826157f3565b8082825260208201915060208360051b85010192508983111561592c575f5ffd5b6020840193505b8284101561594e578335825260209384019390910190615933565b9650505050602085013567ffffffffffffffff81111561596c575f5ffd5b61597887828801615816565b9350506040850135915061598e60608601615343565b905092959194509250565b5f60608201858352846020840152606060408401528084518083526080850191506020860192505f5b81811015615a07578351835f5b60048110156159ee5782518252602092830192909101906001016159cf565b50505060209390930192608092909201916001016159c2565b5090979650505050505050565b634e487b7160e01b5f52601260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b5f82615a4a57615a4a615a14565b5f198314600160ff1b83141615615a6357615a63615a28565b500590565b80825b6001851115615aa257808604811115615a8657615a86615a28565b6001851615615a9457908102905b60019490941c938002615a6b565b94509492505050565b5f828015615ac05760018114615aca57615ad3565b6001915050610f74565b82915050610f74565b5081615ae057505f610f74565b5060015f8213808214615af8578015615b2f57615b61565b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831115615b2a57615b2a615a28565b615b61565b827f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05831215615b6157615b61615a28565b5080831615615b6d5750805b615b9e7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460011c84850284615a68565b807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482115f83131615615bd457615bd4615a28565b80600160ff1b0582125f83121615615bee57615bee615a28565b029392505050565b5f610fff60ff841683615aab565b600282810b9082900b03627fffff198112627fffff82131715610f7457610f74615a28565b8082018281125f831280158216821582161715615c4857615c48615a28565b505092915050565b634e487b7160e01b5f52603260045260245ffd5b8082025f8212600160ff1b84141615615c7f57615c7f615a28565b8181058314821517610f7457610f74615a28565b81810381811115610f7457610f74615a28565b80820180821115610f7457610f74615a28565b5f81600f0b7fffffffffffffffffffffffffffffffff800000000000000000000000000000008103615ced57615ced615a28565b5f0392915050565b5f60208284031215615d05575f5ffd5b5051919050565b5f600160ff1b8203615d2057615d20615a28565b505f0390565b8181035f831280158383131683831282161715615d4557615d45615a28565b5092915050565b8082028115828204841417610f7457610f74615a28565b5f82615d7157615d71615a14565b500490565b600281810b9083900b01627fffff8113627fffff1982121715610f7457610f74615a28565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff82131715610f7457610f74615a28565b5f5f198203615dfa57615dfa615a28565b5060010190565b5f5f60408385031215615e12575f5ffd5b505080516020909101519092909150565b5f8260020b8260020b028060020b9150808214615d4557615d45615a28565b5f8160020b8360020b80615e5857615e58615a14565b5f198114627fffff1983141615615e7157615e71615a28565b90059392505050565b62ffffff8181168382160290811690818114615d4557615d45615a2856fea26469706673582212207e4ca9bd913f9fb6ac27efe2e83abf202599ae03cbf08616a298afe944caf3af64736f6c634300081c003360a0604052348015600e575f5ffd5b50604051610bef380380610bef833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b608051610b7161007e5f395f61015a0152610b715ff3fe608060405260043610610066575f3560e01c8063b61d27f611610041578063b61d27f61461011d578063b8c26a6f14610149578063b8dc491b1461017c575f5ffd5b80631626ba7e1461007157806319ab453c146100c6578063455e6b6b146100e7575f5ffd5b3661006d57005b5f5ffd5b34801561007c575f5ffd5b5061009061008b36600461093b565b61019b565b6040517fffffffff0000000000000000000000000000000000000000000000000000000090911681526020015b60405180910390f35b3480156100d1575f5ffd5b506100e56100e036600461099e565b61023b565b005b3480156100f2575f5ffd5b505f54610105906001600160a01b031681565b6040516001600160a01b0390911681526020016100bd565b348015610128575f5ffd5b5061013c6101373660046109be565b61031c565b6040516100bd9190610a42565b348015610154575f5ffd5b506101057f000000000000000000000000000000000000000000000000000000000000000081565b348015610187575f5ffd5b506100e5610196366004610a54565b610457565b5f8054604080516020601f86018190048102820181019092528481526101e7926001600160a01b03169187919087908790819084018382808284375f9201919091525061055992505050565b610211577fffffffff00000000000000000000000000000000000000000000000000000000610233565b7f1626ba7e000000000000000000000000000000000000000000000000000000005b949350505050565b5f546001600160a01b03161561027d576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0381166102bd576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825560405190917f69450870cb463ed84b1114ec715b7f3298a805b1a90d84272fd3efe0a8d748ba91a250565b5f546060906001600160a01b03163314610362576040517f0404714e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f856001600160a01b031685858560405161037e929190610a85565b5f6040518083038185875af1925050503d805f81146103b8576040519150601f19603f3d011682016040523d82523d5f602084013e6103bd565b606091505b5092509050806104095781515f03610401576040517fd6bed87300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815160208301fd5b856001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f86868660405161044693929190610a94565b60405180910390a250949350505050565b5f546001600160a01b0316331461049a576040517f0404714e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6104a583306105b8565b9050805f0361050057816001600160a01b0316836001600160a01b03167fd092d7fceb5ea5a962639fcc27a7bb315e7637e699e3b108cd570c38c75843005f6040516104f391815260200190565b60405180910390a3505050565b6105146001600160a01b038416838361060c565b816001600160a01b0316836001600160a01b03167fd092d7fceb5ea5a962639fcc27a7bb315e7637e699e3b108cd570c38c7584300836040516104f391815260200190565b5f5f5f61056685856106c8565b5090925090505f81600381111561057f5761057f610ac9565b14801561059d5750856001600160a01b0316826001600160a01b0316145b806105ae57506105ae868686610711565b9695505050505050565b5f6040517f70a0823100000000000000000000000000000000000000000000000000000000815282600482015260205f602483875afa6105f6575f91505b5060203d101561060357505f5b50505f51919050565b5f6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815283816004015282816024015260205f6044835f895af13d15601f3d1160015f5114161716915050806106c2575f61066a85306105b8565b6040517f81f20f860000000000000000000000000000000000000000000000000000000081526001600160a01b0387166004820152306024820152604481018590526064810182905290915060840160405180910390fd5b50505050565b5f5f5f83516041036106ff576020840151604085015160608601515f1a6106f18882858561082e565b95509550955050505061070a565b505081515f91506002905b9250925092565b5f5f5f856001600160a01b03168585604051602401610731929190610af6565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1626ba7e00000000000000000000000000000000000000000000000000000000179052516107949190610b0e565b5f60405180830381855afa9150503d805f81146107cc576040519150601f19603f3d011682016040523d82523d5f602084013e6107d1565b606091505b50915091508180156107e557506020815110155b80156105ae575080517f1626ba7e00000000000000000000000000000000000000000000000000000000906108239083016020908101908401610b24565b149695505050505050565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561086757505f915060039050826108ec565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156108b8573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b0381166108e357505f9250600191508290506108ec565b92505f91508190505b9450945094915050565b5f5f83601f840112610906575f5ffd5b50813567ffffffffffffffff81111561091d575f5ffd5b602083019150836020828501011115610934575f5ffd5b9250929050565b5f5f5f6040848603121561094d575f5ffd5b83359250602084013567ffffffffffffffff81111561096a575f5ffd5b610976868287016108f6565b9497909650939450505050565b80356001600160a01b0381168114610999575f5ffd5b919050565b5f602082840312156109ae575f5ffd5b6109b782610983565b9392505050565b5f5f5f5f606085870312156109d1575f5ffd5b6109da85610983565b935060208501359250604085013567ffffffffffffffff8111156109fc575f5ffd5b610a08878288016108f6565b95989497509550505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109b76020830184610a14565b5f5f60408385031215610a65575f5ffd5b610a6e83610983565b9150610a7c60208401610983565b90509250929050565b818382375f9101908152919050565b83815260406020820152816040820152818360608301375f818301606090810191909152601f909201601f1916010192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b828152604060208201525f6102336040830184610a14565b5f82518060208501845e5f920191825250919050565b5f60208284031215610b34575f5ffd5b505191905056fea2646970667358221220120789e4db2ddc250c5dd86c1e9c1f5d892d319364edb8106d1c5ceff429f26264736f6c634300081c0033000000000000000000000000000000000000000000000000000000000098968000000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000d329acc1514f4ba05584a8369ed0000000000000000000000000000000000000a3d22e158417aa639d7f71b0ff7000000000000000000000000b361194cfe6312ee3210d53c15aa000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000646112e8ac00000000000000000000000082bf455e9ebd6a541ef10b683de1edcaf05ce7a182bf455e9ebd6a541ef10b683de1edcaf05ce7a15527f95c2938780063bb3da3000000000000000000000000000000000000000000000000000000000000000400000000000000b361194cfe6312ee3210d53c15aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f6461ff715f82bf455e9ebd6a541ef10b683de1edcaf05ce7a15527f95c2938780063bb3da300000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000005ee2610100604052348015610010575f5ffd5b50604051615e62380380615e6283398101604081905261002f9161004e565b6001600160a01b0390931660805260a09190915260c05260e052610095565b5f5f5f5f60808587031215610061575f5ffd5b84516001600160a01b0381168114610077575f5ffd5b60208601516040870151606090970151919890975090945092505050565b60805160a05160c05160e051615d1c6101465f395f8181610d6801528181610e9a015281816114b701526115ba01525f8181610ecd015261162c01525f8181610d4401528181610e7601528181611493015261159601525f818161096a015281816109e801528181610b7b01528181610fc00152818161131d01528181611d07015281816129f901528181612aea01528181612be901528181612ce701528181613e1601526141d60152615d1c5ff3fe608060405260043610610156575f3560e01c8063a22cb465116100bb578063d2c725e011610071578063e985e9c511610057578063e985e9c51461050a578063eb1de2e214610543578063f242432a1461057c575f5ffd5b8063d2c725e0146104b6578063d3a26d8a146104eb575f5ffd5b8063b33eb6f3116100a1578063b33eb6f314610446578063b9068a6114610465578063b909a0b314610497575f5ffd5b8063a22cb46514610407578063ac9650d814610426575f5ffd5b80634e1273f41161011057806377880f15116100f657806377880f151461035b5780638ded7bcb146103a357806391dd7346146103db575f5ffd5b80634e1273f414610310578063776452611461033c575f5ffd5b80631bb9a94e116101405780631bb9a94e146101cf5780632eb2c2d6146102c657806341a058ef146102e2575f5ffd5b8062fdd58e1461015a57806301ffc9a7146101a0575b5f5ffd5b348015610165575f5ffd5b5061018d6101743660046148b2565b5f60208181529281526040808220909352908152205481565b6040519081526020015b60405180910390f35b3480156101ab575f5ffd5b506101bf6101ba366004614909565b610596565b6040519015158152602001610197565b3480156101da575f5ffd5b506102b96101e9366004614924565b6040805160a0810182525f808252602082018190529181018290526060810182905260808101919091525067ffffffffffffffff165f90815260036020908152604091829020825160a081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548082169483019490945262ffffff740100000000000000000000000000000000000000008504169482019490945277010000000000000000000000000000000000000000000000909204600290810b60608401520154909116608082015290565b604051610197919061494b565b3480156102d1575f5ffd5b506102e0610156366004614a4d565b005b3480156102ed575f5ffd5b506103016102fc366004614b3d565b61062e565b60405161019793929190614bbb565b34801561031b575f5ffd5b5061032f61032a366004614bfc565b6106e7565b6040516101979190614c68565b348015610347575f5ffd5b5061018d610356366004614caa565b6107ef565b348015610366575f5ffd5b5061037a610375366004614d0c565b610899565b604080516fffffffffffffffffffffffffffffffff938416815292909116602083015201610197565b3480156103ae575f5ffd5b506103c26103bd366004614dc2565b610b59565b60405167ffffffffffffffff9091168152602001610197565b3480156103e6575f5ffd5b506103fa6103f5366004614dfa565b610fa6565b6040516101979190614e85565b348015610412575f5ffd5b506102e0610421366004614ea6565b61111c565b610439610434366004614ed0565b6111b2565b6040516101979190614f03565b348015610451575f5ffd5b506103c26104603660046150c0565b6112bf565b348015610470575f5ffd5b5061048461047f366004615102565b611300565b60405160029190910b8152602001610197565b3480156104a2575f5ffd5b506102e06104b1366004614924565b611353565b3480156104c1575f5ffd5b507f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb865c15156101bf565b3480156104f6575f5ffd5b50610301610505366004614b3d565b6116f4565b348015610515575f5ffd5b506101bf610524366004615134565b600160209081525f928352604080842090915290825290205460ff1681565b34801561054e575f5ffd5b5061056261055d366004614924565b611792565b60408051600293840b81529190920b602082015201610197565b348015610587575f5ffd5b506102e061015636600461516b565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061062857507fd9b67a26000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b610636614873565b5f5f61064061188f565b61065d3388886fffffffffffffffffffffffffffffffff166118f1565b6040516fffffffffffffffffffffffffffffffff87168152879033907f16695fc037c20a8984b20ffc7aadd6ce10e62756f9ca42933a1aa6459ef064ca9060200160405180910390a36106af87611a88565b5f6106bc898b018b61526b565b90506106cc8187878a8c5f611cfb565b935093509350506106db611e0e565b96509650969350505050565b60608367ffffffffffffffff81111561070257610702614f84565b60405190808252806020026020018201604052801561072b578160200160208202803683370190505b5090505f5b8085146107e6575f5f87878481811061074b5761074b615285565b905060200201602081019061076091906152b2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8585848181106107ac576107ac615285565b9050602002013581526020019081526020015f20548282815181106107d3576107d3615285565b6020908102919091010152600101610730565b50949350505050565b5f806107fd8789018961526b565b905060045f61087e6108108460a0902090565b6040805160208101929092527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608c901b16908201526054810189905260e888811b607483015287901b6077820152607a015b604051602081830303815290604052805160209091012090565b81526020019081526020015f20549150509695505050505050565b5f80806108a88b8d018d61526b565b90505f6109116108b98360a0902090565b6040805160208101929092527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608f901b1690820152605481018c905260e88b811b60748301528a901b6077820152607a01610864565b5f818152600460205260408120549192509080627fffff60028b900b12801561094b57506fffffffffffffffffffffffffffffffff811615155b15610b0a575f5f61095d8760a0902090565b90508d8d8d885f806109927f000000000000000000000000000000000000000000000000000000000000000088868989611e33565b6040517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b16602082015260e889811b603483015288901b6037820152603a810186905291935091505f908190610a28907f0000000000000000000000000000000000000000000000000000000000000000908b90605a0160405160208183030381529060405280519060200120611ebe565b91509150610aa7610a4d8285038d6fffffffffffffffffffffffffffffffff16611f9d565b610a6b8487038e6fffffffffffffffffffffffffffffffff16611f9d565b6fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b99505050505050505050505f5f610abf85848d612041565b5f89815260056020908152604080832054600690925290912054929450909250610aeb918490846121ea565b909250905060018c14610afe5780610b00565b815b9550505050610b37565b88600114610b25575f84815260066020526040902054610b34565b5f848152600560205260409020545b92505b82610b428460801c90565b965096505050505050995099975050505050505050565b5f80610b74610b6d3686900386018661526b565b60a0902090565b9050610ba07f0000000000000000000000000000000000000000000000000000000000000000826123ab565b73ffffffffffffffffffffffffffffffffffffffff165f03610bee576040517f486aa30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ff165f03610c31576040517f93db02630000000000000000000000000000000000000000000000000000000081525f60048201526024015b60405180910390fd5b5f81815260026020908152604080832060ff8716845290915290205460f01c60011615610c7e575f90815260026020908152604080832060ff8616845290915290205460801c9050610628565b610cbf81610c9260808701606088016152cd565b60301b68ffffff00000000000016602886901b65ff00000000001664ffffffffff92909216919091010190565b91505b67ffffffffffffffff82165f9081526003602052604090206001015477010000000000000000000000000000000000000000000000900460020b15610d1f576001820164ffffffffff1667ffffff00000000008316019150610cc2565b5f610d38610d3360808701606088016152cd565b612467565b90505f80610e3f610e177f00000000000000000000000000000000000000000000000000000000000000006127107f0000000000000000000000000000000000000000000000000000000000000000610d9760408d0160208e016152b2565b73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddf573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e0391906152e8565b0281610e1157610e116152ff565b046124b1565b610e2760808a0160608b016152cd565b856fffffffffffffffffffffffffffffffff166124c6565b5f9081039250610efc90610e5660208a018a6152b2565b73ffffffffffffffffffffffffffffffffffffffff1614610ecb57610ec67f00000000000000000000000000000000000000000000000000000000000000006127107f0000000000000000000000000000000000000000000000000000000000000000610d9760208d018d6152b2565b610e17565b7f0000000000000000000000000000000000000000000000000000000000000000610e2760808a0160608b016152cd565b9050610f0c83868484600161254e565b5f85815260026020908152604080832060ff8b16845282528083209390935567ffffffffffffffff8816825260039052208790610f49828261532c565b50506040805167ffffffffffffffff87168152600284810b602083015283900b81830152905185917f51df08f8c72b1c39e9165f0d55509797c87b8211565107856e59ae0c0ef740b5919081900360600190a25050505092915050565b60603373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614611017576040517f3e30718a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80808080808061102a898b018b6154a6565b96509650965096509650965096505f8460020b8660020b1390505f5f6110548a8a858989896125a9565b915091505f6110818a60405160200161106d919061494b565b604051602081830303815290604052611300565b9050831561108d579697965b8760020b8160020b1215806110a857508860020b8160020b13155b156110e5576040517f618ea40c000000000000000000000000000000000000000000000000000000008152600282900b6004820152602401610c28565b8282826040516020016110fa93929190614bbb565b6040516020818303038152906040529b50505050505050505050505092915050565b335f81815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b60608167ffffffffffffffff8111156111cd576111cd614f84565b60405190808252806020026020018201604052801561120057816020015b60608152602001906001900390816111eb5790505b5090505f5b8083146112b8575f803086868581811061122157611221615285565b9050602002810190611233919061552b565b60405161124192919061558c565b5f60405180830381855af49150503d805f8114611279576040519150601f19603f3d011682016040523d82523d5f602084013e61127e565b606091505b50915091508161129057805160208201fd5b808484815181106112a3576112a3615285565b60209081029190910101525050600101611205565b5092915050565b5f5f838060200190518101906112d591906152e8565b5f81815260026020908152604080832060ff8816845290915290205490915060801c5b949350505050565b5f5f8280602001905181019061131691906155a6565b905061134c7f00000000000000000000000000000000000000000000000000000000000000006113478360a0902090565b612de4565b9392505050565b67ffffffffffffffff81165f908152600360209081526040808320815160a081018352815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548082169583019590955262ffffff740100000000000000000000000000000000000000008604169382019390935277010000000000000000000000000000000000000000000000909304600290810b60608501520154166080820152906113ff8260a0902090565b5f818152600260209081526040808320602888901c60ff168085529252909120549192509060f081901c600116611462576040517f486aa30700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f603061146f8360801c90565b67ffffffffffffffff16901c9050815f8061154660c084901c60020b61153c6115237f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008e6020015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddf573d5f5f3e3d5ffd5b87876fffffffffffffffffffffffffffffffff166124c6565b5f0360020b612e90565b915061166c6115558660d81c90565b60020b6116645f73ffffffffffffffffffffffffffffffffffffffff168b5f015173ffffffffffffffffffffffffffffffffffffffff161461162a576116257f00000000000000000000000000000000000000000000000000000000000000006127107f00000000000000000000000000000000000000000000000000000000000000008e5f015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddf573d5f5f3e3d5ffd5b611523565b7f000000000000000000000000000000000000000000000000000000000000000087876fffffffffffffffffffffffffffffffff166124c6565b60020b612e9e565b905061168d8361167c8760801c90565b848460f08a901c600116151561254e565b5f8881526002602081815260408084208b855282529283902093909355815185820b81529084900b9281019290925288917fd4564aab6e4f5325a1d0fc8d17f8f2a148f5331b077408619531b48d1ac90f2b910160405180910390a2505050505050505050565b6116fc614873565b5f5f61170661188f565b6117233388886fffffffffffffffffffffffffffffffff16612eac565b6040516fffffffffffffffffffffffffffffffff87168152879033907f23833bcc608a225445893342669a9bc035de4ef96cc1edd47cead470f1f7817a9060200160405180910390a35f611779898b018b61526b565b90506106cc8187878a61178b8d612f48565b6001611cfb565b67ffffffffffffffff81165f908152600360209081526040808320815160a081018352815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548082169583019590955262ffffff740100000000000000000000000000000000000000008604169382019390935277010000000000000000000000000000000000000000000000909304600290810b606085015290810154909116608083015282919060ff602886901c16908390816118508560a0902090565b81526020019081526020015f205f8381526020019081526020015f205490506118798160c01c90565b6118838260d81c90565b94509450505050915091565b7f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb86805c159030905d806118ee576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b73ffffffffffffffffffffffffffffffffffffffff83165f818152602081815260408083208684528252808320805486019055805186815291820185905233917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a473ffffffffffffffffffffffffffffffffffffffff83163b15611a83576040517ff23a6e61000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018590526064830184905260a0608484015260a48301529073ffffffffffffffffffffffffffffffffffffffff85169063f23a6e619060c4016020604051808303815f875af1158015611a06573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a2a9190615620565b7fffffffff000000000000000000000000000000000000000000000000000000001614611a83576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b611a92815f612fa2565b5f03611acd576040517f93db026300000000000000000000000000000000000000000000000000000000815260016004820152602401610c28565b77fffffffff200fffffffff200fffffffff200fffffffff200604082901c165f611af683612fb8565b90505f5b80600414611cf557611b0c8482612fa2565b5f03611b5b576040603082020184901c15611b56576040517f93db026300000000000000000000000000000000000000000000000000000000815260016004820152602401610c28565b611cf5565b600181015b828114611bc7578060300284901c65ffffffffffff168260300285901c65ffffffffffff1603611bbf576040517f93db026300000000000000000000000000000000000000000000000000000000815260066004820152602401610c28565b600101611b60565b507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618611bf88583603002604c011c90565b60020b1480611c1a5750620d89e8611c158583603002604c011c90565b60020b145b15611c53576040517f93db0263000000000000000000000000000000000000000000000000000000008152600481810152602401610c28565b5f611c5e8583612ff2565b905060018303811115611ca0576040517f93db026300000000000000000000000000000000000000000000000000000000815260036004820152602401610c28565b818114611cec5781611cb28683612ff2565b14611cec576040517f93db026300000000000000000000000000000000000000000000000000000000815260036004820152602401610c28565b50600101611afa565b50505050565b611d03614873565b5f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166348c89491338b8b8b8b8b8b604051602001611d5e979695949392919061563b565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401611d899190614e85565b5f604051808303815f875af1158015611da4573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611de99190810190615722565b806020019051810190611dfc9190615797565b92509250925096509650969350505050565b5f7f8053dfe21e206073e7d912b6bcd2323894159cfd58d0a607082c42be308afb865d565b5f5f5f5f611e42898988613004565b915091505f5f611e538b8b89613004565b915091508760020b8960020b1215611e745781840395508083039450611eb0565b8660020b8960020b12611e905783820395508281039450611eb0565b5f5f611e9c8d8d6130f2565b908790038590039850859003839003965050505b505050509550959350505050565b5f5f5f611ecb858561316b565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600360248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8816906335fd631a906044015f60405180830381865afa158015611f3f573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f849190810190615827565b6040810151606090910151909890975095505050505050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f03611fe5575060801c9050610628565b8070010000000000000000000000000000000011612001575f5ffd5b5f70010000000000000000000000000000000085870980840360801c93109091037001000000000000000000000000000000000291909117949350505050565b5f5f5f61204e8660801c90565b6fffffffffffffffffffffffffffffffff908116915086168082015f808881608082901c905061209f826fffffffffffffffffffffffffffffffff168668010000000000000000026002890a6131bc565b93506120cc816fffffffffffffffffffffffffffffffff168668010000000000000000026002890a6131bc565b925050505f5f5f8a88816120e2576120e26152ff565b04870190506120fa6120f58683896131bc565b613285565b925061210a6120f58583896131bc565b915061214c6fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b99505050505f5f5f8a6002890a81612166576121666152ff565b048887026002880a030190506121836120f5868360028a0a6131bc565b92506121966120f5858360028a0a6131bc565b91506121d86fffffffffffffffffffffffffffffffff84168360801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b98505050505050505050935093915050565b5f8080612222865b6fffffffffffffffffffffffffffffffff16885b6fffffffffffffffffffffffffffffffff166120f591906158f5565b90505f61224e6122328860801c90565b6fffffffffffffffffffffffffffffffff166122068a60801c90565b90505f61225a866121f2565b90505f61226a6122328860801c90565b90505f6fffffffffffffffffffffffffffffffff858116148061229e57506fffffffffffffffffffffffffffffffff838116145b1590505f6fffffffffffffffffffffffffffffffff85811614806122d357506fffffffffffffffffffffffffffffffff838116145b159050612337816122ed576122e88d60801c90565b6122ef565b855b836122fa578d610a6b565b876fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b6123988261234e576123498c60801c90565b612350565b845b8461235b578c610a6b565b866fffffffffffffffffffffffffffffffff169060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9750975050505050505094509492505050565b5f5f6123b6836132b7565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f9073ffffffffffffffffffffffffffffffffffffffff861690631e2eaeaf90602401602060405180830381865afa158015612424573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244891906152e8565b73ffffffffffffffffffffffffffffffffffffffff1695945050505050565b5f600282900b620d89e88161247e5761247e6152ff565b0560020260010162ffffff166fffffffffffffffffffffffffffffffff8016816124aa576124aa6152ff565b0492915050565b5f8183116124bf578161134c565b5090919050565b5f5f6c010000000000000000000000006124df856132f3565b0373ffffffffffffffffffffffffffffffffffffffff1683029050606081901c851061251157620d89e891505061134c565b61254561253e867c0100000000000000000000000000000000000000000000000000000000846080613653565b600d613778565b95945050505050565b5f60f08261255c575f61255f565b60015b60ff16901b60d88462ffffff16901b60c08662ffffff16901b60808867ffffffffffffffff16901b896fffffffffffffffffffffffffffffffff1601010101905095945050505050565b6125b1614873565b5f5f5f5f5f5f60025f6125c58e60a0902090565b81526020019081526020015f205f6125dc8b613892565b60ff1681526020019081526020015f205490506125f68990565b67ffffffffffffffff1661260a8260801c90565b67ffffffffffffffff161415806126265750600160f082901c16155b1561265d576040517f768778de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b6126688a612fb8565b8114612913576126788a826138a3565b60020b5f03612770575f61268c8b836138b6565b90505f61269c8c8e8560016138c8565b90505f82156126ac5760016126ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b90505f6126db8e866139bc565b90505f816001146126f5576126f08484615908565b6126f7565b5f5b90505f82156127195761270a8560801c90565b6127149085615908565b61271b565b5f5b9050612763817fffffffffffffffffffffffffffffffff000000000000000000000000000000008c16848d016fffffffffffffffffffffffffffffffff16015b9060801b0190565b995050505050505061290b565b8d8d5f8d61277f8e86836139ce565b9150508b61283f575f6127918e613a39565b90505f61279e8360e81c90565b90505f6127ab8460d01c90565b90506127b78383615927565b60020b1515806127d257506127cc8382615927565b60020b15155b806127eb57506127e28860c01c90565b60020b8260020b125b8061280457506127fb8860d81c90565b60020b8160020b135b1561283b576040517f1577d96600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505b61284881613a48565b8901985061285581613aea565b909701965f8d8d6128768686848a888661286e84613892565b60ff16613b3f565b8f896004811061288857612888615285565b602002015292506128998d84613ffd565b9c506128bc8e88600481106128b0576128b0615285565b60200201518a906140c6565b98506129026128cb83896139bc565b156128e8576fffffffffffffffffffffffffffffffff84166128fb565b6128fb6128f58560801d90565b60801b90565b8b90613ffd565b99505050505050505b60010161265f565b50612931905060046f7fffffffffffffffffffffffffffffff615948565b6fffffffffffffffffffffffffffffffff1684118061297b575061296660046f7fffffffffffffffffffffffffffffff615948565b6fffffffffffffffffffffffffffffffff1683115b156129b2576040517f543a6e1000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b89156129df5781156129df576129dc856129d68d856129d18d5f614131565b614143565b90613ffd565b94505b5f6129ea86836142fb565b90505f81600f0b1315612add577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f5298aca8e8e5f0151612a3f8590565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064015f604051808303815f87803b158015612ac2575f5ffd5b505af1158015612ad4573d5f5f3e3d5ffd5b50505050612bd3565b5f81600f0b1215612bd3577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663156e29f68e8e5f0151612b308590565b612b3990615996565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064015f604051808303815f87803b158015612bbc575f5ffd5b505af1158015612bce573d5f5f3e3d5ffd5b505050505b5f612bde8260801d90565b600f0b1315612cd1577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f5298aca8e8e60200151612c338560801d90565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064015f604051808303815f87803b158015612cb6575f5ffd5b505af1158015612cc8573d5f5f3e3d5ffd5b50505050612dd4565b5f612cdc8260801d90565b600f0b1215612dd4577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663156e29f68e8e60200151612d318560801d90565b612d3a90615996565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b16815273ffffffffffffffffffffffffffffffffffffffff93841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064015f604051808303815f87803b158015612dbd575f5ffd5b505af1158015612dcf573d5f5f3e3d5ffd5b505050505b5050505050965096945050505050565b5f5f612def836132b7565b6040517f1e2eaeaf000000000000000000000000000000000000000000000000000000008152600481018290529091505f9073ffffffffffffffffffffffffffffffffffffffff861690631e2eaeaf90602401602060405180830381865afa158015612e5d573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e8191906152e8565b60a01c60020b95945050505050565b5f8183126124bf578161134c565b5f8183136124bf578161134c565b73ffffffffffffffffffffffffffffffffffffffff83165f9081526020818152604080832085845290915281208054839290612ee99084906159d2565b909155505060408051838152602081018390525f9173ffffffffffffffffffffffffffffffffffffffff86169133917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000612f7383612fb8565b6004036030027b01000000000001000000000001000000000001000000000000000000901c1682189050919050565b5f60806041603084020184901c5b069392505050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b8110612fec57816001019150612fd4565b50919050565b5f6004604a603084020184901c612fb0565b5f5f5f6130118585614392565b90505f73ffffffffffffffffffffffffffffffffffffffff87166335fd631a61303b8460016158f5565b60405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526004810191909152600260248201526044015b5f60405180830381865afa158015613094573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526130d99190810190615827565b6020810151604090910151909890975095505050505050565b5f5f5f6130fe846132b7565b90505f61310c6001836158f5565b6040517f35fd631a00000000000000000000000000000000000000000000000000000000815260048101829052600260248201529091505f9073ffffffffffffffffffffffffffffffffffffffff8816906335fd631a9060440161307a565b5f5f613176846132b7565b90505f6131846006836158f5565b60408051602081018790529081018290529091506060015b604051602081830303815290604052805190602001209250505092915050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050805f0361320f575f8411613204575f5ffd5b50829004905061134c565b80841161321a575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b806fffffffffffffffffffffffffffffffff811681146132b257506fffffffffffffffffffffffffffffffff5b919050565b6040515f906132d6908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b5f5f5f8360020b12613308578260020b61330f565b8260020b5f035b9050620d89e881111561334e576040517fce8ef7fc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f816001165f0361337057700100000000000000000000000000000000613382565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156133b6576ffff97272373d413259a46990580e213a0260801c5b60048216156133d5576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b60088216156133f4576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613413576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615613432576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615613451576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615613470576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615613490576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b6102008216156134b0576ff987a7253ac413176f2b074cf7815e540260801c5b6104008216156134d0576ff3392b0822b70005940c7a398e4b70f30260801c5b6108008216156134f0576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615613510576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615613530576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615613550576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615613570576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613591576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b620200008216156135b1576e5d6af8dedb81196699c329225ee6040260801c5b620400008216156135d0576d2216e584f5fa1ea926041bedfe980260801c5b620800008216156135ed576b048a170391f7dc42444e8fa20260801c5b5f8460020b131561362b57807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81613627576136276152ff565b0490505b64010000000081061561363f576001613641565b5f5b60ff16602082901c0192505050919050565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff868809868802925082811083820303915050805f036136b9575f851161369b575f5ffd5b84820492506136b08360018660020a036143ca565b925050506112f8565b80846101000386901c10156136d85760018460020a03925050506112f8565b5f858789095f87810388169788900497828603819004958311909403600191859003949094040183810294909417939091506003870260029081188089028203028089028203028089028203028089028203028089028203028089028203029061376a908287029089900a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016143ca565b9a9950505050505050505050565b5f5f613805847f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be6fffffffffffffffffffffffffffffffff841160071b84811c67ffffffffffffffff1060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b607f8190039490941b9360800360401b9050603f838103905b8181111561386857600290950a607f81901c60ff9190911c90811c9590811b909203917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161381e565b50700100000000000000000000000000000000693627a301d786ca58a52f83020495945050505050565b5f610100602883901c5b0692915050565b5f6110006064603084020184901c612fb0565b5f60026048603084020184901c612fb0565b5f8080806138d688876138a3565b60020b15159050806138f1576002606460308802011b880197505b5f6138fd89888a6139ce565b905061390989886138b6565b1580156139135750855b8061392f575061392389886138b6565b1580159061392f575085155b80613938575081155b1561395857613946816143d8565b935061395181614469565b925061396f565b61396181613a48565b935061396c81613aea565b92505b6139af6fffffffffffffffffffffffffffffffff85168460801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9998505050505050505050565b5f60026049603084020184901c612fb0565b5f80806139db86866144be565b90925090505f6139eb8787612fa2565b613a07906fffffffffffffffffffffffffffffffff87166159e5565b9050613a138787614131565b5f03613a2e57613a248383836144f5565b935050505061134c565b613a24838383614618565b5f62010000603083901c61389c565b5f5f613a5c613a578460e81c90565b6132f3565b90505f613a6c613a578560d01c90565b905073ffffffffffffffffffffffffffffffffffffffff8216613ad46060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff166131bc565b81613ae157613ae16152ff565b04949350505050565b5f5f613af9613a578460e81c90565b90505f613b09613a578560d01c90565b90506112f8846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff16614662565b5f5f5f613bcc613b508a60a0902090565b8b613b5b8b8b6139bc565b613b658a60e81c90565b613b6f8b60d01c90565b60405160200161086495949392919094855260609390931b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166020850152603484019190915260e890811b60548401521b6057820152605a0190565b90505f613bd989896138b6565b5f8381526004602052604081205491925088919081608081901c6fffffffffffffffffffffffffffffffff85168303613c3e576040517f126ae3af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855f03613c6957613c4f85836159fc565b92508a15613c6457613c618582615a24565b90505b613cde565b846fffffffffffffffffffffffffffffffff16826fffffffffffffffffffffffffffffffff161015613cc7576040517fc56d518e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84820392508a613cde57613cdb85826159fc565b90505b613d1e6fffffffffffffffffffffffffffffffff84168260801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b60045f8981526020019081526020015f20819055505050505f8c90505f8e90505f613d528d8f6139bc90919063ffffffff16565b90505f613d5f8d60e81c90565b90505f613d6c8e60d01c90565b90505f885f03613d8c578d613d815787613d85565b875f035b9050613d9e565b8d613d9957875f03613d9b565b875b90505b838573ffffffffffffffffffffffffffffffffffffffff16613dc18860a0902090565b60408051600288810b825287900b6020820152600f86900b8183015290517fd56ea3195fca8d58c0ffaa919cfa736a7a03905f82eb2b8e62d1279e97fcd5e29181900360600190a450505050505f8a90505f5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635a6bcfda856040518060800160405280613e668860e81c90565b60020b8152602001613e788860d01c90565b60020b81526020018b15613ea657613ea16fffffffffffffffffffffffffffffffff8c16615a4c565b613eba565b8a6fffffffffffffffffffffffffffffffff165b81526020018c8152506040518363ffffffff1660e01b8152600401613ee0929190615a82565b60408051808303815f875af1158015613efb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613f1f9190615b48565b91509150613f68613f3083600f0b90565b613f3a83600f0b90565b0361275b613f488560801d90565b613f528560801d90565b036fffffffffffffffffffffffffffffffff1690565b99506fffffffffffffffffffffffffffffffff851615613fe957613fdb613f8f82600f0b90565b613fb1613f9c8460801d90565b6fffffffffffffffffffffffffffffffff1690565b9060801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000160190565b9850613fe988868b8e614702565b505050505050505097509795505050505050565b5f5f6140098360801d90565b600f0b6140168560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061404257508181600f0b14155b15614079576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6140bb837fffffffffffffffffffffffffffffffff0000000000000000000000000000000087168388016fffffffffffffffffffffffffffffffff160161275b565b979650505050505050565b818101828110806140fa5750826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff16105b15610628576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60026040603084020184901c612fb0565b5f808084608081901d600f82900b15801590614162575080600f0b5f14155b1561419457855f03614181575f82600f0b12935081600f0b92506141c0565b5f81600f0b13935080600f0b92506141c0565b81600f0b5f146141b1575f82600f0b12935081600f0b92506141c0565b5f81600f0b13935080600f0b92505b825f036141d3575f94505050505061134c565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f3cd914c8a60405180606001604052808915158152602001888152602001896142495773fffd8963efd1fc6a506488495d951d5263988d25614250565b6401000276a45b73ffffffffffffffffffffffffffffffffffffffff168152506040518363ffffffff1660e01b8152600401614286929190615b6a565b6020604051808303815f875af11580156142a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142c691906152e8565b90506139af6142d582600f0b90565b5f0361275b6142e48460801d90565b5f036fffffffffffffffffffffffffffffffff1690565b5f5f6143078360801c90565b6fffffffffffffffffffffffffffffffff166143238560801d90565b600f0b039050805f846fffffffffffffffffffffffffffffffff1686600f0b0390505f8190508383600f0b14158061404257508181600f0b14614079576040517fd219017400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f61439d846132b7565b90505f6143ab6004836158f5565b60408051600287900b602082015290810182905290915060600161319c565b5f8183106124bf578161134c565b5f5f6143e7613a578460e81c90565b90505f6143f7613a578560d01c90565b90506112f861444b6060866fffffffffffffffffffffffffffffffff16901b84840373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1661475e565b60018473ffffffffffffffffffffffffffffffffffffffff1661475e565b5f5f614478613a578460e81c90565b90505f614488613a578560d01c90565b90506112f8846fffffffffffffffffffffffffffffffff1683830373ffffffffffffffffffffffffffffffffffffffff166147b9565b5f806144ea6144d28585603002604c011c90565b6144dc86866138a3565b6144e587613a39565b614812565b909590945092505050565b5f5f614500856132f3565b90505f61450c856132f3565b90505f614567856145498473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16614662565b85850373ffffffffffffffffffffffffffffffffffffffff166131bc565b90506fffffffffffffffffffffffffffffffff8111156145b3576040517fa500e7ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6fffffffffffffffffffffffffffffffff811660d087901b7cffffff00000000000000000000000000000000000000000000000000001660e889901b7fffffff00000000000000000000000000000000000000000000000000000000001601016140bb565b5f5f614623856132f3565b90505f61462f856132f3565b90505f614567856c0100000000000000000000000085850373ffffffffffffffffffffffffffffffffffffffff166131bc565b5f80807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050805f036146aa575060601c9050610628565b806c01000000000000000000000000116146c2575f5ffd5b5f6c0100000000000000000000000085870980840360601c9310909103740100000000000000000000000000000000000000000291909117949350505050565b5f5f61470f858585612041565b5f8881526005602090815260408083205460069092529091205492945090925061473b918490846121ea565b5f978852600560209081526040808a206006909252909820559095555050505050565b5f61476a8484846131bc565b90505f828061477b5761477b6152ff565b848609111561134c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81106147af575f5ffd5b6001019392505050565b5f6147c48383614662565b90505f6c010000000000000000000000008385091115610628577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110614809575f5ffd5b60010192915050565b5f5f5f5f6148208686614830565b9088039897019695505050505050565b5f80600261483e8486615c36565b6148489190615c55565b6148676148558587615cc8565b62ffffff166002808204910615150190565b915091505b9250929050565b60405180608001604052806004906020820280368337509192915050565b73ffffffffffffffffffffffffffffffffffffffff811681146118ee575f5ffd5b5f5f604083850312156148c3575f5ffd5b82356148ce81614891565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146118ee575f5ffd5b5f60208284031215614919575f5ffd5b813561134c816148dc565b5f60208284031215614934575f5ffd5b813567ffffffffffffffff8116811461134c575f5ffd5b60a08101610628828473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b5f5f83601f8401126149de575f5ffd5b50813567ffffffffffffffff8111156149f5575f5ffd5b6020830191508360208260051b850101111561486c575f5ffd5b5f5f83601f840112614a1f575f5ffd5b50813567ffffffffffffffff811115614a36575f5ffd5b60208301915083602082850101111561486c575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215614a64575f5ffd5b8835614a6f81614891565b97506020890135614a7f81614891565b9650604089013567ffffffffffffffff811115614a9a575f5ffd5b614aa68b828c016149ce565b909750955050606089013567ffffffffffffffff811115614ac5575f5ffd5b614ad18b828c016149ce565b909550935050608089013567ffffffffffffffff811115614af0575f5ffd5b614afc8b828c01614a0f565b999c989b5096995094979396929594505050565b80356fffffffffffffffffffffffffffffffff811681146132b2575f5ffd5b8060020b81146118ee575f5ffd5b5f5f5f5f5f5f60a08789031215614b52575f5ffd5b863567ffffffffffffffff811115614b68575f5ffd5b614b7489828a01614a0f565b90975095505060208701359350614b8d60408801614b10565b92506060870135614b9d81614b2f565b91506080870135614bad81614b2f565b809150509295509295509295565b60c0810181855f5b6004811015614be2578151835260209283019290910190600101614bc3565b5050508360808301528260020b60a0830152949350505050565b5f5f5f5f60408587031215614c0f575f5ffd5b843567ffffffffffffffff811115614c25575f5ffd5b614c31878288016149ce565b909550935050602085013567ffffffffffffffff811115614c50575f5ffd5b614c5c878288016149ce565b95989497509550505050565b602080825282518282018190525f918401906040840190835b81811015614c9f578351835260209384019390920191600101614c81565b509095945050505050565b5f5f5f5f5f5f60a08789031215614cbf575f5ffd5b863567ffffffffffffffff811115614cd5575f5ffd5b614ce189828a01614a0f565b9097509550506020870135614cf581614891565b9350604087013592506060870135614b9d81614b2f565b5f5f5f5f5f5f5f5f5f6101008a8c031215614d25575f5ffd5b893567ffffffffffffffff811115614d3b575f5ffd5b614d478c828d01614a0f565b909a5098505060208a0135614d5b81614891565b965060408a0135955060608a0135614d7281614b2f565b945060808a0135614d8281614b2f565b935060a08a0135614d9281614b2f565b989b979a50959894979396929550929360c0810135935060e00135919050565b803560ff811681146132b2575f5ffd5b5f5f82840360c0811215614dd4575f5ffd5b60a0811215614de1575f5ffd5b50829150614df160a08401614db2565b90509250929050565b5f5f60208385031215614e0b575f5ffd5b823567ffffffffffffffff811115614e21575f5ffd5b614e2d85828601614a0f565b90969095509350505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f61134c6020830184614e39565b803580151581146132b2575f5ffd5b5f5f60408385031215614eb7575f5ffd5b8235614ec281614891565b9150614df160208401614e97565b5f5f60208385031215614ee1575f5ffd5b823567ffffffffffffffff811115614ef7575f5ffd5b614e2d858286016149ce565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614f78577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452614f63858351614e39565b94506020938401939190910190600101614f29565b50929695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160a0810167ffffffffffffffff81118282101715614fd457614fd4614f84565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561502157615021614f84565b604052919050565b5f67ffffffffffffffff82111561504257615042614f84565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f83011261507d575f5ffd5b813561509061508b82615029565b614fda565b8181528460208386010111156150a4575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f604083850312156150d1575f5ffd5b823567ffffffffffffffff8111156150e7575f5ffd5b6150f38582860161506e565b925050614df160208401614db2565b5f60208284031215615112575f5ffd5b813567ffffffffffffffff811115615128575f5ffd5b6112f88482850161506e565b5f5f60408385031215615145575f5ffd5b823561515081614891565b9150602083013561516081614891565b809150509250929050565b5f5f5f5f5f5f60a08789031215615180575f5ffd5b863561518b81614891565b9550602087013561519b81614891565b94506040870135935060608701359250608087013567ffffffffffffffff8111156151c4575f5ffd5b6151d089828a01614a0f565b979a9699509497509295939492505050565b62ffffff811681146118ee575f5ffd5b5f60a08284031215615202575f5ffd5b61520a614fb1565b9050813561521781614891565b8152602082013561522781614891565b6020820152604082013561523a816151e2565b6040820152606082013561524d81614b2f565b6060820152608082013561526081614891565b608082015292915050565b5f60a0828403121561527b575f5ffd5b61134c83836151f2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156152c2575f5ffd5b813561134c81614891565b5f602082840312156152dd575f5ffd5b813561134c81614b2f565b5f602082840312156152f8575f5ffd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b813561533781614891565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161782555060018101602083013561538881614891565b81547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff82161782555060408301356153d5816151e2565b815460608501356153e581614b2f565b8060b81b79ffffff00000000000000000000000000000000000000000000001676ffffff00000000000000000000000000000000000000008460a01b167fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff841617178455505050505f608083013561545c81614891565b6002830180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316179055905080611cf5565b5f5f5f5f5f5f5f610160888a0312156154bd575f5ffd5b87356154c881614891565b96506154d78960208a016151f2565b955060c08801356154e781614b2f565b945060e08801356154f781614b2f565b93506155066101008901614b10565b9250610120880135915061551d6101408901614e97565b905092959891949750929550565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261555e575f5ffd5b83018035915067ffffffffffffffff821115615578575f5ffd5b60200191503681900382131561486c575f5ffd5b818382375f9101908152919050565b80516132b281614b2f565b5f60a08284031280156155b7575f5ffd5b506155c0614fb1565b82516155cb81614891565b815260208301516155db81614891565b602082015260408301516155ee816151e2565b6040820152606083015161560181614b2f565b6060820152608083015161561481614891565b60808201529392505050565b5f60208284031215615630575f5ffd5b815161134c816148dc565b73ffffffffffffffffffffffffffffffffffffffff8816815261016081016156db602083018973ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8660020b60c08301528560020b60e08301526fffffffffffffffffffffffffffffffff85166101008301528361012083015282151561014083015298975050505050505050565b5f60208284031215615732575f5ffd5b815167ffffffffffffffff811115615748575f5ffd5b8201601f81018413615758575f5ffd5b805161576661508b82615029565b81815285602083850101111561577a575f5ffd5b8160208401602083015e5f91810160200191909152949350505050565b5f5f5f60c084860312156157a9575f5ffd5b84601f8501126157b7575f5ffd5b6040516080810167ffffffffffffffff811182821017156157da576157da614f84565b6040528060808601878111156157ee575f5ffd5b865b818110156158085780518352602092830192016157f0565b505191945090925061581e905060a0850161559b565b90509250925092565b5f60208284031215615837575f5ffd5b815167ffffffffffffffff81111561584d575f5ffd5b8201601f8101841361585d575f5ffd5b805167ffffffffffffffff81111561587757615877614f84565b8060051b61588760208201614fda565b918252602081840181019290810190878411156158a2575f5ffd5b6020850194505b838510156140bb578451808352602095860195909350909101906158a9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610628576106286158c8565b5f82600f0b82600f0b0280600f0b91508082146112b8576112b86158c8565b5f8260020b80615939576159396152ff565b808360020b0791505092915050565b600f82810b9082900b037fffffffffffffffffffffffffffffffff8000000000000000000000000000000081126f7fffffffffffffffffffffffffffffff82131715610628576106286158c8565b5f81600f0b7fffffffffffffffffffffffffffffffff8000000000000000000000000000000081036159ca576159ca6158c8565b5f0392915050565b81810381811115610628576106286158c8565b8082028115828204841417610628576106286158c8565b6fffffffffffffffffffffffffffffffff8181168382160190811115610628576106286158c8565b6fffffffffffffffffffffffffffffffff8281168282160390811115610628576106286158c8565b5f7f80000000000000000000000000000000000000000000000000000000000000008203615a7c57615a7c6158c8565b505f0390565b615b01818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b5f5f60408385031215615b59575f5ffd5b505080516020909101519092909150565b615be9818473ffffffffffffffffffffffffffffffffffffffff815116825273ffffffffffffffffffffffffffffffffffffffff602082015116602083015262ffffff6040820151166040830152606081015160020b606083015273ffffffffffffffffffffffffffffffffffffffff60808201511660808301525050565b8151151560a0820152602082015160c082015260409091015173ffffffffffffffffffffffffffffffffffffffff1660e082015261012061010082018190525f9082015261014001919050565b5f8260020b8260020b028060020b91508082146112b8576112b86158c8565b5f8160020b8360020b80615c6b57615c6b6152ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80000083141615615cbf57615cbf6158c8565b90059392505050565b62ffffff81811683821602908116908181146112b8576112b86158c856fea26469706673582212200f24c0b4a86d9fcefdfa49eec7c170d7dc0d183f2acf94a6293a9e2f121df22f64736f6c634300081c00330000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951000000000000000000000000000000000000000000000071d75ab9b920500000000000000000000000000000000000000000000000000071d75ab9b920500000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Signatures
0x303c5d18d3b108f8d5df830ad9446e5cb21697d63f77fe3a72e9a4a28954d92706936193190ba591616d575413350d8a3dfc22421315dcce0442c7a29b3bed3f1c870dbf196b078cd361d3a47fbd63b654cb77c51f4a0f90c7b33332cc4c2ab9b56080d01c84f9724a525b640018d16dbde073fcab9340e5ba58289b6210f6dee01c000000000000000000000000cae438c8505be86b1a200d1c737a580170d5bf22000000000000000000000000000000000000000000000000000000000000000001