608060405234801561001057600080fd5b50614a06806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806395d89b41116100f9578063c87b56dd11610097578063e85d0daf11610071578063e85d0daf146105c1578063e985e9c5146105d4578063efee942614610610578063fa461e331461064c57600080fd5b8063c87b56dd14610563578063d8e3af1f14610576578063e34f4ab3146105ae57600080fd5b8063ac9650d8116100d3578063ac9650d81461050a578063b88d4fde1461052a578063c181596c1461053d578063c4d66de81461055057600080fd5b806395d89b411461036d57806399fbab8814610375578063a22cb465146104f757600080fd5b80632f745c59116101665780634f6ccce7116101405780634f6ccce7146102cc5780636352211e146102df578063696d2fa4146102f257806370a082311461035a57600080fd5b80632f745c591461029357806342842e0e146102a657806342966c68146102b957600080fd5b8063095ea7b3116101a2578063095ea7b3146102315780630c49ccbe1461024657806318160ddd1461026e57806323b872dd1461028057600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063081812fc14610206575b600080fd5b6101dc6101d7366004613ba9565b61065f565b60405190151581526020015b60405180910390f35b6101f961068a565b6040516101e89190613c16565b610219610214366004613c29565b61071c565b6040516001600160a01b0390911681526020016101e8565b61024461023f366004613c57565b610743565b005b610259610254366004613c83565b6107cf565b604080519283526020830191909152016101e8565b6099545b6040519081526020016101e8565b61024461028e366004613c95565b610bfb565b6102726102a1366004613c57565b610c2c565b6102446102b4366004613c95565b610cc2565b6101dc6102c7366004613c29565b610cdd565b6102726102da366004613c29565b610e2c565b6102196102ed366004613c29565b610ebf565b610305610300366004613d4a565b610f1f565b6040516101e89190600060c0820190508251825260208301516020830152604083015160408301526001600160801b0360608401511660608301526080830151608083015260a083015160a083015292915050565b610272610368366004613e1a565b610f6b565b6101f9610ff1565b61047a610383366004613c29565b600081815260ca6020908152604080832081516101008101835281546001600160a01b038082168352600160a01b808304600290810b858901908152600160b81b909404810b8588019081526001808801546001600160801b039081166060808a01918252948a015460808a0190815260038b015460a08b019081526004909b015480841660c08c01908152600160801b90910490931660e08b019081529e8e5260c98d529c8b90208b519586018c52805488168087529301549687169b85018c90529490950462ffffff169290980182905294519351945191519851955192519951939a96999798909794969195909490939091565b604080516001600160a01b039c8d1681529a8c1660208c01529a9098169989019990995262ffffff9095166060880152600293840b60808801529190920b60a08601526001600160801b0391821660c086015260e085015261010084019190915292831661012083015291909116610140820152610160016101e8565b610244610505366004613e45565b611000565b61051d610518366004613e7e565b61100f565b6040516101e89190613ef3565b610244610538366004613f55565b611104565b61025961054b366004613c29565b61113c565b61024461055e366004613e1a565b61128d565b6101f9610571366004613c29565b61141a565b610589610584366004614019565b61148e565b604080516001600160801b0390941684526020840192909252908201526060016101e8565b6102446105bc36600461402c565b611741565b6102596105cf36600461406e565b611760565b6101dc6105e2366004614080565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61062361061e3660046140ae565b611b60565b604080519485526020850193909352918301526001600160801b031660608201526080016101e8565b61024461065a3660046140c1565b611f80565b60006001600160e01b0319821663780e9d6360e01b148061068457506106848261212e565b92915050565b60606065805461069990614141565b80601f01602080910402602001604051908101604052809291908181526020018280546106c590614141565b80156107125780601f106106e757610100808354040283529160200191610712565b820191906000526020600020905b8154815290600101906020018083116106f557829003601f168201915b5050505050905090565b60006107278261217e565b506000908152606960205260409020546001600160a01b031690565b600061074e82610ebf565b9050806001600160a01b0316836001600160a01b0316036107c05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b6107ca83836121e0565b505050565b60008082356107de338261220e565b6107fa5760405162461bcd60e51b81526004016107b790614175565b8360800135804211156108455760405162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b60448201526064016107b7565b600061085760408701602088016141b0565b6001600160801b0316116108965760405162461bcd60e51b81526004016107b790602080825260049082015263306c697160e01b604082015260600190565b8435600081815260c960209081526040808320815160608101835281546001600160a01b03908116825260019283015490811682860152600160a01b900462ffffff168184015294845260ca835292819020928301546001600160801b031691610904918a01908a016141b0565b6001600160801b0316816001600160801b0316101561094b5760405162461bcd60e51b8152602060048201526003602482015262706f7360e81b60448201526064016107b7565b60cc5482546001600160a01b039091169063abf978e4908590600160a01b8104600290810b91600160b81b9004900b61098a60408e0160208f016141b0565b6040518563ffffffff1660e01b81526004016109a994939291906141f9565b60408051808303816000875af11580156109c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109eb9190614231565b909750955060408801358710801590610a08575087606001358610155b610a455760405162461bcd60e51b815260206004820152600e60248201526d736c69707061676520636865636b60901b60448201526064016107b7565b600080610a528a3561113c565b9150915088610a7e856002015484610a6a919061426b565b856001600160801b0316600160801b61228d565b610a88919061427e565b600485018054600090610aa59084906001600160801b031661427e565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555087610add856003015483610a6a919061426b565b610ae7919061427e565b600485018054601090610b0b908490600160801b90046001600160801b031661427e565b82546001600160801b039182166101009390930a9283029190920219909116179055506002840182905560038401819055610b4c60408b0160208c016141b0565b600185018054600090610b699084906001600160801b031661429e565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555089600001357f26f6a048ee9138f2c0ce266f322cb99228e8d619ae2bff30c67f8dcf9d2377b48b6020016020810190610bc691906141b0565b604080516001600160801b039092168252602082018d905281018b90526060015b60405180910390a250505050505050915091565b610c05338261220e565b610c215760405162461bcd60e51b81526004016107b7906142be565b6107ca83838361236b565b6000610c3783610f6b565b8210610c995760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016107b7565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6107ca83838360405180602001604052806000815250611104565b600081610cea338261220e565b610d065760405162461bcd60e51b81526004016107b790614175565b600083815260ca602090815260409182902082516101008101845281546001600160a01b0381168252600160a01b8104600290810b94830194909452600160b81b9004830b9381019390935260018101546001600160801b0390811660608501819052928201546080850152600382015460a085015260049091015480821660c0850152600160801b90041660e0830152606410801590610db2575060c08101516001600160801b0316155b8015610dc9575060e08101516001600160801b0316155b610dd7576000925050610e26565b600084815260ca6020526040812080546001600160d01b03191681556001810180546001600160801b0319169055600281018290556003810182905560040155610e20846124b0565b60019250505b50919050565b6000610e3760995490565b8210610e9a5760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016107b7565b60998281548110610ead57610ead61430b565b90600052602060002001549050919050565b6000818152606760205260408120546001600160a01b0316806106845760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107b7565b610f616040518060c0016040528060008152602001600081526020016000815260200160006001600160801b0316815260200160008152602001600081525090565b9695505050505050565b60006001600160a01b038216610fd55760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016107b7565b506001600160a01b031660009081526068602052604090205490565b60606066805461069990614141565b61100b338383612553565b5050565b60608167ffffffffffffffff81111561102a5761102a613cd6565b60405190808252806020026020018201604052801561105d57816020015b60608152602001906001900390816110485790505b50905060005b828110156110fd576110cd308585848181106110815761108161430b565b90506020028101906110939190614321565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125ee92505050565b8282815181106110df576110df61430b565b602002602001018190525080806110f59061436f565b915050611063565b5092915050565b61110e338361220e565b61112a5760405162461bcd60e51b81526004016107b7906142be565b61113684848484612613565b50505050565b600081815260ca6020908152604080832081516101008101835281546001600160a01b038082168352600160a01b808304600290810b858901908152600160b81b909404810b8588019081526001808801546001600160801b039081166060808a0191909152938901546080890152600389015460a089015260049889015480821660c08a0152600160801b90041660e08801528b8b5260c98a52888b2089519384018a528054861684520154808516998301999099529190970462ffffff168787015260cc5492519051955163a840465560e01b81528897949694958895949093169363a840465593611237938893909291309101614388565b60a060405180830381865afa158015611254573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127891906143c0565b80516020909101519097909650945050505050565b600054610100900460ff16158080156112ad5750600054600160ff909116105b806112c75750303b1580156112c7575060005460ff166001145b61132a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107b7565b6000805460ff19166001179055801561134d576000805461ff0019166101001790555b61139d6040518060400160405280601081526020016f131a5b5a5d1b195cdcc813140813919560821b8152506040518060400160405280600681526020016513135513919560d21b815250612646565b60cd8054336001600160a01b03199182161790915560cc80549091166001600160a01b0384161790556001600160b01b0160cb55801561100b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60606114258261217e565b600061143c60408051602081019091526000815290565b9050600081511161145c5760405180602001604052806000815250611487565b8061146684612677565b604051602001611477929190614448565b6040516020818303038152906040525b9392505050565b60008060008360e00135804211156114de5760405162461bcd60e51b8152602060048201526013602482015272151c985b9cd858dd1a5bdb881d1bdbc81bdb19606a1b60448201526064016107b7565b8435600081815260c96020908152604080832081516060808201845282546001600160a01b03908116835260019093015480841683870190815262ffffff600160a01b92839004811685880190815299895260ca88529786902086516101808101885285518716815291518616828901529851909716878601528754938416878301528304600290810b608080890191909152600160b81b909404900b60a080880191909152948c013560c080880191909152938c013560e08701528b0135610100860152908a01356101208501529189013561014084015288013561016083015291906115cb9061270a565b50919750955093506000806115e0893561113c565b9150915061160f8360020154836115f7919061426b565b60018501546001600160801b0316600160801b61228d565b60048401805460009061162c9084906001600160801b031661427e565b92506101000a8154816001600160801b0302191690836001600160801b031602179055506116638360030154826115f7919061426b565b600484018054601090611687908490600160801b90046001600160801b031661427e565b82546101009290920a6001600160801b0381810219909316918316021790915560028501849055600385018390556001850180548b935090916000916116cf9185911661427e565b82546101009290920a6001600160801b0381810219909316918316021790915560408051918b168252602082018a905281018890528a3591507f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f9060600160405180910390a250505050509193909250565b61174b33846121e0565b61175530846121e0565b6107ca828285610bfb565b600080823561176f338261220e565b61178b5760405162461bcd60e51b81526004016107b790614175565b8335600090815260ca6020908152604080832060c98352818420825160608101845281546001600160a01b03908116825260019283015490811695820195909552600160a01b90940462ffffff16928401929092526004810154918101546001600160801b038084169850600160801b90930483169650909391829116156119255760cc548454604051632afe5e3960e21b81526001600160a01b039092169163abf978e49161185a918791600160a01b8104600290810b92600160b81b909204900b906000906004016141f9565b60408051808303816000875af1158015611878573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061189c9190614231565b506118a99050883561113c565b600286015491935091506118d9906118c1908461426b565b60018601546001600160801b0316600160801b61228d565b6118ec906001600160801b031688614477565b96506119018460030154826118c1919061426b565b611914906001600160801b031687614477565b600285018390556003850182905595505b60cc5484546040516319fa103360e01b81526001600160a01b03909216916319fa10339161196f918791600160a01b8104600290810b92600160b81b909204900b9060040161448a565b60408051808303816000875af115801561198d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b191906144b2565b505082516040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f91906144e1565b60208501516040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9391906144e1565b6000600488015590508815611ad057818911611aaf5788611ab1565b815b8551909950611ad090611aca60408d0160208e01613e1a565b8b612d24565b8715611b0857808811611ae35787611ae5565b805b9750611b0885602001518b6020016020810190611b029190613e1a565b8a612d24565b89357f40d0efd1a53d60ecbf40971b9daf7dc90178c3aadc7aab1765632738fa8b8f01611b3b60408d0160208e01613e1a565b604080516001600160a01b039092168252602082018d905281018b9052606001610be7565b6000808080808080611b786040890160208a01613e1a565b6001600160a01b0316611b8e60208a018a613e1a565b6001600160a01b031610611bbe57611bac6040890160208a01613e1a565b611bb960208a018a613e1a565b611bdb565b611bcb6020890189613e1a565b611bdb60408a0160208b01613e1a565b91509150611cbb604051806101800160405280846001600160a01b03168152602001836001600160a01b031681526020018a6040016020810190611c1f91906144fa565b62ffffff168152602001611c3b6101808c016101608d01613e1a565b6001600160a01b03168152602001611c5960808c0160608d01614515565b60020b8152602001611c7160a08c0160808d01614515565b60020b81526020018a60a0013581526020018a60c0013581526020018a60e0013581526020018a610100013581526020018a610120013581526020018a610140013581525061270a565b91985096509094509250611d28611cda6101808a016101608b01613e1a565b60cb80546001600160b01b0316906000611cf383614532565b91906101000a8154816001600160b01b0302191690836001600160b01b031602179055506001600160b01b0316985088612e24565b60408051610100810190915280611d476101808b016101608c01613e1a565b6001600160a01b03168152602001611d6560808b0160608c01614515565b60020b8152602001611d7d60a08b0160808c01614515565b600290810b82526001600160801b03808816602080850191909152600060408086018290526060808701839052608080880184905260a09788018490528f845260ca855292829020885181548a8701518b86015162ffffff908116600160b81b0262ffffff60b81b1991909216600160a01b026001600160b81b03199093166001600160a01b03948516179290921791909116178255898301516001830180549189166001600160801b0319909216919091179055938901519681019690965595870151600386015560c087015160e0909701518416600160801b0296909316959095176004909301929092558051808401825286851681529385169184019190915282810191611e9391908c01908c016144fa565b62ffffff908116909152600089815260c960209081526040808320855181546001600160a01b0319166001600160a01b039182161782559286015160019091018054969092015192166001600160b81b031990951694909417600160a01b91909316029190911790915580611f078961113c565b60008b815260ca60209081526040918290206002810185905560030183905581516001600160801b038b1681529081018c90529081018a9052919350915089907f3067048beee31b25b2f1681f88dac838c8bba36af25bfb2b7cf7473a5847e35f9060600160405180910390a250505050509193509193565b60cc5460405163089ca8dd60e01b81523360048201526001600160a01b039091169063089ca8dd90602401602060405180830381865afa158015611fc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fec9190614560565b6120205760405162461bcd60e51b8152602060048201526005602482015264085c1bdbdb60da1b60448201526064016107b7565b60008061202f83850185614080565b9150915060008613156120b35760405163a9059cbb60e01b8152336004820152602481018790526001600160a01b0383169063a9059cbb906044016020604051808303816000875af1158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad9190614560565b50612126565b60405163a9059cbb60e01b8152336004820152602481018690526001600160a01b0382169063a9059cbb906044016020604051808303816000875af1158015612100573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121249190614560565b505b505050505050565b60006001600160e01b031982166380ac58cd60e01b148061215f57506001600160e01b03198216635b5e139f60e01b145b8061068457506301ffc9a760e01b6001600160e01b0319831614610684565b6000818152606760205260409020546001600160a01b03166121dd5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016107b7565b50565b600090815260696020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60008061221a83610ebf565b9050806001600160a01b0316846001600160a01b0316148061226157506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806122855750836001600160a01b031661227a8461071c565b6001600160a01b0316145b949350505050565b60008080600019858709858702925082811083820303915050806000036122c657600084116122bb57600080fd5b508290049050611487565b8084116122fe5760405162461bcd60e51b815260206004820152600660248201526536bab62234bb60d11b60448201526064016107b7565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b826001600160a01b031661237e82610ebf565b6001600160a01b0316146123a45760405162461bcd60e51b81526004016107b79061457d565b6001600160a01b0382166124065760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016107b7565b6124138383836001612fbd565b826001600160a01b031661242682610ebf565b6001600160a01b03161461244c5760405162461bcd60e51b81526004016107b79061457d565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b038781168552606884528285208054600019019055861680855282852080546001019055858552606790935292208054909216179055505050565b60006124bb82610ebf565b90506124cb816000846001612fbd565b6124d482610ebf565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b816001600160a01b0316836001600160a01b0316036125b45760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016107b7565b6001600160a01b039283166000908152606a6020908152604080832094909516825292909252919020805460ff1916911515919091179055565b606061148783836040518060600160405280602781526020016149aa602791396130ea565b61261e84848461236b565b61262a84848484613158565b6111365760405162461bcd60e51b81526004016107b7906145c2565b600054610100900460ff1661266d5760405162461bcd60e51b81526004016107b790614614565b61100b8282613259565b6060600061268483613299565b600101905060008167ffffffffffffffff8111156126a4576126a4613cd6565b6040519080825280601f01601f1916602001820160405280156126ce576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846126d857509392505050565b6000806000808460a0015160020b856080015160020b1261275e5760405162461bcd60e51b815260206004820152600e60248201526d151250d2d4d7d49155915494d15160921b60448201526064016107b7565b60cc54855160208701516040808901519051630b4c774160e11b81526001600160a01b039384166004820152918316602483015262ffffff166044820152911690631698ee8290606401602060405180830381865afa1580156127c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e99190614675565b60cc5486516020808901516040808b015181516001600160a01b03958616948101949094529184169083015262ffffff166060820152929350600092911690636519768890608001604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161286591815260200190565b602060405180830381865afa158015612882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128a69190614692565b90508086608001516128b891906146af565b60020b1580156128d85750808660a001516128d391906146af565b60020b155b61291a5760405162461bcd60e51b81526020600482015260136024820152725449434b535f4e4f545f444956495349424c4560681b60448201526064016107b7565b6000826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa15801561295a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061297e91906146f1565b505050505050905060006129958860800151613371565b905060006129a68960a00151613371565b9050816001600160a01b0316836001600160a01b0316116129d8576129d182828b6101000151613694565b9750612a57565b806001600160a01b0316836001600160a01b03161015612a44576000612a0484838c6101000151613694565b90506000612a1884868d610120015161373e565b9050806001600160801b0316826001600160801b031610612a395780612a3b565b815b99505050612a57565b612a5482828b610120015161373e565b97505b50505050612a6f856000015133308860c00151613774565b612a83856020015133308860e00151613774565b845160cc5460c087015160405163095ea7b360e01b81526001600160a01b039283166004820152602481019190915291169063095ea7b3906044016020604051808303816000875af1158015612add573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b019190614560565b50602085015160cc5460e087015160405163095ea7b360e01b81526001600160a01b039283166004820152602481019190915291169063095ea7b3906044016020604051808303816000875af1158015612b5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b839190614560565b5060cc546040805160608101825287516001600160a01b0390811682526020808a01518216908301528883015162ffffff1682840152608089015160a08a01519351635c48cfd360e11b8152919094169363b8919fa693612beb93928a903090600401614789565b60408051808303816000875af1158015612c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2d9190614231565b60c08701519194509250831015612c5c57612c5c856000015133858860c00151612c57919061426b565b612d24565b818560e001511115612c8157612c81856020015133848860e00151612c57919061426b565b612cb7604051806040016040528060098152602001680fcfcfdb5a5b9d195960ba1b815250856001600160801b03168585613876565b8461014001518310158015612cd157508461016001518210155b612d1d5760405162461bcd60e51b815260206004820152601d60248201527f494e53554646494349454e545f4c49515549444954595f4d494e54454400000060448201526064016107b7565b9193509193565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691612d8091906147d2565b6000604051808303816000865af19150503d8060008114612dbd576040519150601f19603f3d011682016040523d82523d6000602084013e612dc2565b606091505b5091509150818015612dec575080511580612dec575080806020019051810190612dec9190614560565b612e1d5760405162461bcd60e51b815260206004820152600260248201526114d560f21b60448201526064016107b7565b5050505050565b6001600160a01b038216612e7a5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016107b7565b6000818152606760205260409020546001600160a01b031615612edf5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107b7565b612eed600083836001612fbd565b6000818152606760205260409020546001600160a01b031615612f525760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016107b7565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600181111561302c5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016107b7565b816001600160a01b0385166130885761308381609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b6130ab565b836001600160a01b0316856001600160a01b0316146130ab576130ab85826138bf565b6001600160a01b0384166130c7576130c28161395c565b612e1d565b846001600160a01b0316846001600160a01b031614612e1d57612e1d8482613a0b565b6060600080856001600160a01b03168560405161310791906147d2565b600060405180830381855af49150503d8060008114613142576040519150601f19603f3d011682016040523d82523d6000602084013e613147565b606091505b5091509150610f6186838387613a4f565b60006001600160a01b0384163b1561324e57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061319c9033908990889088906004016147ee565b6020604051808303816000875af19250505080156131d7575060408051601f3d908101601f191682019092526131d491810190614821565b60015b613234573d808015613205576040519150601f19603f3d011682016040523d82523d6000602084013e61320a565b606091505b50805160000361322c5760405162461bcd60e51b81526004016107b7906145c2565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612285565b506001949350505050565b600054610100900460ff166132805760405162461bcd60e51b81526004016107b790614614565b606561328c8382614884565b5060666107ca8282614884565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106132d85772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613304576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061332257662386f26fc10000830492506010015b6305f5e100831061333a576305f5e100830492506008015b612710831061334e57612710830492506004015b60648310613360576064830492506002015b600a83106106845760010192915050565b60008060008360020b12613388578260020b613390565b8260020b6000035b9050620d89e88111156133b6576040516315e4079d60e11b815260040160405180910390fd5b6000816001166000036133cd57600160801b6133df565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613413576ffff97272373d413259a46990580e213a0260801c5b6004821615613432576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615613451576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615613470576fffcb9843d60f6159c9db58835c9266440260801c5b602082161561348f576fff973b41fa98c081472e6896dfb254c00260801c5b60408216156134ae576fff2ea16466c96a3843ec78b326b528610260801c5b60808216156134cd576ffe5dee046a99a2a811c461f1969c30530260801c5b6101008216156134ed576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b61020082161561350d576ff987a7253ac413176f2b074cf7815e540260801c5b61040082161561352d576ff3392b0822b70005940c7a398e4b70f30260801c5b61080082161561354d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b61100082161561356d576fd097f3bdfd2022b8845ad8f792aa58250260801c5b61200082161561358d576fa9f746462d870fdf8a65dc1f90e061e50260801c5b6140008216156135ad576f70d869a156d2a1b890bb3df62baf32f70260801c5b6180008216156135cd576f31be135f97d08fd981231505542fcfa60260801c5b620100008216156135ee576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b6202000082161561360e576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561362d576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561364a576b048a170391f7dc42444e8fa20260801c5b60008460020b131561366b5780600019816136675761366761465f565b0490505b64010000000081061561367f576001613682565b60005b60ff16602082901c0192505050919050565b6000826001600160a01b0316846001600160a01b031611156136b4579192915b60006136d7856001600160a01b0316856001600160a01b0316600160601b613ac8565b9050801561370c576137046136ff84836136f18989614944565b6001600160a01b0316613ac8565b613b02565b915050611487565b6137046136ff61372a856001600160a01b0389166136f18a8a614944565b866001600160a01b0316600160601b613ac8565b6000826001600160a01b0316846001600160a01b0316111561375e579192915b6122856136ff83600160601b6136f18888614944565b604080516001600160a01b0385811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17905291516000928392908816916137d891906147d2565b6000604051808303816000865af19150503d8060008114613815576040519150601f19603f3d011682016040523d82523d6000602084013e61381a565b606091505b50915091508180156138445750805115806138445750808060200190518101906138449190614560565b6121265760405162461bcd60e51b815260206004820152600360248201526229aa2360e91b60448201526064016107b7565b611136848484846040516024016138909493929190614964565b60408051601f198184030181529190526020810180516001600160e01b03166304772b3360e11b179052613b48565b600060016138cc84610f6b565b6138d6919061426b565b600083815260986020526040902054909150808214613929576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b60995460009061396e9060019061426b565b6000838152609a6020526040812054609980549394509092849081106139965761399661430b565b9060005260206000200154905080609983815481106139b7576139b761430b565b6000918252602080832090910192909255828152609a909152604080822084905585825281205560998054806139ef576139ef614993565b6001900381819060005260206000200160009055905550505050565b6000613a1683610f6b565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b60608315613abe578251600003613ab7576001600160a01b0385163b613ab75760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107b7565b5081612285565b6122858383613b69565b6000808060001985870985870292508281108382030391505080600003613af657600084116122bb57600080fd5b8084116122fe57600080fd5b806001600160801b0381168114613b435760405162461bcd60e51b81526020600482015260056024820152640858d85cdd60da1b60448201526064016107b7565b919050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b815115613b795781518083602001fd5b8060405162461bcd60e51b81526004016107b79190613c16565b6001600160e01b0319811681146121dd57600080fd5b600060208284031215613bbb57600080fd5b813561148781613b93565b60005b83811015613be1578181015183820152602001613bc9565b50506000910152565b60008151808452613c02816020860160208601613bc6565b601f01601f19169290920160200192915050565b6020815260006114876020830184613bea565b600060208284031215613c3b57600080fd5b5035919050565b6001600160a01b03811681146121dd57600080fd5b60008060408385031215613c6a57600080fd5b8235613c7581613c42565b946020939093013593505050565b600060a08284031215610e2657600080fd5b600080600060608486031215613caa57600080fd5b8335613cb581613c42565b92506020840135613cc581613c42565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613d1557613d15613cd6565b604052919050565b803562ffffff81168114613b4357600080fd5b8060020b81146121dd57600080fd5b8035613b4381613d30565b600080600080600080868803610100811215613d6557600080fd5b6060811215613d7357600080fd5b506040516060810181811067ffffffffffffffff82111715613d9757613d97613cd6565b6040528735613da581613c42565b81526020880135613db581613c42565b6020820152613dc660408901613d1d565b604082015295506060870135613ddb81613c42565b94506080870135935060a0870135613df281613d30565b9250613e0060c08801613d3f565b9150613e0e60e08801613d3f565b90509295509295509295565b600060208284031215613e2c57600080fd5b813561148781613c42565b80151581146121dd57600080fd5b60008060408385031215613e5857600080fd5b8235613e6381613c42565b91506020830135613e7381613e37565b809150509250929050565b60008060208385031215613e9157600080fd5b823567ffffffffffffffff80821115613ea957600080fd5b818501915085601f830112613ebd57600080fd5b813581811115613ecc57600080fd5b8660208260051b8501011115613ee157600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015613f4857603f19888603018452613f36858351613bea565b94509285019290850190600101613f1a565b5092979650505050505050565b60008060008060808587031215613f6b57600080fd5b8435613f7681613c42565b9350602085810135613f8781613c42565b935060408601359250606086013567ffffffffffffffff80821115613fab57600080fd5b818801915088601f830112613fbf57600080fd5b813581811115613fd157613fd1613cd6565b613fe3601f8201601f19168501613cec565b91508082528984828501011115613ff957600080fd5b808484018584013760008482840101525080935050505092959194509250565b60006101008284031215610e2657600080fd5b60008060006060848603121561404157600080fd5b83359250602084013561405381613c42565b9150604084013561406381613c42565b809150509250925092565b600060408284031215610e2657600080fd5b6000806040838503121561409357600080fd5b823561409e81613c42565b91506020830135613e7381613c42565b60006101a08284031215610e2657600080fd5b600080600080606085870312156140d757600080fd5b8435935060208501359250604085013567ffffffffffffffff808211156140fd57600080fd5b818701915087601f83011261411157600080fd5b81358181111561412057600080fd5b88602082850101111561413257600080fd5b95989497505060200194505050565b600181811c9082168061415557607f821691505b602082108103610e2657634e487b7160e01b600052602260045260246000fd5b6020808252600c908201526b139bdd08185c1c1c9bdd995960a21b604082015260600190565b6001600160801b03811681146121dd57600080fd5b6000602082840312156141c257600080fd5b81356114878161419b565b80516001600160a01b0390811683526020808301519091169083015260409081015162ffffff16910152565b60c0810161420782876141cd565b8460020b60608301528360020b60808301526001600160801b03831660a083015295945050505050565b6000806040838503121561424457600080fd5b505080516020909101519092909150565b634e487b7160e01b600052601160045260246000fd5b8181038181111561068457610684614255565b6001600160801b038181168382160190808211156110fd576110fd614255565b6001600160801b038281168282160390808211156110fd576110fd614255565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261433857600080fd5b83018035915067ffffffffffffffff82111561435357600080fd5b60200191503681900382131561436857600080fd5b9250929050565b60006001820161438157614381614255565b5060010190565b60c0810161439682876141cd565b600294850b60608301529290930b60808401526001600160a01b031660a090920191909152919050565b600060a082840312156143d257600080fd5b60405160a0810181811067ffffffffffffffff821117156143f5576143f5613cd6565b8060405250825181526020830151602082015260408301516144168161419b565b604082015260608301516144298161419b565b6060820152608083015161443c8161419b565b60808201529392505050565b6000835161445a818460208801613bc6565b83519083019061446e818360208801613bc6565b01949350505050565b8082018082111561068457610684614255565b60a0810161449882866141cd565b8360020b60608301528260020b6080830152949350505050565b600080604083850312156144c557600080fd5b82516144d08161419b565b6020840151909250613e738161419b565b6000602082840312156144f357600080fd5b5051919050565b60006020828403121561450c57600080fd5b61148782613d1d565b60006020828403121561452757600080fd5b813561148781613d30565b60006001600160b01b038281166002600160b01b0319810161455657614556614255565b6001019392505050565b60006020828403121561457257600080fd5b815161148781613e37565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052601260045260246000fd5b60006020828403121561468757600080fd5b815161148781613c42565b6000602082840312156146a457600080fd5b815161148781613d30565b60008260020b806146d057634e487b7160e01b600052601260045260246000fd5b808360020b0791505092915050565b805161ffff81168114613b4357600080fd5b600080600080600080600060e0888a03121561470c57600080fd5b875161471781613c42565b602089015190975061472881613d30565b9550614736604089016146df565b9450614744606089016146df565b9350614752608089016146df565b925060a088015160ff8116811461476857600080fd5b60c089015190925061477981613e37565b8091505092959891949750929550565b60e0810161479782886141cd565b600295860b60608301529390940b60808501526001600160801b039190911660a08401526001600160a01b031660c090920191909152919050565b600082516147e4818460208701613bc6565b9190910192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f6190830184613bea565b60006020828403121561483357600080fd5b815161148781613b93565b601f8211156107ca57600081815260208120601f850160051c810160208610156148655750805b601f850160051c820191505b8181101561212657828155600101614871565b815167ffffffffffffffff81111561489e5761489e613cd6565b6148b2816148ac8454614141565b8461483e565b602080601f8311600181146148e757600084156148cf5750858301515b600019600386901b1c1916600185901b178555612126565b600085815260208120601f198616915b82811015614916578886015182559484019460019091019084016148f7565b50858210156149345787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b038281168282160390808211156110fd576110fd614255565b6080815260006149776080830187613bea565b6020830195909552506040810192909252606090910152919050565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a0314e0750e537f68219fa4713067e8149d917256025327b794f13a4647784a664736f6c63430008120033