github.com/n1ghtfa1l/go-vnt@v0.6.4-alpha.6/contracts/vns/contract/publicresolver.go (about)

     1  package contract
     2  
     3  import (
     4  	"math/big"
     5  	"strings"
     6  
     7  	hubble "github.com/vntchain/go-vnt"
     8  	"github.com/vntchain/go-vnt/accounts/abi"
     9  	"github.com/vntchain/go-vnt/accounts/abi/bind"
    10  	"github.com/vntchain/go-vnt/common"
    11  	"github.com/vntchain/go-vnt/core/types"
    12  	"github.com/vntchain/go-vnt/event"
    13  )
    14  
    15  // PublicResolverABI is the input ABI used to generate the binding from.
    16  const PublicResolverABI = `[{"name":"PublicResolver","constant":false,"inputs":[{"name":"vnsAddr","type":"address","indexed":false}],"outputs":[],"type":"constructor"},{"name":"content","constant":true,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"ABIRecord","constant":true,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"contentTypes","type":"uint256","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"ABIContentType","constant":true,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"contentTypes","type":"uint256","indexed":false}],"outputs":[{"name":"output","type":"uint256","indexed":false}],"type":"function"},{"name":"setABI","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"contentType","type":"uint256","indexed":false},{"name":"data","type":"string","indexed":false}],"outputs":[],"type":"function"},{"name":"pubkeyX","constant":true,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"setContent","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"hash","type":"string","indexed":false}],"outputs":[],"type":"function"},{"name":"name","constant":true,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"setName","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"name","type":"string","indexed":false}],"outputs":[],"type":"function"},{"name":"pubkeyY","constant":true,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"setPubkey","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"x","type":"string","indexed":false},{"name":"y","type":"string","indexed":false}],"outputs":[],"type":"function"},{"name":"setText","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"key","type":"string","indexed":false},{"name":"value","type":"string","indexed":false}],"outputs":[],"type":"function"},{"name":"supportsInterface","constant":true,"inputs":[{"name":"interfaceID","type":"string","indexed":false}],"outputs":[{"name":"output","type":"bool","indexed":false}],"type":"function"},{"name":"addr","constant":false,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"address","indexed":false}],"type":"function"},{"name":"setAddr","constant":false,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"addr","type":"address","indexed":false}],"outputs":[],"type":"function"},{"name":"text","constant":true,"inputs":[{"name":"node","type":"string","indexed":false},{"name":"key","type":"string","indexed":false}],"outputs":[{"name":"output","type":"string","indexed":false}],"type":"function"},{"name":"AddrChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"a","type":"address","indexed":false}],"type":"event"},{"name":"ContentChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"hash","type":"string","indexed":false}],"type":"event"},{"name":"NameChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"name","type":"string","indexed":false}],"type":"event"},{"name":"ABIChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"contentType","type":"uint256","indexed":true}],"type":"event"},{"name":"PubkeyChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"x","type":"string","indexed":false},{"name":"y","type":"string","indexed":false}],"type":"event"},{"name":"TextChanged","anonymous":false,"inputs":[{"name":"node","type":"string","indexed":true},{"name":"indexedKey","type":"string","indexed":true},{"name":"key","type":"string","indexed":false}],"type":"event"},{"name":"owner","constant":false,"inputs":[{"name":"node","type":"string","indexed":false}],"outputs":[{"name":"output","type":"address","indexed":false}],"type":"call"}]`
    17  
    18  // PublicResolverBin is the compiled bytecode used for deploying new contracts.
    19  const PublicResolverBin = `0x0161736db912990100789cd45a0d705cd575feeebbefbe7ddaa79556c83f927f9fd706dba99056bf365480d73f0105703cc62eb84c2a3fed3e498b57bbcafe0889c6926248b00b4e4c9c6668dada5048c6931886c96452dbd06966d24c81490a691b3299928999109a9686129c1f9ac0d039f7bdb7efedca32729153c033ef9d7beef9f9ceb9e7de77579cffb9facdd31f326015461800d619decba6b057999cc45e3689bdcad4149bda2b26a726a7a6b017d80b36454cece553f464536c4a794159c0edec98b6d31eb3f3458006d15bf3e9a27d6bba38bc2397ce16ed3c18b1eb77da566a06574ba452d75b052834d0777774f7f46f191905f78789542a38bca534e00cc38954ea467ba22f3b98834a8cc6be6cba98b632e9bbec3fb2f2696b206317206846e4eeccda7947ade67abb788b9d4dd97968726edbc74b56c6993312a9547ecbb0951db2530811a76e4b2e5bb4b3c50aa6b1dd1ab12b382ed26c25d2e18c8774735f8578644769609f3de1f1746974973d5ef4390b1a8510a8a909d13fcef59a1a9debaa60a38c31c119146d219f6289d70fa9c614bcd7cb3546e8e76c8136628fe4f2130a8cfefe61db1aed1fb00a3667e1fefe9455b4faed6c8a2bd1949dcc58793bf5e15236594ce7b25858b7a33490492777da855c66ccce637143a1343a9acb170b7db45e8356d246936aa5527934870a7691928525a1a493212c0d17eca29b2e2c53b3d6888de52447d9c28a9ac4e6be9d7632974f61651d25c491dc35316ac3d4c8dce63eac0a8dcaccdc86984bedc1ea9a825d741286356ad11e2fe272324bf9c215e1e79a1b15182bb0199b11fde4f4f4b4431d70a8e8ddf4363e27983a993879687a1a8fc590d0120f3a244bd42410bd97644c24349325b48a31aae603e3c4771c138a54f3c5942a334a424b3ced88f22a319e10656b6f1d2c5b53024e1e9db3930ab5fb0f9dd7dae7cfcf3eebb14315ece9f34b3fe44b57420a5541aab4f6d4dcd3756ab67495c5124fcc3d2fa89a0f82baa75c11154b7bc2675f4485240e7a4555a19638725eb6d18ce81788881e945230d1a3c895301e648c4d399309b68a299b4c24b04e91eb11bd8fd81138ac7b66b20ece64dd3f93756426ebf33359b2281dd62a6698cc384dc8564f4b64dfc4be185b236917ab0c41ee2c9391baac94187a948d264bc4ef20d6bf12ab472181757724b05e91bb680327862919ffe0339a24e3299f11958caffb0c5d324efa0cac571ef547dfc41d0e4013c69702d0cd7d312588dc5412fa1d9b1f3aac919a92983e28412e3015827cd6811c351547a2c9544c653d8f6ee05036998a89e82169e9cfa603f94bfc48a64efa30028949c0643d4e624c982c7abfebde74811adfb8f80c3bf9c53a2772ca7797975efe7c557af9d355e9e5dfac4a2f3f55955efe4430bdfcc4fb3fbd8f96d37bf8bda4773d7fc889d54def092fbd7137bd15e56c56977353753947abcb59af2ee7ca5a7ebfa6f74439bd9fa94eef7714c683e955664baf92d858597d8a3c2002d5a7b815fc84cf702af884cff097a8c989f6e972b434928b11e33d4aad23eb6d86c4cf28bc5548bc29dfaab249d9e4f04c16bdc739763f1c01df44276f4c3559f4b3ce075166450a6c8bc0e48ebe93b46d116e986a82458f4ccb2af12d5d1f81612aa6daa3443d8786a9045657adf7e62bd8fc8396cde9df7736a72f229baaf162e516e2155b8807b610f7b710afd842dcdb42dce4e52dc4e7b085944d264bb0e8a7a79da47cca59bf72ec6ee4b36cb7a75d52e9719640eebc075cd4e59db76c66591076799ccc36298bc1f8daff5f5e66c47ad28ff5092f5653897eae3adab5e70b880c9cf2627bea7d17db293fb6a7cab1b1e8d1ead88c5f328ec4b46e4c943aba7bdabb3b37b46fecd8b0a1278ef878bc7d70307995b501f1f1ce81ce81ee0d291bf1f1d4c6ce8d57a592dd888ff75cd53ed8d9d5d98ef8784747bcd31ae8ee417c3cb9b1e7aa78476727e2e3dd57a5da535d9d496ccf154df77770a59f760089b7746359540596aac0152ad0ae02bd2a70bd0aec5449e2c11ae326cce77f6fd71bad297ba034d49fce0ee67e1e0254c957193d6bb1da95fbb2fbdec400e5a70036005054c13fa102bc9734ae07f0160016178451fb0d3d98c2992b2c049f560165a1c7d004bf87181ff21821c10f12a3d763e882df4f8c9b3d468de0478861798cb0e09f27468101cf1263b5e06709d2731ea43b19c03a952906bc4a026b047f90045e0710ba4159a3dfcb805e3903fd3e063453886b74fdef4843d29ba0ae61c06f69b02ab45169d61f600079509642ff82a7bf4cd58f79f4725d7f8401df229515b5fa2906a4885ed9148a2a2b7d9f2b1d9f0eadfa3e57ead07fce80bfa081b92e14554ca9f4b61c0794cc8092a903ea3f31e0711a2d0ee94aa3fe154f7021f4931ebd4885fa6b06bc42b969d19e63404897d97a83381d35b4fa0d00da1420bc811e9b15008600b002c0ed0ac05eaf65f4ea67911af9deae009166499217688d0aa0b03a3246b63334f526451021542e79b24cd65fc101f65b22a3e4b81b403d15d4ef1cef909606018c93a5777c4beff89624d9202d298ce8cbc8d462d226538c05c29153bb3c2f2a73dd34921b727e0fb9d1a59505d28f4b9ff4e9856d8ab33158b8427d138023a41e09a84702ea0eed00adf74d3591a9a867cab81cc0e714e0af2893572e3aa500cd004ed07047641da717d521e48a4d01685581708f0a2c4ed0e3267adc4a7bbaee5f14e041007f4bcac372b1e26460582e56dd08074e03a0d256ee22a391b52479174d37e9ab371e5557e368572fa94cd21e41ed729abf953972b7925cbdd4fe63d2ae6f21eeed92ec24724f9260a85915d84199f9af5094fdbb7eb5e2ec24f61fd0b7284e81b3ff54f51b15a7a8d9ab3a16ad53812f017886ec1c72fc1d227f11e9ef101968a6c8e354ddf757c50fd43da702df00407b55f9626f39b82f0682eb3aaacae08ec9e016dd2b1c9fdf23b9af3ae25f959a5bb8474a9f3790cfc767fa6cd51c9f7426284ffa3e25d9143eaaaf8ecb94b648af7fef787d4573bcbe4892cf3a0acf4a5d69e6d9b2d7bde4f5bb33bd1e0e013731e065d27cd1f7ea90b790ab1729c74d7547d7ad8e1e5557d74a10ba047196402ca122a9df4be3974872c9388d6fa0f1cbbd4eb1d7fd9bee78798d4cbf26779ff4f29aefe5b559bdbc21bd3c5ff6724e7a79a2ece5d7ae97a5ebc3c08bf49122d33a5bb0d679d3f402a9e9eec70c2ff317526e7e46b931d88ce4346a06b08c8a9014563886a4518746e36a57a09604ae0808383496260ce06bc425812e17529723487bdca34ffab484041a6f380fa45f1ac05a00f48550b6053cbaf4bd3e1f4b97d73ade5790f7ddaef7dd014197becfa7a57793c6b7cdf40e44ebdccfff8895a41b00f00535e2b2f25676c82ed067a011c04a007f10b839b4d06103a003c0b501fe66157844054eaac0e3aacf7f58d0271f303420a2051442801502ee08019990cffe131d38a8038fe8c0d774e05b3af0aceecfb7cfc23f5903bc5003fca20640186808d36ef3e7a766e16f09030f87816f84815301feed06f094017cdb00fed1009e37807f36fcf90db5c083b5c0c3b5c023b5c0c95ae0f15a7f9eb6f56500e8d3b9da1ddfe0be87dc778ffb4e00b8dc3da2e9aca7b387f8d300e8f8dec7013aa7e9724867e27755808eb64f0980ceab160da063e7650da093e4be104007c20f7580b6ecda30409b4a1800ed85980150c95f670054d9e70c800a72692d40b5f65c200e4c73af30ac8181bc3dc61ad8e5758d82d745172fad6b60bb1753c583d7f5355ed77cb5f18786d204f06ef43502ea22f435f23ae202a25ef2b435e075d71a8601841a996138937a445aa0c14603a869650dec32adbd11080bd0cb6805711c63d73503b5adcc19ac6dbeaed934808880c3202f758e014f82b001f55d0189e872d6de4832b7197b0ca0c19d13347759604e008d0163c233b64004141692c2eec58ef8a24adf24bcb84b06d1d405a5c987d05cd6328025864ce5d24a5fa40cbc13f56eeb9974d6ced1750f3a93d79adfd545e8c59c4a626dbb0b76bed076a79d2e58e9bb86adec50dbd65cb23462678b85b6a15c5b219f6c1b4a17874b03adc9dc48db58b6981cb6d2d9b6a1dc9563d9625b32972de6ad64b1d036962d944701762b2eb5875ca9385a2a0263d962263dd03a4c6155febfb2fed1bc9dcc8d8ca633766b12f2c224144a00ff3198a809af1ad6f85f4f1d104ce33f85a9303006a1d03ee4af33264478cff1bb051bf226a4e69b8c8986f03522f2a458abbd213a7bc5878e891a8dbf3279e05ab27646088dbfcd4c850794de614c44c2d78898a69b247c76d28c3bc2118ddfa39822a67d4434682d22f690e8d00e88e663223248823f9a1cf4ad7e5aa9b47a5021ababc432ed0592fdc1a4296af95758ab10da31feabfdd2d34f40cc138c0c1cab08e4b0520e64997646c44c7179abe83a434adf9b3485e04fb0568dfff7fe5ecf8ce08fb3331280aa4028740cf1162658f801bd74ee9cbe476f3ca70f9dd39fd41bcf9dd387e43fa2dd09f93a17989660a4253ac8f8f32053ab8644cd90608ff99312eb0fc0c482b07ead683e2d96684f8be6236281f6a458a4ef113543daa016d7f8df4c9da1753c0b53a9f574e944e43f9386af11b5c7c54aed23a2f688e81814b55a9b5879659ba8d58aa2db1d6aade7996caf98ecaa9cec084ef2cf4e1da0557a15a69f243a8bf96f2502fd46d13024963f261aae14cbdb44c33bf2f9930b3e4fd3531c57ea3d7b74a6f3434cdabb462ce01f1d7c97942cd1f80f618a06ded52a96f09b8e8826dedd2ac403821df7f3445f08fe45763e94a7e78075064afad2f0affa281f9b9a33cc174038bf3275442ce53fc00ca4f4ede24fce1f52fa06f2677da49f993bd25f49a4f74d514a7f3d13297d55f98b55486fbd10ae8ae7f7e9b9feb8c68f4f1ee02fb103e266bd5708931f9f6c158b34fe53362822da1ba26f50dcd42b222ff0bf9cec1596c65f62a658af1d13379f11c214cd1a1d1e932fd3c67895991afff3c99745b3c67fc24cc13ee16781befcfcb5f78ef5f0e4017ecec77ad8c1fa9b6aac871cace76662bdcfc1fa3661bddbc1faab2aac743b91279fbb62cf4fbedb8a2dd5f861c514976972f1be337940d4f0afb3566d903cfe62ff19d1a0f10714532c7b46347c56ac8857af24dd83f831e971152567d533426845ff84a2fb11fff2ecf3746fe25ff7113ffaae88cb35f6634635f6f0e411b18c9f95f443927e8939f5f6a48f926e65fcdb3e0a279a95f14a2c7467e3dff7b1dc3d772cd30af99f96fe3f29e977f61f112bf8012588056f6961f7065228e693192b3b648ed9f9423a973537b6c65be3e6ba62be94dd677676b55fd5135fff7bba25b45de862f0de20a06ffbae6d3b3f9cd8b2adffe66dbb12fd7d5b911cb6f22814f3e9ec10125bb7eeecf745fab662cb47b7efdab67d5725737be2e66d959cc4e6be4ac68edd9b6fdcb6a792b76bdb6d5586c6b20558a954de2e1490978d3d05ecb3273066654ab69c81d71a247b819c7e1e8c63c2bd3cdd684f40b6f38c58a3a3e9ec90ff27686472d921533e4ad9427a286ba7cc74b688523a5bece98235902e48baa3bb076e4fd14efbe3a574de2697a9b4ec67eadf9ccb65305218422e9b99f8a8ec00cbe652360ace5fbd47adbc355240bf1743bf35922b658be81fb20ad86265323b1c81198d52bb3bba7b6eb106ed9b4b9932bd353d56a66f290d94e9442a4549d9d7355eb48b77de59756dc4cc062bafaf2ad04be5b550f90d5455ed536ef394d73ae5354ef96d535eb7d45db468d27cda73d8b7d55d3c0c5b85619796094efa1e2a064859450bf81e972d5eec19be166efb1f9bd1f9a75437fd71b7df4f2db7fa8972979f566ef00b057afbf4f3b5f5d5381d7d61bf99cf70faf86a832d7c91aaeebdba60e35e7db9672f5a6ed76b0874ea5d56d9a4d718eccf5bd0d0df7fa75518e94f5a994c7fb298cb1716ce68a85b6404167e7155735dd3ccdeba66d95ab7c4ebac5bea35d62d0bf4d52d97395fe175d5adf49beaccaa9eba556e4b9dd74777db6aafa16e8ddf4f77b96ca7bbc2eba63b1d7de5f63f8d9187d8d5b14abcb1965832972d14ad6c3176f5a09529d82db17476b4542cc4aef675dcea8ab5c48a13a3c470f7568c8453f6b89d7295f77fac25e69c97a4ffb1b2bcf4912f514663fb5bca76dd4c548028e64be7c5405bdc07e09c8defe2bfacebb0e6a4ed4a0cba8b1d445b5e9379c43b2317725bfa7aee69f87b0f3450711f9c682fa47e8170dd0d35a79df01ee29c034e5f8fcee28bacf60b07e99e161f90ade69f8c976659e89b38afe995af0f4c6eb757a39db7c4ba7998efbaddf3c1c9adf305be34d91dbf18e189795d07f72a7169e27212366771f94b647ea3abbeb4cda9de0297edf92abb815c2e73b145673957b3795b97b921bdd015f05d3eb6f38c774626fe8f97d4f3c12d56d7fc7c5d80e654f297f492e7ff9e8ab5c4ac6c2e3b31922b15dec36a506a828b7151b5628fd1c73ea05ef913efd2409cf33560369081df9d9706e19cbfa7b321f47ff85e1a8073bde04ab50be0acf8517e69a05e82afe76cd104fea670696271f9375ef814a9529aeb99335b54f26f33efcb2f4dd2ca6462fb3f36fdbf000000ffff`
    20  
    21  // DeployPublicResolver deploys a new VNT contract, binding an instance of PublicResolver to it.
    22  func DeployPublicResolver(auth *bind.TransactOpts, backend bind.ContractBackend, ensAddr common.Address) (common.Address, *types.Transaction, *PublicResolver, error) {
    23  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
    24  	if err != nil {
    25  		return common.Address{}, nil, nil, err
    26  	}
    27  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(PublicResolverBin), backend, ensAddr)
    28  	if err != nil {
    29  		return common.Address{}, nil, nil, err
    30  	}
    31  	return address, tx, &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
    32  }
    33  
    34  // PublicResolver is an auto generated Go binding around an VNT contract.
    35  type PublicResolver struct {
    36  	PublicResolverCaller     // Read-only binding to the contract
    37  	PublicResolverTransactor // Write-only binding to the contract
    38  	PublicResolverFilterer   // Log filterer for contract events
    39  }
    40  
    41  // PublicResolverCaller is an auto generated read-only Go binding around an VNT contract.
    42  type PublicResolverCaller struct {
    43  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    44  }
    45  
    46  // PublicResolverTransactor is an auto generated write-only Go binding around an VNT contract.
    47  type PublicResolverTransactor struct {
    48  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    49  }
    50  
    51  // PublicResolverFilterer is an auto generated log filtering Go binding around an VNT contract events.
    52  type PublicResolverFilterer struct {
    53  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    54  }
    55  
    56  // PublicResolverSession is an auto generated Go binding around an VNT contract,
    57  // with pre-set call and transact options.
    58  type PublicResolverSession struct {
    59  	Contract     *PublicResolver   // Generic contract binding to set the session for
    60  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    61  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    62  }
    63  
    64  // PublicResolverCallerSession is an auto generated read-only Go binding around an VNT contract,
    65  // with pre-set call options.
    66  type PublicResolverCallerSession struct {
    67  	Contract *PublicResolverCaller // Generic contract caller binding to set the session for
    68  	CallOpts bind.CallOpts         // Call options to use throughout this session
    69  }
    70  
    71  // PublicResolverTransactorSession is an auto generated write-only Go binding around an VNT contract,
    72  // with pre-set transact options.
    73  type PublicResolverTransactorSession struct {
    74  	Contract     *PublicResolverTransactor // Generic contract transactor binding to set the session for
    75  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
    76  }
    77  
    78  // PublicResolverRaw is an auto generated low-level Go binding around an VNT contract.
    79  type PublicResolverRaw struct {
    80  	Contract *PublicResolver // Generic contract binding to access the raw methods on
    81  }
    82  
    83  // PublicResolverCallerRaw is an auto generated low-level read-only Go binding around an VNT contract.
    84  type PublicResolverCallerRaw struct {
    85  	Contract *PublicResolverCaller // Generic read-only contract binding to access the raw methods on
    86  }
    87  
    88  // PublicResolverTransactorRaw is an auto generated low-level write-only Go binding around an VNT contract.
    89  type PublicResolverTransactorRaw struct {
    90  	Contract *PublicResolverTransactor // Generic write-only contract binding to access the raw methods on
    91  }
    92  
    93  // NewPublicResolver creates a new instance of PublicResolver, bound to a specific deployed contract.
    94  func NewPublicResolver(address common.Address, backend bind.ContractBackend) (*PublicResolver, error) {
    95  	contract, err := bindPublicResolver(address, backend, backend, backend)
    96  	if err != nil {
    97  		return nil, err
    98  	}
    99  	return &PublicResolver{PublicResolverCaller: PublicResolverCaller{contract: contract}, PublicResolverTransactor: PublicResolverTransactor{contract: contract}, PublicResolverFilterer: PublicResolverFilterer{contract: contract}}, nil
   100  }
   101  
   102  // NewPublicResolverCaller creates a new read-only instance of PublicResolver, bound to a specific deployed contract.
   103  func NewPublicResolverCaller(address common.Address, caller bind.ContractCaller) (*PublicResolverCaller, error) {
   104  	contract, err := bindPublicResolver(address, caller, nil, nil)
   105  	if err != nil {
   106  		return nil, err
   107  	}
   108  	return &PublicResolverCaller{contract: contract}, nil
   109  }
   110  
   111  // NewPublicResolverTransactor creates a new write-only instance of PublicResolver, bound to a specific deployed contract.
   112  func NewPublicResolverTransactor(address common.Address, transactor bind.ContractTransactor) (*PublicResolverTransactor, error) {
   113  	contract, err := bindPublicResolver(address, nil, transactor, nil)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &PublicResolverTransactor{contract: contract}, nil
   118  }
   119  
   120  // NewPublicResolverFilterer creates a new log filterer instance of PublicResolver, bound to a specific deployed contract.
   121  func NewPublicResolverFilterer(address common.Address, filterer bind.ContractFilterer) (*PublicResolverFilterer, error) {
   122  	contract, err := bindPublicResolver(address, nil, nil, filterer)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &PublicResolverFilterer{contract: contract}, nil
   127  }
   128  
   129  // bindPublicResolver binds a generic wrapper to an already deployed contract.
   130  func bindPublicResolver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   131  	parsed, err := abi.JSON(strings.NewReader(PublicResolverABI))
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   136  }
   137  
   138  // Call invokes the (constant) contract method with params as input values and
   139  // sets the output to result. The result type might be a single field for simple
   140  // returns, a slice of interfaces for anonymous returns and a struct for named
   141  // returns.
   142  func (_PublicResolver *PublicResolverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   143  	return _PublicResolver.Contract.PublicResolverCaller.contract.Call(opts, result, method, params...)
   144  }
   145  
   146  // Transfer initiates a plain transaction to move funds to the contract, calling
   147  // its default method if one is available.
   148  func (_PublicResolver *PublicResolverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   149  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transfer(opts)
   150  }
   151  
   152  // Transact invokes the (paid) contract method with params as input values.
   153  func (_PublicResolver *PublicResolverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   154  	return _PublicResolver.Contract.PublicResolverTransactor.contract.Transact(opts, method, params...)
   155  }
   156  
   157  // Call invokes the (constant) contract method with params as input values and
   158  // sets the output to result. The result type might be a single field for simple
   159  // returns, a slice of interfaces for anonymous returns and a struct for named
   160  // returns.
   161  func (_PublicResolver *PublicResolverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   162  	return _PublicResolver.Contract.contract.Call(opts, result, method, params...)
   163  }
   164  
   165  // Transfer initiates a plain transaction to move funds to the contract, calling
   166  // its default method if one is available.
   167  func (_PublicResolver *PublicResolverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   168  	return _PublicResolver.Contract.contract.Transfer(opts)
   169  }
   170  
   171  // Transact invokes the (paid) contract method with params as input values.
   172  func (_PublicResolver *PublicResolverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   173  	return _PublicResolver.Contract.contract.Transact(opts, method, params...)
   174  }
   175  
   176  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   177  //
   178  // function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   179  func (_PublicResolver *PublicResolverCaller) ABIRecord(opts *bind.CallOpts, node string, contentTypes *big.Int) (string, error) {
   180  	var (
   181  		ret = new(string)
   182  	)
   183  	out := ret
   184  	err := _PublicResolver.contract.Call(opts, out, "ABIRecord", node, contentTypes)
   185  	return *ret, err
   186  }
   187  
   188  func (_PublicResolver *PublicResolverCaller) ABIContentType(opts *bind.CallOpts, node string, contentTypes *big.Int) (*big.Int, error) {
   189  	var (
   190  		ret = new(*big.Int)
   191  	)
   192  	out := ret
   193  	err := _PublicResolver.contract.Call(opts, out, "ABIContentType", node, contentTypes)
   194  	return *ret, err
   195  }
   196  
   197  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   198  //
   199  // function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   200  func (_PublicResolver *PublicResolverSession) ABIRecord(node string, contentTypes *big.Int) (string, error) {
   201  	return _PublicResolver.Contract.ABIRecord(&_PublicResolver.CallOpts, node, contentTypes)
   202  }
   203  
   204  func (_PublicResolver *PublicResolverSession) ABIContentType(node string, contentTypes *big.Int) (*big.Int, error) {
   205  	return _PublicResolver.Contract.ABIContentType(&_PublicResolver.CallOpts, node, contentTypes)
   206  }
   207  
   208  // ABI is a free data retrieval call binding the contract method 0x2203ab56.
   209  //
   210  // function ABI(node bytes32, contentTypes uint256) constant returns(contentType uint256, data bytes)
   211  func (_PublicResolver *PublicResolverCallerSession) ABIRecord(node string, contentTypes *big.Int) (string, error) {
   212  	return _PublicResolver.Contract.ABIRecord(&_PublicResolver.CallOpts, node, contentTypes)
   213  }
   214  
   215  func (_PublicResolver *PublicResolverCallerSession) ABIContentType(node string, contentTypes *big.Int) (*big.Int, error) {
   216  	return _PublicResolver.Contract.ABIContentType(&_PublicResolver.CallOpts, node, contentTypes)
   217  }
   218  
   219  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   220  //
   221  // function addr(node bytes32) constant returns(ret address)
   222  func (_PublicResolver *PublicResolverCaller) Addr(opts *bind.CallOpts, node string) (common.Address, error) {
   223  	var (
   224  		ret0 = new(common.Address)
   225  	)
   226  	out := ret0
   227  	err := _PublicResolver.contract.Call(opts, out, "addr", node)
   228  	return *ret0, err
   229  }
   230  
   231  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   232  //
   233  // function addr(node bytes32) constant returns(ret address)
   234  func (_PublicResolver *PublicResolverSession) Addr(node string) (common.Address, error) {
   235  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   236  }
   237  
   238  // Addr is a free data retrieval call binding the contract method 0x3b3b57de.
   239  //
   240  // function addr(node bytes32) constant returns(ret address)
   241  func (_PublicResolver *PublicResolverCallerSession) Addr(node string) (common.Address, error) {
   242  	return _PublicResolver.Contract.Addr(&_PublicResolver.CallOpts, node)
   243  }
   244  
   245  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   246  //
   247  // function content(node bytes32) constant returns(ret bytes32)
   248  func (_PublicResolver *PublicResolverCaller) Content(opts *bind.CallOpts, node string) (string, error) {
   249  	var (
   250  		ret0 = new(string)
   251  	)
   252  	out := ret0
   253  	err := _PublicResolver.contract.Call(opts, out, "content", node)
   254  	return *ret0, err
   255  }
   256  
   257  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   258  //
   259  // function content(node bytes32) constant returns(ret bytes32)
   260  func (_PublicResolver *PublicResolverSession) Content(node string) (string, error) {
   261  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   262  }
   263  
   264  // Content is a free data retrieval call binding the contract method 0x2dff6941.
   265  //
   266  // function content(node bytes32) constant returns(ret bytes32)
   267  func (_PublicResolver *PublicResolverCallerSession) Content(node string) (string, error) {
   268  	return _PublicResolver.Contract.Content(&_PublicResolver.CallOpts, node)
   269  }
   270  
   271  // Name is a free data retrieval call binding the contract method 0x691f3431.
   272  //
   273  // function name(node bytes32) constant returns(ret string)
   274  func (_PublicResolver *PublicResolverCaller) Name(opts *bind.CallOpts, node string) (string, error) {
   275  	var (
   276  		ret0 = new(string)
   277  	)
   278  	out := ret0
   279  	err := _PublicResolver.contract.Call(opts, out, "name", node)
   280  	return *ret0, err
   281  }
   282  
   283  // Name is a free data retrieval call binding the contract method 0x691f3431.
   284  //
   285  // function name(node bytes32) constant returns(ret string)
   286  func (_PublicResolver *PublicResolverSession) Name(node string) (string, error) {
   287  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   288  }
   289  
   290  // Name is a free data retrieval call binding the contract method 0x691f3431.
   291  //
   292  // function name(node bytes32) constant returns(ret string)
   293  func (_PublicResolver *PublicResolverCallerSession) Name(node string) (string, error) {
   294  	return _PublicResolver.Contract.Name(&_PublicResolver.CallOpts, node)
   295  }
   296  
   297  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   298  //
   299  // function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   300  func (_PublicResolver *PublicResolverCaller) PubkeyX(opts *bind.CallOpts, node string) (string, error) {
   301  	var (
   302  		ret0 = new(string)
   303  	)
   304  	out := ret0
   305  	err := _PublicResolver.contract.Call(opts, &out, "pubkeyX", node)
   306  	return *ret0, err
   307  }
   308  
   309  func (_PublicResolver *PublicResolverCaller) PubkeyY(opts *bind.CallOpts, node string) (string, error) {
   310  	var (
   311  		ret0 = new(string)
   312  	)
   313  	out := ret0
   314  	err := _PublicResolver.contract.Call(opts, &out, "pubkeyY", node)
   315  	return *ret0, err
   316  }
   317  
   318  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   319  //
   320  // function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   321  func (_PublicResolver *PublicResolverSession) PubkeyX(node string) (string, error) {
   322  	return _PublicResolver.Contract.PubkeyX(&_PublicResolver.CallOpts, node)
   323  }
   324  
   325  func (_PublicResolver *PublicResolverSession) PubkeyY(node string) (string, error) {
   326  	return _PublicResolver.Contract.PubkeyY(&_PublicResolver.CallOpts, node)
   327  }
   328  
   329  // Pubkey is a free data retrieval call binding the contract method 0xc8690233.
   330  //
   331  // function pubkey(node bytes32) constant returns(x bytes32, y bytes32)
   332  func (_PublicResolver *PublicResolverCallerSession) PubkeyX(node string) (string, error) {
   333  	return _PublicResolver.Contract.PubkeyX(&_PublicResolver.CallOpts, node)
   334  }
   335  
   336  func (_PublicResolver *PublicResolverCallerSession) Pubkey(node string) (string, error) {
   337  	return _PublicResolver.Contract.PubkeyY(&_PublicResolver.CallOpts, node)
   338  }
   339  
   340  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   341  //
   342  // function supportsInterface(interfaceID bytes4) constant returns(bool)
   343  func (_PublicResolver *PublicResolverCaller) SupportsInterface(opts *bind.CallOpts, interfaceID [4]byte) (bool, error) {
   344  	var (
   345  		ret0 = new(bool)
   346  	)
   347  	out := ret0
   348  	err := _PublicResolver.contract.Call(opts, out, "supportsInterface", interfaceID)
   349  	return *ret0, err
   350  }
   351  
   352  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   353  //
   354  // function supportsInterface(interfaceID bytes4) constant returns(bool)
   355  func (_PublicResolver *PublicResolverSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   356  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   357  }
   358  
   359  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   360  //
   361  // function supportsInterface(interfaceID bytes4) constant returns(bool)
   362  func (_PublicResolver *PublicResolverCallerSession) SupportsInterface(interfaceID [4]byte) (bool, error) {
   363  	return _PublicResolver.Contract.SupportsInterface(&_PublicResolver.CallOpts, interfaceID)
   364  }
   365  
   366  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   367  //
   368  // function text(node bytes32, key string) constant returns(ret string)
   369  func (_PublicResolver *PublicResolverCaller) Text(opts *bind.CallOpts, node string, key string) (string, error) {
   370  	var (
   371  		ret0 = new(string)
   372  	)
   373  	out := ret0
   374  	err := _PublicResolver.contract.Call(opts, out, "text", node, key)
   375  	return *ret0, err
   376  }
   377  
   378  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   379  //
   380  // function text(node bytes32, key string) constant returns(ret string)
   381  func (_PublicResolver *PublicResolverSession) Text(node string, key string) (string, error) {
   382  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   383  }
   384  
   385  // Text is a free data retrieval call binding the contract method 0x59d1d43c.
   386  //
   387  // function text(node bytes32, key string) constant returns(ret string)
   388  func (_PublicResolver *PublicResolverCallerSession) Text(node string, key string) (string, error) {
   389  	return _PublicResolver.Contract.Text(&_PublicResolver.CallOpts, node, key)
   390  }
   391  
   392  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   393  //
   394  // function setABI(node bytes32, contentType uint256, data bytes) returns()
   395  func (_PublicResolver *PublicResolverTransactor) SetABI(opts *bind.TransactOpts, node string, contentType *big.Int, data []byte) (*types.Transaction, error) {
   396  	return _PublicResolver.contract.Transact(opts, "setABI", node, contentType, data)
   397  }
   398  
   399  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   400  //
   401  // function setABI(node bytes32, contentType uint256, data bytes) returns()
   402  func (_PublicResolver *PublicResolverSession) SetABI(node string, contentType *big.Int, data []byte) (*types.Transaction, error) {
   403  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   404  }
   405  
   406  // SetABI is a paid mutator transaction binding the contract method 0x623195b0.
   407  //
   408  // function setABI(node bytes32, contentType uint256, data bytes) returns()
   409  func (_PublicResolver *PublicResolverTransactorSession) SetABI(node string, contentType *big.Int, data []byte) (*types.Transaction, error) {
   410  	return _PublicResolver.Contract.SetABI(&_PublicResolver.TransactOpts, node, contentType, data)
   411  }
   412  
   413  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   414  //
   415  // function setAddr(node bytes32, addr address) returns()
   416  func (_PublicResolver *PublicResolverTransactor) SetAddr(opts *bind.TransactOpts, node string, addr common.Address) (*types.Transaction, error) {
   417  	return _PublicResolver.contract.Transact(opts, "setAddr", node, addr)
   418  }
   419  
   420  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   421  //
   422  // function setAddr(node bytes32, addr address) returns()
   423  func (_PublicResolver *PublicResolverSession) SetAddr(node string, addr common.Address) (*types.Transaction, error) {
   424  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   425  }
   426  
   427  // SetAddr is a paid mutator transaction binding the contract method 0xd5fa2b00.
   428  //
   429  // function setAddr(node bytes32, addr address) returns()
   430  func (_PublicResolver *PublicResolverTransactorSession) SetAddr(node string, addr common.Address) (*types.Transaction, error) {
   431  	return _PublicResolver.Contract.SetAddr(&_PublicResolver.TransactOpts, node, addr)
   432  }
   433  
   434  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   435  //
   436  // function setContent(node bytes32, hash bytes32) returns()
   437  func (_PublicResolver *PublicResolverTransactor) SetContent(opts *bind.TransactOpts, node string, hash string) (*types.Transaction, error) {
   438  	return _PublicResolver.contract.Transact(opts, "setContent", node, hash)
   439  }
   440  
   441  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   442  //
   443  // function setContent(node bytes32, hash bytes32) returns()
   444  func (_PublicResolver *PublicResolverSession) SetContent(node string, hash string) (*types.Transaction, error) {
   445  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   446  }
   447  
   448  // SetContent is a paid mutator transaction binding the contract method 0xc3d014d6.
   449  //
   450  // function setContent(node bytes32, hash bytes32) returns()
   451  func (_PublicResolver *PublicResolverTransactorSession) SetContent(node string, hash string) (*types.Transaction, error) {
   452  	return _PublicResolver.Contract.SetContent(&_PublicResolver.TransactOpts, node, hash)
   453  }
   454  
   455  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   456  //
   457  // function setName(node bytes32, name string) returns()
   458  func (_PublicResolver *PublicResolverTransactor) SetName(opts *bind.TransactOpts, node string, name string) (*types.Transaction, error) {
   459  	return _PublicResolver.contract.Transact(opts, "setName", node, name)
   460  }
   461  
   462  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   463  //
   464  // function setName(node bytes32, name string) returns()
   465  func (_PublicResolver *PublicResolverSession) SetName(node string, name string) (*types.Transaction, error) {
   466  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   467  }
   468  
   469  // SetName is a paid mutator transaction binding the contract method 0x77372213.
   470  //
   471  // function setName(node bytes32, name string) returns()
   472  func (_PublicResolver *PublicResolverTransactorSession) SetName(node string, name string) (*types.Transaction, error) {
   473  	return _PublicResolver.Contract.SetName(&_PublicResolver.TransactOpts, node, name)
   474  }
   475  
   476  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   477  //
   478  // function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   479  func (_PublicResolver *PublicResolverTransactor) SetPubkey(opts *bind.TransactOpts, node string, x string, y string) (*types.Transaction, error) {
   480  	return _PublicResolver.contract.Transact(opts, "setPubkey", node, x, y)
   481  }
   482  
   483  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   484  //
   485  // function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   486  func (_PublicResolver *PublicResolverSession) SetPubkey(node string, x string, y string) (*types.Transaction, error) {
   487  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   488  }
   489  
   490  // SetPubkey is a paid mutator transaction binding the contract method 0x29cd62ea.
   491  //
   492  // function setPubkey(node bytes32, x bytes32, y bytes32) returns()
   493  func (_PublicResolver *PublicResolverTransactorSession) SetPubkey(node string, x string, y string) (*types.Transaction, error) {
   494  	return _PublicResolver.Contract.SetPubkey(&_PublicResolver.TransactOpts, node, x, y)
   495  }
   496  
   497  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   498  //
   499  // function setText(node bytes32, key string, value string) returns()
   500  func (_PublicResolver *PublicResolverTransactor) SetText(opts *bind.TransactOpts, node string, key string, value string) (*types.Transaction, error) {
   501  	return _PublicResolver.contract.Transact(opts, "setText", node, key, value)
   502  }
   503  
   504  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   505  //
   506  // function setText(node bytes32, key string, value string) returns()
   507  func (_PublicResolver *PublicResolverSession) SetText(node string, key string, value string) (*types.Transaction, error) {
   508  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   509  }
   510  
   511  // SetText is a paid mutator transaction binding the contract method 0x10f13a8c.
   512  //
   513  // function setText(node bytes32, key string, value string) returns()
   514  func (_PublicResolver *PublicResolverTransactorSession) SetText(node string, key string, value string) (*types.Transaction, error) {
   515  	return _PublicResolver.Contract.SetText(&_PublicResolver.TransactOpts, node, key, value)
   516  }
   517  
   518  // PublicResolverABIChangedIterator is returned from FilterABIChanged and is used to iterate over the raw logs and unpacked data for ABIChanged events raised by the PublicResolver contract.
   519  type PublicResolverABIChangedIterator struct {
   520  	Event *PublicResolverABIChanged // Event containing the contract specifics and raw log
   521  
   522  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   523  	event    string              // Event name to use for unpacking event data
   524  
   525  	logs chan types.Log      // Log channel receiving the found contract events
   526  	sub  hubble.Subscription // Subscription for errors, completion and termination
   527  	done bool                // Whether the subscription completed delivering logs
   528  	fail error               // Occurred error to stop iteration
   529  }
   530  
   531  // Next advances the iterator to the subsequent event, returning whether there
   532  // are any more events found. In case of a retrieval or parsing error, false is
   533  // returned and Error() can be queried for the exact failure.
   534  func (it *PublicResolverABIChangedIterator) Next() bool {
   535  	// If the iterator failed, stop iterating
   536  	if it.fail != nil {
   537  		return false
   538  	}
   539  	// If the iterator completed, deliver directly whatever's available
   540  	if it.done {
   541  		select {
   542  		case log := <-it.logs:
   543  			it.Event = new(PublicResolverABIChanged)
   544  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   545  				it.fail = err
   546  				return false
   547  			}
   548  			it.Event.Raw = log
   549  			return true
   550  
   551  		default:
   552  			return false
   553  		}
   554  	}
   555  	// Iterator still in progress, wait for either a data or an error event
   556  	select {
   557  	case log := <-it.logs:
   558  		it.Event = new(PublicResolverABIChanged)
   559  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   560  			it.fail = err
   561  			return false
   562  		}
   563  		it.Event.Raw = log
   564  		return true
   565  
   566  	case err := <-it.sub.Err():
   567  		it.done = true
   568  		it.fail = err
   569  		return it.Next()
   570  	}
   571  }
   572  
   573  // Error returns any retrieval or parsing error occurred during filtering.
   574  func (it *PublicResolverABIChangedIterator) Error() error {
   575  	return it.fail
   576  }
   577  
   578  // Close terminates the iteration process, releasing any pending underlying
   579  // resources.
   580  func (it *PublicResolverABIChangedIterator) Close() error {
   581  	it.sub.Unsubscribe()
   582  	return nil
   583  }
   584  
   585  // PublicResolverABIChanged represents a ABIChanged event raised by the PublicResolver contract.
   586  type PublicResolverABIChanged struct {
   587  	Node        string
   588  	ContentType *big.Int
   589  	Raw         types.Log // Blockchain specific contextual infos
   590  }
   591  
   592  // FilterABIChanged is a free log retrieval operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   593  //
   594  // e ABIChanged(node indexed bytes32, contentType indexed uint256)
   595  func (_PublicResolver *PublicResolverFilterer) FilterABIChanged(opts *bind.FilterOpts, node []string, contentType []*big.Int) (*PublicResolverABIChangedIterator, error) {
   596  
   597  	var nodeRule []interface{}
   598  	for _, nodeItem := range node {
   599  		nodeRule = append(nodeRule, nodeItem)
   600  	}
   601  	var contentTypeRule []interface{}
   602  	for _, contentTypeItem := range contentType {
   603  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   604  	}
   605  
   606  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   607  	if err != nil {
   608  		return nil, err
   609  	}
   610  	return &PublicResolverABIChangedIterator{contract: _PublicResolver.contract, event: "ABIChanged", logs: logs, sub: sub}, nil
   611  }
   612  
   613  // WatchABIChanged is a free log subscription operation binding the contract event 0xaa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe3.
   614  //
   615  // e ABIChanged(node indexed bytes32, contentType indexed uint256)
   616  func (_PublicResolver *PublicResolverFilterer) WatchABIChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverABIChanged, node []string, contentType []*big.Int) (event.Subscription, error) {
   617  
   618  	var nodeRule []interface{}
   619  	for _, nodeItem := range node {
   620  		nodeRule = append(nodeRule, nodeItem)
   621  	}
   622  	var contentTypeRule []interface{}
   623  	for _, contentTypeItem := range contentType {
   624  		contentTypeRule = append(contentTypeRule, contentTypeItem)
   625  	}
   626  
   627  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ABIChanged", nodeRule, contentTypeRule)
   628  	if err != nil {
   629  		return nil, err
   630  	}
   631  	return event.NewSubscription(func(quit <-chan struct{}) error {
   632  		defer sub.Unsubscribe()
   633  		for {
   634  			select {
   635  			case log := <-logs:
   636  				// New log arrived, parse the event and forward to the user
   637  				event := new(PublicResolverABIChanged)
   638  				if err := _PublicResolver.contract.UnpackLog(event, "ABIChanged", log); err != nil {
   639  					return err
   640  				}
   641  				event.Raw = log
   642  
   643  				select {
   644  				case sink <- event:
   645  				case err := <-sub.Err():
   646  					return err
   647  				case <-quit:
   648  					return nil
   649  				}
   650  			case err := <-sub.Err():
   651  				return err
   652  			case <-quit:
   653  				return nil
   654  			}
   655  		}
   656  	}), nil
   657  }
   658  
   659  // PublicResolverAddrChangedIterator is returned from FilterAddrChanged and is used to iterate over the raw logs and unpacked data for AddrChanged events raised by the PublicResolver contract.
   660  type PublicResolverAddrChangedIterator struct {
   661  	Event *PublicResolverAddrChanged // Event containing the contract specifics and raw log
   662  
   663  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   664  	event    string              // Event name to use for unpacking event data
   665  
   666  	logs chan types.Log      // Log channel receiving the found contract events
   667  	sub  hubble.Subscription // Subscription for errors, completion and termination
   668  	done bool                // Whether the subscription completed delivering logs
   669  	fail error               // Occurred error to stop iteration
   670  }
   671  
   672  // Next advances the iterator to the subsequent event, returning whether there
   673  // are any more events found. In case of a retrieval or parsing error, false is
   674  // returned and Error() can be queried for the exact failure.
   675  func (it *PublicResolverAddrChangedIterator) Next() bool {
   676  	// If the iterator failed, stop iterating
   677  	if it.fail != nil {
   678  		return false
   679  	}
   680  	// If the iterator completed, deliver directly whatever's available
   681  	if it.done {
   682  		select {
   683  		case log := <-it.logs:
   684  			it.Event = new(PublicResolverAddrChanged)
   685  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   686  				it.fail = err
   687  				return false
   688  			}
   689  			it.Event.Raw = log
   690  			return true
   691  
   692  		default:
   693  			return false
   694  		}
   695  	}
   696  	// Iterator still in progress, wait for either a data or an error event
   697  	select {
   698  	case log := <-it.logs:
   699  		it.Event = new(PublicResolverAddrChanged)
   700  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   701  			it.fail = err
   702  			return false
   703  		}
   704  		it.Event.Raw = log
   705  		return true
   706  
   707  	case err := <-it.sub.Err():
   708  		it.done = true
   709  		it.fail = err
   710  		return it.Next()
   711  	}
   712  }
   713  
   714  // Error returns any retrieval or parsing error occurred during filtering.
   715  func (it *PublicResolverAddrChangedIterator) Error() error {
   716  	return it.fail
   717  }
   718  
   719  // Close terminates the iteration process, releasing any pending underlying
   720  // resources.
   721  func (it *PublicResolverAddrChangedIterator) Close() error {
   722  	it.sub.Unsubscribe()
   723  	return nil
   724  }
   725  
   726  // PublicResolverAddrChanged represents a AddrChanged event raised by the PublicResolver contract.
   727  type PublicResolverAddrChanged struct {
   728  	Node string
   729  	A    common.Address
   730  	Raw  types.Log // Blockchain specific contextual infos
   731  }
   732  
   733  // FilterAddrChanged is a free log retrieval operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   734  //
   735  // e AddrChanged(node indexed bytes32, a address)
   736  func (_PublicResolver *PublicResolverFilterer) FilterAddrChanged(opts *bind.FilterOpts, node []string) (*PublicResolverAddrChangedIterator, error) {
   737  
   738  	var nodeRule []interface{}
   739  	for _, nodeItem := range node {
   740  		nodeRule = append(nodeRule, nodeItem)
   741  	}
   742  
   743  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "AddrChanged", nodeRule)
   744  	if err != nil {
   745  		return nil, err
   746  	}
   747  	return &PublicResolverAddrChangedIterator{contract: _PublicResolver.contract, event: "AddrChanged", logs: logs, sub: sub}, nil
   748  }
   749  
   750  // WatchAddrChanged is a free log subscription operation binding the contract event 0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2.
   751  //
   752  // e AddrChanged(node indexed bytes32, a address)
   753  func (_PublicResolver *PublicResolverFilterer) WatchAddrChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverAddrChanged, node []string) (event.Subscription, error) {
   754  
   755  	var nodeRule []interface{}
   756  	for _, nodeItem := range node {
   757  		nodeRule = append(nodeRule, nodeItem)
   758  	}
   759  
   760  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "AddrChanged", nodeRule)
   761  	if err != nil {
   762  		return nil, err
   763  	}
   764  	return event.NewSubscription(func(quit <-chan struct{}) error {
   765  		defer sub.Unsubscribe()
   766  		for {
   767  			select {
   768  			case log := <-logs:
   769  				// New log arrived, parse the event and forward to the user
   770  				event := new(PublicResolverAddrChanged)
   771  				if err := _PublicResolver.contract.UnpackLog(event, "AddrChanged", log); err != nil {
   772  					return err
   773  				}
   774  				event.Raw = log
   775  
   776  				select {
   777  				case sink <- event:
   778  				case err := <-sub.Err():
   779  					return err
   780  				case <-quit:
   781  					return nil
   782  				}
   783  			case err := <-sub.Err():
   784  				return err
   785  			case <-quit:
   786  				return nil
   787  			}
   788  		}
   789  	}), nil
   790  }
   791  
   792  // PublicResolverContentChangedIterator is returned from FilterContentChanged and is used to iterate over the raw logs and unpacked data for ContentChanged events raised by the PublicResolver contract.
   793  type PublicResolverContentChangedIterator struct {
   794  	Event *PublicResolverContentChanged // Event containing the contract specifics and raw log
   795  
   796  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   797  	event    string              // Event name to use for unpacking event data
   798  
   799  	logs chan types.Log      // Log channel receiving the found contract events
   800  	sub  hubble.Subscription // Subscription for errors, completion and termination
   801  	done bool                // Whether the subscription completed delivering logs
   802  	fail error               // Occurred error to stop iteration
   803  }
   804  
   805  // Next advances the iterator to the subsequent event, returning whether there
   806  // are any more events found. In case of a retrieval or parsing error, false is
   807  // returned and Error() can be queried for the exact failure.
   808  func (it *PublicResolverContentChangedIterator) Next() bool {
   809  	// If the iterator failed, stop iterating
   810  	if it.fail != nil {
   811  		return false
   812  	}
   813  	// If the iterator completed, deliver directly whatever's available
   814  	if it.done {
   815  		select {
   816  		case log := <-it.logs:
   817  			it.Event = new(PublicResolverContentChanged)
   818  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   819  				it.fail = err
   820  				return false
   821  			}
   822  			it.Event.Raw = log
   823  			return true
   824  
   825  		default:
   826  			return false
   827  		}
   828  	}
   829  	// Iterator still in progress, wait for either a data or an error event
   830  	select {
   831  	case log := <-it.logs:
   832  		it.Event = new(PublicResolverContentChanged)
   833  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   834  			it.fail = err
   835  			return false
   836  		}
   837  		it.Event.Raw = log
   838  		return true
   839  
   840  	case err := <-it.sub.Err():
   841  		it.done = true
   842  		it.fail = err
   843  		return it.Next()
   844  	}
   845  }
   846  
   847  // Error returns any retrieval or parsing error occurred during filtering.
   848  func (it *PublicResolverContentChangedIterator) Error() error {
   849  	return it.fail
   850  }
   851  
   852  // Close terminates the iteration process, releasing any pending underlying
   853  // resources.
   854  func (it *PublicResolverContentChangedIterator) Close() error {
   855  	it.sub.Unsubscribe()
   856  	return nil
   857  }
   858  
   859  // PublicResolverContentChanged represents a ContentChanged event raised by the PublicResolver contract.
   860  type PublicResolverContentChanged struct {
   861  	Node string
   862  	Hash string
   863  	Raw  types.Log // Blockchain specific contextual infos
   864  }
   865  
   866  // FilterContentChanged is a free log retrieval operation binding the contract event 0x0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc.
   867  //
   868  // e ContentChanged(node indexed bytes32, hash bytes32)
   869  func (_PublicResolver *PublicResolverFilterer) FilterContentChanged(opts *bind.FilterOpts, node []string) (*PublicResolverContentChangedIterator, error) {
   870  
   871  	var nodeRule []interface{}
   872  	for _, nodeItem := range node {
   873  		nodeRule = append(nodeRule, nodeItem)
   874  	}
   875  
   876  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "ContentChanged", nodeRule)
   877  	if err != nil {
   878  		return nil, err
   879  	}
   880  	return &PublicResolverContentChangedIterator{contract: _PublicResolver.contract, event: "ContentChanged", logs: logs, sub: sub}, nil
   881  }
   882  
   883  // WatchContentChanged is a free log subscription operation binding the contract event 0x0424b6fe0d9c3bdbece0e7879dc241bb0c22e900be8b6c168b4ee08bd9bf83bc.
   884  //
   885  // e ContentChanged(node indexed bytes32, hash bytes32)
   886  func (_PublicResolver *PublicResolverFilterer) WatchContentChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverContentChanged, node []string) (event.Subscription, error) {
   887  
   888  	var nodeRule []interface{}
   889  	for _, nodeItem := range node {
   890  		nodeRule = append(nodeRule, nodeItem)
   891  	}
   892  
   893  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "ContentChanged", nodeRule)
   894  	if err != nil {
   895  		return nil, err
   896  	}
   897  	return event.NewSubscription(func(quit <-chan struct{}) error {
   898  		defer sub.Unsubscribe()
   899  		for {
   900  			select {
   901  			case log := <-logs:
   902  				// New log arrived, parse the event and forward to the user
   903  				event := new(PublicResolverContentChanged)
   904  				if err := _PublicResolver.contract.UnpackLog(event, "ContentChanged", log); err != nil {
   905  					return err
   906  				}
   907  				event.Raw = log
   908  
   909  				select {
   910  				case sink <- event:
   911  				case err := <-sub.Err():
   912  					return err
   913  				case <-quit:
   914  					return nil
   915  				}
   916  			case err := <-sub.Err():
   917  				return err
   918  			case <-quit:
   919  				return nil
   920  			}
   921  		}
   922  	}), nil
   923  }
   924  
   925  // PublicResolverNameChangedIterator is returned from FilterNameChanged and is used to iterate over the raw logs and unpacked data for NameChanged events raised by the PublicResolver contract.
   926  type PublicResolverNameChangedIterator struct {
   927  	Event *PublicResolverNameChanged // Event containing the contract specifics and raw log
   928  
   929  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   930  	event    string              // Event name to use for unpacking event data
   931  
   932  	logs chan types.Log      // Log channel receiving the found contract events
   933  	sub  hubble.Subscription // Subscription for errors, completion and termination
   934  	done bool                // Whether the subscription completed delivering logs
   935  	fail error               // Occurred error to stop iteration
   936  }
   937  
   938  // Next advances the iterator to the subsequent event, returning whether there
   939  // are any more events found. In case of a retrieval or parsing error, false is
   940  // returned and Error() can be queried for the exact failure.
   941  func (it *PublicResolverNameChangedIterator) Next() bool {
   942  	// If the iterator failed, stop iterating
   943  	if it.fail != nil {
   944  		return false
   945  	}
   946  	// If the iterator completed, deliver directly whatever's available
   947  	if it.done {
   948  		select {
   949  		case log := <-it.logs:
   950  			it.Event = new(PublicResolverNameChanged)
   951  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   952  				it.fail = err
   953  				return false
   954  			}
   955  			it.Event.Raw = log
   956  			return true
   957  
   958  		default:
   959  			return false
   960  		}
   961  	}
   962  	// Iterator still in progress, wait for either a data or an error event
   963  	select {
   964  	case log := <-it.logs:
   965  		it.Event = new(PublicResolverNameChanged)
   966  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   967  			it.fail = err
   968  			return false
   969  		}
   970  		it.Event.Raw = log
   971  		return true
   972  
   973  	case err := <-it.sub.Err():
   974  		it.done = true
   975  		it.fail = err
   976  		return it.Next()
   977  	}
   978  }
   979  
   980  // Error returns any retrieval or parsing error occurred during filtering.
   981  func (it *PublicResolverNameChangedIterator) Error() error {
   982  	return it.fail
   983  }
   984  
   985  // Close terminates the iteration process, releasing any pending underlying
   986  // resources.
   987  func (it *PublicResolverNameChangedIterator) Close() error {
   988  	it.sub.Unsubscribe()
   989  	return nil
   990  }
   991  
   992  // PublicResolverNameChanged represents a NameChanged event raised by the PublicResolver contract.
   993  type PublicResolverNameChanged struct {
   994  	Node string
   995  	Name string
   996  	Raw  types.Log // Blockchain specific contextual infos
   997  }
   998  
   999  // FilterNameChanged is a free log retrieval operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  1000  //
  1001  // e NameChanged(node indexed bytes32, name string)
  1002  func (_PublicResolver *PublicResolverFilterer) FilterNameChanged(opts *bind.FilterOpts, node []string) (*PublicResolverNameChangedIterator, error) {
  1003  
  1004  	var nodeRule []interface{}
  1005  	for _, nodeItem := range node {
  1006  		nodeRule = append(nodeRule, nodeItem)
  1007  	}
  1008  
  1009  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "NameChanged", nodeRule)
  1010  	if err != nil {
  1011  		return nil, err
  1012  	}
  1013  	return &PublicResolverNameChangedIterator{contract: _PublicResolver.contract, event: "NameChanged", logs: logs, sub: sub}, nil
  1014  }
  1015  
  1016  // WatchNameChanged is a free log subscription operation binding the contract event 0xb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f7.
  1017  //
  1018  // e NameChanged(node indexed bytes32, name string)
  1019  func (_PublicResolver *PublicResolverFilterer) WatchNameChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverNameChanged, node []string) (event.Subscription, error) {
  1020  
  1021  	var nodeRule []interface{}
  1022  	for _, nodeItem := range node {
  1023  		nodeRule = append(nodeRule, nodeItem)
  1024  	}
  1025  
  1026  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "NameChanged", nodeRule)
  1027  	if err != nil {
  1028  		return nil, err
  1029  	}
  1030  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1031  		defer sub.Unsubscribe()
  1032  		for {
  1033  			select {
  1034  			case log := <-logs:
  1035  				// New log arrived, parse the event and forward to the user
  1036  				event := new(PublicResolverNameChanged)
  1037  				if err := _PublicResolver.contract.UnpackLog(event, "NameChanged", log); err != nil {
  1038  					return err
  1039  				}
  1040  				event.Raw = log
  1041  
  1042  				select {
  1043  				case sink <- event:
  1044  				case err := <-sub.Err():
  1045  					return err
  1046  				case <-quit:
  1047  					return nil
  1048  				}
  1049  			case err := <-sub.Err():
  1050  				return err
  1051  			case <-quit:
  1052  				return nil
  1053  			}
  1054  		}
  1055  	}), nil
  1056  }
  1057  
  1058  // PublicResolverPubkeyChangedIterator is returned from FilterPubkeyChanged and is used to iterate over the raw logs and unpacked data for PubkeyChanged events raised by the PublicResolver contract.
  1059  type PublicResolverPubkeyChangedIterator struct {
  1060  	Event *PublicResolverPubkeyChanged // Event containing the contract specifics and raw log
  1061  
  1062  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1063  	event    string              // Event name to use for unpacking event data
  1064  
  1065  	logs chan types.Log      // Log channel receiving the found contract events
  1066  	sub  hubble.Subscription // Subscription for errors, completion and termination
  1067  	done bool                // Whether the subscription completed delivering logs
  1068  	fail error               // Occurred error to stop iteration
  1069  }
  1070  
  1071  // Next advances the iterator to the subsequent event, returning whether there
  1072  // are any more events found. In case of a retrieval or parsing error, false is
  1073  // returned and Error() can be queried for the exact failure.
  1074  func (it *PublicResolverPubkeyChangedIterator) Next() bool {
  1075  	// If the iterator failed, stop iterating
  1076  	if it.fail != nil {
  1077  		return false
  1078  	}
  1079  	// If the iterator completed, deliver directly whatever's available
  1080  	if it.done {
  1081  		select {
  1082  		case log := <-it.logs:
  1083  			it.Event = new(PublicResolverPubkeyChanged)
  1084  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1085  				it.fail = err
  1086  				return false
  1087  			}
  1088  			it.Event.Raw = log
  1089  			return true
  1090  
  1091  		default:
  1092  			return false
  1093  		}
  1094  	}
  1095  	// Iterator still in progress, wait for either a data or an error event
  1096  	select {
  1097  	case log := <-it.logs:
  1098  		it.Event = new(PublicResolverPubkeyChanged)
  1099  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1100  			it.fail = err
  1101  			return false
  1102  		}
  1103  		it.Event.Raw = log
  1104  		return true
  1105  
  1106  	case err := <-it.sub.Err():
  1107  		it.done = true
  1108  		it.fail = err
  1109  		return it.Next()
  1110  	}
  1111  }
  1112  
  1113  // Error returns any retrieval or parsing error occurred during filtering.
  1114  func (it *PublicResolverPubkeyChangedIterator) Error() error {
  1115  	return it.fail
  1116  }
  1117  
  1118  // Close terminates the iteration process, releasing any pending underlying
  1119  // resources.
  1120  func (it *PublicResolverPubkeyChangedIterator) Close() error {
  1121  	it.sub.Unsubscribe()
  1122  	return nil
  1123  }
  1124  
  1125  // PublicResolverPubkeyChanged represents a PubkeyChanged event raised by the PublicResolver contract.
  1126  type PublicResolverPubkeyChanged struct {
  1127  	Node string
  1128  	X    string
  1129  	Y    string
  1130  	Raw  types.Log // Blockchain specific contextual infos
  1131  }
  1132  
  1133  // FilterPubkeyChanged is a free log retrieval operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1134  //
  1135  // e PubkeyChanged(node indexed bytes32, x bytes32, y bytes32)
  1136  func (_PublicResolver *PublicResolverFilterer) FilterPubkeyChanged(opts *bind.FilterOpts, node []string) (*PublicResolverPubkeyChangedIterator, error) {
  1137  
  1138  	var nodeRule []interface{}
  1139  	for _, nodeItem := range node {
  1140  		nodeRule = append(nodeRule, nodeItem)
  1141  	}
  1142  
  1143  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "PubkeyChanged", nodeRule)
  1144  	if err != nil {
  1145  		return nil, err
  1146  	}
  1147  	return &PublicResolverPubkeyChangedIterator{contract: _PublicResolver.contract, event: "PubkeyChanged", logs: logs, sub: sub}, nil
  1148  }
  1149  
  1150  // WatchPubkeyChanged is a free log subscription operation binding the contract event 0x1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e46.
  1151  //
  1152  // e PubkeyChanged(node indexed bytes32, x bytes32, y bytes32)
  1153  func (_PublicResolver *PublicResolverFilterer) WatchPubkeyChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverPubkeyChanged, node []string) (event.Subscription, error) {
  1154  
  1155  	var nodeRule []interface{}
  1156  	for _, nodeItem := range node {
  1157  		nodeRule = append(nodeRule, nodeItem)
  1158  	}
  1159  
  1160  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "PubkeyChanged", nodeRule)
  1161  	if err != nil {
  1162  		return nil, err
  1163  	}
  1164  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1165  		defer sub.Unsubscribe()
  1166  		for {
  1167  			select {
  1168  			case log := <-logs:
  1169  				// New log arrived, parse the event and forward to the user
  1170  				event := new(PublicResolverPubkeyChanged)
  1171  				if err := _PublicResolver.contract.UnpackLog(event, "PubkeyChanged", log); err != nil {
  1172  					return err
  1173  				}
  1174  				event.Raw = log
  1175  
  1176  				select {
  1177  				case sink <- event:
  1178  				case err := <-sub.Err():
  1179  					return err
  1180  				case <-quit:
  1181  					return nil
  1182  				}
  1183  			case err := <-sub.Err():
  1184  				return err
  1185  			case <-quit:
  1186  				return nil
  1187  			}
  1188  		}
  1189  	}), nil
  1190  }
  1191  
  1192  // PublicResolverTextChangedIterator is returned from FilterTextChanged and is used to iterate over the raw logs and unpacked data for TextChanged events raised by the PublicResolver contract.
  1193  type PublicResolverTextChangedIterator struct {
  1194  	Event *PublicResolverTextChanged // Event containing the contract specifics and raw log
  1195  
  1196  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1197  	event    string              // Event name to use for unpacking event data
  1198  
  1199  	logs chan types.Log      // Log channel receiving the found contract events
  1200  	sub  hubble.Subscription // Subscription for errors, completion and termination
  1201  	done bool                // Whether the subscription completed delivering logs
  1202  	fail error               // Occurred error to stop iteration
  1203  }
  1204  
  1205  // Next advances the iterator to the subsequent event, returning whether there
  1206  // are any more events found. In case of a retrieval or parsing error, false is
  1207  // returned and Error() can be queried for the exact failure.
  1208  func (it *PublicResolverTextChangedIterator) Next() bool {
  1209  	// If the iterator failed, stop iterating
  1210  	if it.fail != nil {
  1211  		return false
  1212  	}
  1213  	// If the iterator completed, deliver directly whatever's available
  1214  	if it.done {
  1215  		select {
  1216  		case log := <-it.logs:
  1217  			it.Event = new(PublicResolverTextChanged)
  1218  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1219  				it.fail = err
  1220  				return false
  1221  			}
  1222  			it.Event.Raw = log
  1223  			return true
  1224  
  1225  		default:
  1226  			return false
  1227  		}
  1228  	}
  1229  	// Iterator still in progress, wait for either a data or an error event
  1230  	select {
  1231  	case log := <-it.logs:
  1232  		it.Event = new(PublicResolverTextChanged)
  1233  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1234  			it.fail = err
  1235  			return false
  1236  		}
  1237  		it.Event.Raw = log
  1238  		return true
  1239  
  1240  	case err := <-it.sub.Err():
  1241  		it.done = true
  1242  		it.fail = err
  1243  		return it.Next()
  1244  	}
  1245  }
  1246  
  1247  // Error returns any retrieval or parsing error occurred during filtering.
  1248  func (it *PublicResolverTextChangedIterator) Error() error {
  1249  	return it.fail
  1250  }
  1251  
  1252  // Close terminates the iteration process, releasing any pending underlying
  1253  // resources.
  1254  func (it *PublicResolverTextChangedIterator) Close() error {
  1255  	it.sub.Unsubscribe()
  1256  	return nil
  1257  }
  1258  
  1259  // PublicResolverTextChanged represents a TextChanged event raised by the PublicResolver contract.
  1260  type PublicResolverTextChanged struct {
  1261  	Node       string
  1262  	IndexedKey common.Hash
  1263  	Key        string
  1264  	Raw        types.Log // Blockchain specific contextual infos
  1265  }
  1266  
  1267  // FilterTextChanged is a free log retrieval operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1268  //
  1269  // e TextChanged(node indexed bytes32, indexedKey indexed string, key string)
  1270  func (_PublicResolver *PublicResolverFilterer) FilterTextChanged(opts *bind.FilterOpts, node []string, indexedKey []string) (*PublicResolverTextChangedIterator, error) {
  1271  
  1272  	var nodeRule []interface{}
  1273  	for _, nodeItem := range node {
  1274  		nodeRule = append(nodeRule, nodeItem)
  1275  	}
  1276  	var indexedKeyRule []interface{}
  1277  	for _, indexedKeyItem := range indexedKey {
  1278  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1279  	}
  1280  
  1281  	logs, sub, err := _PublicResolver.contract.FilterLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1282  	if err != nil {
  1283  		return nil, err
  1284  	}
  1285  	return &PublicResolverTextChangedIterator{contract: _PublicResolver.contract, event: "TextChanged", logs: logs, sub: sub}, nil
  1286  }
  1287  
  1288  // WatchTextChanged is a free log subscription operation binding the contract event 0xd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a7550.
  1289  //
  1290  // e TextChanged(node indexed bytes32, indexedKey indexed string, key string)
  1291  func (_PublicResolver *PublicResolverFilterer) WatchTextChanged(opts *bind.WatchOpts, sink chan<- *PublicResolverTextChanged, node []string, indexedKey []string) (event.Subscription, error) {
  1292  
  1293  	var nodeRule []interface{}
  1294  	for _, nodeItem := range node {
  1295  		nodeRule = append(nodeRule, nodeItem)
  1296  	}
  1297  	var indexedKeyRule []interface{}
  1298  	for _, indexedKeyItem := range indexedKey {
  1299  		indexedKeyRule = append(indexedKeyRule, indexedKeyItem)
  1300  	}
  1301  
  1302  	logs, sub, err := _PublicResolver.contract.WatchLogs(opts, "TextChanged", nodeRule, indexedKeyRule)
  1303  	if err != nil {
  1304  		return nil, err
  1305  	}
  1306  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1307  		defer sub.Unsubscribe()
  1308  		for {
  1309  			select {
  1310  			case log := <-logs:
  1311  				// New log arrived, parse the event and forward to the user
  1312  				event := new(PublicResolverTextChanged)
  1313  				if err := _PublicResolver.contract.UnpackLog(event, "TextChanged", log); err != nil {
  1314  					return err
  1315  				}
  1316  				event.Raw = log
  1317  
  1318  				select {
  1319  				case sink <- event:
  1320  				case err := <-sub.Err():
  1321  					return err
  1322  				case <-quit:
  1323  					return nil
  1324  				}
  1325  			case err := <-sub.Err():
  1326  				return err
  1327  			case <-quit:
  1328  				return nil
  1329  			}
  1330  		}
  1331  	}), nil
  1332  }