0x6080604052600436106102c4575f3560e01c806370a082311161017057806395d89b41116100d1578063cda4c40811610087578063ea5eda3211610062578063ea5eda321461093e578063f2fde38b1461095d578063ff91e66b1461097c575f80fd5b8063cda4c408146108e1578063d505accf14610900578063dd62ed3e1461091f575f80fd5b8063a8aa1b31116100b7578063a8aa1b311461085a578063a9059cbb146108a3578063c3342e56146108c2575f80fd5b806395d89b4114610827578063a457c2d71461083b575f80fd5b806384b0196e116101265780638cd92b0a1161010c5780638cd92b0a146107ab5780638da5cb5b146107ca57806391c01b4514610813575f80fd5b806384b0196e146107705780638a8c523c14610797575f80fd5b806372621eb51161015657806372621eb51461071c5780637ae33d5f1461073d5780637ecebe0014610751575f80fd5b806370a08231146106e9578063715018a614610708575f80fd5b8063387205ee116102255780634c2babef116101db5780636cb07772116101b65780636cb077721461068c5780636d84249b146106ab5780636e2ad758146106ca575f80fd5b80634c2babef1461065157806350abfffd146106705780636257840f14610684575f80fd5b806342966c681161020b57806342966c681461058057806347ee6a071461059f5780634a97c9c014610632575f80fd5b8063387205ee146105425780633950935114610561575f80fd5b8063307aebc91161027a578063313ce56711610260578063313ce5671461049157806332fe7b26146104d65780633644e5151461052e575f80fd5b8063307aebc91461041a57806330adf81f1461045e575f80fd5b806317ede0de116102aa57806317ede0de1461037757806318160ddd1461039857806323b872dd146103fb575f80fd5b806306fdde03146102cf578063095ea7b314610348575f80fd5b366102cb57005b5f80fd5b3480156102da575f80fd5b50604080516080810182525f8082529181018281527f0e44522e5369636b72657370656374045349434b000000000000000000000000601f830152815182016020018051605f84015283905251606090820101919091525b60405161033f91906154b0565b60405180910390f35b348015610353575f80fd5b506103676103623660046154e3565b61099b565b604051901515815260200161033f565b348015610382575f80fd5b5061039661039136600461551a565b6109b1565b005b3480156103a3575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000000547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff165b60405190815260200161033f565b348015610406575f80fd5b50610367610415366004615535565b610ac8565b348015610425575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001546a0100000000000000000000900460ff16610367565b348015610469575f80fd5b506103ed7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561049c575f80fd5b506104c47f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff909116815260200161033f565b3480156104e1575f80fd5b506105097f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161033f565b348015610539575f80fd5b506103ed610b31565b34801561054d575f80fd5b5061039661055c3660046154e3565b610c2a565b34801561056c575f80fd5b5061036761057b3660046154e3565b610e7a565b34801561058b575f80fd5b5061039661059a366004615573565b610f00565b3480156105aa575f80fd5b506105b3610f14565b60405161033f91905f60a08201905061ffff835116825267ffffffffffffffff602084015116602083015269ffffffffffffffffffff60408401511660408301526bffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015292915050565b34801561063d575f80fd5b5061036761064c3660046155a0565b610f47565b34801561065c575f80fd5b5061036761066b3660046155d3565b610f68565b34801561067b575f80fd5b50610396610f77565b610396610f83565b348015610697575f80fd5b506103676106a6366004615622565b61143f565b3480156106b6575f80fd5b506103676106c53660046156eb565b611449565b3480156106d5575f80fd5b506103676106e4366004615704565b611457565b3480156106f4575f80fd5b506103ed61070336600461572d565b61146d565b348015610713575f80fd5b506103966114ba565b348015610727575f80fd5b506107306114cb565b60405161033f9190615780565b348015610748575f80fd5b5061039661165b565b34801561075c575f80fd5b506103ed61076b36600461572d565b61182b565b34801561077b575f80fd5b50610784611862565b60405161033f9796959493929190615873565b3480156107a2575f80fd5b50610396611934565b3480156107b6575f80fd5b506103966107c5366004615943565b611992565b3480156107d5575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000005473ffffffffffffffffffffffffffffffffffffffff16610509565b34801561081e575f80fd5b506103966119ba565b348015610832575f80fd5b50610332611a0b565b348015610846575f80fd5b506103676108553660046154e3565b611a68565b348015610865575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff5473ffffffffffffffffffffffffffffffffffffffff16610509565b3480156108ae575f80fd5b506103676108bd3660046154e3565b611b43565b3480156108cd575f80fd5b506103676108dc36600461596d565b611b64565b3480156108ec575f80fd5b506103676108fb366004615992565b611b76565b34801561090b575f80fd5b5061039661091a3660046159c4565b611ba0565b34801561092a575f80fd5b506103ed610939366004615a2d565b611dfd565b348015610949575f80fd5b506105b361095836600461572d565b611e55565b348015610968575f80fd5b5061039661097736600461572d565b611f3a565b348015610987575f80fd5b506103ed610996366004615573565b611f9a565b5f6109a733848461213e565b5060015b92915050565b6109b9612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000028115610a125780547fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff1666012c012c012c0017905550565b80546101f4908290600190610a31908490610100900461ffff16615a91565b92506101000a81548161ffff021916908361ffff1602179055506101f4815f0160038282829054906101000a900461ffff16610a6d9190615a91565b92506101000a81548161ffff021916908361ffff1602179055506101f4815f0160058282829054906101000a900461ffff16610aa99190615a91565b92506101000a81548161ffff021916908361ffff1602179055505b5050565b5f80610ad261221a565b9050610add81612223565b610b0d57610aec858285612268565b610b058585856bffffffffffffffffffffffff1661234e565b915050610b2a565b610b058585856bffffffffffffffffffffffff166001612357565b505b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000014614610c0557610c00604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f5cd7a22db506c1258aac682a09858bcfe0cb5f915deca541c8c546a3f7d91072918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b905090565b507fef696112c60393a038507604a4508d891a76f4091e673010769918f160bbda8b90565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff166101408401528351908101938490525f93610160840191907f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d795750505050508152505090505f825f14610dbc5782610e48565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190615ab3565b61016083015151909150610e749073ffffffffffffffffffffffffffffffffffffffff86169083612565565b50505050565b5f80610e8461221a565b9050610ef6818585610ee7858973ffffffffffffffffffffffffffffffffffffffff9182165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000086020908152604080832093909416825291909152205490565b610ef19190615af7565b61213e565b5060019392505050565b610f11610f0b61221a565b8261264f565b50565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152610c0033611e55565b5f610b2a73ffffffffffffffffffffffffffffffffffffffff8416836127c3565b5f6109ab8262ffffff1661285c565b610f81305f610c2a565b565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180547fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b010000000000000000000000179055610fe0612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff5f61100b3061146d565b9050611059307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b61108530307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b6040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201819052602482018390525f60448301819052606483015260848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff169063f305d71990349060c40160606040518083038185885af1158015611131573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111569190615b0a565b5050507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e69190615b35565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128f9190615b35565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa1580156112fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113219190615b35565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116908117835561136c906129e8565b50815461138e9073ffffffffffffffffffffffffffffffffffffffff16612b4f565b81546113d390309073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b50505f6113fd7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60020180549115156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff909216919091179055565b5f6109ab82612b76565b5f6109ab8261ffff16612c1d565b5f6109ab8269ffffffffffffffffffff16612ce0565b5f61148d8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1692915050565b6114c2612150565b610f815f612e66565b6114d36153bd565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff16610140840152835190810193849052919290916101608401917f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161162357505050505081525050905090565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff166101408401528351908101938490525f93610160840191907f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116117aa5750505050508152505090505f479050610ac48183610140015162ffffff168461016001515f6003811061180957611809615aca565b602002015173ffffffffffffffffffffffffffffffffffffffff169190612f1f565b5f61184b8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b5462010000900467ffffffffffffffff1692915050565b5f6060805f805f60606118b47f0e44522e5369636b72657370656374000000000000000000000000000000000060606040519050604081016040525f815281601f8201525f8151602083010152919050565b6040805180820182525f8082527f0131000000000000000000000000000000000000000000000000000000000000601f83015281516020908301810182905283518281529081019093527f0f000000000000000000000000000000000000000000000000000000000000009b939a50909850469750309650945092509050565b61193c612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180547fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff166a0100000000000000000000179055565b61199a612150565b610ac473ffffffffffffffffffffffffffffffffffffffff831682612f94565b6119c2612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b604080516080810182525f8082529181018281527f0e44522e5369636b72657370656374045349434b000000000000000000000000601f830152815182016020018051605f840152839052805160609083018101939093526109ab565b5f80611a7261221a565b73ffffffffffffffffffffffffffffffffffffffff8181165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083209389168352929052205490915083811015611b2b576040517ff8e06db200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101829052604481018590526064015b60405180910390fd5b611b38828686840361213e565b506001949350505050565b5f610ef6611b4f61221a565b84846bffffffffffffffffffffffff1661234e565b5f6109ab8265ffffffffffff16612ff6565b5f611b9873ffffffffffffffffffffffffffffffffffffffff85168484613108565b949350505050565b83421115611bda576040517f1a15a3cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001611c6d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a611c0d836131ca565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012061327b565b604080515f8152602081018083529290925260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611cb8573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580611d3257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d69576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9081165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b73ffffffffffffffffffffffffffffffffffffffff8083165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000860209081526040808320938516835292905290812054610b2a565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611e9e8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015292915050565b611f42612150565b73ffffffffffffffffffffffffffffffffffffffff8116611f91576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b610f1181612e66565b5f80611fc2611fa761221a565b73ffffffffffffffffffffffffffffffffffffffff16612e1e565b80549091506a0100000000000000000000900469ffffffffffffffffffff165f036120ee577f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001805469ffffffffffffffffffff16905f61202183615b50565b825469ffffffffffffffffffff9182166101009390930a928302928202191691909117909155825491166a0100000000000000000000027fffffffffffffffffffffffff00000000000000000000ffffffffffffffffffff909116178155600181015473ffffffffffffffffffffffffffffffffffffffff166120ee576120a661221a565b6001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b805460405184916a0100000000000000000000900469ffffffffffffffffffff169033907f8a4758d83bb38a638ad4e66c346744f4837441be2c52672af48d24bdafa75644905f90a45090919050565b61214b8383836001612922565b505050565b61215861221a565b73ffffffffffffffffffffffffffffffffffffffff166121ac7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576121cf61221a565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401611b22565b5f610c006132dc565b5f6122438273ffffffffffffffffffffffffffffffffffffffff16613342565b806109ab57506109ab8273ffffffffffffffffffffffffffffffffffffffff16613400565b73ffffffffffffffffffffffffffffffffffffffff8381165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e745781811015612340576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401611b22565b610e7484848484035f612922565b5f611b988484845f5b5f73ffffffffffffffffffffffffffffffffffffffff85166123a7576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b73ffffffffffffffffffffffffffffffffffffffff84166123f6576040517f9cfea5830000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b73ffffffffffffffffffffffffffffffffffffffff8581165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000660205260408082208784168352912060018201547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff931661248f5761248d8873ffffffffffffffffffffffffffffffffffffffff166129e8565b505b600181015473ffffffffffffffffffffffffffffffffffffffff166124cf576124cd8773ffffffffffffffffffffffffffffffffffffffff166129e8565b505b60028301545f90819081906124fd908790879087908d906b010000000000000000000000900460ff166134be565b925092509250825f036125255761251685858b8b61471e565b60019650505050505050611b98565b6125398561253230612e1e565b858b61471e565b801561254857612548816148ab565b6125548585848b61471e565b5060019a9950505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916125fb9190615b78565b5f604051808303815f865af19150503d805f8114612634576040519150601f19603f3d011682016040523d82523d5f602084013e612639565b606091505b509150915061264882826151fd565b5050505050565b5f61266f8373ffffffffffffffffffffffffffffffffffffffff16612e1e565b80549091506bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811690831611156126a9575f80fd5b80546bffffffffffffffffffffffff7401000000000000000000000000000000000000000080830482168590039091160273ffffffffffffffffffffffffffffffffffffffff9091161781558161271d7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60010180546bffffffffffffffffffffffff740100000000000000000000000000000000000000008083048216949094031690920273ffffffffffffffffffffffffffffffffffffffff9283161790556040515f918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127b69086906bffffffffffffffffffffffff91909116815260200190565b60405180910390a3505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000066020819052604082205461ffff81169061400081166180009091161715611b3857620100008410612818575f80fd5b5f85815260208390526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8616179055506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b385762e4e1c185106128d4575f80fd5b82547fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff16609886901b74ffff0000000000000000000000000000000000000016178355506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8481165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083209387168352929052208290558015610e74578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129da91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602052604081207f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001805491927f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff92612a879069ffffffffffffffffffff16615b50565b825469ffffffffffffffffffff9182166101009390930a838102908302199091161790925583546a01000000000000000000009182027fffffffffffffffffffffffff00000000000000000000ffffffffffffffffffff9091161780855560018501805473ffffffffffffffffffffffffffffffffffffffff9097167fffffffffffffffffffffffff000000000000000000000000000000000000000097881681179091559190049091165f9081526008909201602052604090912080549093161790915590565b610f11612b718273ffffffffffffffffffffffffffffffffffffffff16612e1e565b615258565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b3857602085015160408601516060870151821582158215171715612c00575f80fd5b600186019290925560028501556003840155506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38576127118510612c94575f80fd5b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff16608886901b72ffff000000000000000000000000000000000016178355506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38578460401c61ffff8660301c1661ffff8760201c1661ffff8860101c1661ffff89168082848688010101016127108114612d81575f80fd5b5087545f5b6005811015612e0b5761ffff603860108302011b5f828015612dc75760018114612dcf5760028114612dd75760038114612ddf5760048114612de757612deb565b899150612deb565b889150612deb565b879150612deb565b869150612deb565b8591505b508181601085026038011b16821985161793505050600181019050612d86565b5088555050505050506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602052604081206109ab565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b604080515f80825260208201909252819073ffffffffffffffffffffffffffffffffffffffff86169084908690604051612f599190615b78565b5f60405180830381858888f193505050503d805f8114612634576040519150601f19603f3d011682016040523d82523d5f602084013e612639565b610ac481612fb78473ffffffffffffffffffffffffffffffffffffffff16612e1e565b9081547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008116600160ff939093169290921b61ffff9182161816179055565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38578460201c61ffff8660101c1661ffff87166103e98110156103e98310156103e985101517171561308e575f80fd5b85545f5b60038110156130f75761ffff600860108302011b5f8280156130c357600181146130cb57600281146130d3576130d7565b8791506130d7565b8691506130d7565b8591505b508181601085026008011b16821985161793505050600181019050613092565b508655505050506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000066020819052604082205461ffff811690614000811661800090911617613152575f80fd5b50600191505b82841015610b28575f61316b8686615265565b905061318c8173ffffffffffffffffffffffffffffffffffffffff166129e8565b5073ffffffffffffffffffffffffffffffffffffffff81165f9081526020839052604090206131be90600960016152d0565b50600190930192613158565b5f806131eb8373ffffffffffffffffffffffffffffffffffffffff16612e1e565b805490915067ffffffffffffffff6201000090910481161061322e5780547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1681555b80547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff8116620100009182900467ffffffffffffffff908116600181019091169092021790915592915050565b5f613284610b31565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f30330361333c575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff16915061333f9050565b50335b90565b5f6109ab6133658373ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015261532b565b5f6109ab6134238373ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015261533d565b6040805160a081018252855461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600185015473ffffffffffffffffffffffffffffffffffffffff1660808201525f90819081906135629061534f565b8061360657506040805160a081018252875461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600187015473ffffffffffffffffffffffffffffffffffffffff1660808201526136069061534f565b8061360e5750835b1561362057505f915083905081614713565b604080516101808101825260038a8101805460ff8116845261010080820461ffff908116602087015263010000008304811686880152650100000000008304811660608088019190915267010000000000000084048216608088015269010000000000000000008404821660a08801526b0100000000000000000000008404821660c08801526d01000000000000000000000000008404821660e08801526f0100000000000000000000000000000084048216928701929092527101000000000000000000000000000000000083041661012086015273010000000000000000000000000000000000000090910462ffffff166101408501528451908101948590525f94919261016085019260048f01919082845b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116137355750505050508152505090505f61377f825160808082161491607f90911690565b5060028b01549091506a0100000000000000000000900460ff16613a42576139ed896040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050896040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050615361565b15613a1057506020015161271061ffff909116860204925050508083035f614713565b6040517f8a716db100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff166080820152613ae09061537a565b80613b8457506040805160a081018252895461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600189015473ffffffffffffffffffffffffffffffffffffffff166080820152613b849061537a565b15614559576040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff166080820152613c279061537a565b15613fba5760208201516127109061ffff16880204945084870393506040518060e001604052805f151581526020018a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001896001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff1681526020014367ffffffffffffffff168152602001866bffffffffffffffffffffffff168152602001856bffffffffffffffffffffffff168152508a600b015f015f8a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506080820151816002015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060c08201518160020160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050508015613faf5787546a01a784379d99db4200000090613f479086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16615af7565b1115613faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46616972204c696d6974204578636565646564000000000000000000000000006044820152606401611b22565b505f91506147139050565b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff1660808201526140589061538c565b15614072576127106109c48802049450848703935061408a565b60408201516127109061ffff16880204945084870393505b5f82610120015161ffff16116140d157846140a430612e1e565b547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1601614121565b61012082015160018b0154612710916bffffffffffffffffffffffff74010000000000000000000000000000000000000000909204821661ffff919091160216046bffffffffffffffffffffffff165b6001808b015473ffffffffffffffffffffffffffffffffffffffff9081165f818152600b8f016020908152604091829020825160e081018452815460ff8116151582526101009004861692810192909252948501549384169181018290526bffffffffffffffffffffffff74010000000000000000000000000000000000000000948590048116606083015260029095015467ffffffffffffffff81166080830152680100000000000000008104861660a08301529390930490931660c08301529295509114801561420a57504367ffffffffffffffff16816080015167ffffffffffffffff16145b15614218576142188a61539e565b6040518060e001604052805f151581526020018b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001896bffffffffffffffffffffffff1681526020014367ffffffffffffffff168152602001876bffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff168152508b600b015f015f8c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506080820151816002015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060c08201518160020160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050508115614551576a01a784379d99db42000000851115614551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46616972204c696d6974204578636565646564000000000000000000000000006044820152606401611b22565b505050614713565b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff1660808201526145f79061538c565b8061469b57506040805160a081018252895461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600189015473ffffffffffffffffffffffffffffffffffffffff16608082015261469b9061538c565b156146b5576127106109c4880204945084870393506146cd565b60608201516127109061ffff16880204945084870393505b8015613faf5787546a01a784379d99db4200000090613f479086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16615af7565b955095509592505050565b835482906bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811690821611156147d957600185015485546040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff908116602483015282166044820152606401611b22565b84546bffffffffffffffffffffffff7401000000000000000000000000000000000000000080830482168490038216810273ffffffffffffffffffffffffffffffffffffffff9384161788558654818104831685019092160291161784558161264857600184810154908601546040516bffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff92831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180546b0100000000000000000000007fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff909116811790915560408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261ffff6101008083048216602086015263010000008304821685870152650100000000008304821660608087019190915267010000000000000084048316608087015269010000000000000000008404831660a0870152968304821660c08601526d01000000000000000000000000008304821660e08601526f0100000000000000000000000000000083048216908501527101000000000000000000000000000000000082041661012084015262ffffff730100000000000000000000000000000000000000909104166101408301528251938401928390525f93919290916101608401917f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311614a465750505050508152505090505f600267ffffffffffffffff811115614a9657614a966155f5565b604051908082528060200260200182016040528015614abf578160200160208202803683370190505b50905030815f81518110614ad557614ad5615aca565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614b78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b9c9190615b35565b81600181518110614baf57614baf615aca565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101525f614bde30612e1e565b546bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811691505f9085168211614c195784614c1b565b815b6101008501519091505f906127109061ffff1615614ca25760028161ffff1687610100015161ffff1685026bffffffffffffffffffffffff1681614c6157614c61615b93565b046bffffffffffffffffffffffff1681614c7d57614c7d615b93565b0491508183039250600286610100015161ffff1681614c9e57614c9e615b93565b0490035b6040517f791ac947000000000000000000000000000000000000000000000000000000008152479073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790614d1e9087905f908b9030904290600401615bc0565b5f604051808303815f87803b158015614d35575f80fd5b505af1158015614d47573d5f803e3d5ffd5b505050505f8082470390505f805f805f8d60e0015161ffff161115614d95578761ffff168d60e0015161ffff1686026bffffffffffffffffffffffff1681614d9157614d91615b93565b0493505b60c08d015161ffff1615614dd2578761ffff168d60c0015161ffff1686026bffffffffffffffffffffffff1681614dce57614dce615b93565b0492505b60a08d015161ffff1615614e0f578761ffff168d60a0015161ffff1686026bffffffffffffffffffffffff1681614e0b57614e0b615b93565b0491505b60808d015161ffff1615614e4c578761ffff168d6080015161ffff1686026bffffffffffffffffffffffff1681614e4857614e48615b93565b0490505b6bffffffffffffffffffffffff841615614e6a57614e6a308561264f565b6bffffffffffffffffffffffff811615614f01576101608d0151516101408e015160405173ffffffffffffffffffffffffffffffffffffffff9092169162ffffff909116906bffffffffffffffffffffffff8416905f818181858888f193505050503d805f8114614ef6576040519150601f19603f3d011682016040523d82523d5f602084013e614efb565b606091505b50909650505b6bffffffffffffffffffffffff821615614f9c576101608d01516001602002015173ffffffffffffffffffffffffffffffffffffffff16826bffffffffffffffffffffffff168e610140015162ffffff16906040515f60405180830381858888f193505050503d805f8114614f91576040519150601f19603f3d011682016040523d82523d5f602084013e614f96565b606091505b50909650505b6bffffffffffffffffffffffff831615615037576101608d01516002602002015173ffffffffffffffffffffffffffffffffffffffff16836bffffffffffffffffffffffff168e610140015162ffffff16906040515f60405180830381858888f193505050503d805f811461502c576040519150601f19603f3d011682016040523d82523d5f602084013e615031565b606091505b50909650505b6bffffffffffffffffffffffff891615615185575f60028961ffff168f610100015161ffff1688026bffffffffffffffffffffffff168161507a5761507a615b93565b046bffffffffffffffffffffffff168161509657615096615b93565b6040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482018190526bffffffffffffffffffffffff8e811660248401525f60448401819052606484015260848301919091524260a483015292909104925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169163f305d719919084169060c40160606040518083038185885af115801561515b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906151809190615b0a565b505050505b505050505050505050505050505f6151ba7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60020180549115156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff90921691909117905550565b8180156152225750805115806152225750808060200190518101906152229190615c59565b610ac4576040517f2b96f51300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f1181600a60016152d0565b5f607f821161529057825f526094600b5360d6600a5381821560071b17602053506017600a206109ab565b60085b82811c156152a357600801615293565b60031c828152600884901b5f5260808101601f536094600a538060d6016009536017016009209392505050565b806152e9578254600160ff84161b191661ffff166152f8565b825461ffff16600160ff84161b175b83547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff91909116179092555050565b80515f90600d1c6001908116146109ab565b80515f90600e1c6001908116146109ab565b80515f90600b1c6001908116146109ab565b5f61536b836153ab565b80610b2a5750610b2a826153ab565b80515f90600a1c6001908116146109ab565b80515f9060071c6001908116146109ab565b610f1181600760016152d0565b80515f9060091c6001908116146109ab565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101615422615427565b905290565b60405180606001604052806003906020820280368337509192915050565b5f5b8381101561545f578181015183820152602001615447565b50505f910152565b5f815180845261547e816020860160208601615445565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610b2a6020830184615467565b73ffffffffffffffffffffffffffffffffffffffff81168114610f11575f80fd5b5f80604083850312156154f4575f80fd5b82356154ff816154c2565b946020939093013593505050565b8015158114610f11575f80fd5b5f6020828403121561552a575f80fd5b8135610b2a8161550d565b5f805f60608486031215615547575f80fd5b8335615552816154c2565b92506020840135615562816154c2565b929592945050506040919091013590565b5f60208284031215615583575f80fd5b5035919050565b803561ffff8116811461559b575f80fd5b919050565b5f80604083850312156155b1575f80fd5b82356155bc816154c2565b91506155ca6020840161558a565b90509250929050565b5f602082840312156155e3575f80fd5b813562ffffff81168114610b2a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215615632575f80fd5b813567ffffffffffffffff80821115615649575f80fd5b818401915084601f83011261565c575f80fd5b81358181111561566e5761566e6155f5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156156b4576156b46155f5565b816040528281528760208487010111156156cc575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f602082840312156156fb575f80fd5b610b2a8261558a565b5f60208284031215615714575f80fd5b813569ffffffffffffffffffff81168114610b2a575f80fd5b5f6020828403121561573d575f80fd5b8135610b2a816154c2565b805f5b6003811015610e7457815173ffffffffffffffffffffffffffffffffffffffff1684526020938401939091019060010161574b565b815160ff1681526101c0810160208301516157a1602084018261ffff169052565b5060408301516157b7604084018261ffff169052565b5060608301516157cd606084018261ffff169052565b5060808301516157e3608084018261ffff169052565b5060a08301516157f960a084018261ffff169052565b5060c083015161580f60c084018261ffff169052565b5060e083015161582560e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015162ffffff16908301526101608084015161586b82850182615748565b505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e060208401526158af60e084018a615467565b83810360408501526158c1818a615467565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b8181101561592157835183529284019291840191600101615905565b50909c9b505050505050505050505050565b803560ff8116811461559b575f80fd5b5f8060408385031215615954575f80fd5b823561595f816154c2565b91506155ca60208401615933565b5f6020828403121561597d575f80fd5b813565ffffffffffff81168114610b2a575f80fd5b5f805f606084860312156159a4575f80fd5b83356159af816154c2565b95602085013595506040909401359392505050565b5f805f805f805f60e0888a0312156159da575f80fd5b87356159e5816154c2565b965060208801356159f5816154c2565b95506040880135945060608801359350615a1160808901615933565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215615a3e575f80fd5b8235615a49816154c2565b91506020830135615a59816154c2565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff828116828216039080821115615aac57615aac615a64565b5092915050565b5f60208284031215615ac3575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156109ab576109ab615a64565b5f805f60608486031215615b1c575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215615b45575f80fd5b8151610b2a816154c2565b5f69ffffffffffffffffffff808316818103615b6e57615b6e615a64565b6001019392505050565b5f8251615b89818460208701615445565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60a082016bffffffffffffffffffffffff88168352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015615c2b57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101615bf9565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f60208284031215615c69575f80fd5b8151610b2a8161550d56fea26469706673582212209f3438133a31fabcd186600528d9fee7dfd0c26db84406c2f812a7f9746113b964736f6c63430008180033
0x6101a06040526040516200686138038062006861833981016040819052620000279162000a31565b6040518060400160405280600e81526020016d11148b94da58dadc995cdc1958dd60921b815250604051806040016040528060048152602001635349434b60e01b81525084848484604051806040016040528060018152602001603160f81b8152506200009a826200032360201b60201c565b6080528151602083012060a0528051601f808301515f19909201100260c0528051602082012060e0526200013260a0805160e051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f602082015290810192909252606082015246608082015230918101919091525f9060c00160405160208183030381529060405280519060200120905090565b610100525050466101205284518451601b82116005821117156200015f57631623655b60e31b5f5260045ffd5b86518651818803601e90810151838b0151601f85900360031b1b175f199290930191909101100261014052601261018052620002b9620002a333878787604080516101e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081019190915250604080516101e08101825260818152622dc6c060208201526105dc9181018290526060810182905260808101919091525f60a08201819052610fa060c0830152610dac60e083015261010082018190526109c46101208301526101408201526001600160a01b039485166101608201529284166101808401529083166101a08301529091166101c082015290565b5f80516020620068418339815191529062000339565b6001600160a01b031661016052506a52b7d2dcc80cd2e400000095506a4e950851be0c2ebf0000009450620002f693503092508491505062000621565b6200030d3362000307838562000a8c565b62000621565b620003183362000731565b505050505062000ad9565b5f601f600183510310601f830151029050919050565b73444354344a7326458ae903e52bb86d9bb0f30c695f908152600783016020819052604082208054637fff8000191661800017905560038401906200037d620007b3565b9250835f0151825f015f6101000a81548160ff021916908360ff1602179055508360200151825f0160136101000a81548162ffffff021916908362ffffff1602179055508360400151825f0160016101000a81548161ffff021916908361ffff1602179055508360600151825f0160036101000a81548161ffff021916908361ffff1602179055508360800151825f0160056101000a81548161ffff021916908361ffff1602179055508360a00151825f0160076101000a81548161ffff021916908361ffff1602179055508360c00151825f0160096101000a81548161ffff021916908361ffff1602179055508360e00151825f01600b6101000a81548161ffff021916908361ffff160217905550836101000151825f01600d6101000a81548161ffff021916908361ffff160217905550836101200151825f01600f6101000a81548161ffff021916908361ffff160217905550836101400151825f0160116101000a81548161ffff021916908361ffff16021790555060405180606001604052808561016001516001600160a01b03166001600160a01b031681526020018561018001516001600160a01b03166001600160a01b03168152602001856101a001516001600160a01b03166001600160a01b0316815250826001019060036200056a929190620009a2565b506200057f6001600160a01b0384166200086f565b6200058a33620008a1565b610160840151620005a4906001600160a01b0316620008a1565b610180840151620005be906001600160a01b0316620008df565b620005c930620008df565b6101a0840151620005e3906001600160a01b0316620008df565b6101c08401516001600160a01b03165f9081525f805160206200682183398151915260205260409020805461ffff1916614200179055505092915050565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000080545f805160206200684183398151915291839160149062000676908490600160a01b90046001600160601b031662000ab6565b92506101000a8154816001600160601b0302191690836001600160601b0316021790555081620006b5846001600160a01b03166200090e60201b60201c565b80546001600160601b03600160a01b8083048216909401169092026001600160a01b03928316179055604051908416905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620007249086906001600160601b0391909116815260200190565b60405180910390a3505050565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000080546001600160a01b031981166001600160a01b038481169182179093556040515f8051602062006841833981519152939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b5f4660011480620007c45750466005145b15620007e35750737a250d5630b4cf539739df2c5dacb4c659f2488d90565b4662aa36a70362000807575073c532a74256d3db42d0bf7a0400fefdbad769400890565b46612105036200082a5750734752ba5dbc23f44d87826276bf6fd6b1c372ad2490565b466038036200084c57507310ed43c718714eb63d5aa57b78b54704e256024e90565b466061036200086c5750739ac64cc6e4415144c455bd8e4837fea55603e5c35b90565b6001600160a01b0381165f9081525f8051602062006821833981519152602052604090206200089e9062000934565b50565b6001600160a01b0381165f9081525f805160206200682183398151915260205260409020620008d08162000943565b620008db8162000958565b5050565b6001600160a01b0381165f9081525f8051602062006821833981519152602052604090206200089e9062000958565b6001600160a01b03165f9081525f80516020620068218339815191526020526040902090565b6200089e81600a600162000962565b6200095281600e600162000962565b6200089e815b6200089e81600b60015b806200097d578254600160ff84161b191661ffff166200098c565b825461ffff16600160ff84161b175b835461ffff191661ffff91909116179092555050565b8260038101928215620009ed579160200282015b82811115620009ed57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620009b6565b50620009fb929150620009ff565b5090565b5b80821115620009fb575f815560010162000a00565b80516001600160a01b038116811462000a2c575f80fd5b919050565b5f805f6060848603121562000a44575f80fd5b62000a4f8462000a15565b925062000a5f6020850162000a15565b915062000a6f6040850162000a15565b90509250925092565b634e487b7160e01b5f52601160045260245ffd5b6001600160601b0382811682821603908082111562000aaf5762000aaf62000a78565b5092915050565b6001600160601b0381811683821601908082111562000aaf5762000aaf62000a78565b60805160a05160c05160e0516101005161012051610140516101605161018051615caa62000b775f395f6104a201525f81816104e701528181611013015281816110d40152818161115b0152818161120401528181614b1101528181614ce1015261511101525f81816102f10152611a2101525f610b3401525f610c0801525f610bb001525f6118c301525f610b8801525f6118700152615caa5ff3fe6080604052600436106102c4575f3560e01c806370a082311161017057806395d89b41116100d1578063cda4c40811610087578063ea5eda3211610062578063ea5eda321461093e578063f2fde38b1461095d578063ff91e66b1461097c575f80fd5b8063cda4c408146108e1578063d505accf14610900578063dd62ed3e1461091f575f80fd5b8063a8aa1b31116100b7578063a8aa1b311461085a578063a9059cbb146108a3578063c3342e56146108c2575f80fd5b806395d89b4114610827578063a457c2d71461083b575f80fd5b806384b0196e116101265780638cd92b0a1161010c5780638cd92b0a146107ab5780638da5cb5b146107ca57806391c01b4514610813575f80fd5b806384b0196e146107705780638a8c523c14610797575f80fd5b806372621eb51161015657806372621eb51461071c5780637ae33d5f1461073d5780637ecebe0014610751575f80fd5b806370a08231146106e9578063715018a614610708575f80fd5b8063387205ee116102255780634c2babef116101db5780636cb07772116101b65780636cb077721461068c5780636d84249b146106ab5780636e2ad758146106ca575f80fd5b80634c2babef1461065157806350abfffd146106705780636257840f14610684575f80fd5b806342966c681161020b57806342966c681461058057806347ee6a071461059f5780634a97c9c014610632575f80fd5b8063387205ee146105425780633950935114610561575f80fd5b8063307aebc91161027a578063313ce56711610260578063313ce5671461049157806332fe7b26146104d65780633644e5151461052e575f80fd5b8063307aebc91461041a57806330adf81f1461045e575f80fd5b806317ede0de116102aa57806317ede0de1461037757806318160ddd1461039857806323b872dd146103fb575f80fd5b806306fdde03146102cf578063095ea7b314610348575f80fd5b366102cb57005b5f80fd5b3480156102da575f80fd5b50604080516080810182525f8082529181018281527f0000000000000000000000000000000000000000000000000000000000000000601f830152815182016020018051605f84015283905251606090820101919091525b60405161033f91906154b0565b60405180910390f35b348015610353575f80fd5b506103676103623660046154e3565b61099b565b604051901515815260200161033f565b348015610382575f80fd5b5061039661039136600461551a565b6109b1565b005b3480156103a3575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000000547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff165b60405190815260200161033f565b348015610406575f80fd5b50610367610415366004615535565b610ac8565b348015610425575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001546a0100000000000000000000900460ff16610367565b348015610469575f80fd5b506103ed7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561049c575f80fd5b506104c47f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161033f565b3480156104e1575f80fd5b506105097f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161033f565b348015610539575f80fd5b506103ed610b31565b34801561054d575f80fd5b5061039661055c3660046154e3565b610c2a565b34801561056c575f80fd5b5061036761057b3660046154e3565b610e7a565b34801561058b575f80fd5b5061039661059a366004615573565b610f00565b3480156105aa575f80fd5b506105b3610f14565b60405161033f91905f60a08201905061ffff835116825267ffffffffffffffff602084015116602083015269ffffffffffffffffffff60408401511660408301526bffffffffffffffffffffffff606084015116606083015273ffffffffffffffffffffffffffffffffffffffff608084015116608083015292915050565b34801561063d575f80fd5b5061036761064c3660046155a0565b610f47565b34801561065c575f80fd5b5061036761066b3660046155d3565b610f68565b34801561067b575f80fd5b50610396610f77565b610396610f83565b348015610697575f80fd5b506103676106a6366004615622565b61143f565b3480156106b6575f80fd5b506103676106c53660046156eb565b611449565b3480156106d5575f80fd5b506103676106e4366004615704565b611457565b3480156106f4575f80fd5b506103ed61070336600461572d565b61146d565b348015610713575f80fd5b506103966114ba565b348015610727575f80fd5b506107306114cb565b60405161033f9190615780565b348015610748575f80fd5b5061039661165b565b34801561075c575f80fd5b506103ed61076b36600461572d565b61182b565b34801561077b575f80fd5b50610784611862565b60405161033f9796959493929190615873565b3480156107a2575f80fd5b50610396611934565b3480156107b6575f80fd5b506103966107c5366004615943565b611992565b3480156107d5575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000005473ffffffffffffffffffffffffffffffffffffffff16610509565b34801561081e575f80fd5b506103966119ba565b348015610832575f80fd5b50610332611a0b565b348015610846575f80fd5b506103676108553660046154e3565b611a68565b348015610865575f80fd5b507f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff5473ffffffffffffffffffffffffffffffffffffffff16610509565b3480156108ae575f80fd5b506103676108bd3660046154e3565b611b43565b3480156108cd575f80fd5b506103676108dc36600461596d565b611b64565b3480156108ec575f80fd5b506103676108fb366004615992565b611b76565b34801561090b575f80fd5b5061039661091a3660046159c4565b611ba0565b34801561092a575f80fd5b506103ed610939366004615a2d565b611dfd565b348015610949575f80fd5b506105b361095836600461572d565b611e55565b348015610968575f80fd5b5061039661097736600461572d565b611f3a565b348015610987575f80fd5b506103ed610996366004615573565b611f9a565b5f6109a733848461213e565b5060015b92915050565b6109b9612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000028115610a125780547fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000ff1666012c012c012c0017905550565b80546101f4908290600190610a31908490610100900461ffff16615a91565b92506101000a81548161ffff021916908361ffff1602179055506101f4815f0160038282829054906101000a900461ffff16610a6d9190615a91565b92506101000a81548161ffff021916908361ffff1602179055506101f4815f0160058282829054906101000a900461ffff16610aa99190615a91565b92506101000a81548161ffff021916908361ffff1602179055505b5050565b5f80610ad261221a565b9050610add81612223565b610b0d57610aec858285612268565b610b058585856bffffffffffffffffffffffff1661234e565b915050610b2a565b610b058585856bffffffffffffffffffffffff166001612357565b505b9392505050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614610c0557610c00604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff166101408401528351908101938490525f93610160840191907f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311610d795750505050508152505090505f825f14610dbc5782610e48565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516906370a0823190602401602060405180830381865afa158015610e24573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e489190615ab3565b61016083015151909150610e749073ffffffffffffffffffffffffffffffffffffffff86169083612565565b50505050565b5f80610e8461221a565b9050610ef6818585610ee7858973ffffffffffffffffffffffffffffffffffffffff9182165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000086020908152604080832093909416825291909152205490565b610ef19190615af7565b61213e565b5060019392505050565b610f11610f0b61221a565b8261264f565b50565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152610c0033611e55565b5f610b2a73ffffffffffffffffffffffffffffffffffffffff8416836127c3565b5f6109ab8262ffffff1661285c565b610f81305f610c2a565b565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180547fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff166b010000000000000000000000179055610fe0612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff5f61100b3061146d565b9050611059307f00000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b61108530307fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b6040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201819052602482018390525f60448301819052606483015260848201524260a48201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f305d71990349060c40160606040518083038185885af1158015611131573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906111569190615b0a565b5050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111e69190615b35565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905307f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561126b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061128f9190615b35565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815273ffffffffffffffffffffffffffffffffffffffff928316600482015291166024820152604401602060405180830381865afa1580156112fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113219190615b35565b82547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff91909116908117835561136c906129e8565b50815461138e9073ffffffffffffffffffffffffffffffffffffffff16612b4f565b81546113d390309073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f612922565b50505f6113fd7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60020180549115156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff909216919091179055565b5f6109ab82612b76565b5f6109ab8261ffff16612c1d565b5f6109ab8269ffffffffffffffffffff16612ce0565b5f61148d8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1692915050565b6114c2612150565b610f815f612e66565b6114d36153bd565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff16610140840152835190810193849052919290916101608401917f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff16815260019091019060200180831161162357505050505081525050905090565b60408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261010080820461ffff908116602086015263010000008304811685870152650100000000008304811660608087019190915267010000000000000084048216608087015269010000000000000000008404821660a08701526b0100000000000000000000008404821660c08701526d01000000000000000000000000008404821660e08701526f0100000000000000000000000000000084048216928601929092527101000000000000000000000000000000000083041661012085015273010000000000000000000000000000000000000090910462ffffff166101408401528351908101938490525f93610160840191907f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116117aa5750505050508152505090505f479050610ac48183610140015162ffffff168461016001515f6003811061180957611809615aca565b602002015173ffffffffffffffffffffffffffffffffffffffff169190612f1f565b5f61184b8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b5462010000900467ffffffffffffffff1692915050565b5f6060805f805f60606118b47f000000000000000000000000000000000000000000000000000000000000000060606040519050604081016040525f815281601f8201525f8151602083010152919050565b6040805180820182525f8082527f0000000000000000000000000000000000000000000000000000000000000000601f83015281516020908301810182905283518281529081019093527f0f000000000000000000000000000000000000000000000000000000000000009b939a50909850469750309650945092509050565b61193c612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180547fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff166a0100000000000000000000179055565b61199a612150565b610ac473ffffffffffffffffffffffffffffffffffffffff831682612f94565b6119c2612150565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b604080516080810182525f8082529181018281527f0000000000000000000000000000000000000000000000000000000000000000601f830152815182016020018051605f840152839052805160609083018101939093526109ab565b5f80611a7261221a565b73ffffffffffffffffffffffffffffffffffffffff8181165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083209389168352929052205490915083811015611b2b576040517ff8e06db200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8616600482015260248101829052604481018590526064015b60405180910390fd5b611b38828686840361213e565b506001949350505050565b5f610ef6611b4f61221a565b84846bffffffffffffffffffffffff1661234e565b5f6109ab8265ffffffffffff16612ff6565b5f611b9873ffffffffffffffffffffffffffffffffffffffff85168484613108565b949350505050565b83421115611bda576040517f1a15a3cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001611c6d7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a611c0d836131ca565b60408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810188905260e0016040516020818303038152906040528051906020012061327b565b604080515f8152602081018083529290925260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015611cb8573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580611d3257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15611d69576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff9081165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b73ffffffffffffffffffffffffffffffffffffffff8083165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000860209081526040808320938516835292905290812054610b2a565b6040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152611e9e8273ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015292915050565b611f42612150565b73ffffffffffffffffffffffffffffffffffffffff8116611f91576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b610f1181612e66565b5f80611fc2611fa761221a565b73ffffffffffffffffffffffffffffffffffffffff16612e1e565b80549091506a0100000000000000000000900469ffffffffffffffffffff165f036120ee577f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001805469ffffffffffffffffffff16905f61202183615b50565b825469ffffffffffffffffffff9182166101009390930a928302928202191691909117909155825491166a0100000000000000000000027fffffffffffffffffffffffff00000000000000000000ffffffffffffffffffff909116178155600181015473ffffffffffffffffffffffffffffffffffffffff166120ee576120a661221a565b6001820180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555b805460405184916a0100000000000000000000900469ffffffffffffffffffff169033907f8a4758d83bb38a638ad4e66c346744f4837441be2c52672af48d24bdafa75644905f90a45090919050565b61214b8383836001612922565b505050565b61215861221a565b73ffffffffffffffffffffffffffffffffffffffff166121ac7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576121cf61221a565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401611b22565b5f610c006132dc565b5f6122438273ffffffffffffffffffffffffffffffffffffffff16613342565b806109ab57506109ab8273ffffffffffffffffffffffffffffffffffffffff16613400565b73ffffffffffffffffffffffffffffffffffffffff8381165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e745781811015612340576040517f192b9e4e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff841660048201526024810182905260448101839052606401611b22565b610e7484848484035f612922565b5f611b988484845f5b5f73ffffffffffffffffffffffffffffffffffffffff85166123a7576040517f4c14f64c0000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b73ffffffffffffffffffffffffffffffffffffffff84166123f6576040517f9cfea5830000000000000000000000000000000000000000000000000000000081525f6004820152602401611b22565b73ffffffffffffffffffffffffffffffffffffffff8581165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000660205260408082208784168352912060018201547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff931661248f5761248d8873ffffffffffffffffffffffffffffffffffffffff166129e8565b505b600181015473ffffffffffffffffffffffffffffffffffffffff166124cf576124cd8773ffffffffffffffffffffffffffffffffffffffff166129e8565b505b60028301545f90819081906124fd908790879087908d906b010000000000000000000000900460ff166134be565b925092509250825f036125255761251685858b8b61471e565b60019650505050505050611b98565b6125398561253230612e1e565b858b61471e565b801561254857612548816148ab565b6125548585848b61471e565b5060019a9950505050505050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905291515f928392908716916125fb9190615b78565b5f604051808303815f865af19150503d805f8114612634576040519150601f19603f3d011682016040523d82523d5f602084013e612639565b606091505b509150915061264882826151fd565b5050505050565b5f61266f8373ffffffffffffffffffffffffffffffffffffffff16612e1e565b80549091506bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811690831611156126a9575f80fd5b80546bffffffffffffffffffffffff7401000000000000000000000000000000000000000080830482168590039091160273ffffffffffffffffffffffffffffffffffffffff9091161781558161271d7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60010180546bffffffffffffffffffffffff740100000000000000000000000000000000000000008083048216949094031690920273ffffffffffffffffffffffffffffffffffffffff9283161790556040515f918516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906127b69086906bffffffffffffffffffffffff91909116815260200190565b60405180910390a3505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000066020819052604082205461ffff81169061400081166180009091161715611b3857620100008410612818575f80fd5b5f85815260208390526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff8616179055506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b385762e4e1c185106128d4575f80fd5b82547fffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffff16609886901b74ffff0000000000000000000000000000000000000016178355506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff8481165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000008602090815260408083209387168352929052208290558015610e74578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516129da91815260200190565b60405180910390a350505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602052604081207f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000001805491927f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff92612a879069ffffffffffffffffffff16615b50565b825469ffffffffffffffffffff9182166101009390930a838102908302199091161790925583546a01000000000000000000009182027fffffffffffffffffffffffff00000000000000000000ffffffffffffffffffff9091161780855560018501805473ffffffffffffffffffffffffffffffffffffffff9097167fffffffffffffffffffffffff000000000000000000000000000000000000000097881681179091559190049091165f9081526008909201602052604090912080549093161790915590565b610f11612b718273ffffffffffffffffffffffffffffffffffffffff16612e1e565b615258565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b3857602085015160408601516060870151821582158215171715612c00575f80fd5b600186019290925560028501556003840155506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38576127118510612c94575f80fd5b82547fffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffffff16608886901b72ffff000000000000000000000000000000000016178355506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38578460401c61ffff8660301c1661ffff8760201c1661ffff8860101c1661ffff89168082848688010101016127108114612d81575f80fd5b5087545f5b6005811015612e0b5761ffff603860108302011b5f828015612dc75760018114612dcf5760028114612dd75760038114612ddf5760048114612de757612deb565b899150612deb565b889150612deb565b879150612deb565b869150612deb565b8591505b508181601085026038011b16821985161793505050600181019050612d86565b5088555050505050506001949350505050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602052604081206109ab565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811673ffffffffffffffffffffffffffffffffffffffff8481169182179093556040517f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff939092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b604080515f80825260208201909252819073ffffffffffffffffffffffffffffffffffffffff86169084908690604051612f599190615b78565b5f60405180830381858888f193505050503d805f8114612634576040519150601f19603f3d011682016040523d82523d5f602084013e612639565b610ac481612fb78473ffffffffffffffffffffffffffffffffffffffff16612e1e565b9081547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00008116600160ff939093169290921b61ffff9182161816179055565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000006602081905260408220547f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002919061ffff81169061400081166180009091161715611b38578460201c61ffff8660101c1661ffff87166103e98110156103e98310156103e985101517171561308e575f80fd5b85545f5b60038110156130f75761ffff600860108302011b5f8280156130c357600181146130cb57600281146130d3576130d7565b8791506130d7565b8691506130d7565b8591505b508181601085026008011b16821985161793505050600181019050613092565b508655505050506001949350505050565b335f9081527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000066020819052604082205461ffff811690614000811661800090911617613152575f80fd5b50600191505b82841015610b28575f61316b8686615265565b905061318c8173ffffffffffffffffffffffffffffffffffffffff166129e8565b5073ffffffffffffffffffffffffffffffffffffffff81165f9081526020839052604090206131be90600960016152d0565b50600190930192613158565b5f806131eb8373ffffffffffffffffffffffffffffffffffffffff16612e1e565b805490915067ffffffffffffffff6201000090910481161061322e5780547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff1681555b80547fffffffffffffffffffffffffffffffffffffffffffff0000000000000000ffff8116620100009182900467ffffffffffffffff908116600181019091169092021790915592915050565b5f613284610b31565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604051602081830303815290604052805190602001209050919050565b5f30330361333c575f80368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050505036015173ffffffffffffffffffffffffffffffffffffffff16915061333f9050565b50335b90565b5f6109ab6133658373ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015261532b565b5f6109ab6134238373ffffffffffffffffffffffffffffffffffffffff16612e1e565b6040805160a081018252825461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260019091015473ffffffffffffffffffffffffffffffffffffffff16608082015261533d565b6040805160a081018252855461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600185015473ffffffffffffffffffffffffffffffffffffffff1660808201525f90819081906135629061534f565b8061360657506040805160a081018252875461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600187015473ffffffffffffffffffffffffffffffffffffffff1660808201526136069061534f565b8061360e5750835b1561362057505f915083905081614713565b604080516101808101825260038a8101805460ff8116845261010080820461ffff908116602087015263010000008304811686880152650100000000008304811660608088019190915267010000000000000084048216608088015269010000000000000000008404821660a08801526b0100000000000000000000008404821660c08801526d01000000000000000000000000008404821660e08801526f0100000000000000000000000000000084048216928701929092527101000000000000000000000000000000000083041661012086015273010000000000000000000000000000000000000090910462ffffff166101408501528451908101948590525f94919261016085019260048f01919082845b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116137355750505050508152505090505f61377f825160808082161491607f90911690565b5060028b01549091506a0100000000000000000000900460ff16613a42576139ed896040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050896040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff1681526020015f820160029054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020015f8201600a9054906101000a900469ffffffffffffffffffff1669ffffffffffffffffffff1669ffffffffffffffffffff1681526020015f820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050615361565b15613a1057506020015161271061ffff909116860204925050508083035f614713565b6040517f8a716db100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff166080820152613ae09061537a565b80613b8457506040805160a081018252895461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600189015473ffffffffffffffffffffffffffffffffffffffff166080820152613b849061537a565b15614559576040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff166080820152613c279061537a565b15613fba5760208201516127109061ffff16880204945084870393506040518060e001604052805f151581526020018a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001896001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886bffffffffffffffffffffffff1681526020014367ffffffffffffffff168152602001866bffffffffffffffffffffffff168152602001856bffffffffffffffffffffffff168152508a600b015f015f8a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506080820151816002015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060c08201518160020160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050508015613faf5787546a01a784379d99db4200000090613f479086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16615af7565b1115613faf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46616972204c696d6974204578636565646564000000000000000000000000006044820152606401611b22565b505f91506147139050565b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff1660808201526140589061538c565b15614072576127106109c48802049450848703935061408a565b60408201516127109061ffff16880204945084870393505b5f82610120015161ffff16116140d157846140a430612e1e565b547401000000000000000000000000000000000000000090046bffffffffffffffffffffffff1601614121565b61012082015160018b0154612710916bffffffffffffffffffffffff74010000000000000000000000000000000000000000909204821661ffff919091160216046bffffffffffffffffffffffff165b6001808b015473ffffffffffffffffffffffffffffffffffffffff9081165f818152600b8f016020908152604091829020825160e081018452815460ff8116151582526101009004861692810192909252948501549384169181018290526bffffffffffffffffffffffff74010000000000000000000000000000000000000000948590048116606083015260029095015467ffffffffffffffff81166080830152680100000000000000008104861660a08301529390930490931660c08301529295509114801561420a57504367ffffffffffffffff16816080015167ffffffffffffffff16145b15614218576142188a61539e565b6040518060e001604052805f151581526020018b6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018a6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001896bffffffffffffffffffffffff1681526020014367ffffffffffffffff168152602001876bffffffffffffffffffffffff168152602001866bffffffffffffffffffffffff168152508b600b015f015f8c6001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151815f0160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060608201518160010160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506080820151816002015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060a08201518160020160086101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060c08201518160020160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050508115614551576a01a784379d99db42000000851115614551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f46616972204c696d6974204578636565646564000000000000000000000000006044820152606401611b22565b505050614713565b6040805160a0810182528a5461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff16606082015260018a015473ffffffffffffffffffffffffffffffffffffffff1660808201526145f79061538c565b8061469b57506040805160a081018252895461ffff8116825262010000810467ffffffffffffffff1660208301526a0100000000000000000000810469ffffffffffffffffffff1692820192909252740100000000000000000000000000000000000000009091046bffffffffffffffffffffffff166060820152600189015473ffffffffffffffffffffffffffffffffffffffff16608082015261469b9061538c565b156146b5576127106109c4880204945084870393506146cd565b60608201516127109061ffff16880204945084870393505b8015613faf5787546a01a784379d99db4200000090613f479086907401000000000000000000000000000000000000000090046bffffffffffffffffffffffff16615af7565b955095509592505050565b835482906bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811690821611156147d957600185015485546040517fdb42144d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90921660048301527401000000000000000000000000000000000000000090046bffffffffffffffffffffffff908116602483015282166044820152606401611b22565b84546bffffffffffffffffffffffff7401000000000000000000000000000000000000000080830482168490038216810273ffffffffffffffffffffffffffffffffffffffff9384161788558654818104831685019092160291161784558161264857600184810154908601546040516bffffffffffffffffffffffff8416815273ffffffffffffffffffffffffffffffffffffffff92831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a00000000000180546b0100000000000000000000007fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff909116811790915560408051610180810182527f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a000000000002805460ff8116835261ffff6101008083048216602086015263010000008304821685870152650100000000008304821660608087019190915267010000000000000084048316608087015269010000000000000000008404831660a0870152968304821660c08601526d01000000000000000000000000008304821660e08601526f0100000000000000000000000000000083048216908501527101000000000000000000000000000000000082041661012084015262ffffff730100000000000000000000000000000000000000909104166101408301528251938401928390525f93919290916101608401917f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000039060039082845b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311614a465750505050508152505090505f600267ffffffffffffffff811115614a9657614a966155f5565b604051908082528060200260200182016040528015614abf578160200160208202803683370190505b50905030815f81518110614ad557614ad5615aca565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614b78573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b9c9190615b35565b81600181518110614baf57614baf615aca565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101909101525f614bde30612e1e565b546bffffffffffffffffffffffff74010000000000000000000000000000000000000000909104811691505f9085168211614c195784614c1b565b815b6101008501519091505f906127109061ffff1615614ca25760028161ffff1687610100015161ffff1685026bffffffffffffffffffffffff1681614c6157614c61615b93565b046bffffffffffffffffffffffff1681614c7d57614c7d615b93565b0491508183039250600286610100015161ffff1681614c9e57614c9e615b93565b0490035b6040517f791ac947000000000000000000000000000000000000000000000000000000008152479073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790614d1e9087905f908b9030904290600401615bc0565b5f604051808303815f87803b158015614d35575f80fd5b505af1158015614d47573d5f803e3d5ffd5b505050505f8082470390505f805f805f8d60e0015161ffff161115614d95578761ffff168d60e0015161ffff1686026bffffffffffffffffffffffff1681614d9157614d91615b93565b0493505b60c08d015161ffff1615614dd2578761ffff168d60c0015161ffff1686026bffffffffffffffffffffffff1681614dce57614dce615b93565b0492505b60a08d015161ffff1615614e0f578761ffff168d60a0015161ffff1686026bffffffffffffffffffffffff1681614e0b57614e0b615b93565b0491505b60808d015161ffff1615614e4c578761ffff168d6080015161ffff1686026bffffffffffffffffffffffff1681614e4857614e48615b93565b0490505b6bffffffffffffffffffffffff841615614e6a57614e6a308561264f565b6bffffffffffffffffffffffff811615614f01576101608d0151516101408e015160405173ffffffffffffffffffffffffffffffffffffffff9092169162ffffff909116906bffffffffffffffffffffffff8416905f818181858888f193505050503d805f8114614ef6576040519150601f19603f3d011682016040523d82523d5f602084013e614efb565b606091505b50909650505b6bffffffffffffffffffffffff821615614f9c576101608d01516001602002015173ffffffffffffffffffffffffffffffffffffffff16826bffffffffffffffffffffffff168e610140015162ffffff16906040515f60405180830381858888f193505050503d805f8114614f91576040519150601f19603f3d011682016040523d82523d5f602084013e614f96565b606091505b50909650505b6bffffffffffffffffffffffff831615615037576101608d01516002602002015173ffffffffffffffffffffffffffffffffffffffff16836bffffffffffffffffffffffff168e610140015162ffffff16906040515f60405180830381858888f193505050503d805f811461502c576040519150601f19603f3d011682016040523d82523d5f602084013e615031565b606091505b50909650505b6bffffffffffffffffffffffff891615615185575f60028961ffff168f610100015161ffff1688026bffffffffffffffffffffffff168161507a5761507a615b93565b046bffffffffffffffffffffffff168161509657615096615b93565b6040517ff305d71900000000000000000000000000000000000000000000000000000000815230600482018190526bffffffffffffffffffffffff8e811660248401525f60448401819052606484015260848301919091524260a483015292909104925073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169163f305d719919084169060c40160606040518083038185885af115801561515b573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906151809190615b0a565b505050505b505050505050505050505050505f6151ba7f0f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff90565b60020180549115156b010000000000000000000000027fffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffff90921691909117905550565b8180156152225750805115806152225750808060200190518101906152229190615c59565b610ac4576040517f2b96f51300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f1181600a60016152d0565b5f607f821161529057825f526094600b5360d6600a5381821560071b17602053506017600a206109ab565b60085b82811c156152a357600801615293565b60031c828152600884901b5f5260808101601f536094600a538060d6016009536017016009209392505050565b806152e9578254600160ff84161b191661ffff166152f8565b825461ffff16600160ff84161b175b83547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff91909116179092555050565b80515f90600d1c6001908116146109ab565b80515f90600e1c6001908116146109ab565b80515f90600b1c6001908116146109ab565b5f61536b836153ab565b80610b2a5750610b2a826153ab565b80515f90600a1c6001908116146109ab565b80515f9060071c6001908116146109ab565b610f1181600760016152d0565b80515f9060091c6001908116146109ab565b60408051610180810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101919091526101608101615422615427565b905290565b60405180606001604052806003906020820280368337509192915050565b5f5b8381101561545f578181015183820152602001615447565b50505f910152565b5f815180845261547e816020860160208601615445565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081525f610b2a6020830184615467565b73ffffffffffffffffffffffffffffffffffffffff81168114610f11575f80fd5b5f80604083850312156154f4575f80fd5b82356154ff816154c2565b946020939093013593505050565b8015158114610f11575f80fd5b5f6020828403121561552a575f80fd5b8135610b2a8161550d565b5f805f60608486031215615547575f80fd5b8335615552816154c2565b92506020840135615562816154c2565b929592945050506040919091013590565b5f60208284031215615583575f80fd5b5035919050565b803561ffff8116811461559b575f80fd5b919050565b5f80604083850312156155b1575f80fd5b82356155bc816154c2565b91506155ca6020840161558a565b90509250929050565b5f602082840312156155e3575f80fd5b813562ffffff81168114610b2a575f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215615632575f80fd5b813567ffffffffffffffff80821115615649575f80fd5b818401915084601f83011261565c575f80fd5b81358181111561566e5761566e6155f5565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156156b4576156b46155f5565b816040528281528760208487010111156156cc575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f602082840312156156fb575f80fd5b610b2a8261558a565b5f60208284031215615714575f80fd5b813569ffffffffffffffffffff81168114610b2a575f80fd5b5f6020828403121561573d575f80fd5b8135610b2a816154c2565b805f5b6003811015610e7457815173ffffffffffffffffffffffffffffffffffffffff1684526020938401939091019060010161574b565b815160ff1681526101c0810160208301516157a1602084018261ffff169052565b5060408301516157b7604084018261ffff169052565b5060608301516157cd606084018261ffff169052565b5060808301516157e3608084018261ffff169052565b5060a08301516157f960a084018261ffff169052565b5060c083015161580f60c084018261ffff169052565b5060e083015161582560e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015162ffffff16908301526101608084015161586b82850182615748565b505092915050565b7fff00000000000000000000000000000000000000000000000000000000000000881681525f602060e060208401526158af60e084018a615467565b83810360408501526158c1818a615467565b6060850189905273ffffffffffffffffffffffffffffffffffffffff8816608086015260a0850187905284810360c0860152855180825260208088019350909101905f5b8181101561592157835183529284019291840191600101615905565b50909c9b505050505050505050505050565b803560ff8116811461559b575f80fd5b5f8060408385031215615954575f80fd5b823561595f816154c2565b91506155ca60208401615933565b5f6020828403121561597d575f80fd5b813565ffffffffffff81168114610b2a575f80fd5b5f805f606084860312156159a4575f80fd5b83356159af816154c2565b95602085013595506040909401359392505050565b5f805f805f805f60e0888a0312156159da575f80fd5b87356159e5816154c2565b965060208801356159f5816154c2565b95506040880135945060608801359350615a1160808901615933565b925060a0880135915060c0880135905092959891949750929550565b5f8060408385031215615a3e575f80fd5b8235615a49816154c2565b91506020830135615a59816154c2565b809150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b61ffff828116828216039080821115615aac57615aac615a64565b5092915050565b5f60208284031215615ac3575f80fd5b5051919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b808201808211156109ab576109ab615a64565b5f805f60608486031215615b1c575f80fd5b8351925060208401519150604084015190509250925092565b5f60208284031215615b45575f80fd5b8151610b2a816154c2565b5f69ffffffffffffffffffff808316818103615b6e57615b6e615a64565b6001019392505050565b5f8251615b89818460208701615445565b9190910192915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60a082016bffffffffffffffffffffffff88168352602087602085015260a0604085015281875180845260c0860191506020890193505f5b81811015615c2b57845173ffffffffffffffffffffffffffffffffffffffff1683529383019391830191600101615bf9565b505073ffffffffffffffffffffffffffffffffffffffff969096166060850152505050608001529392505050565b5f60208284031215615c69575f80fd5b8151610b2a8161550d56fea26469706673582212209f3438133a31fabcd186600528d9fee7dfd0c26db84406c2f812a7f9746113b964736f6c634300081800330f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c6a0000000000060f7e96853a48444354344a7326458ae903e52bb86d9bb0f30c69ffffffffffff000000000000000000000000e4249324c0b2d4247477cd35cf3a3f73abdf8d570000000000000000000000000011223317890359f6c2d832045cfd11b2ac5e440000000000000000000000008800ee330033ff9559d466205f83b46d0275da53