0x6080604052600436106103dd5760003560e01c8063907ad64a1161020d578063be2f503911610128578063d9b47d1c116100bb578063e9cad7661161008a578063f3ff955a1161006f578063f3ff955a14610bf4578063f8d8989814610c14578063ff24951814610c3457600080fd5b8063e9cad76614610bca578063ebbc496514610bdf57600080fd5b8063d9b47d1c14610b3a578063daeccc7914610b5a578063dd62ed3e14610b95578063e9607c0114610bb557600080fd5b8063c7c7f5b3116100f7578063c7c7f5b314610ab9578063cfa8d69214610ada578063d0ebdbe714610afa578063d505accf14610b1a57600080fd5b8063be2f503914610a39578063bfccf0ec14610a59578063c1a9759014610a79578063c28ab67514610a9957600080fd5b8063a9059cbb116101a0578063b1f8100d1161016f578063b1f8100d146109a5578063b2016bd4146109c5578063b2317e6b146109f9578063b3ff9f4914610a1957600080fd5b8063a9059cbb14610923578063ac9650d814610943578063af1454d314610970578063b1e1fca41461098557600080fd5b80639d63848a116101dc5780639d63848a146108a0578063a3696a09146108c3578063a457c2d7146108e3578063a7229fd91461090357600080fd5b8063907ad64a1461083657806395d89b411461085657806398d7e2951461086b5780639a6b27cf1461088b57600080fd5b8063359d6ea9116102fd57806357b17a52116102905780637ecebe001161025f5780637ecebe00146107ae57806384b0196e146107ce5780638da5cb5b146107f65780638f39a80b1461081657600080fd5b806357b17a521461070057806361b3009a1461071557806365310a581461075857806370a082311461077857600080fd5b80633f3e4c11116102cc5780633f3e4c111461067a57806342966c681461069a578063481c6a75146106ba5780634e7e240d146106ec57600080fd5b8063359d6ea9146105f85780633644e51514610618578063395093511461062d5780633b6f743b1461064d57600080fd5b806322285cf6116103755780632b968958116103445780632b968958146105875780632c66d2031461059c5780632fa7f924146105bc578063313ce567146105dc57600080fd5b806322285cf61461050f57806323b872dd146105325780632ab41950146105525780632ab4d0521461057257600080fd5b80630c5bf964116103b15780630c5bf9641461047f57806318160ddd146104a157806320c3627f146104c05780632113f244146104ef57600080fd5b8062274eb3146103e257806301ffc9a71461040d57806306fdde031461043d578063095ea7b31461045f575b600080fd5b3480156103ee57600080fd5b506103f7610c6b565b6040516104049190614ebd565b60405180910390f35b34801561041957600080fd5b5061042d610428366004614f05565b610cd0565b6040519015158152602001610404565b34801561044957600080fd5b50610452610d2d565b6040516104049190614f70565b34801561046b57600080fd5b5061042d61047a366004614f98565b610dbf565b34801561048b57600080fd5b5061049f61049a366004614fc4565b610dd7565b005b3480156104ad57600080fd5b506002545b604051908152602001610404565b3480156104cc57600080fd5b506104e06104db366004614f98565b610e8d565b60405161040493929190615012565b3480156104fb57600080fd5b506104e061050a366004614f98565b610ebc565b34801561051b57600080fd5b50610524610ee6565b60405161040492919061503d565b34801561053e57600080fd5b5061042d61054d366004615062565b611034565b34801561055e57600080fd5b5061052461056d3660046150a3565b61105a565b34801561057e57600080fd5b50600e546104b2565b34801561059357600080fd5b5061049f6110b2565b3480156105a857600080fd5b506104e06105b73660046150bc565b6111d2565b3480156105c857600080fd5b506104e06105d736600461510f565b6112e3565b3480156105e857600080fd5b5060405160128152602001610404565b34801561060457600080fd5b506104b2610613366004614fc4565b6113e5565b34801561062457600080fd5b506104b2611404565b34801561063957600080fd5b5061042d610648366004614f98565b611413565b34801561065957600080fd5b5061066d610668366004615171565b611435565b60405161040491906151c3565b34801561068657600080fd5b5061049f6106953660046150a3565b6114d2565b3480156106a657600080fd5b5061049f6106b53660046150a3565b6115ad565b3480156106c657600080fd5b506011546001600160a01b03165b6040516001600160a01b039091168152602001610404565b3480156106f857600080fd5b5060006104b2565b34801561070c57600080fd5b506104b26115e8565b34801561072157600080fd5b50610735610730366004614fc4565b611678565b604080519384526001600160a01b03909216602084015290820152606001610404565b34801561076457600080fd5b5061049f61077336600461521f565b61174d565b34801561078457600080fd5b506104b2610793366004614fc4565b6001600160a01b031660009081526020819052604090205490565b3480156107ba57600080fd5b506104b26107c9366004614fc4565b611986565b3480156107da57600080fd5b506107e36119a4565b60405161040497969594939291906152b6565b34801561080257600080fd5b506009546106d4906001600160a01b031681565b34801561082257600080fd5b506105246108313660046150a3565b611a49565b34801561084257600080fd5b506104e0610851366004614f98565b611a9a565b34801561086257600080fd5b50610452611ab3565b34801561087757600080fd5b50610524610886366004615340565b611ac2565b34801561089757600080fd5b5061042d611be6565b3480156108ac57600080fd5b506108b5611c6d565b604051610404929190615377565b3480156108cf57600080fd5b5061049f6108de366004614fc4565b611c88565b3480156108ef57600080fd5b5061042d6108fe366004614f98565b611d99565b34801561090f57600080fd5b5061049f61091e366004615062565b611e37565b34801561092f57600080fd5b5061042d61093e366004614f98565b611f01565b34801561094f57600080fd5b5061096361095e36600461539c565b611f0f565b60405161040491906153de565b34801561097c57600080fd5b5061042d611ff9565b34801561099157600080fd5b50600f546106d4906001600160a01b031681565b3480156109b157600080fd5b5061049f6109c0366004614fc4565b61205c565b3480156109d157600080fd5b506106d47f0000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f81565b348015610a0557600080fd5b506104b2610a14366004615460565b612185565b348015610a2557600080fd5b50600c546106d4906001600160a01b031681565b348015610a4557600080fd5b5061049f610a54366004614fc4565b6121a3565b348015610a6557600080fd5b5061049f610a7436600461548e565b6122b8565b348015610a8557600080fd5b506104b2610a94366004615460565b612491565b348015610aa557600080fd5b506104b2610ab4366004614fc4565b6124a8565b610acc610ac7366004615516565b6124b3565b604051610404929190615579565b348015610ae657600080fd5b50610524610af53660046155cc565b6125a0565b348015610b0657600080fd5b5061049f610b15366004614fc4565b612683565b348015610b2657600080fd5b5061049f610b353660046155f1565b6128a2565b348015610b4657600080fd5b50610524610b553660046150a3565b612a06565b348015610b6657600080fd5b5061042d610b75366004615668565b600a60209081526000928352604080842090915290825290205460ff1681565b348015610ba157600080fd5b506104b2610bb0366004615460565b612a1f565b348015610bc157600080fd5b506103f7612a71565b348015610bd657600080fd5b506104b2612ac7565b348015610beb57600080fd5b5061049f612afb565b348015610c0057600080fd5b5061049f610c0f366004614fc4565b612baf565b348015610c2057600080fd5b506010546106d4906001600160a01b031681565b348015610c4057600080fd5b50610c54610c4f366004614fc4565b612c3c565b604080519215158352901515602083015201610404565b60408051600180825281830190925260609160208083019080368337505060105482519293506001600160a01b031691839150600090610cad57610cad6156cc565b60200260200101906001600160a01b031690816001600160a01b03168152505090565b6000610cdb82612cb1565b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167fef61d23f00000000000000000000000000000000000000000000000000000000145b92915050565b606060038054610d3c906156fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906156fb565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b600033610dcd818585612d59565b5060019392505050565b6011546001600160a01b03166305a8b83082610e08816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915260448201526064015b600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b5050505050565b6000606080610eac610e9f8686612eb1565b610ea76115e8565b612f7a565b9298909750919550909350505050565b6000606080610ed8610ece8686612eb1565b6000806000612fc4565b919790965090945092505050565b606080600080610ef4611c6d565b815191935091506000908067ffffffffffffffff811115610f1757610f1761569d565b604051908082528060200260200182016040528015610f40578160200160208202803683370190505b5095505b8351821015610f9857610f6f848381518110610f6257610f626156cc565b6020026020010151612ff1565b868381518110610f8157610f816156cc565b602002602001018181525050816001019150610f44565b5081518067ffffffffffffffff811115610fb457610fb461569d565b604051908082528060200260200182016040528015610fdd578160200160208202803683370190505b509450600091505b825182101561102c57611003838381518110610f6257610f626156cc565b858381518110611015576110156156cc565b602002602001018181525050816001019150610fe5565b505050509091565b600033611042858285613115565b61104d85858561318f565b60019150505b9392505050565b6060806110a76110996040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b846110a26115e8565b613382565b909590945092505050565b6110e0336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611116576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b546001600160a01b031661dead1461117057600b546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b6009546040516000916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006060806111df61341d565b60006111eb8888612eb1565b905060006111f76115e8565b90506000611206838884613476565b905080891115611263576040517f691bf43d0000000000000000000000000000000000000000000000000000000081526001600160a01b0380891660048301528b166024820152604481018a905260648101829052608401611167565b600061126f8484612f7a565b9299509750909550905080156112bc577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb7809140427600184836040516112b393929190615777565b60405180910390a15b6112cb84338b8b8b8b8b613512565b505050506112d96001600d55565b9450945094915050565b60006060806112f061341d565b60006112fc8787612eb1565b905060008061130b83836136a7565b905080881115611368576040517ff0cc4e3b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380891660048301528a1660248201526044810189905260648101829052608401611167565b60006113748484613721565b9299509750909550905080156113c1577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb7809140427600084836040516113b893929190615777565b60405180910390a15b6113ce3389898989613768565b505050506113dc6001600d55565b93509350939050565b60006113ef611ff9565b156113fc57506000919050565b610d27612ac7565b600061140e61380f565b905090565b600033610dcd8185856114268383612a1f565b61143091906157f5565b612d59565b60408051808201825260008082526020820152600c5491517f3b6f743b00000000000000000000000000000000000000000000000000000000815290916001600160a01b031690633b6f743b90611492908690869060040161593e565b6040805180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105391906159e2565b611500336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611536576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600003611572576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e8190556040518181527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a150565b6115b7338261393a565b6011546001600160a01b03166305a8b83033610e08816001600160a01b031660009081526020819052604090205490565b601154604080517f57b17a5200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916357b17a529160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906159fe565b61ffff16905090565b601154600090819081906001600160a01b031663757bb813856116b0816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401606060405180830381865afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190615a22565b9250925092509193909250565b61177b336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6117b1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254156117eb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806117f6611c6d565b815191935091508814611835576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051861461186f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828511156118c2576040517ff35b483d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810186905260448101849052606401611167565b600e8390556040518381527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a161197b3385878c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061376892505050565b505050505050505050565b6001600160a01b038116600090815260076020526040812054610d27565b6000606080828080836119d87f4f726967616d6920684f484d000000000000000000000000000000000000000c6005613aaa565b611a037f31000000000000000000000000000000000000000000000000000000000000016006613aaa565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606080611a9183611a896040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b600080613b55565b91509150915091565b6000606080610eac611aac8686612eb1565b6000613721565b606060048054610d3c906156fb565b606080611acd61341d565b6000611ad884613b8e565b905080861115611b2d576040517fdc1803de0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810187905260448101829052606401611167565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260025460a082015290611b686115e8565b90506000611b77838a84613382565b909750955090508015611bc1577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb780914042760018383604051611bb893929190615777565b60405180910390a15b611bd083338a8a8d8b8b613512565b50505050611bde6001600d55565b935093915050565b601154604080517f9a6b27cf00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691639a6b27cf9160048083019260209291908290030181865afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140e9190615a5b565b606080611c78612a71565b9150611c82610c6b565b90509091565b611cb6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611cec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611d37576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611167565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f7ab5072a2f334db02e20cd6aa963f87434f813ef38fba53eea68704c7445ddb990600090a250565b60003381611da78286612a1f565b905083811015611e1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401611167565b611e2c8286868403612d59565b506001949350505050565b611e65336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611e9b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611ee091815260200190565b60405180910390a3611efc6001600160a01b0384168383613bdb565b505050565b600033610dcd81858561318f565b60608167ffffffffffffffff811115611f2a57611f2a61569d565b604051908082528060200260200182016040528015611f5d57816020015b6060815260200190600190039081611f485790505b50905060005b82811015611ff257611fcd30858584818110611f8157611f816156cc565b9050602002810190611f939190615a78565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c8492505050565b828281518110611fdf57611fdf6156cc565b6020908102919091010152600101611f63565b5092915050565b601154604080517faf1454d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163af1454d39160048083019260209291908290030181865afa158015611c49573d6000803e3d6000fd5b61208a336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6120c0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661210b576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611167565b600b546009546040516001600160a01b038085169381169216907f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d890600090a4600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611053612195846000612eb1565b8361219e6115e8565b613476565b6121d1336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b612207576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661224a576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401611167565b6040516001600160a01b038216907f2781e03d8cf8be1845f40e150af1187b0cdb48dccd761a708f5e5b612a865d1d90600090a2600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6122e6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b61231c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316612367576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611167565b604080518082019091526000808252602082015260005b82811015610e8657838382818110612398576123986156cc565b9050604002018036038101906123ae9190615add565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b0387166000908152600a8352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161237e565b60006110536124a1846000612eb1565b60006136a7565b6000610d2782613b8e565b6124bb614e30565b60408051808201825260008082526020820152908501356124dd33308361318f565b600c546040517fc7c7f5b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063c7c7f5b390349061252c908a908a908a90600401615b1c565b60c06040518083038185885af115801561254a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256f9190615b59565b805191945092506000906125839083615c0b565b905080156125965761259630338361318f565b5050935093915050565b6060806125ab61341d565b60006125b6846113e5565b90508085111561260b576040517ff35b483d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810186905260448101829052606401611167565b6000806126188783613ca9565b919650945090508015612662577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb78091404276000838360405161265993929190615777565b60405180910390a15b61266f3387898888613768565b50505061267c6001600d55565b9250929050565b6126b1336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6126e7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661272a576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401611167565b6011546001600160a01b0382811691161461279f57601180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa6990600090a25b601154604080517ff8d8989800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f8d898989160048083019260209291908290030181865afa158015612802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128269190615c1e565b6010549091506001600160a01b0380831691161461289e57601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f066f10e42df49bba948e2e987181156b9451f4d4db55b013c5ccc92e6ca80c1f90600090a25b5050565b834211156128f25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401611167565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886129218c613d17565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061297c82613d3f565b9050600061298c82878787613d87565b9050896001600160a01b0316816001600160a01b0316146129ef5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401611167565b6129fa8a8a8a612d59565b50505050505050505050565b606080612a14836000613ca9565b509094909350915050565b600c546000906001600160a01b03838116911614612a67576001600160a01b03808416600090815260016020908152604080832093861683529290522054611053565b611053565b5060001992915050565b604080516001808252818301909252606091602080830190803683370190505090507f0000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f81600081518110610cad57610cad6156cc565b600080612ad3600e5490565b90506000198103612ae357919050565b612af5612aef60025490565b82613db1565b91505090565b600b546001600160a01b03163314612b3f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55490600090a3600980547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600b80549091169055565b6011546001600160a01b031663d805b07433612be0816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039384166004820152602481019290925260448201529084166064820152608401610e58565b6000807f0000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f6001600160a01b0316836001600160a01b031603612c845750600192600092509050565b6010546001600160a01b0390811690841603612ca65750600092600192509050565b506000928392509050565b6000612cbc82613dc8565b80612d0857507fffffffff0000000000000000000000000000000000000000000000000000000082167ff757005600000000000000000000000000000000000000000000000000000000145b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167f948a39e7000000000000000000000000000000000000000000000000000000001492915050565b6001600160a01b038316612dd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b038216612e505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529080612eed85612c3c565b91509150818015612efc575080155b80612f0d575081158015612f0d5750805b15612f72576040518060c00160405280866001600160a01b0316815260200183151581526020018215158152602001858152602001612f4b87612ff1565b8152602001612f5960025490565b81525092508260800151600003612f7257600060608401525b505092915050565b6000806060806000612fa2878860200151612f96576000612f99565b60015b60006001612fc4565b90945092509050612fb581876001613f90565b97908803965091945092509050565b6000606080612fd38787613ff3565b9250612fe183888787613b55565b9398909750929550919350505050565b6010546000906001600160a01b039081169083160361308157601160009054906101000a90046001600160a01b03166001600160a01b03166359b97ddb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190615c3b565b7f0000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f6001600160a01b0316826001600160a01b03160361310d57601160009054906101000a90046001600160a01b03166001600160a01b031663dd50e2d36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305d573d6000803e3d6000fd5b506000919050565b60006131218484612a1f565b90506000198114613189578181101561317c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611167565b6131898484848403612d59565b50505050565b6001600160a01b03831661320b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0382166132875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b038316600090815260208190526040902054818110156133165760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3613189848484614025565b6000606080613392858585614150565b90955092506133a5858760006001613b55565b93979096509294509192505050565b6009546000906001600160a01b03848116911614806110535750506001600160a01b03919091166000908152600a602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000009094168352929052205460ff1690565b6002600d540361346f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611167565b6002600d55565b6000613480611be6565b1561348d57506000611053565b83608001516000036134a157506000611053565b6001600160a01b0383166134b85750600019611053565b6001600160a01b03831660009081526020819052604081205490506134df81846000614150565b50905060006134ef82878361417e565b905085608001518110613506578560800151613508565b805b9695505050505050565b8260000361354c576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416613597576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611167565b6001600160a01b0385166135e2576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602401611167565b836001600160a01b0316866001600160a01b03161461360657613606848785613115565b6136148685878686866141b1565b61361e848461393a565b828760a0018181516136309190615c0b565b90525060a0870151600003613645576000600e555b836001600160a01b0316856001600160a01b0316876001600160a01b03167f728a5684b1f77b03e07bd227ddcef96ef31c5268eb61122aabcd651e08f752a185858860405161369693929190615c54565b60405180910390a450505050505050565b60006136b1611ff9565b156136be57506000610d27565b82608001516000036136d257506000610d27565b60006136dd600e5490565b905060001981036136ef579050610d27565b60006136ff8560a0015183613db1565b905061371861371082866001613f90565b86600061417e565b95945050505050565b60008060608061374786876020015161373b57600161373e565b60005b60016000612fc4565b9195509250905061375a84866000614150565b909790965091945092509050565b826000036137a2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6137af85858585856142f8565b6137b98484614453565b836001600160a01b0316856001600160a01b03167f8bf99c37e0a09491ed7cb29409f9fcd5a61a01752ab57bbf20d72ce465330dab84848760405161380093929190615c54565b60405180910390a35050505050565b6000306001600160a01b037f0000000000000000000000001db1591540d7a6062be0837ca3c808add28844f61614801561386857507f000000000000000000000000000000000000000000000000000000000000000146145b1561389257507f84bae923851440a39e54a5a571f33dfb39969f3e98c2b22a569a24ec0e3a996290565b61140e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527fc4bf3e82ccb9e8770f290219e3c705d9590dd903b4dc5643900e63166f4a9a47918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166139b65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b03821660009081526020819052604090205481811015613a455760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611efc83600084614025565b606060ff8314613ac457613abd8361451a565b9050610d27565b818054613ad0906156fb565b80601f0160208091040260200160405190810160405280929190818152602001828054613afc906156fb565b8015613b495780601f10613b1e57610100808354040283529160200191613b49565b820191906000526020600020905b815481529060010190602001808311613b2c57829003601f168201915b50505050509050610d27565b606080600080613b63611c6d565b91509150613b7388888489614559565b9350613b8188888388614559565b9250505094509492505050565b6000613b98611be6565b15613ba557506000919050565b6001600160a01b03821615613bd2576001600160a01b038216600090815260208190526040902054610d27565b60001992915050565b6040516001600160a01b038316602482015260448101829052611efc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526146a2565b60606110538383604051806060016040528060278152602001615cd66027913961478a565b606080600080613cbb86866001613f90565b90508581039150613d0881613cff6040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b60016000613b55565b90979096509194509092505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b6000610d27613d4c61380f565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000613d98878787876147f8565b91509150613da5816148bc565b5090505b949350505050565b600081831115613dc357506000610d27565b500390565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fec3e74c8000000000000000000000000000000000000000000000000000000001480613e5b57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a02500000000000000000000000000000000000000000000000000000000145b80613ea757507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80613ef357507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b80613f3f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f84b0196e00000000000000000000000000000000000000000000000000000000145b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001492915050565b600082600003613fa1575082611053565b6127108310613fdc576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083612710039050613718856127108386614a24565b6000826080015160001461401c5760a083015160808401516060850151612a6292909185614a24565b50600092915050565b816001600160a01b0316836001600160a01b03161415801561404f57506001600160a01b03831615155b801561406357506001600160a01b03821615155b15611efc576011546001600160a01b03166385a3a58984614099816001600160a01b031660009081526020819052604090205490565b856140b9876001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015260248101949094529390911660448301526064820152608481019190915260a401600060405180830381600087803b15801561413357600080fd5b505af1158015614147573d6000803e3d6000fd5b50505050505050565b6000808360000361416657508390506000611bde565b614171858585614ab7565b9594869003949350505050565b600082608001516000146141a757608083015160a08401516141a291869185614a24565b613da9565b6000949350505050565b6000826000815181106141c6576141c66156cc565b602002602001015190506000826000815181106141e5576141e56156cc565b6020908102919091010151601154601054919250614212916001600160a01b03908116918b911684614adb565b6001600160a01b038716600090815260208190526040812054614236908790615c0b565b905060008661424460025490565b61424e9190615c0b565b6011546040517f167860a700000000000000000000000000000000000000000000000000000000815260048101879052602481018690526001600160a01b038c811660448301528b811660648301526084820186905260a4820184905292935091169063167860a79060c401600060405180830381600087803b1580156142d457600080fd5b505af11580156142e8573d6000803e3d6000fd5b5050505050505050505050505050565b60008260008151811061430d5761430d6156cc565b6020026020010151905060008260008151811061432c5761432c6156cc565b6020908102919091010151601154909150614376906001600160a01b037f0000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f8116918a911685614adb565b6001600160a01b03861660009081526020819052604081205461439a9087906157f5565b90506000866143a860025490565b6143b291906157f5565b6011546040517f86dd051800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526001600160a01b038b8116604483015260648201869052608482018490529293509116906386dd05189060a401600060405180830381600087803b15801561443057600080fd5b505af1158015614444573d6000803e3d6000fd5b50505050505050505050505050565b6001600160a01b0382166144a95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611167565b80600260008282546144bb91906157f5565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361289e60008383614025565b6060600061452783614b2c565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b81516060908067ffffffffffffffff8111156145775761457761569d565b6040519080825280602002602001820160405280156145a0578160200160208202803683370190505b5091506000805b82811015614697578581815181106145c1576145c16156cc565b602002602001015191508660a001516000036145fc5760008482815181106145eb576145eb6156cc565b60200260200101818152505061468f565b6001600160a01b03821615801590614620575086516001600160a01b038381169116145b1561463c5786606001518482815181106145eb576145eb6156cc565b614670614662878381518110614654576146546156cc565b602002602001015189614b6d565b60a08901518a919088614a24565b848281518110614682576146826156cc565b6020026020010181815250505b6001016145a7565b505050949350505050565b60006146f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b9f9092919063ffffffff16565b90508051600014806147185750808060200190518101906147189190615a5b565b611efc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611167565b6060600080856001600160a01b0316856040516147a79190615c8a565b600060405180830381855af49150503d80600081146147e2576040519150601f19603f3d011682016040523d82523d6000602084013e6147e7565b606091505b509150915061350886838387614bae565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561482f57506000905060036148b3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614883573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166148ac576000600192509250506148b3565b9150600090505b94509492505050565b60008160048111156148d0576148d0615748565b036148d85750565b60018160048111156148ec576148ec615748565b036149395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611167565b600281600481111561494d5761494d615748565b0361499a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611167565b60038160048111156149ae576149ae615748565b03614a215760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401611167565b50565b6000614a31858585614c27565b90506001826001811115614a4757614a47615748565b03613da9578280614a5a57614a5a615ca6565b84860915613da957600019811015614a7457600101613da9565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401611167565b6000612710838103908410614acd576000613718565b613718858261271086614a24565b6040516001600160a01b03808516602483015283166044820152606481018290526131899085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613c20565b600060ff8216601f811115610d27576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600001516001600160a01b0316836001600160a01b031614614b9557612a6283612ff1565b5060800151919050565b6060613da98484600085614d14565b60608315614c1d578251600003614c16576001600160a01b0385163b614c165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611167565b5081613da9565b613da98383614e06565b6000808060001985870985870292508281108382030391505080600003614c6157838281614c5757614c57615ca6565b0492505050611053565b838110614cab576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611167565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606082471015614d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611167565b600080866001600160a01b03168587604051614da89190615c8a565b60006040518083038185875af1925050503d8060008114614de5576040519150601f19603f3d011682016040523d82523d6000602084013e614dea565b606091505b5091509150614dfb87838387614bae565b979650505050505050565b815115614e165781518083602001fd5b8060405162461bcd60e51b81526004016111679190614f70565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614e73604051806040016040528060008152602001600081525090565b905290565b60008151808452602080850194506020840160005b83811015614eb25781516001600160a01b031687529582019590820190600101614e8d565b509495945050505050565b6020815260006110536020830184614e78565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614f0057600080fd5b919050565b600060208284031215614f1757600080fd5b61105382614ed0565b60005b83811015614f3b578181015183820152602001614f23565b50506000910152565b60008151808452614f5c816020860160208601614f20565b601f01601f19169290920160200192915050565b6020815260006110536020830184614f44565b6001600160a01b0381168114614a2157600080fd5b60008060408385031215614fab57600080fd5b8235614fb681614f83565b946020939093013593505050565b600060208284031215614fd657600080fd5b813561105381614f83565b60008151808452602080850194506020840160005b83811015614eb257815187529582019590820190600101614ff6565b83815260606020820152600061502b6060830185614fe1565b82810360408401526135088185614fe1565b6040815260006150506040830185614fe1565b82810360208401526137188185614fe1565b60008060006060848603121561507757600080fd5b833561508281614f83565b9250602084013561509281614f83565b929592945050506040919091013590565b6000602082840312156150b557600080fd5b5035919050565b600080600080608085870312156150d257600080fd5b84356150dd81614f83565b93506020850135925060408501356150f481614f83565b9150606085013561510481614f83565b939692955090935050565b60008060006060848603121561512457600080fd5b833561512f81614f83565b925060208401359150604084013561514681614f83565b809150509250925092565b600060e08284031215613d3957600080fd5b8015158114614a2157600080fd5b6000806040838503121561518457600080fd5b823567ffffffffffffffff81111561519b57600080fd5b6151a785828601615151565b92505060208301356151b881615163565b809150509250929050565b815181526020808301519082015260408101610d27565b60008083601f8401126151ec57600080fd5b50813567ffffffffffffffff81111561520457600080fd5b6020830191508360208260051b850101111561267c57600080fd5b600080600080600080600060a0888a03121561523a57600080fd5b873567ffffffffffffffff8082111561525257600080fd5b61525e8b838c016151da565b909950975060208a013591508082111561527757600080fd5b506152848a828b016151da565b90965094505060408801359250606088013561529f81614f83565b809250506080880135905092959891949750929550565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e0602082015260006152f160e0830189614f44565b82810360408401526153038189614f44565b90508660608401526001600160a01b03861660808401528460a084015282810360c08401526153328185614fe1565b9a9950505050505050505050565b60008060006060848603121561535557600080fd5b83359250602084013561536781614f83565b9150604084013561514681614f83565b60408152600061538a6040830185614e78565b82810360208401526137188185614e78565b600080602083850312156153af57600080fd5b823567ffffffffffffffff8111156153c657600080fd5b6153d2858286016151da565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615453577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615441858351614f44565b94509285019290850190600101615407565b5092979650505050505050565b6000806040838503121561547357600080fd5b823561547e81614f83565b915060208301356151b881614f83565b6000806000604084860312156154a357600080fd5b83356154ae81614f83565b9250602084013567ffffffffffffffff808211156154cb57600080fd5b818601915086601f8301126154df57600080fd5b8135818111156154ee57600080fd5b8760208260061b850101111561550357600080fd5b6020830194508093505050509250925092565b6000806000838503608081121561552c57600080fd5b843567ffffffffffffffff81111561554357600080fd5b61554f87828801615151565b9450506040601f198201121561556457600080fd5b50602084019150606084013561514681614f83565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516155b5604084018280518252602090810151910152565b5082516080830152602083015160a0830152611053565b600080604083850312156155df57600080fd5b8235915060208301356151b881614f83565b600080600080600080600060e0888a03121561560c57600080fd5b873561561781614f83565b9650602088013561562781614f83565b95506040880135945060608801359350608088013560ff8116811461564b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561567b57600080fd5b823561568681614f83565b915061569460208401614ed0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c9082168061570f57607f821691505b602082108103613d39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60608101600285106157b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b938152602081019290925260409091015290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d2757610d276157c6565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261583d57600080fd5b830160208101925035905067ffffffffffffffff81111561585d57600080fd5b80360382131561267c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000813563ffffffff811681146158ad57600080fd5b63ffffffff81168452506020820135602084015260408201356040840152606082013560608401526158e26080830183615808565b60e060808601526158f760e08601828461586c565b91505061590760a0840184615808565b85830360a087015261591a83828461586c565b9250505061592b60c0840184615808565b85830360c087015261350883828461586c565b6040815260006159516040830185615897565b905082151560208301529392505050565b6040805190810167ffffffffffffffff811182821017156159ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000604082840312156159c457600080fd5b6159cc615962565b9050815181526020820151602082015292915050565b6000604082840312156159f457600080fd5b61105383836159b2565b600060208284031215615a1057600080fd5b815161ffff8116811461105357600080fd5b600080600060608486031215615a3757600080fd5b835192506020840151615a4981614f83565b80925050604084015190509250925092565b600060208284031215615a6d57600080fd5b815161105381615163565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615aad57600080fd5b83018035915067ffffffffffffffff821115615ac857600080fd5b60200191503681900382131561267c57600080fd5b600060408284031215615aef57600080fd5b615af7615962565b615b0083614ed0565b81526020830135615b1081615163565b60208201529392505050565b608081526000615b2f6080830186615897565b905083356020830152602084013560408301526001600160a01b0383166060830152949350505050565b60008082840360c0811215615b6d57600080fd5b6080811215615b7b57600080fd5b506040516060810167ffffffffffffffff8282108183111715615bc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405285518352602086015191508082168214615be457600080fd5b506020820152615bf785604086016159b2565b6040820152915061569484608085016159b2565b81810381811115610d2757610d276157c6565b600060208284031215615c3057600080fd5b815161105381614f83565b600060208284031215615c4d57600080fd5b5051919050565b606081526000615c676060830186614fe1565b8281036020840152615c798186614fe1565b915050826040830152949350505050565b60008251615c9c818460208701614f20565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e562c5a89461fc273202901ebaf3987300a69ba55aff1daae001494702bcea064736f6c63430008160033
0x6101806040523480156200001257600080fd5b506040516200636b3803806200636b83398101604081905262000035916200035d565b848484818184808380604051806040016040528060018152602001603160f81b815250868681600390816200006b919062000491565b5060046200007a828262000491565b506200008c915083905060056200017a565b610120526200009d8160066200017a565b61014052815160208084019190912060e052815190820120610100524660a0526200012b60e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052506200014081620001b3565b50506001600d55505050506001600160a01b039283166101605250600f80546001600160a01b0319169190921617905550620005b7915050565b60006020835110156200019a57620001928362000230565b9050620001ad565b81620001a7848262000491565b5060ff90505b92915050565b6009546001600160a01b031615620001de57604051633006171960e21b815260040160405180910390fd5b6001600160a01b0381166200020e57604051634726455360e11b8152600060048201526024015b60405180910390fd5b600980546001600160a01b0319166001600160a01b0392909216919091179055565b600080829050601f815111156200025e578260405163305a27a960e01b81526004016200020591906200055d565b80516200026b8262000592565b179392505050565b80516001600160a01b03811681146200028b57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620002c3578181015183820152602001620002a9565b50506000910152565b600082601f830112620002de57600080fd5b81516001600160401b0380821115620002fb57620002fb62000290565b604051601f8301601f19908116603f0116810190828211818310171562000326576200032662000290565b816040528381528660208588010111156200034057600080fd5b62000353846020830160208901620002a6565b9695505050505050565b600080600080600060a086880312156200037657600080fd5b620003818662000273565b60208701519095506001600160401b03808211156200039f57600080fd5b620003ad89838a01620002cc565b95506040880151915080821115620003c457600080fd5b50620003d388828901620002cc565b935050620003e46060870162000273565b9150620003f46080870162000273565b90509295509295909350565b600181811c908216806200041557607f821691505b6020821081036200043657634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200048c576000816000526020600020601f850160051c81016020861015620004675750805b601f850160051c820191505b81811015620004885782815560010162000473565b5050505b505050565b81516001600160401b03811115620004ad57620004ad62000290565b620004c581620004be845462000400565b846200043c565b602080601f831160018114620004fd5760008415620004e45750858301515b600019600386901b1c1916600185901b17855562000488565b600085815260208120601f198616915b828110156200052e578886015182559484019460019091019084016200050d565b50858210156200054d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60208152600082518060208401526200057e816040850160208701620002a6565b601f01601f19169190910160400192915050565b80516020808301519190811015620004365760001960209190910360031b1b16919050565b60805160a05160c05160e05161010051610120516101405161016051615d3262000639600039600081816109d701528181612a9501528181612c4101528181613083015261434b015260006119dd015260006119b2015260006138e9015260006138c10152600061381c01526000613846015260006138700152615d326000f3fe6080604052600436106103dd5760003560e01c8063907ad64a1161020d578063be2f503911610128578063d9b47d1c116100bb578063e9cad7661161008a578063f3ff955a1161006f578063f3ff955a14610bf4578063f8d8989814610c14578063ff24951814610c3457600080fd5b8063e9cad76614610bca578063ebbc496514610bdf57600080fd5b8063d9b47d1c14610b3a578063daeccc7914610b5a578063dd62ed3e14610b95578063e9607c0114610bb557600080fd5b8063c7c7f5b3116100f7578063c7c7f5b314610ab9578063cfa8d69214610ada578063d0ebdbe714610afa578063d505accf14610b1a57600080fd5b8063be2f503914610a39578063bfccf0ec14610a59578063c1a9759014610a79578063c28ab67514610a9957600080fd5b8063a9059cbb116101a0578063b1f8100d1161016f578063b1f8100d146109a5578063b2016bd4146109c5578063b2317e6b146109f9578063b3ff9f4914610a1957600080fd5b8063a9059cbb14610923578063ac9650d814610943578063af1454d314610970578063b1e1fca41461098557600080fd5b80639d63848a116101dc5780639d63848a146108a0578063a3696a09146108c3578063a457c2d7146108e3578063a7229fd91461090357600080fd5b8063907ad64a1461083657806395d89b411461085657806398d7e2951461086b5780639a6b27cf1461088b57600080fd5b8063359d6ea9116102fd57806357b17a52116102905780637ecebe001161025f5780637ecebe00146107ae57806384b0196e146107ce5780638da5cb5b146107f65780638f39a80b1461081657600080fd5b806357b17a521461070057806361b3009a1461071557806365310a581461075857806370a082311461077857600080fd5b80633f3e4c11116102cc5780633f3e4c111461067a57806342966c681461069a578063481c6a75146106ba5780634e7e240d146106ec57600080fd5b8063359d6ea9146105f85780633644e51514610618578063395093511461062d5780633b6f743b1461064d57600080fd5b806322285cf6116103755780632b968958116103445780632b968958146105875780632c66d2031461059c5780632fa7f924146105bc578063313ce567146105dc57600080fd5b806322285cf61461050f57806323b872dd146105325780632ab41950146105525780632ab4d0521461057257600080fd5b80630c5bf964116103b15780630c5bf9641461047f57806318160ddd146104a157806320c3627f146104c05780632113f244146104ef57600080fd5b8062274eb3146103e257806301ffc9a71461040d57806306fdde031461043d578063095ea7b31461045f575b600080fd5b3480156103ee57600080fd5b506103f7610c6b565b6040516104049190614ebd565b60405180910390f35b34801561041957600080fd5b5061042d610428366004614f05565b610cd0565b6040519015158152602001610404565b34801561044957600080fd5b50610452610d2d565b6040516104049190614f70565b34801561046b57600080fd5b5061042d61047a366004614f98565b610dbf565b34801561048b57600080fd5b5061049f61049a366004614fc4565b610dd7565b005b3480156104ad57600080fd5b506002545b604051908152602001610404565b3480156104cc57600080fd5b506104e06104db366004614f98565b610e8d565b60405161040493929190615012565b3480156104fb57600080fd5b506104e061050a366004614f98565b610ebc565b34801561051b57600080fd5b50610524610ee6565b60405161040492919061503d565b34801561053e57600080fd5b5061042d61054d366004615062565b611034565b34801561055e57600080fd5b5061052461056d3660046150a3565b61105a565b34801561057e57600080fd5b50600e546104b2565b34801561059357600080fd5b5061049f6110b2565b3480156105a857600080fd5b506104e06105b73660046150bc565b6111d2565b3480156105c857600080fd5b506104e06105d736600461510f565b6112e3565b3480156105e857600080fd5b5060405160128152602001610404565b34801561060457600080fd5b506104b2610613366004614fc4565b6113e5565b34801561062457600080fd5b506104b2611404565b34801561063957600080fd5b5061042d610648366004614f98565b611413565b34801561065957600080fd5b5061066d610668366004615171565b611435565b60405161040491906151c3565b34801561068657600080fd5b5061049f6106953660046150a3565b6114d2565b3480156106a657600080fd5b5061049f6106b53660046150a3565b6115ad565b3480156106c657600080fd5b506011546001600160a01b03165b6040516001600160a01b039091168152602001610404565b3480156106f857600080fd5b5060006104b2565b34801561070c57600080fd5b506104b26115e8565b34801561072157600080fd5b50610735610730366004614fc4565b611678565b604080519384526001600160a01b03909216602084015290820152606001610404565b34801561076457600080fd5b5061049f61077336600461521f565b61174d565b34801561078457600080fd5b506104b2610793366004614fc4565b6001600160a01b031660009081526020819052604090205490565b3480156107ba57600080fd5b506104b26107c9366004614fc4565b611986565b3480156107da57600080fd5b506107e36119a4565b60405161040497969594939291906152b6565b34801561080257600080fd5b506009546106d4906001600160a01b031681565b34801561082257600080fd5b506105246108313660046150a3565b611a49565b34801561084257600080fd5b506104e0610851366004614f98565b611a9a565b34801561086257600080fd5b50610452611ab3565b34801561087757600080fd5b50610524610886366004615340565b611ac2565b34801561089757600080fd5b5061042d611be6565b3480156108ac57600080fd5b506108b5611c6d565b604051610404929190615377565b3480156108cf57600080fd5b5061049f6108de366004614fc4565b611c88565b3480156108ef57600080fd5b5061042d6108fe366004614f98565b611d99565b34801561090f57600080fd5b5061049f61091e366004615062565b611e37565b34801561092f57600080fd5b5061042d61093e366004614f98565b611f01565b34801561094f57600080fd5b5061096361095e36600461539c565b611f0f565b60405161040491906153de565b34801561097c57600080fd5b5061042d611ff9565b34801561099157600080fd5b50600f546106d4906001600160a01b031681565b3480156109b157600080fd5b5061049f6109c0366004614fc4565b61205c565b3480156109d157600080fd5b506106d47f000000000000000000000000000000000000000000000000000000000000000081565b348015610a0557600080fd5b506104b2610a14366004615460565b612185565b348015610a2557600080fd5b50600c546106d4906001600160a01b031681565b348015610a4557600080fd5b5061049f610a54366004614fc4565b6121a3565b348015610a6557600080fd5b5061049f610a7436600461548e565b6122b8565b348015610a8557600080fd5b506104b2610a94366004615460565b612491565b348015610aa557600080fd5b506104b2610ab4366004614fc4565b6124a8565b610acc610ac7366004615516565b6124b3565b604051610404929190615579565b348015610ae657600080fd5b50610524610af53660046155cc565b6125a0565b348015610b0657600080fd5b5061049f610b15366004614fc4565b612683565b348015610b2657600080fd5b5061049f610b353660046155f1565b6128a2565b348015610b4657600080fd5b50610524610b553660046150a3565b612a06565b348015610b6657600080fd5b5061042d610b75366004615668565b600a60209081526000928352604080842090915290825290205460ff1681565b348015610ba157600080fd5b506104b2610bb0366004615460565b612a1f565b348015610bc157600080fd5b506103f7612a71565b348015610bd657600080fd5b506104b2612ac7565b348015610beb57600080fd5b5061049f612afb565b348015610c0057600080fd5b5061049f610c0f366004614fc4565b612baf565b348015610c2057600080fd5b506010546106d4906001600160a01b031681565b348015610c4057600080fd5b50610c54610c4f366004614fc4565b612c3c565b604080519215158352901515602083015201610404565b60408051600180825281830190925260609160208083019080368337505060105482519293506001600160a01b031691839150600090610cad57610cad6156cc565b60200260200101906001600160a01b031690816001600160a01b03168152505090565b6000610cdb82612cb1565b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167fef61d23f00000000000000000000000000000000000000000000000000000000145b92915050565b606060038054610d3c906156fb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d68906156fb565b8015610db55780601f10610d8a57610100808354040283529160200191610db5565b820191906000526020600020905b815481529060010190602001808311610d9857829003601f168201915b5050505050905090565b600033610dcd818585612d59565b5060019392505050565b6011546001600160a01b03166305a8b83082610e08816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039093166004840152602483019190915260448201526064015b600060405180830381600087803b158015610e7257600080fd5b505af1158015610e86573d6000803e3d6000fd5b5050505050565b6000606080610eac610e9f8686612eb1565b610ea76115e8565b612f7a565b9298909750919550909350505050565b6000606080610ed8610ece8686612eb1565b6000806000612fc4565b919790965090945092505050565b606080600080610ef4611c6d565b815191935091506000908067ffffffffffffffff811115610f1757610f1761569d565b604051908082528060200260200182016040528015610f40578160200160208202803683370190505b5095505b8351821015610f9857610f6f848381518110610f6257610f626156cc565b6020026020010151612ff1565b868381518110610f8157610f816156cc565b602002602001018181525050816001019150610f44565b5081518067ffffffffffffffff811115610fb457610fb461569d565b604051908082528060200260200182016040528015610fdd578160200160208202803683370190505b509450600091505b825182101561102c57611003838381518110610f6257610f626156cc565b858381518110611015576110156156cc565b602002602001018181525050816001019150610fe5565b505050509091565b600033611042858285613115565b61104d85858561318f565b60019150505b9392505050565b6060806110a76110996040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b846110a26115e8565b613382565b909590945092505050565b6110e0336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611116576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b546001600160a01b031661dead1461117057600b546040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0390911660048201526024015b60405180910390fd5b6009546040516000916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d554908390a3600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60006060806111df61341d565b60006111eb8888612eb1565b905060006111f76115e8565b90506000611206838884613476565b905080891115611263576040517f691bf43d0000000000000000000000000000000000000000000000000000000081526001600160a01b0380891660048301528b166024820152604481018a905260648101829052608401611167565b600061126f8484612f7a565b9299509750909550905080156112bc577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb7809140427600184836040516112b393929190615777565b60405180910390a15b6112cb84338b8b8b8b8b613512565b505050506112d96001600d55565b9450945094915050565b60006060806112f061341d565b60006112fc8787612eb1565b905060008061130b83836136a7565b905080881115611368576040517ff0cc4e3b0000000000000000000000000000000000000000000000000000000081526001600160a01b0380891660048301528a1660248201526044810189905260648101829052608401611167565b60006113748484613721565b9299509750909550905080156113c1577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb7809140427600084836040516113b893929190615777565b60405180910390a15b6113ce3389898989613768565b505050506113dc6001600d55565b93509350939050565b60006113ef611ff9565b156113fc57506000919050565b610d27612ac7565b600061140e61380f565b905090565b600033610dcd8185856114268383612a1f565b61143091906157f5565b612d59565b60408051808201825260008082526020820152600c5491517f3b6f743b00000000000000000000000000000000000000000000000000000000815290916001600160a01b031690633b6f743b90611492908690869060040161593e565b6040805180830381865afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105391906159e2565b611500336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611536576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254600003611572576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e8190556040518181527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a150565b6115b7338261393a565b6011546001600160a01b03166305a8b83033610e08816001600160a01b031660009081526020819052604090205490565b601154604080517f57b17a5200000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916357b17a529160048083019260209291908290030181865afa15801561164b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166f91906159fe565b61ffff16905090565b601154600090819081906001600160a01b031663757bb813856116b0816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b03909316600484015260248301919091526044820152606401606060405180830381865afa15801561171c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117409190615a22565b9250925092509193909250565b61177b336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6117b1576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254156117eb576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000806117f6611c6d565b815191935091508814611835576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8051861461186f576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b828511156118c2576040517ff35b483d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810186905260448101849052606401611167565b600e8390556040518381527f0120f799fc820eabb910038e9cce6e8024add369b4d780181846e300df2844849060200160405180910390a161197b3385878c8c80806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050508b8b8080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061376892505050565b505050505050505050565b6001600160a01b038116600090815260076020526040812054610d27565b6000606080828080836119d87f00000000000000000000000000000000000000000000000000000000000000006005613aaa565b611a037f00000000000000000000000000000000000000000000000000000000000000006006613aaa565b604080516000808252602082019092527f0f000000000000000000000000000000000000000000000000000000000000009b939a50919850469750309650945092509050565b606080611a9183611a896040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b600080613b55565b91509150915091565b6000606080610eac611aac8686612eb1565b6000613721565b606060048054610d3c906156fb565b606080611acd61341d565b6000611ad884613b8e565b905080861115611b2d576040517fdc1803de0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810187905260448101829052606401611167565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260025460a082015290611b686115e8565b90506000611b77838a84613382565b909750955090508015611bc1577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb780914042760018383604051611bb893929190615777565b60405180910390a15b611bd083338a8a8d8b8b613512565b50505050611bde6001600d55565b935093915050565b601154604080517f9a6b27cf00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691639a6b27cf9160048083019260209291908290030181865afa158015611c49573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140e9190615a5b565b606080611c78612a71565b9150611c82610c6b565b90509091565b611cb6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611cec576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116611d37576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611167565b600c80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f7ab5072a2f334db02e20cd6aa963f87434f813ef38fba53eea68704c7445ddb990600090a250565b60003381611da78286612a1f565b905083811015611e1f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401611167565b611e2c8286868403612d59565b506001949350505050565b611e65336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b611e9b576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826001600160a01b0316826001600160a01b03167f879f92dded0f26b83c3e00b12e0395dc72cfc3077343d1854ed6988edd1f909683604051611ee091815260200190565b60405180910390a3611efc6001600160a01b0384168383613bdb565b505050565b600033610dcd81858561318f565b60608167ffffffffffffffff811115611f2a57611f2a61569d565b604051908082528060200260200182016040528015611f5d57816020015b6060815260200190600190039081611f485790505b50905060005b82811015611ff257611fcd30858584818110611f8157611f816156cc565b9050602002810190611f939190615a78565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613c8492505050565b828281518110611fdf57611fdf6156cc565b6020908102919091010152600101611f63565b5092915050565b601154604080517faf1454d300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163af1454d39160048083019260209291908290030181865afa158015611c49573d6000803e3d6000fd5b61208a336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6120c0576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661210b576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0382166004820152602401611167565b600b546009546040516001600160a01b038085169381169216907f64420d4a41c6ed4de2bccbf33192eea18e576c5b23c79c3a722d4e9534c2e8d890600090a4600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6000611053612195846000612eb1565b8361219e6115e8565b613476565b6121d1336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b612207576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661224a576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401611167565b6040516001600160a01b038216907f2781e03d8cf8be1845f40e150af1187b0cdb48dccd761a708f5e5b612a865d1d90600090a2600f80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6122e6336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b61231c576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038316612367576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0384166004820152602401611167565b604080518082019091526000808252602082015260005b82811015610e8657838382818110612398576123986156cc565b9050604002018036038101906123ae9190615add565b91508160200151151582600001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b03167ff5736e75de2c751f775d4c5ed517289f77074f8c337f451ba4c0c3ed1dd7f9ad60405160405180910390a46020828101516001600160a01b0387166000908152600a8352604080822086517fffffffff000000000000000000000000000000000000000000000000000000001683529093529190912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161237e565b60006110536124a1846000612eb1565b60006136a7565b6000610d2782613b8e565b6124bb614e30565b60408051808201825260008082526020820152908501356124dd33308361318f565b600c546040517fc7c7f5b30000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063c7c7f5b390349061252c908a908a908a90600401615b1c565b60c06040518083038185885af115801561254a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256f9190615b59565b805191945092506000906125839083615c0b565b905080156125965761259630338361318f565b5050935093915050565b6060806125ab61341d565b60006125b6846113e5565b90508085111561260b576040517ff35b483d0000000000000000000000000000000000000000000000000000000081526001600160a01b03851660048201526024810186905260448101829052606401611167565b6000806126188783613ca9565b919650945090508015612662577f7e81c1439e2f6851efe3288a5d0ae235c1729a6272f98ed0a4b5eb78091404276000838360405161265993929190615777565b60405180910390a15b61266f3387898888613768565b50505061267c6001600d55565b9250929050565b6126b1336000357fffffffff00000000000000000000000000000000000000000000000000000000166133b4565b6126e7576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811661272a576040517f8e4c8aa600000000000000000000000000000000000000000000000000000000815260006004820152602401611167565b6011546001600160a01b0382811691161461279f57601180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f60a0f5b9f9e81e98216071b85826681c796256fe3d1354ecb675580fba64fa6990600090a25b601154604080517ff8d8989800000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163f8d898989160048083019260209291908290030181865afa158015612802573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128269190615c1e565b6010549091506001600160a01b0380831691161461289e57601080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f066f10e42df49bba948e2e987181156b9451f4d4db55b013c5ccc92e6ca80c1f90600090a25b5050565b834211156128f25760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401611167565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886129218c613d17565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061297c82613d3f565b9050600061298c82878787613d87565b9050896001600160a01b0316816001600160a01b0316146129ef5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401611167565b6129fa8a8a8a612d59565b50505050505050505050565b606080612a14836000613ca9565b509094909350915050565b600c546000906001600160a01b03838116911614612a67576001600160a01b03808416600090815260016020908152604080832093861683529290522054611053565b611053565b5060001992915050565b604080516001808252818301909252606091602080830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610cad57610cad6156cc565b600080612ad3600e5490565b90506000198103612ae357919050565b612af5612aef60025490565b82613db1565b91505090565b600b546001600160a01b03163314612b3f576040517fc0185c6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095460405133916001600160a01b0316907f5cd6b24c0149d980c82592262b3a81294b39f8f6e3c004126aaf0828c787d55490600090a3600980547fffffffffffffffffffffffff00000000000000000000000000000000000000009081163317909155600b80549091169055565b6011546001600160a01b031663d805b07433612be0816001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b039384166004820152602481019290925260448201529084166064820152608401610e58565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031603612c845750600192600092509050565b6010546001600160a01b0390811690841603612ca65750600092600192509050565b506000928392509050565b6000612cbc82613dc8565b80612d0857507fffffffff0000000000000000000000000000000000000000000000000000000082167ff757005600000000000000000000000000000000000000000000000000000000145b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167f948a39e7000000000000000000000000000000000000000000000000000000001492915050565b6001600160a01b038316612dd45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b038216612e505760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081018290529080612eed85612c3c565b91509150818015612efc575080155b80612f0d575081158015612f0d5750805b15612f72576040518060c00160405280866001600160a01b0316815260200183151581526020018215158152602001858152602001612f4b87612ff1565b8152602001612f5960025490565b81525092508260800151600003612f7257600060608401525b505092915050565b6000806060806000612fa2878860200151612f96576000612f99565b60015b60006001612fc4565b90945092509050612fb581876001613f90565b97908803965091945092509050565b6000606080612fd38787613ff3565b9250612fe183888787613b55565b9398909750929550919350505050565b6010546000906001600160a01b039081169083160361308157601160009054906101000a90046001600160a01b03166001600160a01b03166359b97ddb6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190615c3b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03160361310d57601160009054906101000a90046001600160a01b03166001600160a01b031663dd50e2d36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561305d573d6000803e3d6000fd5b506000919050565b60006131218484612a1f565b90506000198114613189578181101561317c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611167565b6131898484848403612d59565b50505050565b6001600160a01b03831661320b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0382166132875760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b038316600090815260208190526040902054818110156133165760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3613189848484614025565b6000606080613392858585614150565b90955092506133a5858760006001613b55565b93979096509294509192505050565b6009546000906001600160a01b03848116911614806110535750506001600160a01b03919091166000908152600a602090815260408083207fffffffff000000000000000000000000000000000000000000000000000000009094168352929052205460ff1690565b6002600d540361346f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401611167565b6002600d55565b6000613480611be6565b1561348d57506000611053565b83608001516000036134a157506000611053565b6001600160a01b0383166134b85750600019611053565b6001600160a01b03831660009081526020819052604081205490506134df81846000614150565b50905060006134ef82878361417e565b905085608001518110613506578560800151613508565b805b9695505050505050565b8260000361354c576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416613597576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0385166004820152602401611167565b6001600160a01b0385166135e2576040517f8e4c8aa60000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602401611167565b836001600160a01b0316866001600160a01b03161461360657613606848785613115565b6136148685878686866141b1565b61361e848461393a565b828760a0018181516136309190615c0b565b90525060a0870151600003613645576000600e555b836001600160a01b0316856001600160a01b0316876001600160a01b03167f728a5684b1f77b03e07bd227ddcef96ef31c5268eb61122aabcd651e08f752a185858860405161369693929190615c54565b60405180910390a450505050505050565b60006136b1611ff9565b156136be57506000610d27565b82608001516000036136d257506000610d27565b60006136dd600e5490565b905060001981036136ef579050610d27565b60006136ff8560a0015183613db1565b905061371861371082866001613f90565b86600061417e565b95945050505050565b60008060608061374786876020015161373b57600161373e565b60005b60016000612fc4565b9195509250905061375a84866000614150565b909790965091945092509050565b826000036137a2576040517f54db0c8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6137af85858585856142f8565b6137b98484614453565b836001600160a01b0316856001600160a01b03167f8bf99c37e0a09491ed7cb29409f9fcd5a61a01752ab57bbf20d72ce465330dab84848760405161380093929190615c54565b60405180910390a35050505050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561386857507f000000000000000000000000000000000000000000000000000000000000000046145b1561389257507f000000000000000000000000000000000000000000000000000000000000000090565b61140e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b6001600160a01b0382166139b65760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b03821660009081526020819052604090205481811015613a455760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401611167565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3611efc83600084614025565b606060ff8314613ac457613abd8361451a565b9050610d27565b818054613ad0906156fb565b80601f0160208091040260200160405190810160405280929190818152602001828054613afc906156fb565b8015613b495780601f10613b1e57610100808354040283529160200191613b49565b820191906000526020600020905b815481529060010190602001808311613b2c57829003601f168201915b50505050509050610d27565b606080600080613b63611c6d565b91509150613b7388888489614559565b9350613b8188888388614559565b9250505094509492505050565b6000613b98611be6565b15613ba557506000919050565b6001600160a01b03821615613bd2576001600160a01b038216600090815260208190526040902054610d27565b60001992915050565b6040516001600160a01b038316602482015260448101829052611efc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526146a2565b60606110538383604051806060016040528060278152602001615cd66027913961478a565b606080600080613cbb86866001613f90565b90508581039150613d0881613cff6040805160c08101825260008082526020820181905291810182905260608101829052608081019190915260025460a082015290565b60016000613b55565b90979096509194509092505050565b6001600160a01b03811660009081526007602052604090208054600181018255905b50919050565b6000610d27613d4c61380f565b836040517f19010000000000000000000000000000000000000000000000000000000000008152600281019290925260228201526042902090565b6000806000613d98878787876147f8565b91509150613da5816148bc565b5090505b949350505050565b600081831115613dc357506000610d27565b500390565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fec3e74c8000000000000000000000000000000000000000000000000000000001480613e5b57507fffffffff0000000000000000000000000000000000000000000000000000000082167fa219a02500000000000000000000000000000000000000000000000000000000145b80613ea757507fffffffff0000000000000000000000000000000000000000000000000000000082167f36372b0700000000000000000000000000000000000000000000000000000000145b80613ef357507fffffffff0000000000000000000000000000000000000000000000000000000082167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b80613f3f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f84b0196e00000000000000000000000000000000000000000000000000000000145b80610d2757507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a7000000000000000000000000000000000000000000000000000000001492915050565b600082600003613fa1575082611053565b6127108310613fdc576040517fd252903400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083612710039050613718856127108386614a24565b6000826080015160001461401c5760a083015160808401516060850151612a6292909185614a24565b50600092915050565b816001600160a01b0316836001600160a01b03161415801561404f57506001600160a01b03831615155b801561406357506001600160a01b03821615155b15611efc576011546001600160a01b03166385a3a58984614099816001600160a01b031660009081526020819052604090205490565b856140b9876001600160a01b031660009081526020819052604090205490565b6002546040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1681526001600160a01b03958616600482015260248101949094529390911660448301526064820152608481019190915260a401600060405180830381600087803b15801561413357600080fd5b505af1158015614147573d6000803e3d6000fd5b50505050505050565b6000808360000361416657508390506000611bde565b614171858585614ab7565b9594869003949350505050565b600082608001516000146141a757608083015160a08401516141a291869185614a24565b613da9565b6000949350505050565b6000826000815181106141c6576141c66156cc565b602002602001015190506000826000815181106141e5576141e56156cc565b6020908102919091010151601154601054919250614212916001600160a01b03908116918b911684614adb565b6001600160a01b038716600090815260208190526040812054614236908790615c0b565b905060008661424460025490565b61424e9190615c0b565b6011546040517f167860a700000000000000000000000000000000000000000000000000000000815260048101879052602481018690526001600160a01b038c811660448301528b811660648301526084820186905260a4820184905292935091169063167860a79060c401600060405180830381600087803b1580156142d457600080fd5b505af11580156142e8573d6000803e3d6000fd5b5050505050505050505050505050565b60008260008151811061430d5761430d6156cc565b6020026020010151905060008260008151811061432c5761432c6156cc565b6020908102919091010151601154909150614376906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116918a911685614adb565b6001600160a01b03861660009081526020819052604081205461439a9087906157f5565b90506000866143a860025490565b6143b291906157f5565b6011546040517f86dd051800000000000000000000000000000000000000000000000000000000815260048101879052602481018690526001600160a01b038b8116604483015260648201869052608482018490529293509116906386dd05189060a401600060405180830381600087803b15801561443057600080fd5b505af1158015614444573d6000803e3d6000fd5b50505050505050505050505050565b6001600160a01b0382166144a95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401611167565b80600260008282546144bb91906157f5565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361289e60008383614025565b6060600061452783614b2c565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b81516060908067ffffffffffffffff8111156145775761457761569d565b6040519080825280602002602001820160405280156145a0578160200160208202803683370190505b5091506000805b82811015614697578581815181106145c1576145c16156cc565b602002602001015191508660a001516000036145fc5760008482815181106145eb576145eb6156cc565b60200260200101818152505061468f565b6001600160a01b03821615801590614620575086516001600160a01b038381169116145b1561463c5786606001518482815181106145eb576145eb6156cc565b614670614662878381518110614654576146546156cc565b602002602001015189614b6d565b60a08901518a919088614a24565b848281518110614682576146826156cc565b6020026020010181815250505b6001016145a7565b505050949350505050565b60006146f7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614b9f9092919063ffffffff16565b90508051600014806147185750808060200190518101906147189190615a5b565b611efc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401611167565b6060600080856001600160a01b0316856040516147a79190615c8a565b600060405180830381855af49150503d80600081146147e2576040519150601f19603f3d011682016040523d82523d6000602084013e6147e7565b606091505b509150915061350886838387614bae565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561482f57506000905060036148b3565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614883573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166148ac576000600192509250506148b3565b9150600090505b94509492505050565b60008160048111156148d0576148d0615748565b036148d85750565b60018160048111156148ec576148ec615748565b036149395760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401611167565b600281600481111561494d5761494d615748565b0361499a5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401611167565b60038160048111156149ae576149ae615748565b03614a215760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401611167565b50565b6000614a31858585614c27565b90506001826001811115614a4757614a47615748565b03613da9578280614a5a57614a5a615ca6565b84860915613da957600019811015614a7457600101613da9565b6040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018690526024810185905260448101849052606401611167565b6000612710838103908410614acd576000613718565b613718858261271086614a24565b6040516001600160a01b03808516602483015283166044820152606481018290526131899085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401613c20565b600060ff8216601f811115610d27576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081600001516001600160a01b0316836001600160a01b031614614b9557612a6283612ff1565b5060800151919050565b6060613da98484600085614d14565b60608315614c1d578251600003614c16576001600160a01b0385163b614c165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401611167565b5081613da9565b613da98383614e06565b6000808060001985870985870292508281108382030391505080600003614c6157838281614c5757614c57615ca6565b0492505050611053565b838110614cab576040517f63a05778000000000000000000000000000000000000000000000000000000008152600481018790526024810186905260448101859052606401611167565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b606082471015614d8c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401611167565b600080866001600160a01b03168587604051614da89190615c8a565b60006040518083038185875af1925050503d8060008114614de5576040519150601f19603f3d011682016040523d82523d6000602084013e614dea565b606091505b5091509150614dfb87838387614bae565b979650505050505050565b815115614e165781518083602001fd5b8060405162461bcd60e51b81526004016111679190614f70565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001614e73604051806040016040528060008152602001600081525090565b905290565b60008151808452602080850194506020840160005b83811015614eb25781516001600160a01b031687529582019590820190600101614e8d565b509495945050505050565b6020815260006110536020830184614e78565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114614f0057600080fd5b919050565b600060208284031215614f1757600080fd5b61105382614ed0565b60005b83811015614f3b578181015183820152602001614f23565b50506000910152565b60008151808452614f5c816020860160208601614f20565b601f01601f19169290920160200192915050565b6020815260006110536020830184614f44565b6001600160a01b0381168114614a2157600080fd5b60008060408385031215614fab57600080fd5b8235614fb681614f83565b946020939093013593505050565b600060208284031215614fd657600080fd5b813561105381614f83565b60008151808452602080850194506020840160005b83811015614eb257815187529582019590820190600101614ff6565b83815260606020820152600061502b6060830185614fe1565b82810360408401526135088185614fe1565b6040815260006150506040830185614fe1565b82810360208401526137188185614fe1565b60008060006060848603121561507757600080fd5b833561508281614f83565b9250602084013561509281614f83565b929592945050506040919091013590565b6000602082840312156150b557600080fd5b5035919050565b600080600080608085870312156150d257600080fd5b84356150dd81614f83565b93506020850135925060408501356150f481614f83565b9150606085013561510481614f83565b939692955090935050565b60008060006060848603121561512457600080fd5b833561512f81614f83565b925060208401359150604084013561514681614f83565b809150509250925092565b600060e08284031215613d3957600080fd5b8015158114614a2157600080fd5b6000806040838503121561518457600080fd5b823567ffffffffffffffff81111561519b57600080fd5b6151a785828601615151565b92505060208301356151b881615163565b809150509250929050565b815181526020808301519082015260408101610d27565b60008083601f8401126151ec57600080fd5b50813567ffffffffffffffff81111561520457600080fd5b6020830191508360208260051b850101111561267c57600080fd5b600080600080600080600060a0888a03121561523a57600080fd5b873567ffffffffffffffff8082111561525257600080fd5b61525e8b838c016151da565b909950975060208a013591508082111561527757600080fd5b506152848a828b016151da565b90965094505060408801359250606088013561529f81614f83565b809250506080880135905092959891949750929550565b7fff000000000000000000000000000000000000000000000000000000000000008816815260e0602082015260006152f160e0830189614f44565b82810360408401526153038189614f44565b90508660608401526001600160a01b03861660808401528460a084015282810360c08401526153328185614fe1565b9a9950505050505050505050565b60008060006060848603121561535557600080fd5b83359250602084013561536781614f83565b9150604084013561514681614f83565b60408152600061538a6040830185614e78565b82810360208401526137188185614e78565b600080602083850312156153af57600080fd5b823567ffffffffffffffff8111156153c657600080fd5b6153d2858286016151da565b90969095509350505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015615453577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452615441858351614f44565b94509285019290850190600101615407565b5092979650505050505050565b6000806040838503121561547357600080fd5b823561547e81614f83565b915060208301356151b881614f83565b6000806000604084860312156154a357600080fd5b83356154ae81614f83565b9250602084013567ffffffffffffffff808211156154cb57600080fd5b818601915086601f8301126154df57600080fd5b8135818111156154ee57600080fd5b8760208260061b850101111561550357600080fd5b6020830194508093505050509250925092565b6000806000838503608081121561552c57600080fd5b843567ffffffffffffffff81111561554357600080fd5b61554f87828801615151565b9450506040601f198201121561556457600080fd5b50602084019150606084013561514681614f83565b600060c0820190508351825267ffffffffffffffff602085015116602083015260408401516155b5604084018280518252602090810151910152565b5082516080830152602083015160a0830152611053565b600080604083850312156155df57600080fd5b8235915060208301356151b881614f83565b600080600080600080600060e0888a03121561560c57600080fd5b873561561781614f83565b9650602088013561562781614f83565b95506040880135945060608801359350608088013560ff8116811461564b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561567b57600080fd5b823561568681614f83565b915061569460208401614ed0565b90509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c9082168061570f57607f821691505b602082108103613d39577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60608101600285106157b2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b938152602081019290925260409091015290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115610d2757610d276157c6565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261583d57600080fd5b830160208101925035905067ffffffffffffffff81111561585d57600080fd5b80360382131561267c57600080fd5b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b6000813563ffffffff811681146158ad57600080fd5b63ffffffff81168452506020820135602084015260408201356040840152606082013560608401526158e26080830183615808565b60e060808601526158f760e08601828461586c565b91505061590760a0840184615808565b85830360a087015261591a83828461586c565b9250505061592b60c0840184615808565b85830360c087015261350883828461586c565b6040815260006159516040830185615897565b905082151560208301529392505050565b6040805190810167ffffffffffffffff811182821017156159ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290565b6000604082840312156159c457600080fd5b6159cc615962565b9050815181526020820151602082015292915050565b6000604082840312156159f457600080fd5b61105383836159b2565b600060208284031215615a1057600080fd5b815161ffff8116811461105357600080fd5b600080600060608486031215615a3757600080fd5b835192506020840151615a4981614f83565b80925050604084015190509250925092565b600060208284031215615a6d57600080fd5b815161105381615163565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112615aad57600080fd5b83018035915067ffffffffffffffff821115615ac857600080fd5b60200191503681900382131561267c57600080fd5b600060408284031215615aef57600080fd5b615af7615962565b615b0083614ed0565b81526020830135615b1081615163565b60208201529392505050565b608081526000615b2f6080830186615897565b905083356020830152602084013560408301526001600160a01b0383166060830152949350505050565b60008082840360c0811215615b6d57600080fd5b6080811215615b7b57600080fd5b506040516060810167ffffffffffffffff8282108183111715615bc7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b8160405285518352602086015191508082168214615be457600080fd5b506020820152615bf785604086016159b2565b6040820152915061569484608085016159b2565b81810381811115610d2757610d276157c6565b600060208284031215615c3057600080fd5b815161105381614f83565b600060208284031215615c4d57600080fd5b5051919050565b606081526000615c676060830186614fe1565b8281036020840152615c798186614fe1565b915050826040830152949350505050565b60008251615c9c818460208701614f20565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212201e562c5a89461fc273202901ebaf3987300a69ba55aff1daae001494702bcea064736f6c63430008160033000000000000000000000000b20aae0fe007519b7ce6f090a2ab8353b3da5d8000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000ab87046fbb341d058f17cbc4c1133f25a20a52f000000000000000000000000e72df5a35d596b668b22a9a0d4e091a1ce6fb1f4000000000000000000000000000000000000000000000000000000000000000c4f726967616d6920684f484d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004684f484d00000000000000000000000000000000000000000000000000000000