github.com/klaytn/klaytn@v1.10.2/contracts/sc_erc721/sc_nft.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package scnft
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	"github.com/klaytn/klaytn"
    11  	"github.com/klaytn/klaytn/accounts/abi"
    12  	"github.com/klaytn/klaytn/accounts/abi/bind"
    13  	"github.com/klaytn/klaytn/blockchain/types"
    14  	"github.com/klaytn/klaytn/common"
    15  	"github.com/klaytn/klaytn/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = klaytn.NotFound
    23  	_ = bind.Bind
    24  	_ = common.Big1
    25  	_ = types.BloomLookup
    26  	_ = event.NewSubscription
    27  )
    28  
    29  // AddressABI is the input ABI used to generate the binding from.
    30  const AddressABI = "[]"
    31  
    32  // AddressBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
    33  const AddressBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029`
    34  
    35  // AddressBin is the compiled bytecode used for deploying new contracts.
    36  var AddressBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a72305820b7534b8b203852d9ead56352219b5abb5424533d9bb1b9cf84c0b1d15d11fee50029"
    37  
    38  // DeployAddress deploys a new Klaytn contract, binding an instance of Address to it.
    39  func DeployAddress(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Address, error) {
    40  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
    41  	if err != nil {
    42  		return common.Address{}, nil, nil, err
    43  	}
    44  
    45  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(AddressBin), backend)
    46  	if err != nil {
    47  		return common.Address{}, nil, nil, err
    48  	}
    49  	return address, tx, &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
    50  }
    51  
    52  // Address is an auto generated Go binding around a Klaytn contract.
    53  type Address struct {
    54  	AddressCaller     // Read-only binding to the contract
    55  	AddressTransactor // Write-only binding to the contract
    56  	AddressFilterer   // Log filterer for contract events
    57  }
    58  
    59  // AddressCaller is an auto generated read-only Go binding around a Klaytn contract.
    60  type AddressCaller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // AddressTransactor is an auto generated write-only Go binding around a Klaytn contract.
    65  type AddressTransactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // AddressFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
    70  type AddressFilterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // AddressSession is an auto generated Go binding around a Klaytn contract,
    75  // with pre-set call and transact options.
    76  type AddressSession struct {
    77  	Contract     *Address          // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts     // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
    80  }
    81  
    82  // AddressCallerSession is an auto generated read-only Go binding around a Klaytn contract,
    83  // with pre-set call options.
    84  type AddressCallerSession struct {
    85  	Contract *AddressCaller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts  // Call options to use throughout this session
    87  }
    88  
    89  // AddressTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
    90  // with pre-set transact options.
    91  type AddressTransactorSession struct {
    92  	Contract     *AddressTransactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
    94  }
    95  
    96  // AddressRaw is an auto generated low-level Go binding around a Klaytn contract.
    97  type AddressRaw struct {
    98  	Contract *Address // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // AddressCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   102  type AddressCallerRaw struct {
   103  	Contract *AddressCaller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // AddressTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   107  type AddressTransactorRaw struct {
   108  	Contract *AddressTransactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewAddress creates a new instance of Address, bound to a specific deployed contract.
   112  func NewAddress(address common.Address, backend bind.ContractBackend) (*Address, error) {
   113  	contract, err := bindAddress(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &Address{AddressCaller: AddressCaller{contract: contract}, AddressTransactor: AddressTransactor{contract: contract}, AddressFilterer: AddressFilterer{contract: contract}}, nil
   118  }
   119  
   120  // NewAddressCaller creates a new read-only instance of Address, bound to a specific deployed contract.
   121  func NewAddressCaller(address common.Address, caller bind.ContractCaller) (*AddressCaller, error) {
   122  	contract, err := bindAddress(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &AddressCaller{contract: contract}, nil
   127  }
   128  
   129  // NewAddressTransactor creates a new write-only instance of Address, bound to a specific deployed contract.
   130  func NewAddressTransactor(address common.Address, transactor bind.ContractTransactor) (*AddressTransactor, error) {
   131  	contract, err := bindAddress(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &AddressTransactor{contract: contract}, nil
   136  }
   137  
   138  // NewAddressFilterer creates a new log filterer instance of Address, bound to a specific deployed contract.
   139  func NewAddressFilterer(address common.Address, filterer bind.ContractFilterer) (*AddressFilterer, error) {
   140  	contract, err := bindAddress(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &AddressFilterer{contract: contract}, nil
   145  }
   146  
   147  // bindAddress binds a generic wrapper to an already deployed contract.
   148  func bindAddress(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(AddressABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_Address *AddressRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _Address.Contract.AddressCaller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_Address *AddressRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _Address.Contract.AddressTransactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_Address *AddressRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _Address.Contract.AddressTransactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_Address *AddressCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _Address.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_Address *AddressTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _Address.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_Address *AddressTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _Address.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // CountersABI is the input ABI used to generate the binding from.
   195  const CountersABI = "[]"
   196  
   197  // CountersBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   198  const CountersBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029`
   199  
   200  // CountersBin is the compiled bytecode used for deploying new contracts.
   201  var CountersBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058207329cab25de591c35947480820e66bd7e2d232979872616f21ac6e5783a017700029"
   202  
   203  // DeployCounters deploys a new Klaytn contract, binding an instance of Counters to it.
   204  func DeployCounters(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Counters, error) {
   205  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
   206  	if err != nil {
   207  		return common.Address{}, nil, nil, err
   208  	}
   209  
   210  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(CountersBin), backend)
   211  	if err != nil {
   212  		return common.Address{}, nil, nil, err
   213  	}
   214  	return address, tx, &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   215  }
   216  
   217  // Counters is an auto generated Go binding around a Klaytn contract.
   218  type Counters struct {
   219  	CountersCaller     // Read-only binding to the contract
   220  	CountersTransactor // Write-only binding to the contract
   221  	CountersFilterer   // Log filterer for contract events
   222  }
   223  
   224  // CountersCaller is an auto generated read-only Go binding around a Klaytn contract.
   225  type CountersCaller struct {
   226  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   227  }
   228  
   229  // CountersTransactor is an auto generated write-only Go binding around a Klaytn contract.
   230  type CountersTransactor struct {
   231  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   232  }
   233  
   234  // CountersFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
   235  type CountersFilterer struct {
   236  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   237  }
   238  
   239  // CountersSession is an auto generated Go binding around a Klaytn contract,
   240  // with pre-set call and transact options.
   241  type CountersSession struct {
   242  	Contract     *Counters         // Generic contract binding to set the session for
   243  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   244  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   245  }
   246  
   247  // CountersCallerSession is an auto generated read-only Go binding around a Klaytn contract,
   248  // with pre-set call options.
   249  type CountersCallerSession struct {
   250  	Contract *CountersCaller // Generic contract caller binding to set the session for
   251  	CallOpts bind.CallOpts   // Call options to use throughout this session
   252  }
   253  
   254  // CountersTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   255  // with pre-set transact options.
   256  type CountersTransactorSession struct {
   257  	Contract     *CountersTransactor // Generic contract transactor binding to set the session for
   258  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
   259  }
   260  
   261  // CountersRaw is an auto generated low-level Go binding around a Klaytn contract.
   262  type CountersRaw struct {
   263  	Contract *Counters // Generic contract binding to access the raw methods on
   264  }
   265  
   266  // CountersCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   267  type CountersCallerRaw struct {
   268  	Contract *CountersCaller // Generic read-only contract binding to access the raw methods on
   269  }
   270  
   271  // CountersTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   272  type CountersTransactorRaw struct {
   273  	Contract *CountersTransactor // Generic write-only contract binding to access the raw methods on
   274  }
   275  
   276  // NewCounters creates a new instance of Counters, bound to a specific deployed contract.
   277  func NewCounters(address common.Address, backend bind.ContractBackend) (*Counters, error) {
   278  	contract, err := bindCounters(address, backend, backend, backend)
   279  	if err != nil {
   280  		return nil, err
   281  	}
   282  	return &Counters{CountersCaller: CountersCaller{contract: contract}, CountersTransactor: CountersTransactor{contract: contract}, CountersFilterer: CountersFilterer{contract: contract}}, nil
   283  }
   284  
   285  // NewCountersCaller creates a new read-only instance of Counters, bound to a specific deployed contract.
   286  func NewCountersCaller(address common.Address, caller bind.ContractCaller) (*CountersCaller, error) {
   287  	contract, err := bindCounters(address, caller, nil, nil)
   288  	if err != nil {
   289  		return nil, err
   290  	}
   291  	return &CountersCaller{contract: contract}, nil
   292  }
   293  
   294  // NewCountersTransactor creates a new write-only instance of Counters, bound to a specific deployed contract.
   295  func NewCountersTransactor(address common.Address, transactor bind.ContractTransactor) (*CountersTransactor, error) {
   296  	contract, err := bindCounters(address, nil, transactor, nil)
   297  	if err != nil {
   298  		return nil, err
   299  	}
   300  	return &CountersTransactor{contract: contract}, nil
   301  }
   302  
   303  // NewCountersFilterer creates a new log filterer instance of Counters, bound to a specific deployed contract.
   304  func NewCountersFilterer(address common.Address, filterer bind.ContractFilterer) (*CountersFilterer, error) {
   305  	contract, err := bindCounters(address, nil, nil, filterer)
   306  	if err != nil {
   307  		return nil, err
   308  	}
   309  	return &CountersFilterer{contract: contract}, nil
   310  }
   311  
   312  // bindCounters binds a generic wrapper to an already deployed contract.
   313  func bindCounters(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   314  	parsed, err := abi.JSON(strings.NewReader(CountersABI))
   315  	if err != nil {
   316  		return nil, err
   317  	}
   318  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   319  }
   320  
   321  // Call invokes the (constant) contract method with params as input values and
   322  // sets the output to result. The result type might be a single field for simple
   323  // returns, a slice of interfaces for anonymous returns and a struct for named
   324  // returns.
   325  func (_Counters *CountersRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   326  	return _Counters.Contract.CountersCaller.contract.Call(opts, result, method, params...)
   327  }
   328  
   329  // Transfer initiates a plain transaction to move funds to the contract, calling
   330  // its default method if one is available.
   331  func (_Counters *CountersRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   332  	return _Counters.Contract.CountersTransactor.contract.Transfer(opts)
   333  }
   334  
   335  // Transact invokes the (paid) contract method with params as input values.
   336  func (_Counters *CountersRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   337  	return _Counters.Contract.CountersTransactor.contract.Transact(opts, method, params...)
   338  }
   339  
   340  // Call invokes the (constant) contract method with params as input values and
   341  // sets the output to result. The result type might be a single field for simple
   342  // returns, a slice of interfaces for anonymous returns and a struct for named
   343  // returns.
   344  func (_Counters *CountersCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   345  	return _Counters.Contract.contract.Call(opts, result, method, params...)
   346  }
   347  
   348  // Transfer initiates a plain transaction to move funds to the contract, calling
   349  // its default method if one is available.
   350  func (_Counters *CountersTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   351  	return _Counters.Contract.contract.Transfer(opts)
   352  }
   353  
   354  // Transact invokes the (paid) contract method with params as input values.
   355  func (_Counters *CountersTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   356  	return _Counters.Contract.contract.Transact(opts, method, params...)
   357  }
   358  
   359  // ERC165ABI is the input ABI used to generate the binding from.
   360  const ERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"}]"
   361  
   362  // ERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   363  const ERC165BinRuntime = ``
   364  
   365  // ERC165FuncSigs maps the 4-byte function signature to its string representation.
   366  var ERC165FuncSigs = map[string]string{
   367  	"01ffc9a7": "supportsInterface(bytes4)",
   368  }
   369  
   370  // ERC165 is an auto generated Go binding around a Klaytn contract.
   371  type ERC165 struct {
   372  	ERC165Caller     // Read-only binding to the contract
   373  	ERC165Transactor // Write-only binding to the contract
   374  	ERC165Filterer   // Log filterer for contract events
   375  }
   376  
   377  // ERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
   378  type ERC165Caller struct {
   379  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   380  }
   381  
   382  // ERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
   383  type ERC165Transactor struct {
   384  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   385  }
   386  
   387  // ERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   388  type ERC165Filterer struct {
   389  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   390  }
   391  
   392  // ERC165Session is an auto generated Go binding around a Klaytn contract,
   393  // with pre-set call and transact options.
   394  type ERC165Session struct {
   395  	Contract     *ERC165           // Generic contract binding to set the session for
   396  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   397  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   398  }
   399  
   400  // ERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   401  // with pre-set call options.
   402  type ERC165CallerSession struct {
   403  	Contract *ERC165Caller // Generic contract caller binding to set the session for
   404  	CallOpts bind.CallOpts // Call options to use throughout this session
   405  }
   406  
   407  // ERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   408  // with pre-set transact options.
   409  type ERC165TransactorSession struct {
   410  	Contract     *ERC165Transactor // Generic contract transactor binding to set the session for
   411  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   412  }
   413  
   414  // ERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
   415  type ERC165Raw struct {
   416  	Contract *ERC165 // Generic contract binding to access the raw methods on
   417  }
   418  
   419  // ERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   420  type ERC165CallerRaw struct {
   421  	Contract *ERC165Caller // Generic read-only contract binding to access the raw methods on
   422  }
   423  
   424  // ERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   425  type ERC165TransactorRaw struct {
   426  	Contract *ERC165Transactor // Generic write-only contract binding to access the raw methods on
   427  }
   428  
   429  // NewERC165 creates a new instance of ERC165, bound to a specific deployed contract.
   430  func NewERC165(address common.Address, backend bind.ContractBackend) (*ERC165, error) {
   431  	contract, err := bindERC165(address, backend, backend, backend)
   432  	if err != nil {
   433  		return nil, err
   434  	}
   435  	return &ERC165{ERC165Caller: ERC165Caller{contract: contract}, ERC165Transactor: ERC165Transactor{contract: contract}, ERC165Filterer: ERC165Filterer{contract: contract}}, nil
   436  }
   437  
   438  // NewERC165Caller creates a new read-only instance of ERC165, bound to a specific deployed contract.
   439  func NewERC165Caller(address common.Address, caller bind.ContractCaller) (*ERC165Caller, error) {
   440  	contract, err := bindERC165(address, caller, nil, nil)
   441  	if err != nil {
   442  		return nil, err
   443  	}
   444  	return &ERC165Caller{contract: contract}, nil
   445  }
   446  
   447  // NewERC165Transactor creates a new write-only instance of ERC165, bound to a specific deployed contract.
   448  func NewERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC165Transactor, error) {
   449  	contract, err := bindERC165(address, nil, transactor, nil)
   450  	if err != nil {
   451  		return nil, err
   452  	}
   453  	return &ERC165Transactor{contract: contract}, nil
   454  }
   455  
   456  // NewERC165Filterer creates a new log filterer instance of ERC165, bound to a specific deployed contract.
   457  func NewERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC165Filterer, error) {
   458  	contract, err := bindERC165(address, nil, nil, filterer)
   459  	if err != nil {
   460  		return nil, err
   461  	}
   462  	return &ERC165Filterer{contract: contract}, nil
   463  }
   464  
   465  // bindERC165 binds a generic wrapper to an already deployed contract.
   466  func bindERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   467  	parsed, err := abi.JSON(strings.NewReader(ERC165ABI))
   468  	if err != nil {
   469  		return nil, err
   470  	}
   471  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   472  }
   473  
   474  // Call invokes the (constant) contract method with params as input values and
   475  // sets the output to result. The result type might be a single field for simple
   476  // returns, a slice of interfaces for anonymous returns and a struct for named
   477  // returns.
   478  func (_ERC165 *ERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   479  	return _ERC165.Contract.ERC165Caller.contract.Call(opts, result, method, params...)
   480  }
   481  
   482  // Transfer initiates a plain transaction to move funds to the contract, calling
   483  // its default method if one is available.
   484  func (_ERC165 *ERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   485  	return _ERC165.Contract.ERC165Transactor.contract.Transfer(opts)
   486  }
   487  
   488  // Transact invokes the (paid) contract method with params as input values.
   489  func (_ERC165 *ERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   490  	return _ERC165.Contract.ERC165Transactor.contract.Transact(opts, method, params...)
   491  }
   492  
   493  // Call invokes the (constant) contract method with params as input values and
   494  // sets the output to result. The result type might be a single field for simple
   495  // returns, a slice of interfaces for anonymous returns and a struct for named
   496  // returns.
   497  func (_ERC165 *ERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   498  	return _ERC165.Contract.contract.Call(opts, result, method, params...)
   499  }
   500  
   501  // Transfer initiates a plain transaction to move funds to the contract, calling
   502  // its default method if one is available.
   503  func (_ERC165 *ERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   504  	return _ERC165.Contract.contract.Transfer(opts)
   505  }
   506  
   507  // Transact invokes the (paid) contract method with params as input values.
   508  func (_ERC165 *ERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   509  	return _ERC165.Contract.contract.Transact(opts, method, params...)
   510  }
   511  
   512  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   513  //
   514  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   515  func (_ERC165 *ERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   516  	var (
   517  		ret0 = new(bool)
   518  	)
   519  	out := ret0
   520  	err := _ERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
   521  	return *ret0, err
   522  }
   523  
   524  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   525  //
   526  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   527  func (_ERC165 *ERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   528  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   529  }
   530  
   531  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   532  //
   533  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   534  func (_ERC165 *ERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   535  	return _ERC165.Contract.SupportsInterface(&_ERC165.CallOpts, interfaceId)
   536  }
   537  
   538  // ERC721ABI is the input ABI used to generate the binding from.
   539  const ERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
   540  
   541  // ERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
   542  const ERC721BinRuntime = `608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029`
   543  
   544  // ERC721FuncSigs maps the 4-byte function signature to its string representation.
   545  var ERC721FuncSigs = map[string]string{
   546  	"095ea7b3": "approve(address,uint256)",
   547  	"70a08231": "balanceOf(address)",
   548  	"081812fc": "getApproved(uint256)",
   549  	"e985e9c5": "isApprovedForAll(address,address)",
   550  	"6352211e": "ownerOf(uint256)",
   551  	"42842e0e": "safeTransferFrom(address,address,uint256)",
   552  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
   553  	"a22cb465": "setApprovalForAll(address,bool)",
   554  	"01ffc9a7": "supportsInterface(bytes4)",
   555  	"23b872dd": "transferFrom(address,address,uint256)",
   556  }
   557  
   558  // ERC721Bin is the compiled bytecode used for deploying new contracts.
   559  var ERC721Bin = "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61004260201b60201c565b61003d6380ac58cd60e01b61004260201b60201c565b610110565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100d357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610d448061011f6000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80636352211e116100665780636352211e146101b157806370a08231146101ce578063a22cb46514610206578063b88d4fde14610234578063e985e9c5146102fa5761009e565b806301ffc9a7146100a3578063081812fc146100de578063095ea7b31461011757806323b872dd1461014557806342842e0e1461017b575b600080fd5b6100ca600480360360208110156100b957600080fd5b50356001600160e01b031916610328565b604080519115158252519081900360200190f35b6100fb600480360360208110156100f457600080fd5b5035610347565b604080516001600160a01b039092168252519081900360200190f35b6101436004803603604081101561012d57600080fd5b506001600160a01b0381351690602001356103ac565b005b6101436004803603606081101561015b57600080fd5b506001600160a01b038135811691602081013590911690604001356104c3565b6101436004803603606081101561019157600080fd5b506001600160a01b0381358116916020810135909116906040013561051b565b6100fb600480360360208110156101c757600080fd5b5035610536565b6101f4600480360360208110156101e457600080fd5b50356001600160a01b0316610593565b60408051918252519081900360200190f35b6101436004803603604081101561021c57600080fd5b506001600160a01b03813516906020013515156105fe565b6101436004803603608081101561024a57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561028557600080fd5b82018360208201111561029757600080fd5b803590602001918460018302840111640100000000831117156102b957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106cd945050505050565b6100ca6004803603604081101561031057600080fd5b506001600160a01b0381358116916020013516610728565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061035282610756565b61039057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610c72602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103b782610536565b9050806001600160a01b0316836001600160a01b0316141561040d57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610cc76021913960400191505060405180910390fd5b336001600160a01b038216148061042957506104298133610728565b61046757604051600160e51b62461bcd028152600401808060200182810382526038815260200180610be76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104cd3382610773565b61050b57604051600160e51b62461bcd028152600401808060200182810382526031815260200180610ce86031913960400191505060405180910390fd5b61051683838361081a565b505050565b610516838383604051806020016040528060008152506106cd565b6000818152600160205260408120546001600160a01b03168061058d57604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c496029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166105dd57604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610c1f602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061058d90610964565b6001600160a01b03821633141561065f5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6106d88484846104c3565b6106e484848484610968565b61072257604051600160e51b62461bcd028152600401808060200182810382526032815260200180610b656032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b600061077e82610756565b6107bc57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610bbb602c913960400191505060405180910390fd5b60006107c783610536565b9050806001600160a01b0316846001600160a01b031614806108025750836001600160a01b03166107f784610347565b6001600160a01b0316145b8061081257506108128185610728565b949350505050565b826001600160a01b031661082d82610536565b6001600160a01b03161461087557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610c9e6029913960400191505060405180910390fd5b6001600160a01b0382166108bd57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610b976024913960400191505060405180910390fd5b6108c681610aa1565b6001600160a01b03831660009081526003602052604090206108e790610ade565b6001600160a01b038216600090815260036020526040902061090890610af5565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b600061097c846001600160a01b0316610afe565b61098857506001610812565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a055781810151838201526020016109ed565b50505050905090810190601f168015610a325780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a5457600080fd5b505af1158015610a68573d6000803e3d6000fd5b505050506040513d6020811015610a7e57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610adb57600081815260026020526040902080546001600160a01b03191690555b50565b8054610af190600163ffffffff610b0416565b9055565b80546001019055565b3b151590565b600082821115610b5e5760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820729ef652fa5b3de930aa2053816415426d90b8ede7f21175faa42825db4887780029"
   560  
   561  // DeployERC721 deploys a new Klaytn contract, binding an instance of ERC721 to it.
   562  func DeployERC721(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721, error) {
   563  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
   564  	if err != nil {
   565  		return common.Address{}, nil, nil, err
   566  	}
   567  
   568  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721Bin), backend)
   569  	if err != nil {
   570  		return common.Address{}, nil, nil, err
   571  	}
   572  	return address, tx, &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   573  }
   574  
   575  // ERC721 is an auto generated Go binding around a Klaytn contract.
   576  type ERC721 struct {
   577  	ERC721Caller     // Read-only binding to the contract
   578  	ERC721Transactor // Write-only binding to the contract
   579  	ERC721Filterer   // Log filterer for contract events
   580  }
   581  
   582  // ERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
   583  type ERC721Caller struct {
   584  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   585  }
   586  
   587  // ERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
   588  type ERC721Transactor struct {
   589  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   590  }
   591  
   592  // ERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
   593  type ERC721Filterer struct {
   594  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
   595  }
   596  
   597  // ERC721Session is an auto generated Go binding around a Klaytn contract,
   598  // with pre-set call and transact options.
   599  type ERC721Session struct {
   600  	Contract     *ERC721           // Generic contract binding to set the session for
   601  	CallOpts     bind.CallOpts     // Call options to use throughout this session
   602  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   603  }
   604  
   605  // ERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
   606  // with pre-set call options.
   607  type ERC721CallerSession struct {
   608  	Contract *ERC721Caller // Generic contract caller binding to set the session for
   609  	CallOpts bind.CallOpts // Call options to use throughout this session
   610  }
   611  
   612  // ERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
   613  // with pre-set transact options.
   614  type ERC721TransactorSession struct {
   615  	Contract     *ERC721Transactor // Generic contract transactor binding to set the session for
   616  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
   617  }
   618  
   619  // ERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
   620  type ERC721Raw struct {
   621  	Contract *ERC721 // Generic contract binding to access the raw methods on
   622  }
   623  
   624  // ERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
   625  type ERC721CallerRaw struct {
   626  	Contract *ERC721Caller // Generic read-only contract binding to access the raw methods on
   627  }
   628  
   629  // ERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
   630  type ERC721TransactorRaw struct {
   631  	Contract *ERC721Transactor // Generic write-only contract binding to access the raw methods on
   632  }
   633  
   634  // NewERC721 creates a new instance of ERC721, bound to a specific deployed contract.
   635  func NewERC721(address common.Address, backend bind.ContractBackend) (*ERC721, error) {
   636  	contract, err := bindERC721(address, backend, backend, backend)
   637  	if err != nil {
   638  		return nil, err
   639  	}
   640  	return &ERC721{ERC721Caller: ERC721Caller{contract: contract}, ERC721Transactor: ERC721Transactor{contract: contract}, ERC721Filterer: ERC721Filterer{contract: contract}}, nil
   641  }
   642  
   643  // NewERC721Caller creates a new read-only instance of ERC721, bound to a specific deployed contract.
   644  func NewERC721Caller(address common.Address, caller bind.ContractCaller) (*ERC721Caller, error) {
   645  	contract, err := bindERC721(address, caller, nil, nil)
   646  	if err != nil {
   647  		return nil, err
   648  	}
   649  	return &ERC721Caller{contract: contract}, nil
   650  }
   651  
   652  // NewERC721Transactor creates a new write-only instance of ERC721, bound to a specific deployed contract.
   653  func NewERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*ERC721Transactor, error) {
   654  	contract, err := bindERC721(address, nil, transactor, nil)
   655  	if err != nil {
   656  		return nil, err
   657  	}
   658  	return &ERC721Transactor{contract: contract}, nil
   659  }
   660  
   661  // NewERC721Filterer creates a new log filterer instance of ERC721, bound to a specific deployed contract.
   662  func NewERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*ERC721Filterer, error) {
   663  	contract, err := bindERC721(address, nil, nil, filterer)
   664  	if err != nil {
   665  		return nil, err
   666  	}
   667  	return &ERC721Filterer{contract: contract}, nil
   668  }
   669  
   670  // bindERC721 binds a generic wrapper to an already deployed contract.
   671  func bindERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   672  	parsed, err := abi.JSON(strings.NewReader(ERC721ABI))
   673  	if err != nil {
   674  		return nil, err
   675  	}
   676  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   677  }
   678  
   679  // Call invokes the (constant) contract method with params as input values and
   680  // sets the output to result. The result type might be a single field for simple
   681  // returns, a slice of interfaces for anonymous returns and a struct for named
   682  // returns.
   683  func (_ERC721 *ERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   684  	return _ERC721.Contract.ERC721Caller.contract.Call(opts, result, method, params...)
   685  }
   686  
   687  // Transfer initiates a plain transaction to move funds to the contract, calling
   688  // its default method if one is available.
   689  func (_ERC721 *ERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   690  	return _ERC721.Contract.ERC721Transactor.contract.Transfer(opts)
   691  }
   692  
   693  // Transact invokes the (paid) contract method with params as input values.
   694  func (_ERC721 *ERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   695  	return _ERC721.Contract.ERC721Transactor.contract.Transact(opts, method, params...)
   696  }
   697  
   698  // Call invokes the (constant) contract method with params as input values and
   699  // sets the output to result. The result type might be a single field for simple
   700  // returns, a slice of interfaces for anonymous returns and a struct for named
   701  // returns.
   702  func (_ERC721 *ERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   703  	return _ERC721.Contract.contract.Call(opts, result, method, params...)
   704  }
   705  
   706  // Transfer initiates a plain transaction to move funds to the contract, calling
   707  // its default method if one is available.
   708  func (_ERC721 *ERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   709  	return _ERC721.Contract.contract.Transfer(opts)
   710  }
   711  
   712  // Transact invokes the (paid) contract method with params as input values.
   713  func (_ERC721 *ERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   714  	return _ERC721.Contract.contract.Transact(opts, method, params...)
   715  }
   716  
   717  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   718  //
   719  // Solidity: function balanceOf(address owner) view returns(uint256)
   720  func (_ERC721 *ERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
   721  	var (
   722  		ret0 = new(*big.Int)
   723  	)
   724  	out := ret0
   725  	err := _ERC721.contract.Call(opts, out, "balanceOf", owner)
   726  	return *ret0, err
   727  }
   728  
   729  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   730  //
   731  // Solidity: function balanceOf(address owner) view returns(uint256)
   732  func (_ERC721 *ERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
   733  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   734  }
   735  
   736  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
   737  //
   738  // Solidity: function balanceOf(address owner) view returns(uint256)
   739  func (_ERC721 *ERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
   740  	return _ERC721.Contract.BalanceOf(&_ERC721.CallOpts, owner)
   741  }
   742  
   743  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   744  //
   745  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   746  func (_ERC721 *ERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   747  	var (
   748  		ret0 = new(common.Address)
   749  	)
   750  	out := ret0
   751  	err := _ERC721.contract.Call(opts, out, "getApproved", tokenId)
   752  	return *ret0, err
   753  }
   754  
   755  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   756  //
   757  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   758  func (_ERC721 *ERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
   759  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   760  }
   761  
   762  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
   763  //
   764  // Solidity: function getApproved(uint256 tokenId) view returns(address)
   765  func (_ERC721 *ERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
   766  	return _ERC721.Contract.GetApproved(&_ERC721.CallOpts, tokenId)
   767  }
   768  
   769  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   770  //
   771  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   772  func (_ERC721 *ERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
   773  	var (
   774  		ret0 = new(bool)
   775  	)
   776  	out := ret0
   777  	err := _ERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
   778  	return *ret0, err
   779  }
   780  
   781  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   782  //
   783  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   784  func (_ERC721 *ERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   785  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   786  }
   787  
   788  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
   789  //
   790  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
   791  func (_ERC721 *ERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
   792  	return _ERC721.Contract.IsApprovedForAll(&_ERC721.CallOpts, owner, operator)
   793  }
   794  
   795  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   796  //
   797  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   798  func (_ERC721 *ERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
   799  	var (
   800  		ret0 = new(common.Address)
   801  	)
   802  	out := ret0
   803  	err := _ERC721.contract.Call(opts, out, "ownerOf", tokenId)
   804  	return *ret0, err
   805  }
   806  
   807  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   808  //
   809  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   810  func (_ERC721 *ERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
   811  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   812  }
   813  
   814  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
   815  //
   816  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
   817  func (_ERC721 *ERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
   818  	return _ERC721.Contract.OwnerOf(&_ERC721.CallOpts, tokenId)
   819  }
   820  
   821  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   822  //
   823  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   824  func (_ERC721 *ERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
   825  	var (
   826  		ret0 = new(bool)
   827  	)
   828  	out := ret0
   829  	err := _ERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
   830  	return *ret0, err
   831  }
   832  
   833  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   834  //
   835  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   836  func (_ERC721 *ERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
   837  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   838  }
   839  
   840  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
   841  //
   842  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
   843  func (_ERC721 *ERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
   844  	return _ERC721.Contract.SupportsInterface(&_ERC721.CallOpts, interfaceId)
   845  }
   846  
   847  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   848  //
   849  // Solidity: function approve(address to, uint256 tokenId) returns()
   850  func (_ERC721 *ERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   851  	return _ERC721.contract.Transact(opts, "approve", to, tokenId)
   852  }
   853  
   854  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   855  //
   856  // Solidity: function approve(address to, uint256 tokenId) returns()
   857  func (_ERC721 *ERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   858  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   859  }
   860  
   861  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
   862  //
   863  // Solidity: function approve(address to, uint256 tokenId) returns()
   864  func (_ERC721 *ERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   865  	return _ERC721.Contract.Approve(&_ERC721.TransactOpts, to, tokenId)
   866  }
   867  
   868  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   869  //
   870  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   871  func (_ERC721 *ERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   872  	return _ERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
   873  }
   874  
   875  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   876  //
   877  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   878  func (_ERC721 *ERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   879  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   880  }
   881  
   882  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
   883  //
   884  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
   885  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   886  	return _ERC721.Contract.SafeTransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   887  }
   888  
   889  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   890  //
   891  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   892  func (_ERC721 *ERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   893  	return _ERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
   894  }
   895  
   896  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   897  //
   898  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   899  func (_ERC721 *ERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   900  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   901  }
   902  
   903  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
   904  //
   905  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
   906  func (_ERC721 *ERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
   907  	return _ERC721.Contract.SafeTransferFrom0(&_ERC721.TransactOpts, from, to, tokenId, _data)
   908  }
   909  
   910  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   911  //
   912  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   913  func (_ERC721 *ERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
   914  	return _ERC721.contract.Transact(opts, "setApprovalForAll", to, approved)
   915  }
   916  
   917  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   918  //
   919  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   920  func (_ERC721 *ERC721Session) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
   921  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
   922  }
   923  
   924  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
   925  //
   926  // Solidity: function setApprovalForAll(address to, bool approved) returns()
   927  func (_ERC721 *ERC721TransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
   928  	return _ERC721.Contract.SetApprovalForAll(&_ERC721.TransactOpts, to, approved)
   929  }
   930  
   931  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   932  //
   933  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   934  func (_ERC721 *ERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   935  	return _ERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
   936  }
   937  
   938  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   939  //
   940  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   941  func (_ERC721 *ERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   942  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   943  }
   944  
   945  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
   946  //
   947  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
   948  func (_ERC721 *ERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
   949  	return _ERC721.Contract.TransferFrom(&_ERC721.TransactOpts, from, to, tokenId)
   950  }
   951  
   952  // ERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721 contract.
   953  type ERC721ApprovalIterator struct {
   954  	Event *ERC721Approval // Event containing the contract specifics and raw log
   955  
   956  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   957  	event    string              // Event name to use for unpacking event data
   958  
   959  	logs chan types.Log      // Log channel receiving the found contract events
   960  	sub  klaytn.Subscription // Subscription for errors, completion and termination
   961  	done bool                // Whether the subscription completed delivering logs
   962  	fail error               // Occurred error to stop iteration
   963  }
   964  
   965  // Next advances the iterator to the subsequent event, returning whether there
   966  // are any more events found. In case of a retrieval or parsing error, false is
   967  // returned and Error() can be queried for the exact failure.
   968  func (it *ERC721ApprovalIterator) Next() bool {
   969  	// If the iterator failed, stop iterating
   970  	if it.fail != nil {
   971  		return false
   972  	}
   973  	// If the iterator completed, deliver directly whatever's available
   974  	if it.done {
   975  		select {
   976  		case log := <-it.logs:
   977  			it.Event = new(ERC721Approval)
   978  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   979  				it.fail = err
   980  				return false
   981  			}
   982  			it.Event.Raw = log
   983  			return true
   984  
   985  		default:
   986  			return false
   987  		}
   988  	}
   989  	// Iterator still in progress, wait for either a data or an error event
   990  	select {
   991  	case log := <-it.logs:
   992  		it.Event = new(ERC721Approval)
   993  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   994  			it.fail = err
   995  			return false
   996  		}
   997  		it.Event.Raw = log
   998  		return true
   999  
  1000  	case err := <-it.sub.Err():
  1001  		it.done = true
  1002  		it.fail = err
  1003  		return it.Next()
  1004  	}
  1005  }
  1006  
  1007  // Error returns any retrieval or parsing error occurred during filtering.
  1008  func (it *ERC721ApprovalIterator) Error() error {
  1009  	return it.fail
  1010  }
  1011  
  1012  // Close terminates the iteration process, releasing any pending underlying
  1013  // resources.
  1014  func (it *ERC721ApprovalIterator) Close() error {
  1015  	it.sub.Unsubscribe()
  1016  	return nil
  1017  }
  1018  
  1019  // ERC721Approval represents a Approval event raised by the ERC721 contract.
  1020  type ERC721Approval struct {
  1021  	Owner    common.Address
  1022  	Approved common.Address
  1023  	TokenId  *big.Int
  1024  	Raw      types.Log // Blockchain specific contextual infos
  1025  }
  1026  
  1027  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1028  //
  1029  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1030  func (_ERC721 *ERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ApprovalIterator, error) {
  1031  
  1032  	var ownerRule []interface{}
  1033  	for _, ownerItem := range owner {
  1034  		ownerRule = append(ownerRule, ownerItem)
  1035  	}
  1036  	var approvedRule []interface{}
  1037  	for _, approvedItem := range approved {
  1038  		approvedRule = append(approvedRule, approvedItem)
  1039  	}
  1040  	var tokenIdRule []interface{}
  1041  	for _, tokenIdItem := range tokenId {
  1042  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1043  	}
  1044  
  1045  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1046  	if err != nil {
  1047  		return nil, err
  1048  	}
  1049  	return &ERC721ApprovalIterator{contract: _ERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  1050  }
  1051  
  1052  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1053  //
  1054  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1055  func (_ERC721 *ERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1056  
  1057  	var ownerRule []interface{}
  1058  	for _, ownerItem := range owner {
  1059  		ownerRule = append(ownerRule, ownerItem)
  1060  	}
  1061  	var approvedRule []interface{}
  1062  	for _, approvedItem := range approved {
  1063  		approvedRule = append(approvedRule, approvedItem)
  1064  	}
  1065  	var tokenIdRule []interface{}
  1066  	for _, tokenIdItem := range tokenId {
  1067  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1068  	}
  1069  
  1070  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1071  	if err != nil {
  1072  		return nil, err
  1073  	}
  1074  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1075  		defer sub.Unsubscribe()
  1076  		for {
  1077  			select {
  1078  			case log := <-logs:
  1079  				// New log arrived, parse the event and forward to the user
  1080  				event := new(ERC721Approval)
  1081  				if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1082  					return err
  1083  				}
  1084  				event.Raw = log
  1085  
  1086  				select {
  1087  				case sink <- event:
  1088  				case err := <-sub.Err():
  1089  					return err
  1090  				case <-quit:
  1091  					return nil
  1092  				}
  1093  			case err := <-sub.Err():
  1094  				return err
  1095  			case <-quit:
  1096  				return nil
  1097  			}
  1098  		}
  1099  	}), nil
  1100  }
  1101  
  1102  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1103  //
  1104  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1105  func (_ERC721 *ERC721Filterer) ParseApproval(log types.Log) (*ERC721Approval, error) {
  1106  	event := new(ERC721Approval)
  1107  	if err := _ERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  1108  		return nil, err
  1109  	}
  1110  	return event, nil
  1111  }
  1112  
  1113  // ERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721 contract.
  1114  type ERC721ApprovalForAllIterator struct {
  1115  	Event *ERC721ApprovalForAll // Event containing the contract specifics and raw log
  1116  
  1117  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1118  	event    string              // Event name to use for unpacking event data
  1119  
  1120  	logs chan types.Log      // Log channel receiving the found contract events
  1121  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1122  	done bool                // Whether the subscription completed delivering logs
  1123  	fail error               // Occurred error to stop iteration
  1124  }
  1125  
  1126  // Next advances the iterator to the subsequent event, returning whether there
  1127  // are any more events found. In case of a retrieval or parsing error, false is
  1128  // returned and Error() can be queried for the exact failure.
  1129  func (it *ERC721ApprovalForAllIterator) Next() bool {
  1130  	// If the iterator failed, stop iterating
  1131  	if it.fail != nil {
  1132  		return false
  1133  	}
  1134  	// If the iterator completed, deliver directly whatever's available
  1135  	if it.done {
  1136  		select {
  1137  		case log := <-it.logs:
  1138  			it.Event = new(ERC721ApprovalForAll)
  1139  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1140  				it.fail = err
  1141  				return false
  1142  			}
  1143  			it.Event.Raw = log
  1144  			return true
  1145  
  1146  		default:
  1147  			return false
  1148  		}
  1149  	}
  1150  	// Iterator still in progress, wait for either a data or an error event
  1151  	select {
  1152  	case log := <-it.logs:
  1153  		it.Event = new(ERC721ApprovalForAll)
  1154  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1155  			it.fail = err
  1156  			return false
  1157  		}
  1158  		it.Event.Raw = log
  1159  		return true
  1160  
  1161  	case err := <-it.sub.Err():
  1162  		it.done = true
  1163  		it.fail = err
  1164  		return it.Next()
  1165  	}
  1166  }
  1167  
  1168  // Error returns any retrieval or parsing error occurred during filtering.
  1169  func (it *ERC721ApprovalForAllIterator) Error() error {
  1170  	return it.fail
  1171  }
  1172  
  1173  // Close terminates the iteration process, releasing any pending underlying
  1174  // resources.
  1175  func (it *ERC721ApprovalForAllIterator) Close() error {
  1176  	it.sub.Unsubscribe()
  1177  	return nil
  1178  }
  1179  
  1180  // ERC721ApprovalForAll represents a ApprovalForAll event raised by the ERC721 contract.
  1181  type ERC721ApprovalForAll struct {
  1182  	Owner    common.Address
  1183  	Operator common.Address
  1184  	Approved bool
  1185  	Raw      types.Log // Blockchain specific contextual infos
  1186  }
  1187  
  1188  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1189  //
  1190  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1191  func (_ERC721 *ERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ApprovalForAllIterator, error) {
  1192  
  1193  	var ownerRule []interface{}
  1194  	for _, ownerItem := range owner {
  1195  		ownerRule = append(ownerRule, ownerItem)
  1196  	}
  1197  	var operatorRule []interface{}
  1198  	for _, operatorItem := range operator {
  1199  		operatorRule = append(operatorRule, operatorItem)
  1200  	}
  1201  
  1202  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1203  	if err != nil {
  1204  		return nil, err
  1205  	}
  1206  	return &ERC721ApprovalForAllIterator{contract: _ERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  1207  }
  1208  
  1209  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1210  //
  1211  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1212  func (_ERC721 *ERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  1213  
  1214  	var ownerRule []interface{}
  1215  	for _, ownerItem := range owner {
  1216  		ownerRule = append(ownerRule, ownerItem)
  1217  	}
  1218  	var operatorRule []interface{}
  1219  	for _, operatorItem := range operator {
  1220  		operatorRule = append(operatorRule, operatorItem)
  1221  	}
  1222  
  1223  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  1224  	if err != nil {
  1225  		return nil, err
  1226  	}
  1227  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1228  		defer sub.Unsubscribe()
  1229  		for {
  1230  			select {
  1231  			case log := <-logs:
  1232  				// New log arrived, parse the event and forward to the user
  1233  				event := new(ERC721ApprovalForAll)
  1234  				if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1235  					return err
  1236  				}
  1237  				event.Raw = log
  1238  
  1239  				select {
  1240  				case sink <- event:
  1241  				case err := <-sub.Err():
  1242  					return err
  1243  				case <-quit:
  1244  					return nil
  1245  				}
  1246  			case err := <-sub.Err():
  1247  				return err
  1248  			case <-quit:
  1249  				return nil
  1250  			}
  1251  		}
  1252  	}), nil
  1253  }
  1254  
  1255  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  1256  //
  1257  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  1258  func (_ERC721 *ERC721Filterer) ParseApprovalForAll(log types.Log) (*ERC721ApprovalForAll, error) {
  1259  	event := new(ERC721ApprovalForAll)
  1260  	if err := _ERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  1261  		return nil, err
  1262  	}
  1263  	return event, nil
  1264  }
  1265  
  1266  // ERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721 contract.
  1267  type ERC721TransferIterator struct {
  1268  	Event *ERC721Transfer // Event containing the contract specifics and raw log
  1269  
  1270  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1271  	event    string              // Event name to use for unpacking event data
  1272  
  1273  	logs chan types.Log      // Log channel receiving the found contract events
  1274  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1275  	done bool                // Whether the subscription completed delivering logs
  1276  	fail error               // Occurred error to stop iteration
  1277  }
  1278  
  1279  // Next advances the iterator to the subsequent event, returning whether there
  1280  // are any more events found. In case of a retrieval or parsing error, false is
  1281  // returned and Error() can be queried for the exact failure.
  1282  func (it *ERC721TransferIterator) Next() bool {
  1283  	// If the iterator failed, stop iterating
  1284  	if it.fail != nil {
  1285  		return false
  1286  	}
  1287  	// If the iterator completed, deliver directly whatever's available
  1288  	if it.done {
  1289  		select {
  1290  		case log := <-it.logs:
  1291  			it.Event = new(ERC721Transfer)
  1292  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1293  				it.fail = err
  1294  				return false
  1295  			}
  1296  			it.Event.Raw = log
  1297  			return true
  1298  
  1299  		default:
  1300  			return false
  1301  		}
  1302  	}
  1303  	// Iterator still in progress, wait for either a data or an error event
  1304  	select {
  1305  	case log := <-it.logs:
  1306  		it.Event = new(ERC721Transfer)
  1307  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1308  			it.fail = err
  1309  			return false
  1310  		}
  1311  		it.Event.Raw = log
  1312  		return true
  1313  
  1314  	case err := <-it.sub.Err():
  1315  		it.done = true
  1316  		it.fail = err
  1317  		return it.Next()
  1318  	}
  1319  }
  1320  
  1321  // Error returns any retrieval or parsing error occurred during filtering.
  1322  func (it *ERC721TransferIterator) Error() error {
  1323  	return it.fail
  1324  }
  1325  
  1326  // Close terminates the iteration process, releasing any pending underlying
  1327  // resources.
  1328  func (it *ERC721TransferIterator) Close() error {
  1329  	it.sub.Unsubscribe()
  1330  	return nil
  1331  }
  1332  
  1333  // ERC721Transfer represents a Transfer event raised by the ERC721 contract.
  1334  type ERC721Transfer struct {
  1335  	From    common.Address
  1336  	To      common.Address
  1337  	TokenId *big.Int
  1338  	Raw     types.Log // Blockchain specific contextual infos
  1339  }
  1340  
  1341  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1342  //
  1343  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1344  func (_ERC721 *ERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721TransferIterator, error) {
  1345  
  1346  	var fromRule []interface{}
  1347  	for _, fromItem := range from {
  1348  		fromRule = append(fromRule, fromItem)
  1349  	}
  1350  	var toRule []interface{}
  1351  	for _, toItem := range to {
  1352  		toRule = append(toRule, toItem)
  1353  	}
  1354  	var tokenIdRule []interface{}
  1355  	for _, tokenIdItem := range tokenId {
  1356  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1357  	}
  1358  
  1359  	logs, sub, err := _ERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1360  	if err != nil {
  1361  		return nil, err
  1362  	}
  1363  	return &ERC721TransferIterator{contract: _ERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  1364  }
  1365  
  1366  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1367  //
  1368  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1369  func (_ERC721 *ERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1370  
  1371  	var fromRule []interface{}
  1372  	for _, fromItem := range from {
  1373  		fromRule = append(fromRule, fromItem)
  1374  	}
  1375  	var toRule []interface{}
  1376  	for _, toItem := range to {
  1377  		toRule = append(toRule, toItem)
  1378  	}
  1379  	var tokenIdRule []interface{}
  1380  	for _, tokenIdItem := range tokenId {
  1381  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1382  	}
  1383  
  1384  	logs, sub, err := _ERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  1385  	if err != nil {
  1386  		return nil, err
  1387  	}
  1388  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1389  		defer sub.Unsubscribe()
  1390  		for {
  1391  			select {
  1392  			case log := <-logs:
  1393  				// New log arrived, parse the event and forward to the user
  1394  				event := new(ERC721Transfer)
  1395  				if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1396  					return err
  1397  				}
  1398  				event.Raw = log
  1399  
  1400  				select {
  1401  				case sink <- event:
  1402  				case err := <-sub.Err():
  1403  					return err
  1404  				case <-quit:
  1405  					return nil
  1406  				}
  1407  			case err := <-sub.Err():
  1408  				return err
  1409  			case <-quit:
  1410  				return nil
  1411  			}
  1412  		}
  1413  	}), nil
  1414  }
  1415  
  1416  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  1417  //
  1418  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  1419  func (_ERC721 *ERC721Filterer) ParseTransfer(log types.Log) (*ERC721Transfer, error) {
  1420  	event := new(ERC721Transfer)
  1421  	if err := _ERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  1422  		return nil, err
  1423  	}
  1424  	return event, nil
  1425  }
  1426  
  1427  // ERC721BurnableABI is the input ABI used to generate the binding from.
  1428  const ERC721BurnableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  1429  
  1430  // ERC721BurnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  1431  const ERC721BurnableBinRuntime = `608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029`
  1432  
  1433  // ERC721BurnableFuncSigs maps the 4-byte function signature to its string representation.
  1434  var ERC721BurnableFuncSigs = map[string]string{
  1435  	"095ea7b3": "approve(address,uint256)",
  1436  	"70a08231": "balanceOf(address)",
  1437  	"42966c68": "burn(uint256)",
  1438  	"081812fc": "getApproved(uint256)",
  1439  	"e985e9c5": "isApprovedForAll(address,address)",
  1440  	"6352211e": "ownerOf(uint256)",
  1441  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  1442  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  1443  	"a22cb465": "setApprovalForAll(address,bool)",
  1444  	"01ffc9a7": "supportsInterface(bytes4)",
  1445  	"23b872dd": "transferFrom(address,address,uint256)",
  1446  }
  1447  
  1448  // ERC721BurnableBin is the compiled bytecode used for deploying new contracts.
  1449  var ERC721BurnableBin = "0x608060405261001a6301ffc9a760e01b61003560201b60201c565b6100306380ac58cd60e01b61003560201b60201c565b610103565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100c657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b610eff806101126000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806342966c681161007157806342966c68146101bc5780636352211e146101d957806370a08231146101f6578063a22cb4651461022e578063b88d4fde1461025c578063e985e9c514610322576100a9565b806301ffc9a7146100ae578063081812fc146100e9578063095ea7b31461012257806323b872dd1461015057806342842e0e14610186575b600080fd5b6100d5600480360360208110156100c457600080fd5b50356001600160e01b031916610350565b604080519115158252519081900360200190f35b610106600480360360208110156100ff57600080fd5b503561036f565b604080516001600160a01b039092168252519081900360200190f35b61014e6004803603604081101561013857600080fd5b506001600160a01b0381351690602001356103d4565b005b61014e6004803603606081101561016657600080fd5b506001600160a01b038135811691602081013590911690604001356104eb565b61014e6004803603606081101561019c57600080fd5b506001600160a01b03813581169160208101359091169060400135610543565b61014e600480360360208110156101d257600080fd5b503561055e565b610106600480360360208110156101ef57600080fd5b50356105b2565b61021c6004803603602081101561020c57600080fd5b50356001600160a01b031661060f565b60408051918252519081900360200190f35b61014e6004803603604081101561024457600080fd5b506001600160a01b038135169060200135151561067a565b61014e6004803603608081101561027257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156102ad57600080fd5b8201836020820111156102bf57600080fd5b803590602001918460018302840111640100000000831117156102e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610749945050505050565b6100d56004803603604081101561033857600080fd5b506001600160a01b03813581169160200135166107a4565b6001600160e01b03191660009081526020819052604090205460ff1690565b600061037a826107d2565b6103b857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610dd8602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006103df826105b2565b9050806001600160a01b0316836001600160a01b0316141561043557604051600160e51b62461bcd028152600401808060200182810382526021815260200180610e2d6021913960400191505060405180910390fd5b336001600160a01b0382161480610451575061045181336107a4565b61048f57604051600160e51b62461bcd028152600401808060200182810382526038815260200180610d4d6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6104f533826107ef565b61053357604051600160e51b62461bcd028152600401808060200182810382526031815260200180610e4e6031913960400191505060405180910390fd5b61053e838383610896565b505050565b61053e83838360405180602001604052806000815250610749565b61056833826107ef565b6105a657604051600160e51b62461bcd028152600401808060200182810382526030815260200180610ea46030913960400191505060405180910390fd5b6105af816109e0565b50565b6000818152600160205260408120546001600160a01b03168061060957604051600160e51b62461bcd028152600401808060200182810382526029815260200180610daf6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661065957604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610d85602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610609906109f2565b6001600160a01b0382163314156106db5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6107548484846104eb565b610760848484846109f6565b61079e57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610ccb6032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006107fa826107d2565b61083857604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610d21602c913960400191505060405180910390fd5b6000610843836105b2565b9050806001600160a01b0316846001600160a01b0316148061087e5750836001600160a01b03166108738461036f565b6001600160a01b0316145b8061088e575061088e81856107a4565b949350505050565b826001600160a01b03166108a9826105b2565b6001600160a01b0316146108f157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610e046029913960400191505060405180910390fd5b6001600160a01b03821661093957604051600160e51b62461bcd028152600401808060200182810382526024815260200180610cfd6024913960400191505060405180910390fd5b61094281610b2f565b6001600160a01b038316600090815260036020526040902061096390610b6a565b6001600160a01b038216600090815260036020526040902061098490610b81565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6105af6109ec826105b2565b82610b8a565b5490565b6000610a0a846001600160a01b0316610c64565b610a165750600161088e565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a93578181015183820152602001610a7b565b50505050905090810190601f168015610ac05780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ae257600080fd5b505af1158015610af6573d6000803e3d6000fd5b505050506040513d6020811015610b0c57600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b0316156105af57600090815260026020526040902080546001600160a01b0319169055565b8054610b7d90600163ffffffff610c6a16565b9055565b80546001019055565b816001600160a01b0316610b9d826105b2565b6001600160a01b031614610be557604051600160e51b62461bcd028152600401808060200182810382526025815260200180610e7f6025913960400191505060405180910390fd5b610bee81610b2f565b6001600160a01b0382166000908152600360205260409020610c0f90610b6a565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b3b151590565b600082821115610cc45760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f7665644552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582035986e074f001b98f3d4f8e669063ef8d5efcf5cb63f5103e5e5296048223c1d0029"
  1450  
  1451  // DeployERC721Burnable deploys a new Klaytn contract, binding an instance of ERC721Burnable to it.
  1452  func DeployERC721Burnable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Burnable, error) {
  1453  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
  1454  	if err != nil {
  1455  		return common.Address{}, nil, nil, err
  1456  	}
  1457  
  1458  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721BurnableBin), backend)
  1459  	if err != nil {
  1460  		return common.Address{}, nil, nil, err
  1461  	}
  1462  	return address, tx, &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1463  }
  1464  
  1465  // ERC721Burnable is an auto generated Go binding around a Klaytn contract.
  1466  type ERC721Burnable struct {
  1467  	ERC721BurnableCaller     // Read-only binding to the contract
  1468  	ERC721BurnableTransactor // Write-only binding to the contract
  1469  	ERC721BurnableFilterer   // Log filterer for contract events
  1470  }
  1471  
  1472  // ERC721BurnableCaller is an auto generated read-only Go binding around a Klaytn contract.
  1473  type ERC721BurnableCaller struct {
  1474  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1475  }
  1476  
  1477  // ERC721BurnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  1478  type ERC721BurnableTransactor struct {
  1479  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1480  }
  1481  
  1482  // ERC721BurnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  1483  type ERC721BurnableFilterer struct {
  1484  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  1485  }
  1486  
  1487  // ERC721BurnableSession is an auto generated Go binding around a Klaytn contract,
  1488  // with pre-set call and transact options.
  1489  type ERC721BurnableSession struct {
  1490  	Contract     *ERC721Burnable   // Generic contract binding to set the session for
  1491  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  1492  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  1493  }
  1494  
  1495  // ERC721BurnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  1496  // with pre-set call options.
  1497  type ERC721BurnableCallerSession struct {
  1498  	Contract *ERC721BurnableCaller // Generic contract caller binding to set the session for
  1499  	CallOpts bind.CallOpts         // Call options to use throughout this session
  1500  }
  1501  
  1502  // ERC721BurnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  1503  // with pre-set transact options.
  1504  type ERC721BurnableTransactorSession struct {
  1505  	Contract     *ERC721BurnableTransactor // Generic contract transactor binding to set the session for
  1506  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  1507  }
  1508  
  1509  // ERC721BurnableRaw is an auto generated low-level Go binding around a Klaytn contract.
  1510  type ERC721BurnableRaw struct {
  1511  	Contract *ERC721Burnable // Generic contract binding to access the raw methods on
  1512  }
  1513  
  1514  // ERC721BurnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  1515  type ERC721BurnableCallerRaw struct {
  1516  	Contract *ERC721BurnableCaller // Generic read-only contract binding to access the raw methods on
  1517  }
  1518  
  1519  // ERC721BurnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  1520  type ERC721BurnableTransactorRaw struct {
  1521  	Contract *ERC721BurnableTransactor // Generic write-only contract binding to access the raw methods on
  1522  }
  1523  
  1524  // NewERC721Burnable creates a new instance of ERC721Burnable, bound to a specific deployed contract.
  1525  func NewERC721Burnable(address common.Address, backend bind.ContractBackend) (*ERC721Burnable, error) {
  1526  	contract, err := bindERC721Burnable(address, backend, backend, backend)
  1527  	if err != nil {
  1528  		return nil, err
  1529  	}
  1530  	return &ERC721Burnable{ERC721BurnableCaller: ERC721BurnableCaller{contract: contract}, ERC721BurnableTransactor: ERC721BurnableTransactor{contract: contract}, ERC721BurnableFilterer: ERC721BurnableFilterer{contract: contract}}, nil
  1531  }
  1532  
  1533  // NewERC721BurnableCaller creates a new read-only instance of ERC721Burnable, bound to a specific deployed contract.
  1534  func NewERC721BurnableCaller(address common.Address, caller bind.ContractCaller) (*ERC721BurnableCaller, error) {
  1535  	contract, err := bindERC721Burnable(address, caller, nil, nil)
  1536  	if err != nil {
  1537  		return nil, err
  1538  	}
  1539  	return &ERC721BurnableCaller{contract: contract}, nil
  1540  }
  1541  
  1542  // NewERC721BurnableTransactor creates a new write-only instance of ERC721Burnable, bound to a specific deployed contract.
  1543  func NewERC721BurnableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721BurnableTransactor, error) {
  1544  	contract, err := bindERC721Burnable(address, nil, transactor, nil)
  1545  	if err != nil {
  1546  		return nil, err
  1547  	}
  1548  	return &ERC721BurnableTransactor{contract: contract}, nil
  1549  }
  1550  
  1551  // NewERC721BurnableFilterer creates a new log filterer instance of ERC721Burnable, bound to a specific deployed contract.
  1552  func NewERC721BurnableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721BurnableFilterer, error) {
  1553  	contract, err := bindERC721Burnable(address, nil, nil, filterer)
  1554  	if err != nil {
  1555  		return nil, err
  1556  	}
  1557  	return &ERC721BurnableFilterer{contract: contract}, nil
  1558  }
  1559  
  1560  // bindERC721Burnable binds a generic wrapper to an already deployed contract.
  1561  func bindERC721Burnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  1562  	parsed, err := abi.JSON(strings.NewReader(ERC721BurnableABI))
  1563  	if err != nil {
  1564  		return nil, err
  1565  	}
  1566  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  1567  }
  1568  
  1569  // Call invokes the (constant) contract method with params as input values and
  1570  // sets the output to result. The result type might be a single field for simple
  1571  // returns, a slice of interfaces for anonymous returns and a struct for named
  1572  // returns.
  1573  func (_ERC721Burnable *ERC721BurnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1574  	return _ERC721Burnable.Contract.ERC721BurnableCaller.contract.Call(opts, result, method, params...)
  1575  }
  1576  
  1577  // Transfer initiates a plain transaction to move funds to the contract, calling
  1578  // its default method if one is available.
  1579  func (_ERC721Burnable *ERC721BurnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1580  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transfer(opts)
  1581  }
  1582  
  1583  // Transact invokes the (paid) contract method with params as input values.
  1584  func (_ERC721Burnable *ERC721BurnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1585  	return _ERC721Burnable.Contract.ERC721BurnableTransactor.contract.Transact(opts, method, params...)
  1586  }
  1587  
  1588  // Call invokes the (constant) contract method with params as input values and
  1589  // sets the output to result. The result type might be a single field for simple
  1590  // returns, a slice of interfaces for anonymous returns and a struct for named
  1591  // returns.
  1592  func (_ERC721Burnable *ERC721BurnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  1593  	return _ERC721Burnable.Contract.contract.Call(opts, result, method, params...)
  1594  }
  1595  
  1596  // Transfer initiates a plain transaction to move funds to the contract, calling
  1597  // its default method if one is available.
  1598  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  1599  	return _ERC721Burnable.Contract.contract.Transfer(opts)
  1600  }
  1601  
  1602  // Transact invokes the (paid) contract method with params as input values.
  1603  func (_ERC721Burnable *ERC721BurnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  1604  	return _ERC721Burnable.Contract.contract.Transact(opts, method, params...)
  1605  }
  1606  
  1607  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1608  //
  1609  // Solidity: function balanceOf(address owner) view returns(uint256)
  1610  func (_ERC721Burnable *ERC721BurnableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  1611  	var (
  1612  		ret0 = new(*big.Int)
  1613  	)
  1614  	out := ret0
  1615  	err := _ERC721Burnable.contract.Call(opts, out, "balanceOf", owner)
  1616  	return *ret0, err
  1617  }
  1618  
  1619  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1620  //
  1621  // Solidity: function balanceOf(address owner) view returns(uint256)
  1622  func (_ERC721Burnable *ERC721BurnableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1623  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1624  }
  1625  
  1626  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  1627  //
  1628  // Solidity: function balanceOf(address owner) view returns(uint256)
  1629  func (_ERC721Burnable *ERC721BurnableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  1630  	return _ERC721Burnable.Contract.BalanceOf(&_ERC721Burnable.CallOpts, owner)
  1631  }
  1632  
  1633  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1634  //
  1635  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1636  func (_ERC721Burnable *ERC721BurnableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1637  	var (
  1638  		ret0 = new(common.Address)
  1639  	)
  1640  	out := ret0
  1641  	err := _ERC721Burnable.contract.Call(opts, out, "getApproved", tokenId)
  1642  	return *ret0, err
  1643  }
  1644  
  1645  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1646  //
  1647  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1648  func (_ERC721Burnable *ERC721BurnableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1649  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1650  }
  1651  
  1652  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  1653  //
  1654  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  1655  func (_ERC721Burnable *ERC721BurnableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  1656  	return _ERC721Burnable.Contract.GetApproved(&_ERC721Burnable.CallOpts, tokenId)
  1657  }
  1658  
  1659  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1660  //
  1661  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1662  func (_ERC721Burnable *ERC721BurnableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  1663  	var (
  1664  		ret0 = new(bool)
  1665  	)
  1666  	out := ret0
  1667  	err := _ERC721Burnable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  1668  	return *ret0, err
  1669  }
  1670  
  1671  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1672  //
  1673  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1674  func (_ERC721Burnable *ERC721BurnableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1675  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1676  }
  1677  
  1678  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  1679  //
  1680  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  1681  func (_ERC721Burnable *ERC721BurnableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  1682  	return _ERC721Burnable.Contract.IsApprovedForAll(&_ERC721Burnable.CallOpts, owner, operator)
  1683  }
  1684  
  1685  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1686  //
  1687  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1688  func (_ERC721Burnable *ERC721BurnableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  1689  	var (
  1690  		ret0 = new(common.Address)
  1691  	)
  1692  	out := ret0
  1693  	err := _ERC721Burnable.contract.Call(opts, out, "ownerOf", tokenId)
  1694  	return *ret0, err
  1695  }
  1696  
  1697  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1698  //
  1699  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1700  func (_ERC721Burnable *ERC721BurnableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1701  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1702  }
  1703  
  1704  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  1705  //
  1706  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  1707  func (_ERC721Burnable *ERC721BurnableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  1708  	return _ERC721Burnable.Contract.OwnerOf(&_ERC721Burnable.CallOpts, tokenId)
  1709  }
  1710  
  1711  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1712  //
  1713  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1714  func (_ERC721Burnable *ERC721BurnableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  1715  	var (
  1716  		ret0 = new(bool)
  1717  	)
  1718  	out := ret0
  1719  	err := _ERC721Burnable.contract.Call(opts, out, "supportsInterface", interfaceId)
  1720  	return *ret0, err
  1721  }
  1722  
  1723  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1724  //
  1725  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1726  func (_ERC721Burnable *ERC721BurnableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1727  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1728  }
  1729  
  1730  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  1731  //
  1732  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  1733  func (_ERC721Burnable *ERC721BurnableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  1734  	return _ERC721Burnable.Contract.SupportsInterface(&_ERC721Burnable.CallOpts, interfaceId)
  1735  }
  1736  
  1737  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1738  //
  1739  // Solidity: function approve(address to, uint256 tokenId) returns()
  1740  func (_ERC721Burnable *ERC721BurnableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1741  	return _ERC721Burnable.contract.Transact(opts, "approve", to, tokenId)
  1742  }
  1743  
  1744  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1745  //
  1746  // Solidity: function approve(address to, uint256 tokenId) returns()
  1747  func (_ERC721Burnable *ERC721BurnableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1748  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1749  }
  1750  
  1751  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  1752  //
  1753  // Solidity: function approve(address to, uint256 tokenId) returns()
  1754  func (_ERC721Burnable *ERC721BurnableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1755  	return _ERC721Burnable.Contract.Approve(&_ERC721Burnable.TransactOpts, to, tokenId)
  1756  }
  1757  
  1758  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1759  //
  1760  // Solidity: function burn(uint256 tokenId) returns()
  1761  func (_ERC721Burnable *ERC721BurnableTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
  1762  	return _ERC721Burnable.contract.Transact(opts, "burn", tokenId)
  1763  }
  1764  
  1765  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1766  //
  1767  // Solidity: function burn(uint256 tokenId) returns()
  1768  func (_ERC721Burnable *ERC721BurnableSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1769  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1770  }
  1771  
  1772  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
  1773  //
  1774  // Solidity: function burn(uint256 tokenId) returns()
  1775  func (_ERC721Burnable *ERC721BurnableTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
  1776  	return _ERC721Burnable.Contract.Burn(&_ERC721Burnable.TransactOpts, tokenId)
  1777  }
  1778  
  1779  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1780  //
  1781  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1782  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1783  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  1784  }
  1785  
  1786  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1787  //
  1788  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1789  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1790  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1791  }
  1792  
  1793  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  1794  //
  1795  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  1796  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1797  	return _ERC721Burnable.Contract.SafeTransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1798  }
  1799  
  1800  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1801  //
  1802  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1803  func (_ERC721Burnable *ERC721BurnableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1804  	return _ERC721Burnable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  1805  }
  1806  
  1807  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1808  //
  1809  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1810  func (_ERC721Burnable *ERC721BurnableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1811  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1812  }
  1813  
  1814  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  1815  //
  1816  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  1817  func (_ERC721Burnable *ERC721BurnableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  1818  	return _ERC721Burnable.Contract.SafeTransferFrom0(&_ERC721Burnable.TransactOpts, from, to, tokenId, _data)
  1819  }
  1820  
  1821  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1822  //
  1823  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1824  func (_ERC721Burnable *ERC721BurnableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  1825  	return _ERC721Burnable.contract.Transact(opts, "setApprovalForAll", to, approved)
  1826  }
  1827  
  1828  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1829  //
  1830  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1831  func (_ERC721Burnable *ERC721BurnableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1832  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1833  }
  1834  
  1835  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  1836  //
  1837  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  1838  func (_ERC721Burnable *ERC721BurnableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  1839  	return _ERC721Burnable.Contract.SetApprovalForAll(&_ERC721Burnable.TransactOpts, to, approved)
  1840  }
  1841  
  1842  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1843  //
  1844  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1845  func (_ERC721Burnable *ERC721BurnableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1846  	return _ERC721Burnable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  1847  }
  1848  
  1849  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1850  //
  1851  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1852  func (_ERC721Burnable *ERC721BurnableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1853  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1854  }
  1855  
  1856  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  1857  //
  1858  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  1859  func (_ERC721Burnable *ERC721BurnableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  1860  	return _ERC721Burnable.Contract.TransferFrom(&_ERC721Burnable.TransactOpts, from, to, tokenId)
  1861  }
  1862  
  1863  // ERC721BurnableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Burnable contract.
  1864  type ERC721BurnableApprovalIterator struct {
  1865  	Event *ERC721BurnableApproval // Event containing the contract specifics and raw log
  1866  
  1867  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  1868  	event    string              // Event name to use for unpacking event data
  1869  
  1870  	logs chan types.Log      // Log channel receiving the found contract events
  1871  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  1872  	done bool                // Whether the subscription completed delivering logs
  1873  	fail error               // Occurred error to stop iteration
  1874  }
  1875  
  1876  // Next advances the iterator to the subsequent event, returning whether there
  1877  // are any more events found. In case of a retrieval or parsing error, false is
  1878  // returned and Error() can be queried for the exact failure.
  1879  func (it *ERC721BurnableApprovalIterator) Next() bool {
  1880  	// If the iterator failed, stop iterating
  1881  	if it.fail != nil {
  1882  		return false
  1883  	}
  1884  	// If the iterator completed, deliver directly whatever's available
  1885  	if it.done {
  1886  		select {
  1887  		case log := <-it.logs:
  1888  			it.Event = new(ERC721BurnableApproval)
  1889  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1890  				it.fail = err
  1891  				return false
  1892  			}
  1893  			it.Event.Raw = log
  1894  			return true
  1895  
  1896  		default:
  1897  			return false
  1898  		}
  1899  	}
  1900  	// Iterator still in progress, wait for either a data or an error event
  1901  	select {
  1902  	case log := <-it.logs:
  1903  		it.Event = new(ERC721BurnableApproval)
  1904  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1905  			it.fail = err
  1906  			return false
  1907  		}
  1908  		it.Event.Raw = log
  1909  		return true
  1910  
  1911  	case err := <-it.sub.Err():
  1912  		it.done = true
  1913  		it.fail = err
  1914  		return it.Next()
  1915  	}
  1916  }
  1917  
  1918  // Error returns any retrieval or parsing error occurred during filtering.
  1919  func (it *ERC721BurnableApprovalIterator) Error() error {
  1920  	return it.fail
  1921  }
  1922  
  1923  // Close terminates the iteration process, releasing any pending underlying
  1924  // resources.
  1925  func (it *ERC721BurnableApprovalIterator) Close() error {
  1926  	it.sub.Unsubscribe()
  1927  	return nil
  1928  }
  1929  
  1930  // ERC721BurnableApproval represents a Approval event raised by the ERC721Burnable contract.
  1931  type ERC721BurnableApproval struct {
  1932  	Owner    common.Address
  1933  	Approved common.Address
  1934  	TokenId  *big.Int
  1935  	Raw      types.Log // Blockchain specific contextual infos
  1936  }
  1937  
  1938  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1939  //
  1940  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1941  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721BurnableApprovalIterator, error) {
  1942  
  1943  	var ownerRule []interface{}
  1944  	for _, ownerItem := range owner {
  1945  		ownerRule = append(ownerRule, ownerItem)
  1946  	}
  1947  	var approvedRule []interface{}
  1948  	for _, approvedItem := range approved {
  1949  		approvedRule = append(approvedRule, approvedItem)
  1950  	}
  1951  	var tokenIdRule []interface{}
  1952  	for _, tokenIdItem := range tokenId {
  1953  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1954  	}
  1955  
  1956  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1957  	if err != nil {
  1958  		return nil, err
  1959  	}
  1960  	return &ERC721BurnableApprovalIterator{contract: _ERC721Burnable.contract, event: "Approval", logs: logs, sub: sub}, nil
  1961  }
  1962  
  1963  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  1964  //
  1965  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  1966  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  1967  
  1968  	var ownerRule []interface{}
  1969  	for _, ownerItem := range owner {
  1970  		ownerRule = append(ownerRule, ownerItem)
  1971  	}
  1972  	var approvedRule []interface{}
  1973  	for _, approvedItem := range approved {
  1974  		approvedRule = append(approvedRule, approvedItem)
  1975  	}
  1976  	var tokenIdRule []interface{}
  1977  	for _, tokenIdItem := range tokenId {
  1978  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  1979  	}
  1980  
  1981  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  1982  	if err != nil {
  1983  		return nil, err
  1984  	}
  1985  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1986  		defer sub.Unsubscribe()
  1987  		for {
  1988  			select {
  1989  			case log := <-logs:
  1990  				// New log arrived, parse the event and forward to the user
  1991  				event := new(ERC721BurnableApproval)
  1992  				if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  1993  					return err
  1994  				}
  1995  				event.Raw = log
  1996  
  1997  				select {
  1998  				case sink <- event:
  1999  				case err := <-sub.Err():
  2000  					return err
  2001  				case <-quit:
  2002  					return nil
  2003  				}
  2004  			case err := <-sub.Err():
  2005  				return err
  2006  			case <-quit:
  2007  				return nil
  2008  			}
  2009  		}
  2010  	}), nil
  2011  }
  2012  
  2013  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2014  //
  2015  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2016  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApproval(log types.Log) (*ERC721BurnableApproval, error) {
  2017  	event := new(ERC721BurnableApproval)
  2018  	if err := _ERC721Burnable.contract.UnpackLog(event, "Approval", log); err != nil {
  2019  		return nil, err
  2020  	}
  2021  	return event, nil
  2022  }
  2023  
  2024  // ERC721BurnableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Burnable contract.
  2025  type ERC721BurnableApprovalForAllIterator struct {
  2026  	Event *ERC721BurnableApprovalForAll // Event containing the contract specifics and raw log
  2027  
  2028  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2029  	event    string              // Event name to use for unpacking event data
  2030  
  2031  	logs chan types.Log      // Log channel receiving the found contract events
  2032  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2033  	done bool                // Whether the subscription completed delivering logs
  2034  	fail error               // Occurred error to stop iteration
  2035  }
  2036  
  2037  // Next advances the iterator to the subsequent event, returning whether there
  2038  // are any more events found. In case of a retrieval or parsing error, false is
  2039  // returned and Error() can be queried for the exact failure.
  2040  func (it *ERC721BurnableApprovalForAllIterator) Next() bool {
  2041  	// If the iterator failed, stop iterating
  2042  	if it.fail != nil {
  2043  		return false
  2044  	}
  2045  	// If the iterator completed, deliver directly whatever's available
  2046  	if it.done {
  2047  		select {
  2048  		case log := <-it.logs:
  2049  			it.Event = new(ERC721BurnableApprovalForAll)
  2050  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2051  				it.fail = err
  2052  				return false
  2053  			}
  2054  			it.Event.Raw = log
  2055  			return true
  2056  
  2057  		default:
  2058  			return false
  2059  		}
  2060  	}
  2061  	// Iterator still in progress, wait for either a data or an error event
  2062  	select {
  2063  	case log := <-it.logs:
  2064  		it.Event = new(ERC721BurnableApprovalForAll)
  2065  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2066  			it.fail = err
  2067  			return false
  2068  		}
  2069  		it.Event.Raw = log
  2070  		return true
  2071  
  2072  	case err := <-it.sub.Err():
  2073  		it.done = true
  2074  		it.fail = err
  2075  		return it.Next()
  2076  	}
  2077  }
  2078  
  2079  // Error returns any retrieval or parsing error occurred during filtering.
  2080  func (it *ERC721BurnableApprovalForAllIterator) Error() error {
  2081  	return it.fail
  2082  }
  2083  
  2084  // Close terminates the iteration process, releasing any pending underlying
  2085  // resources.
  2086  func (it *ERC721BurnableApprovalForAllIterator) Close() error {
  2087  	it.sub.Unsubscribe()
  2088  	return nil
  2089  }
  2090  
  2091  // ERC721BurnableApprovalForAll represents a ApprovalForAll event raised by the ERC721Burnable contract.
  2092  type ERC721BurnableApprovalForAll struct {
  2093  	Owner    common.Address
  2094  	Operator common.Address
  2095  	Approved bool
  2096  	Raw      types.Log // Blockchain specific contextual infos
  2097  }
  2098  
  2099  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2100  //
  2101  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2102  func (_ERC721Burnable *ERC721BurnableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721BurnableApprovalForAllIterator, error) {
  2103  
  2104  	var ownerRule []interface{}
  2105  	for _, ownerItem := range owner {
  2106  		ownerRule = append(ownerRule, ownerItem)
  2107  	}
  2108  	var operatorRule []interface{}
  2109  	for _, operatorItem := range operator {
  2110  		operatorRule = append(operatorRule, operatorItem)
  2111  	}
  2112  
  2113  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2114  	if err != nil {
  2115  		return nil, err
  2116  	}
  2117  	return &ERC721BurnableApprovalForAllIterator{contract: _ERC721Burnable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  2118  }
  2119  
  2120  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2121  //
  2122  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2123  func (_ERC721Burnable *ERC721BurnableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721BurnableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  2124  
  2125  	var ownerRule []interface{}
  2126  	for _, ownerItem := range owner {
  2127  		ownerRule = append(ownerRule, ownerItem)
  2128  	}
  2129  	var operatorRule []interface{}
  2130  	for _, operatorItem := range operator {
  2131  		operatorRule = append(operatorRule, operatorItem)
  2132  	}
  2133  
  2134  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  2135  	if err != nil {
  2136  		return nil, err
  2137  	}
  2138  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2139  		defer sub.Unsubscribe()
  2140  		for {
  2141  			select {
  2142  			case log := <-logs:
  2143  				// New log arrived, parse the event and forward to the user
  2144  				event := new(ERC721BurnableApprovalForAll)
  2145  				if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2146  					return err
  2147  				}
  2148  				event.Raw = log
  2149  
  2150  				select {
  2151  				case sink <- event:
  2152  				case err := <-sub.Err():
  2153  					return err
  2154  				case <-quit:
  2155  					return nil
  2156  				}
  2157  			case err := <-sub.Err():
  2158  				return err
  2159  			case <-quit:
  2160  				return nil
  2161  			}
  2162  		}
  2163  	}), nil
  2164  }
  2165  
  2166  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  2167  //
  2168  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  2169  func (_ERC721Burnable *ERC721BurnableFilterer) ParseApprovalForAll(log types.Log) (*ERC721BurnableApprovalForAll, error) {
  2170  	event := new(ERC721BurnableApprovalForAll)
  2171  	if err := _ERC721Burnable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  2172  		return nil, err
  2173  	}
  2174  	return event, nil
  2175  }
  2176  
  2177  // ERC721BurnableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Burnable contract.
  2178  type ERC721BurnableTransferIterator struct {
  2179  	Event *ERC721BurnableTransfer // Event containing the contract specifics and raw log
  2180  
  2181  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2182  	event    string              // Event name to use for unpacking event data
  2183  
  2184  	logs chan types.Log      // Log channel receiving the found contract events
  2185  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2186  	done bool                // Whether the subscription completed delivering logs
  2187  	fail error               // Occurred error to stop iteration
  2188  }
  2189  
  2190  // Next advances the iterator to the subsequent event, returning whether there
  2191  // are any more events found. In case of a retrieval or parsing error, false is
  2192  // returned and Error() can be queried for the exact failure.
  2193  func (it *ERC721BurnableTransferIterator) Next() bool {
  2194  	// If the iterator failed, stop iterating
  2195  	if it.fail != nil {
  2196  		return false
  2197  	}
  2198  	// If the iterator completed, deliver directly whatever's available
  2199  	if it.done {
  2200  		select {
  2201  		case log := <-it.logs:
  2202  			it.Event = new(ERC721BurnableTransfer)
  2203  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2204  				it.fail = err
  2205  				return false
  2206  			}
  2207  			it.Event.Raw = log
  2208  			return true
  2209  
  2210  		default:
  2211  			return false
  2212  		}
  2213  	}
  2214  	// Iterator still in progress, wait for either a data or an error event
  2215  	select {
  2216  	case log := <-it.logs:
  2217  		it.Event = new(ERC721BurnableTransfer)
  2218  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2219  			it.fail = err
  2220  			return false
  2221  		}
  2222  		it.Event.Raw = log
  2223  		return true
  2224  
  2225  	case err := <-it.sub.Err():
  2226  		it.done = true
  2227  		it.fail = err
  2228  		return it.Next()
  2229  	}
  2230  }
  2231  
  2232  // Error returns any retrieval or parsing error occurred during filtering.
  2233  func (it *ERC721BurnableTransferIterator) Error() error {
  2234  	return it.fail
  2235  }
  2236  
  2237  // Close terminates the iteration process, releasing any pending underlying
  2238  // resources.
  2239  func (it *ERC721BurnableTransferIterator) Close() error {
  2240  	it.sub.Unsubscribe()
  2241  	return nil
  2242  }
  2243  
  2244  // ERC721BurnableTransfer represents a Transfer event raised by the ERC721Burnable contract.
  2245  type ERC721BurnableTransfer struct {
  2246  	From    common.Address
  2247  	To      common.Address
  2248  	TokenId *big.Int
  2249  	Raw     types.Log // Blockchain specific contextual infos
  2250  }
  2251  
  2252  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2253  //
  2254  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2255  func (_ERC721Burnable *ERC721BurnableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721BurnableTransferIterator, error) {
  2256  
  2257  	var fromRule []interface{}
  2258  	for _, fromItem := range from {
  2259  		fromRule = append(fromRule, fromItem)
  2260  	}
  2261  	var toRule []interface{}
  2262  	for _, toItem := range to {
  2263  		toRule = append(toRule, toItem)
  2264  	}
  2265  	var tokenIdRule []interface{}
  2266  	for _, tokenIdItem := range tokenId {
  2267  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2268  	}
  2269  
  2270  	logs, sub, err := _ERC721Burnable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2271  	if err != nil {
  2272  		return nil, err
  2273  	}
  2274  	return &ERC721BurnableTransferIterator{contract: _ERC721Burnable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  2275  }
  2276  
  2277  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2278  //
  2279  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2280  func (_ERC721Burnable *ERC721BurnableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721BurnableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2281  
  2282  	var fromRule []interface{}
  2283  	for _, fromItem := range from {
  2284  		fromRule = append(fromRule, fromItem)
  2285  	}
  2286  	var toRule []interface{}
  2287  	for _, toItem := range to {
  2288  		toRule = append(toRule, toItem)
  2289  	}
  2290  	var tokenIdRule []interface{}
  2291  	for _, tokenIdItem := range tokenId {
  2292  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2293  	}
  2294  
  2295  	logs, sub, err := _ERC721Burnable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  2296  	if err != nil {
  2297  		return nil, err
  2298  	}
  2299  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2300  		defer sub.Unsubscribe()
  2301  		for {
  2302  			select {
  2303  			case log := <-logs:
  2304  				// New log arrived, parse the event and forward to the user
  2305  				event := new(ERC721BurnableTransfer)
  2306  				if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2307  					return err
  2308  				}
  2309  				event.Raw = log
  2310  
  2311  				select {
  2312  				case sink <- event:
  2313  				case err := <-sub.Err():
  2314  					return err
  2315  				case <-quit:
  2316  					return nil
  2317  				}
  2318  			case err := <-sub.Err():
  2319  				return err
  2320  			case <-quit:
  2321  				return nil
  2322  			}
  2323  		}
  2324  	}), nil
  2325  }
  2326  
  2327  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  2328  //
  2329  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  2330  func (_ERC721Burnable *ERC721BurnableFilterer) ParseTransfer(log types.Log) (*ERC721BurnableTransfer, error) {
  2331  	event := new(ERC721BurnableTransfer)
  2332  	if err := _ERC721Burnable.contract.UnpackLog(event, "Transfer", log); err != nil {
  2333  		return nil, err
  2334  	}
  2335  	return event, nil
  2336  }
  2337  
  2338  // ERC721EnumerableABI is the input ABI used to generate the binding from.
  2339  const ERC721EnumerableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  2340  
  2341  // ERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  2342  const ERC721EnumerableBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582032758eb600139b67a210fd9276c84319949b41630d8e516f489ff299a27364150029`
  2343  
  2344  // ERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation.
  2345  var ERC721EnumerableFuncSigs = map[string]string{
  2346  	"095ea7b3": "approve(address,uint256)",
  2347  	"70a08231": "balanceOf(address)",
  2348  	"081812fc": "getApproved(uint256)",
  2349  	"e985e9c5": "isApprovedForAll(address,address)",
  2350  	"6352211e": "ownerOf(uint256)",
  2351  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  2352  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  2353  	"a22cb465": "setApprovalForAll(address,bool)",
  2354  	"01ffc9a7": "supportsInterface(bytes4)",
  2355  	"4f6ccce7": "tokenByIndex(uint256)",
  2356  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  2357  	"18160ddd": "totalSupply()",
  2358  	"23b872dd": "transferFrom(address,address,uint256)",
  2359  }
  2360  
  2361  // ERC721EnumerableBin is the compiled bytecode used for deploying new contracts.
  2362  var ERC721EnumerableBin = "0x608060405234801561001057600080fd5b506100276301ffc9a760e01b61005860201b60201c565b61003d6380ac58cd60e01b61005860201b60201c565b61005363780e9d6360e01b61005860201b60201c565b610126565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156100e957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b61109e806101356000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342842e0e1161008c57806370a082311161006657806370a0823114610262578063a22cb46514610288578063b88d4fde146102b6578063e985e9c51461037c576100cf565b806342842e0e146101f25780634f6ccce7146102285780636352211e14610245576100cf565b806301ffc9a7146100d4578063081812fc1461010f578063095ea7b31461014857806318160ddd1461017657806323b872dd146101905780632f745c59146101c6575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103aa565b604080519115158252519081900360200190f35b61012c6004803603602081101561012557600080fd5b50356103c9565b604080516001600160a01b039092168252519081900360200190f35b6101746004803603604081101561015e57600080fd5b506001600160a01b03813516906020013561042e565b005b61017e610545565b60408051918252519081900360200190f35b610174600480360360608110156101a657600080fd5b506001600160a01b0381358116916020810135909116906040013561054c565b61017e600480360360408110156101dc57600080fd5b506001600160a01b0381351690602001356105a4565b6101746004803603606081101561020857600080fd5b506001600160a01b03813581169160208101359091169060400135610626565b61017e6004803603602081101561023e57600080fd5b5035610641565b61012c6004803603602081101561025b57600080fd5b50356106aa565b61017e6004803603602081101561027857600080fd5b50356001600160a01b0316610707565b6101746004803603604081101561029e57600080fd5b506001600160a01b0381351690602001351515610772565b610174600480360360808110156102cc57600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561030757600080fd5b82018360208201111561031957600080fd5b8035906020019184600183028401116401000000008311171561033b57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610841945050505050565b6100fb6004803603604081101561039257600080fd5b506001600160a01b038135811691602001351661089c565b6001600160e01b03191660009081526020819052604090205460ff1690565b60006103d4826108ca565b61041257604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610fa0602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b6000610439826106aa565b9050806001600160a01b0316836001600160a01b0316141561048f57604051600160e51b62461bcd028152600401808060200182810382526021815260200180610ff56021913960400191505060405180910390fd5b336001600160a01b03821614806104ab57506104ab813361089c565b6104e957604051600160e51b62461bcd028152600401808060200182810382526038815260200180610f156038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6007545b90565b61055633826108e7565b61059457604051600160e51b62461bcd0281526004018080602001828103825260318152602001806110166031913960400191505060405180910390fd5b61059f83838361098e565b505050565b60006105af83610707565b82106105ef57604051600160e51b62461bcd02815260040180806020018281038252602b815260200180610e68602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061061357fe5b9060005260206000200154905092915050565b61059f83838360405180602001604052806000815250610841565b600061064b610545565b821061068b57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611047602c913960400191505060405180910390fd5b6007828154811061069857fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061070157604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f776029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661075157604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610f4d602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610701906109ad565b6001600160a01b0382163314156107d35760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b61084c84848461054c565b610858848484846109b1565b61089657604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e936032913960400191505060405180910390fd5b50505050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b60006108f2826108ca565b61093057604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610ee9602c913960400191505060405180910390fd5b600061093b836106aa565b9050806001600160a01b0316846001600160a01b031614806109765750836001600160a01b031661096b846103c9565b6001600160a01b0316145b806109865750610986818561089c565b949350505050565b610999838383610aea565b6109a38382610c34565b61059f8282610d29565b5490565b60006109c5846001600160a01b0316610d67565b6109d157506001610986565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610a4e578181015183820152602001610a36565b50505050905090810190601f168015610a7b5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a9d57600080fd5b505af1158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610afd826106aa565b6001600160a01b031614610b4557604051600160e51b62461bcd028152600401808060200182810382526029815260200180610fcc6029913960400191505060405180910390fd5b6001600160a01b038216610b8d57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610ec56024913960400191505060405180910390fd5b610b9681610d6d565b6001600160a01b0383166000908152600360205260409020610bb790610daa565b6001600160a01b0382166000908152600360205260409020610bd890610dc1565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610c5e90600163ffffffff610dca16565b600083815260066020526040902054909150808214610cf9576001600160a01b0384166000908152600560205260408120805484908110610c9b57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610cd957fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610d22906000198301610e2a565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b031615610da757600081815260026020526040902080546001600160a01b03191690555b50565b8054610dbd90600163ffffffff610dca16565b9055565b80546001019055565b600082821115610e245760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b81548183558181111561059f5760008381526020902061059f91810190830161054991905b80821115610e635760008155600101610e4f565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a7230582032758eb600139b67a210fd9276c84319949b41630d8e516f489ff299a27364150029"
  2363  
  2364  // DeployERC721Enumerable deploys a new Klaytn contract, binding an instance of ERC721Enumerable to it.
  2365  func DeployERC721Enumerable(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *ERC721Enumerable, error) {
  2366  	parsed, err := abi.JSON(strings.NewReader(ERC721EnumerableABI))
  2367  	if err != nil {
  2368  		return common.Address{}, nil, nil, err
  2369  	}
  2370  
  2371  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721EnumerableBin), backend)
  2372  	if err != nil {
  2373  		return common.Address{}, nil, nil, err
  2374  	}
  2375  	return address, tx, &ERC721Enumerable{ERC721EnumerableCaller: ERC721EnumerableCaller{contract: contract}, ERC721EnumerableTransactor: ERC721EnumerableTransactor{contract: contract}, ERC721EnumerableFilterer: ERC721EnumerableFilterer{contract: contract}}, nil
  2376  }
  2377  
  2378  // ERC721Enumerable is an auto generated Go binding around a Klaytn contract.
  2379  type ERC721Enumerable struct {
  2380  	ERC721EnumerableCaller     // Read-only binding to the contract
  2381  	ERC721EnumerableTransactor // Write-only binding to the contract
  2382  	ERC721EnumerableFilterer   // Log filterer for contract events
  2383  }
  2384  
  2385  // ERC721EnumerableCaller is an auto generated read-only Go binding around a Klaytn contract.
  2386  type ERC721EnumerableCaller struct {
  2387  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2388  }
  2389  
  2390  // ERC721EnumerableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  2391  type ERC721EnumerableTransactor struct {
  2392  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2393  }
  2394  
  2395  // ERC721EnumerableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  2396  type ERC721EnumerableFilterer struct {
  2397  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  2398  }
  2399  
  2400  // ERC721EnumerableSession is an auto generated Go binding around a Klaytn contract,
  2401  // with pre-set call and transact options.
  2402  type ERC721EnumerableSession struct {
  2403  	Contract     *ERC721Enumerable // Generic contract binding to set the session for
  2404  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  2405  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  2406  }
  2407  
  2408  // ERC721EnumerableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  2409  // with pre-set call options.
  2410  type ERC721EnumerableCallerSession struct {
  2411  	Contract *ERC721EnumerableCaller // Generic contract caller binding to set the session for
  2412  	CallOpts bind.CallOpts           // Call options to use throughout this session
  2413  }
  2414  
  2415  // ERC721EnumerableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  2416  // with pre-set transact options.
  2417  type ERC721EnumerableTransactorSession struct {
  2418  	Contract     *ERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  2419  	TransactOpts bind.TransactOpts           // Transaction auth options to use throughout this session
  2420  }
  2421  
  2422  // ERC721EnumerableRaw is an auto generated low-level Go binding around a Klaytn contract.
  2423  type ERC721EnumerableRaw struct {
  2424  	Contract *ERC721Enumerable // Generic contract binding to access the raw methods on
  2425  }
  2426  
  2427  // ERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  2428  type ERC721EnumerableCallerRaw struct {
  2429  	Contract *ERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  2430  }
  2431  
  2432  // ERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  2433  type ERC721EnumerableTransactorRaw struct {
  2434  	Contract *ERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  2435  }
  2436  
  2437  // NewERC721Enumerable creates a new instance of ERC721Enumerable, bound to a specific deployed contract.
  2438  func NewERC721Enumerable(address common.Address, backend bind.ContractBackend) (*ERC721Enumerable, error) {
  2439  	contract, err := bindERC721Enumerable(address, backend, backend, backend)
  2440  	if err != nil {
  2441  		return nil, err
  2442  	}
  2443  	return &ERC721Enumerable{ERC721EnumerableCaller: ERC721EnumerableCaller{contract: contract}, ERC721EnumerableTransactor: ERC721EnumerableTransactor{contract: contract}, ERC721EnumerableFilterer: ERC721EnumerableFilterer{contract: contract}}, nil
  2444  }
  2445  
  2446  // NewERC721EnumerableCaller creates a new read-only instance of ERC721Enumerable, bound to a specific deployed contract.
  2447  func NewERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*ERC721EnumerableCaller, error) {
  2448  	contract, err := bindERC721Enumerable(address, caller, nil, nil)
  2449  	if err != nil {
  2450  		return nil, err
  2451  	}
  2452  	return &ERC721EnumerableCaller{contract: contract}, nil
  2453  }
  2454  
  2455  // NewERC721EnumerableTransactor creates a new write-only instance of ERC721Enumerable, bound to a specific deployed contract.
  2456  func NewERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721EnumerableTransactor, error) {
  2457  	contract, err := bindERC721Enumerable(address, nil, transactor, nil)
  2458  	if err != nil {
  2459  		return nil, err
  2460  	}
  2461  	return &ERC721EnumerableTransactor{contract: contract}, nil
  2462  }
  2463  
  2464  // NewERC721EnumerableFilterer creates a new log filterer instance of ERC721Enumerable, bound to a specific deployed contract.
  2465  func NewERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721EnumerableFilterer, error) {
  2466  	contract, err := bindERC721Enumerable(address, nil, nil, filterer)
  2467  	if err != nil {
  2468  		return nil, err
  2469  	}
  2470  	return &ERC721EnumerableFilterer{contract: contract}, nil
  2471  }
  2472  
  2473  // bindERC721Enumerable binds a generic wrapper to an already deployed contract.
  2474  func bindERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  2475  	parsed, err := abi.JSON(strings.NewReader(ERC721EnumerableABI))
  2476  	if err != nil {
  2477  		return nil, err
  2478  	}
  2479  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  2480  }
  2481  
  2482  // Call invokes the (constant) contract method with params as input values and
  2483  // sets the output to result. The result type might be a single field for simple
  2484  // returns, a slice of interfaces for anonymous returns and a struct for named
  2485  // returns.
  2486  func (_ERC721Enumerable *ERC721EnumerableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2487  	return _ERC721Enumerable.Contract.ERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  2488  }
  2489  
  2490  // Transfer initiates a plain transaction to move funds to the contract, calling
  2491  // its default method if one is available.
  2492  func (_ERC721Enumerable *ERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2493  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transfer(opts)
  2494  }
  2495  
  2496  // Transact invokes the (paid) contract method with params as input values.
  2497  func (_ERC721Enumerable *ERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2498  	return _ERC721Enumerable.Contract.ERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  2499  }
  2500  
  2501  // Call invokes the (constant) contract method with params as input values and
  2502  // sets the output to result. The result type might be a single field for simple
  2503  // returns, a slice of interfaces for anonymous returns and a struct for named
  2504  // returns.
  2505  func (_ERC721Enumerable *ERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  2506  	return _ERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  2507  }
  2508  
  2509  // Transfer initiates a plain transaction to move funds to the contract, calling
  2510  // its default method if one is available.
  2511  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  2512  	return _ERC721Enumerable.Contract.contract.Transfer(opts)
  2513  }
  2514  
  2515  // Transact invokes the (paid) contract method with params as input values.
  2516  func (_ERC721Enumerable *ERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  2517  	return _ERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  2518  }
  2519  
  2520  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2521  //
  2522  // Solidity: function balanceOf(address owner) view returns(uint256)
  2523  func (_ERC721Enumerable *ERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  2524  	var (
  2525  		ret0 = new(*big.Int)
  2526  	)
  2527  	out := ret0
  2528  	err := _ERC721Enumerable.contract.Call(opts, out, "balanceOf", owner)
  2529  	return *ret0, err
  2530  }
  2531  
  2532  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2533  //
  2534  // Solidity: function balanceOf(address owner) view returns(uint256)
  2535  func (_ERC721Enumerable *ERC721EnumerableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2536  	return _ERC721Enumerable.Contract.BalanceOf(&_ERC721Enumerable.CallOpts, owner)
  2537  }
  2538  
  2539  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  2540  //
  2541  // Solidity: function balanceOf(address owner) view returns(uint256)
  2542  func (_ERC721Enumerable *ERC721EnumerableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  2543  	return _ERC721Enumerable.Contract.BalanceOf(&_ERC721Enumerable.CallOpts, owner)
  2544  }
  2545  
  2546  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2547  //
  2548  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2549  func (_ERC721Enumerable *ERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2550  	var (
  2551  		ret0 = new(common.Address)
  2552  	)
  2553  	out := ret0
  2554  	err := _ERC721Enumerable.contract.Call(opts, out, "getApproved", tokenId)
  2555  	return *ret0, err
  2556  }
  2557  
  2558  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2559  //
  2560  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2561  func (_ERC721Enumerable *ERC721EnumerableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2562  	return _ERC721Enumerable.Contract.GetApproved(&_ERC721Enumerable.CallOpts, tokenId)
  2563  }
  2564  
  2565  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  2566  //
  2567  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  2568  func (_ERC721Enumerable *ERC721EnumerableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  2569  	return _ERC721Enumerable.Contract.GetApproved(&_ERC721Enumerable.CallOpts, tokenId)
  2570  }
  2571  
  2572  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2573  //
  2574  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2575  func (_ERC721Enumerable *ERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  2576  	var (
  2577  		ret0 = new(bool)
  2578  	)
  2579  	out := ret0
  2580  	err := _ERC721Enumerable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  2581  	return *ret0, err
  2582  }
  2583  
  2584  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2585  //
  2586  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2587  func (_ERC721Enumerable *ERC721EnumerableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2588  	return _ERC721Enumerable.Contract.IsApprovedForAll(&_ERC721Enumerable.CallOpts, owner, operator)
  2589  }
  2590  
  2591  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  2592  //
  2593  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  2594  func (_ERC721Enumerable *ERC721EnumerableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  2595  	return _ERC721Enumerable.Contract.IsApprovedForAll(&_ERC721Enumerable.CallOpts, owner, operator)
  2596  }
  2597  
  2598  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2599  //
  2600  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2601  func (_ERC721Enumerable *ERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  2602  	var (
  2603  		ret0 = new(common.Address)
  2604  	)
  2605  	out := ret0
  2606  	err := _ERC721Enumerable.contract.Call(opts, out, "ownerOf", tokenId)
  2607  	return *ret0, err
  2608  }
  2609  
  2610  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2611  //
  2612  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2613  func (_ERC721Enumerable *ERC721EnumerableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2614  	return _ERC721Enumerable.Contract.OwnerOf(&_ERC721Enumerable.CallOpts, tokenId)
  2615  }
  2616  
  2617  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  2618  //
  2619  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  2620  func (_ERC721Enumerable *ERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  2621  	return _ERC721Enumerable.Contract.OwnerOf(&_ERC721Enumerable.CallOpts, tokenId)
  2622  }
  2623  
  2624  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2625  //
  2626  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2627  func (_ERC721Enumerable *ERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  2628  	var (
  2629  		ret0 = new(bool)
  2630  	)
  2631  	out := ret0
  2632  	err := _ERC721Enumerable.contract.Call(opts, out, "supportsInterface", interfaceId)
  2633  	return *ret0, err
  2634  }
  2635  
  2636  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2637  //
  2638  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2639  func (_ERC721Enumerable *ERC721EnumerableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2640  	return _ERC721Enumerable.Contract.SupportsInterface(&_ERC721Enumerable.CallOpts, interfaceId)
  2641  }
  2642  
  2643  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  2644  //
  2645  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  2646  func (_ERC721Enumerable *ERC721EnumerableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  2647  	return _ERC721Enumerable.Contract.SupportsInterface(&_ERC721Enumerable.CallOpts, interfaceId)
  2648  }
  2649  
  2650  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2651  //
  2652  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2653  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  2654  	var (
  2655  		ret0 = new(*big.Int)
  2656  	)
  2657  	out := ret0
  2658  	err := _ERC721Enumerable.contract.Call(opts, out, "tokenByIndex", index)
  2659  	return *ret0, err
  2660  }
  2661  
  2662  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2663  //
  2664  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2665  func (_ERC721Enumerable *ERC721EnumerableSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  2666  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, index)
  2667  }
  2668  
  2669  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  2670  //
  2671  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  2672  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  2673  	return _ERC721Enumerable.Contract.TokenByIndex(&_ERC721Enumerable.CallOpts, index)
  2674  }
  2675  
  2676  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2677  //
  2678  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2679  func (_ERC721Enumerable *ERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  2680  	var (
  2681  		ret0 = new(*big.Int)
  2682  	)
  2683  	out := ret0
  2684  	err := _ERC721Enumerable.contract.Call(opts, out, "tokenOfOwnerByIndex", owner, index)
  2685  	return *ret0, err
  2686  }
  2687  
  2688  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2689  //
  2690  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2691  func (_ERC721Enumerable *ERC721EnumerableSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  2692  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, owner, index)
  2693  }
  2694  
  2695  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  2696  //
  2697  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  2698  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  2699  	return _ERC721Enumerable.Contract.TokenOfOwnerByIndex(&_ERC721Enumerable.CallOpts, owner, index)
  2700  }
  2701  
  2702  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2703  //
  2704  // Solidity: function totalSupply() view returns(uint256)
  2705  func (_ERC721Enumerable *ERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  2706  	var (
  2707  		ret0 = new(*big.Int)
  2708  	)
  2709  	out := ret0
  2710  	err := _ERC721Enumerable.contract.Call(opts, out, "totalSupply")
  2711  	return *ret0, err
  2712  }
  2713  
  2714  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2715  //
  2716  // Solidity: function totalSupply() view returns(uint256)
  2717  func (_ERC721Enumerable *ERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  2718  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  2719  }
  2720  
  2721  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  2722  //
  2723  // Solidity: function totalSupply() view returns(uint256)
  2724  func (_ERC721Enumerable *ERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  2725  	return _ERC721Enumerable.Contract.TotalSupply(&_ERC721Enumerable.CallOpts)
  2726  }
  2727  
  2728  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2729  //
  2730  // Solidity: function approve(address to, uint256 tokenId) returns()
  2731  func (_ERC721Enumerable *ERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2732  	return _ERC721Enumerable.contract.Transact(opts, "approve", to, tokenId)
  2733  }
  2734  
  2735  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2736  //
  2737  // Solidity: function approve(address to, uint256 tokenId) returns()
  2738  func (_ERC721Enumerable *ERC721EnumerableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2739  	return _ERC721Enumerable.Contract.Approve(&_ERC721Enumerable.TransactOpts, to, tokenId)
  2740  }
  2741  
  2742  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  2743  //
  2744  // Solidity: function approve(address to, uint256 tokenId) returns()
  2745  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2746  	return _ERC721Enumerable.Contract.Approve(&_ERC721Enumerable.TransactOpts, to, tokenId)
  2747  }
  2748  
  2749  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2750  //
  2751  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2752  func (_ERC721Enumerable *ERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2753  	return _ERC721Enumerable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  2754  }
  2755  
  2756  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2757  //
  2758  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2759  func (_ERC721Enumerable *ERC721EnumerableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2760  	return _ERC721Enumerable.Contract.SafeTransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2761  }
  2762  
  2763  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  2764  //
  2765  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  2766  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2767  	return _ERC721Enumerable.Contract.SafeTransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2768  }
  2769  
  2770  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2771  //
  2772  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2773  func (_ERC721Enumerable *ERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2774  	return _ERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  2775  }
  2776  
  2777  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2778  //
  2779  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2780  func (_ERC721Enumerable *ERC721EnumerableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2781  	return _ERC721Enumerable.Contract.SafeTransferFrom0(&_ERC721Enumerable.TransactOpts, from, to, tokenId, _data)
  2782  }
  2783  
  2784  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  2785  //
  2786  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  2787  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  2788  	return _ERC721Enumerable.Contract.SafeTransferFrom0(&_ERC721Enumerable.TransactOpts, from, to, tokenId, _data)
  2789  }
  2790  
  2791  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2792  //
  2793  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2794  func (_ERC721Enumerable *ERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  2795  	return _ERC721Enumerable.contract.Transact(opts, "setApprovalForAll", to, approved)
  2796  }
  2797  
  2798  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2799  //
  2800  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2801  func (_ERC721Enumerable *ERC721EnumerableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2802  	return _ERC721Enumerable.Contract.SetApprovalForAll(&_ERC721Enumerable.TransactOpts, to, approved)
  2803  }
  2804  
  2805  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  2806  //
  2807  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  2808  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  2809  	return _ERC721Enumerable.Contract.SetApprovalForAll(&_ERC721Enumerable.TransactOpts, to, approved)
  2810  }
  2811  
  2812  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2813  //
  2814  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2815  func (_ERC721Enumerable *ERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2816  	return _ERC721Enumerable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  2817  }
  2818  
  2819  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2820  //
  2821  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2822  func (_ERC721Enumerable *ERC721EnumerableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2823  	return _ERC721Enumerable.Contract.TransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2824  }
  2825  
  2826  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  2827  //
  2828  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  2829  func (_ERC721Enumerable *ERC721EnumerableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  2830  	return _ERC721Enumerable.Contract.TransferFrom(&_ERC721Enumerable.TransactOpts, from, to, tokenId)
  2831  }
  2832  
  2833  // ERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Enumerable contract.
  2834  type ERC721EnumerableApprovalIterator struct {
  2835  	Event *ERC721EnumerableApproval // Event containing the contract specifics and raw log
  2836  
  2837  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2838  	event    string              // Event name to use for unpacking event data
  2839  
  2840  	logs chan types.Log      // Log channel receiving the found contract events
  2841  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  2842  	done bool                // Whether the subscription completed delivering logs
  2843  	fail error               // Occurred error to stop iteration
  2844  }
  2845  
  2846  // Next advances the iterator to the subsequent event, returning whether there
  2847  // are any more events found. In case of a retrieval or parsing error, false is
  2848  // returned and Error() can be queried for the exact failure.
  2849  func (it *ERC721EnumerableApprovalIterator) Next() bool {
  2850  	// If the iterator failed, stop iterating
  2851  	if it.fail != nil {
  2852  		return false
  2853  	}
  2854  	// If the iterator completed, deliver directly whatever's available
  2855  	if it.done {
  2856  		select {
  2857  		case log := <-it.logs:
  2858  			it.Event = new(ERC721EnumerableApproval)
  2859  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2860  				it.fail = err
  2861  				return false
  2862  			}
  2863  			it.Event.Raw = log
  2864  			return true
  2865  
  2866  		default:
  2867  			return false
  2868  		}
  2869  	}
  2870  	// Iterator still in progress, wait for either a data or an error event
  2871  	select {
  2872  	case log := <-it.logs:
  2873  		it.Event = new(ERC721EnumerableApproval)
  2874  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  2875  			it.fail = err
  2876  			return false
  2877  		}
  2878  		it.Event.Raw = log
  2879  		return true
  2880  
  2881  	case err := <-it.sub.Err():
  2882  		it.done = true
  2883  		it.fail = err
  2884  		return it.Next()
  2885  	}
  2886  }
  2887  
  2888  // Error returns any retrieval or parsing error occurred during filtering.
  2889  func (it *ERC721EnumerableApprovalIterator) Error() error {
  2890  	return it.fail
  2891  }
  2892  
  2893  // Close terminates the iteration process, releasing any pending underlying
  2894  // resources.
  2895  func (it *ERC721EnumerableApprovalIterator) Close() error {
  2896  	it.sub.Unsubscribe()
  2897  	return nil
  2898  }
  2899  
  2900  // ERC721EnumerableApproval represents a Approval event raised by the ERC721Enumerable contract.
  2901  type ERC721EnumerableApproval struct {
  2902  	Owner    common.Address
  2903  	Approved common.Address
  2904  	TokenId  *big.Int
  2905  	Raw      types.Log // Blockchain specific contextual infos
  2906  }
  2907  
  2908  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2909  //
  2910  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2911  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721EnumerableApprovalIterator, error) {
  2912  
  2913  	var ownerRule []interface{}
  2914  	for _, ownerItem := range owner {
  2915  		ownerRule = append(ownerRule, ownerItem)
  2916  	}
  2917  	var approvedRule []interface{}
  2918  	for _, approvedItem := range approved {
  2919  		approvedRule = append(approvedRule, approvedItem)
  2920  	}
  2921  	var tokenIdRule []interface{}
  2922  	for _, tokenIdItem := range tokenId {
  2923  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2924  	}
  2925  
  2926  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2927  	if err != nil {
  2928  		return nil, err
  2929  	}
  2930  	return &ERC721EnumerableApprovalIterator{contract: _ERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil
  2931  }
  2932  
  2933  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2934  //
  2935  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2936  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  2937  
  2938  	var ownerRule []interface{}
  2939  	for _, ownerItem := range owner {
  2940  		ownerRule = append(ownerRule, ownerItem)
  2941  	}
  2942  	var approvedRule []interface{}
  2943  	for _, approvedItem := range approved {
  2944  		approvedRule = append(approvedRule, approvedItem)
  2945  	}
  2946  	var tokenIdRule []interface{}
  2947  	for _, tokenIdItem := range tokenId {
  2948  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  2949  	}
  2950  
  2951  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  2952  	if err != nil {
  2953  		return nil, err
  2954  	}
  2955  	return event.NewSubscription(func(quit <-chan struct{}) error {
  2956  		defer sub.Unsubscribe()
  2957  		for {
  2958  			select {
  2959  			case log := <-logs:
  2960  				// New log arrived, parse the event and forward to the user
  2961  				event := new(ERC721EnumerableApproval)
  2962  				if err := _ERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  2963  					return err
  2964  				}
  2965  				event.Raw = log
  2966  
  2967  				select {
  2968  				case sink <- event:
  2969  				case err := <-sub.Err():
  2970  					return err
  2971  				case <-quit:
  2972  					return nil
  2973  				}
  2974  			case err := <-sub.Err():
  2975  				return err
  2976  			case <-quit:
  2977  				return nil
  2978  			}
  2979  		}
  2980  	}), nil
  2981  }
  2982  
  2983  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  2984  //
  2985  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  2986  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApproval(log types.Log) (*ERC721EnumerableApproval, error) {
  2987  	event := new(ERC721EnumerableApproval)
  2988  	if err := _ERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  2989  		return nil, err
  2990  	}
  2991  	return event, nil
  2992  }
  2993  
  2994  // ERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Enumerable contract.
  2995  type ERC721EnumerableApprovalForAllIterator struct {
  2996  	Event *ERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log
  2997  
  2998  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  2999  	event    string              // Event name to use for unpacking event data
  3000  
  3001  	logs chan types.Log      // Log channel receiving the found contract events
  3002  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3003  	done bool                // Whether the subscription completed delivering logs
  3004  	fail error               // Occurred error to stop iteration
  3005  }
  3006  
  3007  // Next advances the iterator to the subsequent event, returning whether there
  3008  // are any more events found. In case of a retrieval or parsing error, false is
  3009  // returned and Error() can be queried for the exact failure.
  3010  func (it *ERC721EnumerableApprovalForAllIterator) Next() bool {
  3011  	// If the iterator failed, stop iterating
  3012  	if it.fail != nil {
  3013  		return false
  3014  	}
  3015  	// If the iterator completed, deliver directly whatever's available
  3016  	if it.done {
  3017  		select {
  3018  		case log := <-it.logs:
  3019  			it.Event = new(ERC721EnumerableApprovalForAll)
  3020  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3021  				it.fail = err
  3022  				return false
  3023  			}
  3024  			it.Event.Raw = log
  3025  			return true
  3026  
  3027  		default:
  3028  			return false
  3029  		}
  3030  	}
  3031  	// Iterator still in progress, wait for either a data or an error event
  3032  	select {
  3033  	case log := <-it.logs:
  3034  		it.Event = new(ERC721EnumerableApprovalForAll)
  3035  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3036  			it.fail = err
  3037  			return false
  3038  		}
  3039  		it.Event.Raw = log
  3040  		return true
  3041  
  3042  	case err := <-it.sub.Err():
  3043  		it.done = true
  3044  		it.fail = err
  3045  		return it.Next()
  3046  	}
  3047  }
  3048  
  3049  // Error returns any retrieval or parsing error occurred during filtering.
  3050  func (it *ERC721EnumerableApprovalForAllIterator) Error() error {
  3051  	return it.fail
  3052  }
  3053  
  3054  // Close terminates the iteration process, releasing any pending underlying
  3055  // resources.
  3056  func (it *ERC721EnumerableApprovalForAllIterator) Close() error {
  3057  	it.sub.Unsubscribe()
  3058  	return nil
  3059  }
  3060  
  3061  // ERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the ERC721Enumerable contract.
  3062  type ERC721EnumerableApprovalForAll struct {
  3063  	Owner    common.Address
  3064  	Operator common.Address
  3065  	Approved bool
  3066  	Raw      types.Log // Blockchain specific contextual infos
  3067  }
  3068  
  3069  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3070  //
  3071  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3072  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721EnumerableApprovalForAllIterator, error) {
  3073  
  3074  	var ownerRule []interface{}
  3075  	for _, ownerItem := range owner {
  3076  		ownerRule = append(ownerRule, ownerItem)
  3077  	}
  3078  	var operatorRule []interface{}
  3079  	for _, operatorItem := range operator {
  3080  		operatorRule = append(operatorRule, operatorItem)
  3081  	}
  3082  
  3083  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3084  	if err != nil {
  3085  		return nil, err
  3086  	}
  3087  	return &ERC721EnumerableApprovalForAllIterator{contract: _ERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  3088  }
  3089  
  3090  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3091  //
  3092  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3093  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  3094  
  3095  	var ownerRule []interface{}
  3096  	for _, ownerItem := range owner {
  3097  		ownerRule = append(ownerRule, ownerItem)
  3098  	}
  3099  	var operatorRule []interface{}
  3100  	for _, operatorItem := range operator {
  3101  		operatorRule = append(operatorRule, operatorItem)
  3102  	}
  3103  
  3104  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  3105  	if err != nil {
  3106  		return nil, err
  3107  	}
  3108  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3109  		defer sub.Unsubscribe()
  3110  		for {
  3111  			select {
  3112  			case log := <-logs:
  3113  				// New log arrived, parse the event and forward to the user
  3114  				event := new(ERC721EnumerableApprovalForAll)
  3115  				if err := _ERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3116  					return err
  3117  				}
  3118  				event.Raw = log
  3119  
  3120  				select {
  3121  				case sink <- event:
  3122  				case err := <-sub.Err():
  3123  					return err
  3124  				case <-quit:
  3125  					return nil
  3126  				}
  3127  			case err := <-sub.Err():
  3128  				return err
  3129  			case <-quit:
  3130  				return nil
  3131  			}
  3132  		}
  3133  	}), nil
  3134  }
  3135  
  3136  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  3137  //
  3138  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  3139  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*ERC721EnumerableApprovalForAll, error) {
  3140  	event := new(ERC721EnumerableApprovalForAll)
  3141  	if err := _ERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  3142  		return nil, err
  3143  	}
  3144  	return event, nil
  3145  }
  3146  
  3147  // ERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Enumerable contract.
  3148  type ERC721EnumerableTransferIterator struct {
  3149  	Event *ERC721EnumerableTransfer // Event containing the contract specifics and raw log
  3150  
  3151  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3152  	event    string              // Event name to use for unpacking event data
  3153  
  3154  	logs chan types.Log      // Log channel receiving the found contract events
  3155  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3156  	done bool                // Whether the subscription completed delivering logs
  3157  	fail error               // Occurred error to stop iteration
  3158  }
  3159  
  3160  // Next advances the iterator to the subsequent event, returning whether there
  3161  // are any more events found. In case of a retrieval or parsing error, false is
  3162  // returned and Error() can be queried for the exact failure.
  3163  func (it *ERC721EnumerableTransferIterator) Next() bool {
  3164  	// If the iterator failed, stop iterating
  3165  	if it.fail != nil {
  3166  		return false
  3167  	}
  3168  	// If the iterator completed, deliver directly whatever's available
  3169  	if it.done {
  3170  		select {
  3171  		case log := <-it.logs:
  3172  			it.Event = new(ERC721EnumerableTransfer)
  3173  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3174  				it.fail = err
  3175  				return false
  3176  			}
  3177  			it.Event.Raw = log
  3178  			return true
  3179  
  3180  		default:
  3181  			return false
  3182  		}
  3183  	}
  3184  	// Iterator still in progress, wait for either a data or an error event
  3185  	select {
  3186  	case log := <-it.logs:
  3187  		it.Event = new(ERC721EnumerableTransfer)
  3188  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3189  			it.fail = err
  3190  			return false
  3191  		}
  3192  		it.Event.Raw = log
  3193  		return true
  3194  
  3195  	case err := <-it.sub.Err():
  3196  		it.done = true
  3197  		it.fail = err
  3198  		return it.Next()
  3199  	}
  3200  }
  3201  
  3202  // Error returns any retrieval or parsing error occurred during filtering.
  3203  func (it *ERC721EnumerableTransferIterator) Error() error {
  3204  	return it.fail
  3205  }
  3206  
  3207  // Close terminates the iteration process, releasing any pending underlying
  3208  // resources.
  3209  func (it *ERC721EnumerableTransferIterator) Close() error {
  3210  	it.sub.Unsubscribe()
  3211  	return nil
  3212  }
  3213  
  3214  // ERC721EnumerableTransfer represents a Transfer event raised by the ERC721Enumerable contract.
  3215  type ERC721EnumerableTransfer struct {
  3216  	From    common.Address
  3217  	To      common.Address
  3218  	TokenId *big.Int
  3219  	Raw     types.Log // Blockchain specific contextual infos
  3220  }
  3221  
  3222  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3223  //
  3224  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3225  func (_ERC721Enumerable *ERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721EnumerableTransferIterator, error) {
  3226  
  3227  	var fromRule []interface{}
  3228  	for _, fromItem := range from {
  3229  		fromRule = append(fromRule, fromItem)
  3230  	}
  3231  	var toRule []interface{}
  3232  	for _, toItem := range to {
  3233  		toRule = append(toRule, toItem)
  3234  	}
  3235  	var tokenIdRule []interface{}
  3236  	for _, tokenIdItem := range tokenId {
  3237  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3238  	}
  3239  
  3240  	logs, sub, err := _ERC721Enumerable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3241  	if err != nil {
  3242  		return nil, err
  3243  	}
  3244  	return &ERC721EnumerableTransferIterator{contract: _ERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  3245  }
  3246  
  3247  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3248  //
  3249  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3250  func (_ERC721Enumerable *ERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3251  
  3252  	var fromRule []interface{}
  3253  	for _, fromItem := range from {
  3254  		fromRule = append(fromRule, fromItem)
  3255  	}
  3256  	var toRule []interface{}
  3257  	for _, toItem := range to {
  3258  		toRule = append(toRule, toItem)
  3259  	}
  3260  	var tokenIdRule []interface{}
  3261  	for _, tokenIdItem := range tokenId {
  3262  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3263  	}
  3264  
  3265  	logs, sub, err := _ERC721Enumerable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  3266  	if err != nil {
  3267  		return nil, err
  3268  	}
  3269  	return event.NewSubscription(func(quit <-chan struct{}) error {
  3270  		defer sub.Unsubscribe()
  3271  		for {
  3272  			select {
  3273  			case log := <-logs:
  3274  				// New log arrived, parse the event and forward to the user
  3275  				event := new(ERC721EnumerableTransfer)
  3276  				if err := _ERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3277  					return err
  3278  				}
  3279  				event.Raw = log
  3280  
  3281  				select {
  3282  				case sink <- event:
  3283  				case err := <-sub.Err():
  3284  					return err
  3285  				case <-quit:
  3286  					return nil
  3287  				}
  3288  			case err := <-sub.Err():
  3289  				return err
  3290  			case <-quit:
  3291  				return nil
  3292  			}
  3293  		}
  3294  	}), nil
  3295  }
  3296  
  3297  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  3298  //
  3299  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  3300  func (_ERC721Enumerable *ERC721EnumerableFilterer) ParseTransfer(log types.Log) (*ERC721EnumerableTransfer, error) {
  3301  	event := new(ERC721EnumerableTransfer)
  3302  	if err := _ERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
  3303  		return nil, err
  3304  	}
  3305  	return event, nil
  3306  }
  3307  
  3308  // ERC721FullABI is the input ABI used to generate the binding from.
  3309  const ERC721FullABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  3310  
  3311  // ERC721FullBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  3312  const ERC721FullBinRuntime = `608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820d942a10ddcb4d5148ecf424c7de1114da916205255e5106d65dd4d339bde3e5b0029`
  3313  
  3314  // ERC721FullFuncSigs maps the 4-byte function signature to its string representation.
  3315  var ERC721FullFuncSigs = map[string]string{
  3316  	"095ea7b3": "approve(address,uint256)",
  3317  	"70a08231": "balanceOf(address)",
  3318  	"081812fc": "getApproved(uint256)",
  3319  	"e985e9c5": "isApprovedForAll(address,address)",
  3320  	"06fdde03": "name()",
  3321  	"6352211e": "ownerOf(uint256)",
  3322  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  3323  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  3324  	"a22cb465": "setApprovalForAll(address,bool)",
  3325  	"01ffc9a7": "supportsInterface(bytes4)",
  3326  	"95d89b41": "symbol()",
  3327  	"4f6ccce7": "tokenByIndex(uint256)",
  3328  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  3329  	"c87b56dd": "tokenURI(uint256)",
  3330  	"18160ddd": "totalSupply()",
  3331  	"23b872dd": "transferFrom(address,address,uint256)",
  3332  }
  3333  
  3334  // ERC721FullBin is the compiled bytecode used for deploying new contracts.
  3335  var ERC721FullBin = "0x60806040523480156200001157600080fd5b506040516200166e3803806200166e833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b50509291905050508181620000ed6301ffc9a760e01b6200016b60201b60201c565b620001056380ac58cd60e01b6200016b60201b60201c565b6200011d63780e9d6360e01b6200016b60201b60201c565b8151620001329060099060208501906200023a565b5080516200014890600a9060208401906200023a565b5062000161635b5e139f60e01b6200016b60201b60201c565b50505050620002df565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001fd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200027d57805160ff1916838001178555620002ad565b82800160010185558215620002ad579182015b82811115620002ad57825182559160200191906001019062000290565b50620002bb929150620002bf565b5090565b620002dc91905b80821115620002bb5760008155600101620002c6565b90565b61137f80620002ef6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80634f6ccce711610097578063a22cb46511610066578063a22cb4651461033e578063b88d4fde1461036c578063c87b56dd14610432578063e985e9c51461044f57610100565b80634f6ccce7146102d65780636352211e146102f357806370a082311461031057806395d89b411461033657610100565b806318160ddd116100d357806318160ddd1461022457806323b872dd1461023e5780632f745c591461027457806342842e0e146102a057610100565b806301ffc9a71461010557806306fdde0314610140578063081812fc146101bd578063095ea7b3146101f6575b600080fd5b61012c6004803603602081101561011b57600080fd5b50356001600160e01b03191661047d565b604080519115158252519081900360200190f35b61014861049c565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018257818101518382015260200161016a565b50505050905090810190601f1680156101af5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360208110156101d357600080fd5b5035610533565b604080516001600160a01b039092168252519081900360200190f35b6102226004803603604081101561020c57600080fd5b506001600160a01b038135169060200135610598565b005b61022c6106af565b60408051918252519081900360200190f35b6102226004803603606081101561025457600080fd5b506001600160a01b038135811691602081013590911690604001356106b5565b61022c6004803603604081101561028a57600080fd5b506001600160a01b03813516906020013561070d565b610222600480360360608110156102b657600080fd5b506001600160a01b0381358116916020810135909116906040013561078f565b61022c600480360360208110156102ec57600080fd5b50356107aa565b6101da6004803603602081101561030957600080fd5b5035610813565b61022c6004803603602081101561032657600080fd5b50356001600160a01b0316610870565b6101486108db565b6102226004803603604081101561035457600080fd5b506001600160a01b038135169060200135151561093c565b6102226004803603608081101561038257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103bd57600080fd5b8201836020820111156103cf57600080fd5b803590602001918460018302840111640100000000831117156103f157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0b945050505050565b6101486004803603602081101561044857600080fd5b5035610a66565b61012c6004803603604081101561046557600080fd5b506001600160a01b0381358116916020013516610b4e565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b820191906000526020600020905b81548152906001019060200180831161050b57829003601f168201915b505050505090505b90565b600061053e82610b7c565b61057c57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611252602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105a382610813565b9050806001600160a01b0316836001600160a01b031614156105f957604051600160e51b62461bcd0281526004018080602001828103825260218152602001806112d66021913960400191505060405180910390fd5b336001600160a01b038216148061061557506106158133610b4e565b61065357604051600160e51b62461bcd0281526004018080602001828103825260388152602001806111c76038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6106bf3382610b99565b6106fd57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806112f76031913960400191505060405180910390fd5b610708838383610c40565b505050565b600061071883610870565b821061075857604051600160e51b62461bcd02815260040180806020018281038252602b81526020018061111a602b913960400191505060405180910390fd5b6001600160a01b038316600090815260056020526040902080548390811061077c57fe5b9060005260206000200154905092915050565b61070883838360405180602001604052806000815250610a0b565b60006107b46106af565b82106107f457604051600160e51b62461bcd02815260040180806020018281038252602c815260200180611328602c913960400191505060405180910390fd5b6007828154811061080157fe5b90600052602060002001549050919050565b6000818152600160205260408120546001600160a01b03168061086a57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806112296029913960400191505060405180910390fd5b92915050565b60006001600160a01b0382166108ba57604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806111ff602a913960400191505060405180910390fd5b6001600160a01b038216600090815260036020526040902061086a90610c5f565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156105285780601f106104fd57610100808354040283529160200191610528565b6001600160a01b03821633141561099d5760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b610a168484846106b5565b610a2284848484610c63565b610a6057604051600160e51b62461bcd0281526004018080602001828103825260328152602001806111456032913960400191505060405180910390fd5b50505050565b6060610a7182610b7c565b610aaf57604051600160e51b62461bcd02815260040180806020018281038252602f8152602001806112a7602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529091830182828015610b425780601f10610b1757610100808354040283529160200191610b42565b820191906000526020600020905b815481529060010190602001808311610b2557829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610ba482610b7c565b610be257604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061119b602c913960400191505060405180910390fd5b6000610bed83610813565b9050806001600160a01b0316846001600160a01b03161480610c285750836001600160a01b0316610c1d84610533565b6001600160a01b0316145b80610c385750610c388185610b4e565b949350505050565b610c4b838383610d9c565b610c558382610ee6565b6107088282610fdb565b5490565b6000610c77846001600160a01b0316611019565b610c8357506001610c38565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610d00578181015183820152602001610ce8565b50505050905090810190601f168015610d2d5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d4f57600080fd5b505af1158015610d63573d6000803e3d6000fd5b505050506040513d6020811015610d7957600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b826001600160a01b0316610daf82610813565b6001600160a01b031614610df757604051600160e51b62461bcd02815260040180806020018281038252602981526020018061127e6029913960400191505060405180910390fd5b6001600160a01b038216610e3f57604051600160e51b62461bcd0281526004018080602001828103825260248152602001806111776024913960400191505060405180910390fd5b610e488161101f565b6001600160a01b0383166000908152600360205260409020610e699061105c565b6001600160a01b0382166000908152600360205260409020610e8a90611073565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b038216600090815260056020526040812054610f1090600163ffffffff61107c16565b600083815260066020526040902054909150808214610fab576001600160a01b0384166000908152600560205260408120805484908110610f4d57fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b031681526020019081526020016000208381548110610f8b57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490610fd49060001983016110dc565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b3b151590565b6000818152600260205260409020546001600160a01b03161561105957600081815260026020526040902080546001600160a01b03191690555b50565b805461106f90600163ffffffff61107c16565b9055565b80546001019055565b6000828211156110d65760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b8154818355818111156107085760008381526020902061070891810190830161053091905b808211156111155760008155600101611101565b509056fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e6473a165627a7a72305820d942a10ddcb4d5148ecf424c7de1114da916205255e5106d65dd4d339bde3e5b0029"
  3336  
  3337  // DeployERC721Full deploys a new Klaytn contract, binding an instance of ERC721Full to it.
  3338  func DeployERC721Full(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Full, error) {
  3339  	parsed, err := abi.JSON(strings.NewReader(ERC721FullABI))
  3340  	if err != nil {
  3341  		return common.Address{}, nil, nil, err
  3342  	}
  3343  
  3344  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721FullBin), backend, name, symbol)
  3345  	if err != nil {
  3346  		return common.Address{}, nil, nil, err
  3347  	}
  3348  	return address, tx, &ERC721Full{ERC721FullCaller: ERC721FullCaller{contract: contract}, ERC721FullTransactor: ERC721FullTransactor{contract: contract}, ERC721FullFilterer: ERC721FullFilterer{contract: contract}}, nil
  3349  }
  3350  
  3351  // ERC721Full is an auto generated Go binding around a Klaytn contract.
  3352  type ERC721Full struct {
  3353  	ERC721FullCaller     // Read-only binding to the contract
  3354  	ERC721FullTransactor // Write-only binding to the contract
  3355  	ERC721FullFilterer   // Log filterer for contract events
  3356  }
  3357  
  3358  // ERC721FullCaller is an auto generated read-only Go binding around a Klaytn contract.
  3359  type ERC721FullCaller struct {
  3360  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3361  }
  3362  
  3363  // ERC721FullTransactor is an auto generated write-only Go binding around a Klaytn contract.
  3364  type ERC721FullTransactor struct {
  3365  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3366  }
  3367  
  3368  // ERC721FullFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  3369  type ERC721FullFilterer struct {
  3370  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  3371  }
  3372  
  3373  // ERC721FullSession is an auto generated Go binding around a Klaytn contract,
  3374  // with pre-set call and transact options.
  3375  type ERC721FullSession struct {
  3376  	Contract     *ERC721Full       // Generic contract binding to set the session for
  3377  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  3378  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  3379  }
  3380  
  3381  // ERC721FullCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  3382  // with pre-set call options.
  3383  type ERC721FullCallerSession struct {
  3384  	Contract *ERC721FullCaller // Generic contract caller binding to set the session for
  3385  	CallOpts bind.CallOpts     // Call options to use throughout this session
  3386  }
  3387  
  3388  // ERC721FullTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  3389  // with pre-set transact options.
  3390  type ERC721FullTransactorSession struct {
  3391  	Contract     *ERC721FullTransactor // Generic contract transactor binding to set the session for
  3392  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
  3393  }
  3394  
  3395  // ERC721FullRaw is an auto generated low-level Go binding around a Klaytn contract.
  3396  type ERC721FullRaw struct {
  3397  	Contract *ERC721Full // Generic contract binding to access the raw methods on
  3398  }
  3399  
  3400  // ERC721FullCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  3401  type ERC721FullCallerRaw struct {
  3402  	Contract *ERC721FullCaller // Generic read-only contract binding to access the raw methods on
  3403  }
  3404  
  3405  // ERC721FullTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  3406  type ERC721FullTransactorRaw struct {
  3407  	Contract *ERC721FullTransactor // Generic write-only contract binding to access the raw methods on
  3408  }
  3409  
  3410  // NewERC721Full creates a new instance of ERC721Full, bound to a specific deployed contract.
  3411  func NewERC721Full(address common.Address, backend bind.ContractBackend) (*ERC721Full, error) {
  3412  	contract, err := bindERC721Full(address, backend, backend, backend)
  3413  	if err != nil {
  3414  		return nil, err
  3415  	}
  3416  	return &ERC721Full{ERC721FullCaller: ERC721FullCaller{contract: contract}, ERC721FullTransactor: ERC721FullTransactor{contract: contract}, ERC721FullFilterer: ERC721FullFilterer{contract: contract}}, nil
  3417  }
  3418  
  3419  // NewERC721FullCaller creates a new read-only instance of ERC721Full, bound to a specific deployed contract.
  3420  func NewERC721FullCaller(address common.Address, caller bind.ContractCaller) (*ERC721FullCaller, error) {
  3421  	contract, err := bindERC721Full(address, caller, nil, nil)
  3422  	if err != nil {
  3423  		return nil, err
  3424  	}
  3425  	return &ERC721FullCaller{contract: contract}, nil
  3426  }
  3427  
  3428  // NewERC721FullTransactor creates a new write-only instance of ERC721Full, bound to a specific deployed contract.
  3429  func NewERC721FullTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721FullTransactor, error) {
  3430  	contract, err := bindERC721Full(address, nil, transactor, nil)
  3431  	if err != nil {
  3432  		return nil, err
  3433  	}
  3434  	return &ERC721FullTransactor{contract: contract}, nil
  3435  }
  3436  
  3437  // NewERC721FullFilterer creates a new log filterer instance of ERC721Full, bound to a specific deployed contract.
  3438  func NewERC721FullFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721FullFilterer, error) {
  3439  	contract, err := bindERC721Full(address, nil, nil, filterer)
  3440  	if err != nil {
  3441  		return nil, err
  3442  	}
  3443  	return &ERC721FullFilterer{contract: contract}, nil
  3444  }
  3445  
  3446  // bindERC721Full binds a generic wrapper to an already deployed contract.
  3447  func bindERC721Full(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  3448  	parsed, err := abi.JSON(strings.NewReader(ERC721FullABI))
  3449  	if err != nil {
  3450  		return nil, err
  3451  	}
  3452  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  3453  }
  3454  
  3455  // Call invokes the (constant) contract method with params as input values and
  3456  // sets the output to result. The result type might be a single field for simple
  3457  // returns, a slice of interfaces for anonymous returns and a struct for named
  3458  // returns.
  3459  func (_ERC721Full *ERC721FullRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3460  	return _ERC721Full.Contract.ERC721FullCaller.contract.Call(opts, result, method, params...)
  3461  }
  3462  
  3463  // Transfer initiates a plain transaction to move funds to the contract, calling
  3464  // its default method if one is available.
  3465  func (_ERC721Full *ERC721FullRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3466  	return _ERC721Full.Contract.ERC721FullTransactor.contract.Transfer(opts)
  3467  }
  3468  
  3469  // Transact invokes the (paid) contract method with params as input values.
  3470  func (_ERC721Full *ERC721FullRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3471  	return _ERC721Full.Contract.ERC721FullTransactor.contract.Transact(opts, method, params...)
  3472  }
  3473  
  3474  // Call invokes the (constant) contract method with params as input values and
  3475  // sets the output to result. The result type might be a single field for simple
  3476  // returns, a slice of interfaces for anonymous returns and a struct for named
  3477  // returns.
  3478  func (_ERC721Full *ERC721FullCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  3479  	return _ERC721Full.Contract.contract.Call(opts, result, method, params...)
  3480  }
  3481  
  3482  // Transfer initiates a plain transaction to move funds to the contract, calling
  3483  // its default method if one is available.
  3484  func (_ERC721Full *ERC721FullTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  3485  	return _ERC721Full.Contract.contract.Transfer(opts)
  3486  }
  3487  
  3488  // Transact invokes the (paid) contract method with params as input values.
  3489  func (_ERC721Full *ERC721FullTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  3490  	return _ERC721Full.Contract.contract.Transact(opts, method, params...)
  3491  }
  3492  
  3493  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3494  //
  3495  // Solidity: function balanceOf(address owner) view returns(uint256)
  3496  func (_ERC721Full *ERC721FullCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  3497  	var (
  3498  		ret0 = new(*big.Int)
  3499  	)
  3500  	out := ret0
  3501  	err := _ERC721Full.contract.Call(opts, out, "balanceOf", owner)
  3502  	return *ret0, err
  3503  }
  3504  
  3505  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3506  //
  3507  // Solidity: function balanceOf(address owner) view returns(uint256)
  3508  func (_ERC721Full *ERC721FullSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3509  	return _ERC721Full.Contract.BalanceOf(&_ERC721Full.CallOpts, owner)
  3510  }
  3511  
  3512  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  3513  //
  3514  // Solidity: function balanceOf(address owner) view returns(uint256)
  3515  func (_ERC721Full *ERC721FullCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  3516  	return _ERC721Full.Contract.BalanceOf(&_ERC721Full.CallOpts, owner)
  3517  }
  3518  
  3519  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3520  //
  3521  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3522  func (_ERC721Full *ERC721FullCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3523  	var (
  3524  		ret0 = new(common.Address)
  3525  	)
  3526  	out := ret0
  3527  	err := _ERC721Full.contract.Call(opts, out, "getApproved", tokenId)
  3528  	return *ret0, err
  3529  }
  3530  
  3531  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3532  //
  3533  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3534  func (_ERC721Full *ERC721FullSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3535  	return _ERC721Full.Contract.GetApproved(&_ERC721Full.CallOpts, tokenId)
  3536  }
  3537  
  3538  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  3539  //
  3540  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  3541  func (_ERC721Full *ERC721FullCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  3542  	return _ERC721Full.Contract.GetApproved(&_ERC721Full.CallOpts, tokenId)
  3543  }
  3544  
  3545  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3546  //
  3547  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3548  func (_ERC721Full *ERC721FullCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  3549  	var (
  3550  		ret0 = new(bool)
  3551  	)
  3552  	out := ret0
  3553  	err := _ERC721Full.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  3554  	return *ret0, err
  3555  }
  3556  
  3557  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3558  //
  3559  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3560  func (_ERC721Full *ERC721FullSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3561  	return _ERC721Full.Contract.IsApprovedForAll(&_ERC721Full.CallOpts, owner, operator)
  3562  }
  3563  
  3564  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  3565  //
  3566  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  3567  func (_ERC721Full *ERC721FullCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  3568  	return _ERC721Full.Contract.IsApprovedForAll(&_ERC721Full.CallOpts, owner, operator)
  3569  }
  3570  
  3571  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3572  //
  3573  // Solidity: function name() view returns(string)
  3574  func (_ERC721Full *ERC721FullCaller) Name(opts *bind.CallOpts) (string, error) {
  3575  	var (
  3576  		ret0 = new(string)
  3577  	)
  3578  	out := ret0
  3579  	err := _ERC721Full.contract.Call(opts, out, "name")
  3580  	return *ret0, err
  3581  }
  3582  
  3583  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3584  //
  3585  // Solidity: function name() view returns(string)
  3586  func (_ERC721Full *ERC721FullSession) Name() (string, error) {
  3587  	return _ERC721Full.Contract.Name(&_ERC721Full.CallOpts)
  3588  }
  3589  
  3590  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  3591  //
  3592  // Solidity: function name() view returns(string)
  3593  func (_ERC721Full *ERC721FullCallerSession) Name() (string, error) {
  3594  	return _ERC721Full.Contract.Name(&_ERC721Full.CallOpts)
  3595  }
  3596  
  3597  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3598  //
  3599  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3600  func (_ERC721Full *ERC721FullCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  3601  	var (
  3602  		ret0 = new(common.Address)
  3603  	)
  3604  	out := ret0
  3605  	err := _ERC721Full.contract.Call(opts, out, "ownerOf", tokenId)
  3606  	return *ret0, err
  3607  }
  3608  
  3609  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3610  //
  3611  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3612  func (_ERC721Full *ERC721FullSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3613  	return _ERC721Full.Contract.OwnerOf(&_ERC721Full.CallOpts, tokenId)
  3614  }
  3615  
  3616  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  3617  //
  3618  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  3619  func (_ERC721Full *ERC721FullCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  3620  	return _ERC721Full.Contract.OwnerOf(&_ERC721Full.CallOpts, tokenId)
  3621  }
  3622  
  3623  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3624  //
  3625  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3626  func (_ERC721Full *ERC721FullCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  3627  	var (
  3628  		ret0 = new(bool)
  3629  	)
  3630  	out := ret0
  3631  	err := _ERC721Full.contract.Call(opts, out, "supportsInterface", interfaceId)
  3632  	return *ret0, err
  3633  }
  3634  
  3635  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3636  //
  3637  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3638  func (_ERC721Full *ERC721FullSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3639  	return _ERC721Full.Contract.SupportsInterface(&_ERC721Full.CallOpts, interfaceId)
  3640  }
  3641  
  3642  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  3643  //
  3644  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  3645  func (_ERC721Full *ERC721FullCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  3646  	return _ERC721Full.Contract.SupportsInterface(&_ERC721Full.CallOpts, interfaceId)
  3647  }
  3648  
  3649  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3650  //
  3651  // Solidity: function symbol() view returns(string)
  3652  func (_ERC721Full *ERC721FullCaller) Symbol(opts *bind.CallOpts) (string, error) {
  3653  	var (
  3654  		ret0 = new(string)
  3655  	)
  3656  	out := ret0
  3657  	err := _ERC721Full.contract.Call(opts, out, "symbol")
  3658  	return *ret0, err
  3659  }
  3660  
  3661  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3662  //
  3663  // Solidity: function symbol() view returns(string)
  3664  func (_ERC721Full *ERC721FullSession) Symbol() (string, error) {
  3665  	return _ERC721Full.Contract.Symbol(&_ERC721Full.CallOpts)
  3666  }
  3667  
  3668  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  3669  //
  3670  // Solidity: function symbol() view returns(string)
  3671  func (_ERC721Full *ERC721FullCallerSession) Symbol() (string, error) {
  3672  	return _ERC721Full.Contract.Symbol(&_ERC721Full.CallOpts)
  3673  }
  3674  
  3675  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3676  //
  3677  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3678  func (_ERC721Full *ERC721FullCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  3679  	var (
  3680  		ret0 = new(*big.Int)
  3681  	)
  3682  	out := ret0
  3683  	err := _ERC721Full.contract.Call(opts, out, "tokenByIndex", index)
  3684  	return *ret0, err
  3685  }
  3686  
  3687  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3688  //
  3689  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3690  func (_ERC721Full *ERC721FullSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  3691  	return _ERC721Full.Contract.TokenByIndex(&_ERC721Full.CallOpts, index)
  3692  }
  3693  
  3694  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  3695  //
  3696  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  3697  func (_ERC721Full *ERC721FullCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  3698  	return _ERC721Full.Contract.TokenByIndex(&_ERC721Full.CallOpts, index)
  3699  }
  3700  
  3701  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3702  //
  3703  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3704  func (_ERC721Full *ERC721FullCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  3705  	var (
  3706  		ret0 = new(*big.Int)
  3707  	)
  3708  	out := ret0
  3709  	err := _ERC721Full.contract.Call(opts, out, "tokenOfOwnerByIndex", owner, index)
  3710  	return *ret0, err
  3711  }
  3712  
  3713  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3714  //
  3715  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3716  func (_ERC721Full *ERC721FullSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  3717  	return _ERC721Full.Contract.TokenOfOwnerByIndex(&_ERC721Full.CallOpts, owner, index)
  3718  }
  3719  
  3720  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  3721  //
  3722  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
  3723  func (_ERC721Full *ERC721FullCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  3724  	return _ERC721Full.Contract.TokenOfOwnerByIndex(&_ERC721Full.CallOpts, owner, index)
  3725  }
  3726  
  3727  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3728  //
  3729  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3730  func (_ERC721Full *ERC721FullCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  3731  	var (
  3732  		ret0 = new(string)
  3733  	)
  3734  	out := ret0
  3735  	err := _ERC721Full.contract.Call(opts, out, "tokenURI", tokenId)
  3736  	return *ret0, err
  3737  }
  3738  
  3739  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3740  //
  3741  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3742  func (_ERC721Full *ERC721FullSession) TokenURI(tokenId *big.Int) (string, error) {
  3743  	return _ERC721Full.Contract.TokenURI(&_ERC721Full.CallOpts, tokenId)
  3744  }
  3745  
  3746  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  3747  //
  3748  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  3749  func (_ERC721Full *ERC721FullCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  3750  	return _ERC721Full.Contract.TokenURI(&_ERC721Full.CallOpts, tokenId)
  3751  }
  3752  
  3753  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3754  //
  3755  // Solidity: function totalSupply() view returns(uint256)
  3756  func (_ERC721Full *ERC721FullCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  3757  	var (
  3758  		ret0 = new(*big.Int)
  3759  	)
  3760  	out := ret0
  3761  	err := _ERC721Full.contract.Call(opts, out, "totalSupply")
  3762  	return *ret0, err
  3763  }
  3764  
  3765  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3766  //
  3767  // Solidity: function totalSupply() view returns(uint256)
  3768  func (_ERC721Full *ERC721FullSession) TotalSupply() (*big.Int, error) {
  3769  	return _ERC721Full.Contract.TotalSupply(&_ERC721Full.CallOpts)
  3770  }
  3771  
  3772  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  3773  //
  3774  // Solidity: function totalSupply() view returns(uint256)
  3775  func (_ERC721Full *ERC721FullCallerSession) TotalSupply() (*big.Int, error) {
  3776  	return _ERC721Full.Contract.TotalSupply(&_ERC721Full.CallOpts)
  3777  }
  3778  
  3779  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3780  //
  3781  // Solidity: function approve(address to, uint256 tokenId) returns()
  3782  func (_ERC721Full *ERC721FullTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3783  	return _ERC721Full.contract.Transact(opts, "approve", to, tokenId)
  3784  }
  3785  
  3786  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3787  //
  3788  // Solidity: function approve(address to, uint256 tokenId) returns()
  3789  func (_ERC721Full *ERC721FullSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3790  	return _ERC721Full.Contract.Approve(&_ERC721Full.TransactOpts, to, tokenId)
  3791  }
  3792  
  3793  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  3794  //
  3795  // Solidity: function approve(address to, uint256 tokenId) returns()
  3796  func (_ERC721Full *ERC721FullTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3797  	return _ERC721Full.Contract.Approve(&_ERC721Full.TransactOpts, to, tokenId)
  3798  }
  3799  
  3800  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3801  //
  3802  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3803  func (_ERC721Full *ERC721FullTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3804  	return _ERC721Full.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  3805  }
  3806  
  3807  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3808  //
  3809  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3810  func (_ERC721Full *ERC721FullSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3811  	return _ERC721Full.Contract.SafeTransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  3812  }
  3813  
  3814  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  3815  //
  3816  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  3817  func (_ERC721Full *ERC721FullTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3818  	return _ERC721Full.Contract.SafeTransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  3819  }
  3820  
  3821  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3822  //
  3823  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  3824  func (_ERC721Full *ERC721FullTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  3825  	return _ERC721Full.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  3826  }
  3827  
  3828  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3829  //
  3830  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  3831  func (_ERC721Full *ERC721FullSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  3832  	return _ERC721Full.Contract.SafeTransferFrom0(&_ERC721Full.TransactOpts, from, to, tokenId, _data)
  3833  }
  3834  
  3835  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  3836  //
  3837  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  3838  func (_ERC721Full *ERC721FullTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  3839  	return _ERC721Full.Contract.SafeTransferFrom0(&_ERC721Full.TransactOpts, from, to, tokenId, _data)
  3840  }
  3841  
  3842  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3843  //
  3844  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  3845  func (_ERC721Full *ERC721FullTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  3846  	return _ERC721Full.contract.Transact(opts, "setApprovalForAll", to, approved)
  3847  }
  3848  
  3849  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3850  //
  3851  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  3852  func (_ERC721Full *ERC721FullSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  3853  	return _ERC721Full.Contract.SetApprovalForAll(&_ERC721Full.TransactOpts, to, approved)
  3854  }
  3855  
  3856  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  3857  //
  3858  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  3859  func (_ERC721Full *ERC721FullTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  3860  	return _ERC721Full.Contract.SetApprovalForAll(&_ERC721Full.TransactOpts, to, approved)
  3861  }
  3862  
  3863  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3864  //
  3865  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3866  func (_ERC721Full *ERC721FullTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3867  	return _ERC721Full.contract.Transact(opts, "transferFrom", from, to, tokenId)
  3868  }
  3869  
  3870  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3871  //
  3872  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3873  func (_ERC721Full *ERC721FullSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3874  	return _ERC721Full.Contract.TransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  3875  }
  3876  
  3877  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  3878  //
  3879  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  3880  func (_ERC721Full *ERC721FullTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  3881  	return _ERC721Full.Contract.TransferFrom(&_ERC721Full.TransactOpts, from, to, tokenId)
  3882  }
  3883  
  3884  // ERC721FullApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Full contract.
  3885  type ERC721FullApprovalIterator struct {
  3886  	Event *ERC721FullApproval // Event containing the contract specifics and raw log
  3887  
  3888  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  3889  	event    string              // Event name to use for unpacking event data
  3890  
  3891  	logs chan types.Log      // Log channel receiving the found contract events
  3892  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  3893  	done bool                // Whether the subscription completed delivering logs
  3894  	fail error               // Occurred error to stop iteration
  3895  }
  3896  
  3897  // Next advances the iterator to the subsequent event, returning whether there
  3898  // are any more events found. In case of a retrieval or parsing error, false is
  3899  // returned and Error() can be queried for the exact failure.
  3900  func (it *ERC721FullApprovalIterator) Next() bool {
  3901  	// If the iterator failed, stop iterating
  3902  	if it.fail != nil {
  3903  		return false
  3904  	}
  3905  	// If the iterator completed, deliver directly whatever's available
  3906  	if it.done {
  3907  		select {
  3908  		case log := <-it.logs:
  3909  			it.Event = new(ERC721FullApproval)
  3910  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3911  				it.fail = err
  3912  				return false
  3913  			}
  3914  			it.Event.Raw = log
  3915  			return true
  3916  
  3917  		default:
  3918  			return false
  3919  		}
  3920  	}
  3921  	// Iterator still in progress, wait for either a data or an error event
  3922  	select {
  3923  	case log := <-it.logs:
  3924  		it.Event = new(ERC721FullApproval)
  3925  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  3926  			it.fail = err
  3927  			return false
  3928  		}
  3929  		it.Event.Raw = log
  3930  		return true
  3931  
  3932  	case err := <-it.sub.Err():
  3933  		it.done = true
  3934  		it.fail = err
  3935  		return it.Next()
  3936  	}
  3937  }
  3938  
  3939  // Error returns any retrieval or parsing error occurred during filtering.
  3940  func (it *ERC721FullApprovalIterator) Error() error {
  3941  	return it.fail
  3942  }
  3943  
  3944  // Close terminates the iteration process, releasing any pending underlying
  3945  // resources.
  3946  func (it *ERC721FullApprovalIterator) Close() error {
  3947  	it.sub.Unsubscribe()
  3948  	return nil
  3949  }
  3950  
  3951  // ERC721FullApproval represents a Approval event raised by the ERC721Full contract.
  3952  type ERC721FullApproval struct {
  3953  	Owner    common.Address
  3954  	Approved common.Address
  3955  	TokenId  *big.Int
  3956  	Raw      types.Log // Blockchain specific contextual infos
  3957  }
  3958  
  3959  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3960  //
  3961  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3962  func (_ERC721Full *ERC721FullFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721FullApprovalIterator, error) {
  3963  
  3964  	var ownerRule []interface{}
  3965  	for _, ownerItem := range owner {
  3966  		ownerRule = append(ownerRule, ownerItem)
  3967  	}
  3968  	var approvedRule []interface{}
  3969  	for _, approvedItem := range approved {
  3970  		approvedRule = append(approvedRule, approvedItem)
  3971  	}
  3972  	var tokenIdRule []interface{}
  3973  	for _, tokenIdItem := range tokenId {
  3974  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  3975  	}
  3976  
  3977  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  3978  	if err != nil {
  3979  		return nil, err
  3980  	}
  3981  	return &ERC721FullApprovalIterator{contract: _ERC721Full.contract, event: "Approval", logs: logs, sub: sub}, nil
  3982  }
  3983  
  3984  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  3985  //
  3986  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  3987  func (_ERC721Full *ERC721FullFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721FullApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  3988  
  3989  	var ownerRule []interface{}
  3990  	for _, ownerItem := range owner {
  3991  		ownerRule = append(ownerRule, ownerItem)
  3992  	}
  3993  	var approvedRule []interface{}
  3994  	for _, approvedItem := range approved {
  3995  		approvedRule = append(approvedRule, approvedItem)
  3996  	}
  3997  	var tokenIdRule []interface{}
  3998  	for _, tokenIdItem := range tokenId {
  3999  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4000  	}
  4001  
  4002  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4003  	if err != nil {
  4004  		return nil, err
  4005  	}
  4006  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4007  		defer sub.Unsubscribe()
  4008  		for {
  4009  			select {
  4010  			case log := <-logs:
  4011  				// New log arrived, parse the event and forward to the user
  4012  				event := new(ERC721FullApproval)
  4013  				if err := _ERC721Full.contract.UnpackLog(event, "Approval", log); err != nil {
  4014  					return err
  4015  				}
  4016  				event.Raw = log
  4017  
  4018  				select {
  4019  				case sink <- event:
  4020  				case err := <-sub.Err():
  4021  					return err
  4022  				case <-quit:
  4023  					return nil
  4024  				}
  4025  			case err := <-sub.Err():
  4026  				return err
  4027  			case <-quit:
  4028  				return nil
  4029  			}
  4030  		}
  4031  	}), nil
  4032  }
  4033  
  4034  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4035  //
  4036  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4037  func (_ERC721Full *ERC721FullFilterer) ParseApproval(log types.Log) (*ERC721FullApproval, error) {
  4038  	event := new(ERC721FullApproval)
  4039  	if err := _ERC721Full.contract.UnpackLog(event, "Approval", log); err != nil {
  4040  		return nil, err
  4041  	}
  4042  	return event, nil
  4043  }
  4044  
  4045  // ERC721FullApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Full contract.
  4046  type ERC721FullApprovalForAllIterator struct {
  4047  	Event *ERC721FullApprovalForAll // Event containing the contract specifics and raw log
  4048  
  4049  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4050  	event    string              // Event name to use for unpacking event data
  4051  
  4052  	logs chan types.Log      // Log channel receiving the found contract events
  4053  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4054  	done bool                // Whether the subscription completed delivering logs
  4055  	fail error               // Occurred error to stop iteration
  4056  }
  4057  
  4058  // Next advances the iterator to the subsequent event, returning whether there
  4059  // are any more events found. In case of a retrieval or parsing error, false is
  4060  // returned and Error() can be queried for the exact failure.
  4061  func (it *ERC721FullApprovalForAllIterator) Next() bool {
  4062  	// If the iterator failed, stop iterating
  4063  	if it.fail != nil {
  4064  		return false
  4065  	}
  4066  	// If the iterator completed, deliver directly whatever's available
  4067  	if it.done {
  4068  		select {
  4069  		case log := <-it.logs:
  4070  			it.Event = new(ERC721FullApprovalForAll)
  4071  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4072  				it.fail = err
  4073  				return false
  4074  			}
  4075  			it.Event.Raw = log
  4076  			return true
  4077  
  4078  		default:
  4079  			return false
  4080  		}
  4081  	}
  4082  	// Iterator still in progress, wait for either a data or an error event
  4083  	select {
  4084  	case log := <-it.logs:
  4085  		it.Event = new(ERC721FullApprovalForAll)
  4086  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4087  			it.fail = err
  4088  			return false
  4089  		}
  4090  		it.Event.Raw = log
  4091  		return true
  4092  
  4093  	case err := <-it.sub.Err():
  4094  		it.done = true
  4095  		it.fail = err
  4096  		return it.Next()
  4097  	}
  4098  }
  4099  
  4100  // Error returns any retrieval or parsing error occurred during filtering.
  4101  func (it *ERC721FullApprovalForAllIterator) Error() error {
  4102  	return it.fail
  4103  }
  4104  
  4105  // Close terminates the iteration process, releasing any pending underlying
  4106  // resources.
  4107  func (it *ERC721FullApprovalForAllIterator) Close() error {
  4108  	it.sub.Unsubscribe()
  4109  	return nil
  4110  }
  4111  
  4112  // ERC721FullApprovalForAll represents a ApprovalForAll event raised by the ERC721Full contract.
  4113  type ERC721FullApprovalForAll struct {
  4114  	Owner    common.Address
  4115  	Operator common.Address
  4116  	Approved bool
  4117  	Raw      types.Log // Blockchain specific contextual infos
  4118  }
  4119  
  4120  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4121  //
  4122  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4123  func (_ERC721Full *ERC721FullFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721FullApprovalForAllIterator, error) {
  4124  
  4125  	var ownerRule []interface{}
  4126  	for _, ownerItem := range owner {
  4127  		ownerRule = append(ownerRule, ownerItem)
  4128  	}
  4129  	var operatorRule []interface{}
  4130  	for _, operatorItem := range operator {
  4131  		operatorRule = append(operatorRule, operatorItem)
  4132  	}
  4133  
  4134  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4135  	if err != nil {
  4136  		return nil, err
  4137  	}
  4138  	return &ERC721FullApprovalForAllIterator{contract: _ERC721Full.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  4139  }
  4140  
  4141  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4142  //
  4143  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4144  func (_ERC721Full *ERC721FullFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721FullApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  4145  
  4146  	var ownerRule []interface{}
  4147  	for _, ownerItem := range owner {
  4148  		ownerRule = append(ownerRule, ownerItem)
  4149  	}
  4150  	var operatorRule []interface{}
  4151  	for _, operatorItem := range operator {
  4152  		operatorRule = append(operatorRule, operatorItem)
  4153  	}
  4154  
  4155  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  4156  	if err != nil {
  4157  		return nil, err
  4158  	}
  4159  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4160  		defer sub.Unsubscribe()
  4161  		for {
  4162  			select {
  4163  			case log := <-logs:
  4164  				// New log arrived, parse the event and forward to the user
  4165  				event := new(ERC721FullApprovalForAll)
  4166  				if err := _ERC721Full.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4167  					return err
  4168  				}
  4169  				event.Raw = log
  4170  
  4171  				select {
  4172  				case sink <- event:
  4173  				case err := <-sub.Err():
  4174  					return err
  4175  				case <-quit:
  4176  					return nil
  4177  				}
  4178  			case err := <-sub.Err():
  4179  				return err
  4180  			case <-quit:
  4181  				return nil
  4182  			}
  4183  		}
  4184  	}), nil
  4185  }
  4186  
  4187  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  4188  //
  4189  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  4190  func (_ERC721Full *ERC721FullFilterer) ParseApprovalForAll(log types.Log) (*ERC721FullApprovalForAll, error) {
  4191  	event := new(ERC721FullApprovalForAll)
  4192  	if err := _ERC721Full.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  4193  		return nil, err
  4194  	}
  4195  	return event, nil
  4196  }
  4197  
  4198  // ERC721FullTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Full contract.
  4199  type ERC721FullTransferIterator struct {
  4200  	Event *ERC721FullTransfer // Event containing the contract specifics and raw log
  4201  
  4202  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4203  	event    string              // Event name to use for unpacking event data
  4204  
  4205  	logs chan types.Log      // Log channel receiving the found contract events
  4206  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4207  	done bool                // Whether the subscription completed delivering logs
  4208  	fail error               // Occurred error to stop iteration
  4209  }
  4210  
  4211  // Next advances the iterator to the subsequent event, returning whether there
  4212  // are any more events found. In case of a retrieval or parsing error, false is
  4213  // returned and Error() can be queried for the exact failure.
  4214  func (it *ERC721FullTransferIterator) Next() bool {
  4215  	// If the iterator failed, stop iterating
  4216  	if it.fail != nil {
  4217  		return false
  4218  	}
  4219  	// If the iterator completed, deliver directly whatever's available
  4220  	if it.done {
  4221  		select {
  4222  		case log := <-it.logs:
  4223  			it.Event = new(ERC721FullTransfer)
  4224  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4225  				it.fail = err
  4226  				return false
  4227  			}
  4228  			it.Event.Raw = log
  4229  			return true
  4230  
  4231  		default:
  4232  			return false
  4233  		}
  4234  	}
  4235  	// Iterator still in progress, wait for either a data or an error event
  4236  	select {
  4237  	case log := <-it.logs:
  4238  		it.Event = new(ERC721FullTransfer)
  4239  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4240  			it.fail = err
  4241  			return false
  4242  		}
  4243  		it.Event.Raw = log
  4244  		return true
  4245  
  4246  	case err := <-it.sub.Err():
  4247  		it.done = true
  4248  		it.fail = err
  4249  		return it.Next()
  4250  	}
  4251  }
  4252  
  4253  // Error returns any retrieval or parsing error occurred during filtering.
  4254  func (it *ERC721FullTransferIterator) Error() error {
  4255  	return it.fail
  4256  }
  4257  
  4258  // Close terminates the iteration process, releasing any pending underlying
  4259  // resources.
  4260  func (it *ERC721FullTransferIterator) Close() error {
  4261  	it.sub.Unsubscribe()
  4262  	return nil
  4263  }
  4264  
  4265  // ERC721FullTransfer represents a Transfer event raised by the ERC721Full contract.
  4266  type ERC721FullTransfer struct {
  4267  	From    common.Address
  4268  	To      common.Address
  4269  	TokenId *big.Int
  4270  	Raw     types.Log // Blockchain specific contextual infos
  4271  }
  4272  
  4273  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4274  //
  4275  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4276  func (_ERC721Full *ERC721FullFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721FullTransferIterator, error) {
  4277  
  4278  	var fromRule []interface{}
  4279  	for _, fromItem := range from {
  4280  		fromRule = append(fromRule, fromItem)
  4281  	}
  4282  	var toRule []interface{}
  4283  	for _, toItem := range to {
  4284  		toRule = append(toRule, toItem)
  4285  	}
  4286  	var tokenIdRule []interface{}
  4287  	for _, tokenIdItem := range tokenId {
  4288  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4289  	}
  4290  
  4291  	logs, sub, err := _ERC721Full.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4292  	if err != nil {
  4293  		return nil, err
  4294  	}
  4295  	return &ERC721FullTransferIterator{contract: _ERC721Full.contract, event: "Transfer", logs: logs, sub: sub}, nil
  4296  }
  4297  
  4298  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4299  //
  4300  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4301  func (_ERC721Full *ERC721FullFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721FullTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4302  
  4303  	var fromRule []interface{}
  4304  	for _, fromItem := range from {
  4305  		fromRule = append(fromRule, fromItem)
  4306  	}
  4307  	var toRule []interface{}
  4308  	for _, toItem := range to {
  4309  		toRule = append(toRule, toItem)
  4310  	}
  4311  	var tokenIdRule []interface{}
  4312  	for _, tokenIdItem := range tokenId {
  4313  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4314  	}
  4315  
  4316  	logs, sub, err := _ERC721Full.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  4317  	if err != nil {
  4318  		return nil, err
  4319  	}
  4320  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4321  		defer sub.Unsubscribe()
  4322  		for {
  4323  			select {
  4324  			case log := <-logs:
  4325  				// New log arrived, parse the event and forward to the user
  4326  				event := new(ERC721FullTransfer)
  4327  				if err := _ERC721Full.contract.UnpackLog(event, "Transfer", log); err != nil {
  4328  					return err
  4329  				}
  4330  				event.Raw = log
  4331  
  4332  				select {
  4333  				case sink <- event:
  4334  				case err := <-sub.Err():
  4335  					return err
  4336  				case <-quit:
  4337  					return nil
  4338  				}
  4339  			case err := <-sub.Err():
  4340  				return err
  4341  			case <-quit:
  4342  				return nil
  4343  			}
  4344  		}
  4345  	}), nil
  4346  }
  4347  
  4348  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  4349  //
  4350  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  4351  func (_ERC721Full *ERC721FullFilterer) ParseTransfer(log types.Log) (*ERC721FullTransfer, error) {
  4352  	event := new(ERC721FullTransfer)
  4353  	if err := _ERC721Full.contract.UnpackLog(event, "Transfer", log); err != nil {
  4354  		return nil, err
  4355  	}
  4356  	return event, nil
  4357  }
  4358  
  4359  // ERC721MetadataABI is the input ABI used to generate the binding from.
  4360  const ERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  4361  
  4362  // ERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  4363  const ERC721MetadataBinRuntime = `608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029`
  4364  
  4365  // ERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
  4366  var ERC721MetadataFuncSigs = map[string]string{
  4367  	"095ea7b3": "approve(address,uint256)",
  4368  	"70a08231": "balanceOf(address)",
  4369  	"081812fc": "getApproved(uint256)",
  4370  	"e985e9c5": "isApprovedForAll(address,address)",
  4371  	"06fdde03": "name()",
  4372  	"6352211e": "ownerOf(uint256)",
  4373  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  4374  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  4375  	"a22cb465": "setApprovalForAll(address,bool)",
  4376  	"01ffc9a7": "supportsInterface(bytes4)",
  4377  	"95d89b41": "symbol()",
  4378  	"c87b56dd": "tokenURI(uint256)",
  4379  	"23b872dd": "transferFrom(address,address,uint256)",
  4380  }
  4381  
  4382  // ERC721MetadataBin is the compiled bytecode used for deploying new contracts.
  4383  var ERC721MetadataBin = "0x60806040523480156200001157600080fd5b50604051620012f8380380620012f8833981018060405260408110156200003757600080fd5b8101908080516401000000008111156200005057600080fd5b820160208101848111156200006457600080fd5b81516401000000008111828201871017156200007f57600080fd5b505092919060200180516401000000008111156200009c57600080fd5b82016020810184811115620000b057600080fd5b8151640100000000811182820187101715620000cb57600080fd5b5050929190505050620000eb6301ffc9a760e01b6200014f60201b60201c565b620001036380ac58cd60e01b6200014f60201b60201c565b8151620001189060059060208501906200021e565b5080516200012e9060069060208401906200021e565b5062000147635b5e139f60e01b6200014f60201b60201c565b5050620002c3565b7fffffffff000000000000000000000000000000000000000000000000000000008082161415620001e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200026157805160ff191683800117855562000291565b8280016001018555821562000291579182015b828111156200029157825182559160200191906001019062000274565b506200029f929150620002a3565b5090565b620002c091905b808211156200029f5760008155600101620002aa565b90565b61102580620002d36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146102bc578063b88d4fde146102ea578063c87b56dd146103b0578063e985e9c5146103cd576100cf565b80636352211e1461025f57806370a082311461027c57806395d89b41146102b4576100cf565b806301ffc9a7146100d457806306fdde031461010f578063081812fc1461018c578063095ea7b3146101c557806323b872dd146101f357806342842e0e14610229575b600080fd5b6100fb600480360360208110156100ea57600080fd5b50356001600160e01b0319166103fb565b604080519115158252519081900360200190f35b61011761041a565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610151578181015183820152602001610139565b50505050905090810190601f16801561017e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a9600480360360208110156101a257600080fd5b50356104b0565b604080516001600160a01b039092168252519081900360200190f35b6101f1600480360360408110156101db57600080fd5b506001600160a01b038135169060200135610515565b005b6101f16004803603606081101561020957600080fd5b506001600160a01b0381358116916020810135909116906040013561062c565b6101f16004803603606081101561023f57600080fd5b506001600160a01b03813581169160208101359091169060400135610684565b6101a96004803603602081101561027557600080fd5b503561069f565b6102a26004803603602081101561029257600080fd5b50356001600160a01b03166106fc565b60408051918252519081900360200190f35b610117610767565b6101f1600480360360408110156102d257600080fd5b506001600160a01b03813516906020013515156107c8565b6101f16004803603608081101561030057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561033b57600080fd5b82018360208201111561034d57600080fd5b8035906020019184600183028401116401000000008311171561036f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610897945050505050565b610117600480360360208110156103c657600080fd5b50356108f2565b6100fb600480360360408110156103e357600080fd5b506001600160a01b03813581169160200135166109da565b6001600160e01b03191660009081526020819052604090205460ff1690565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b820191906000526020600020905b81548152906001019060200180831161048957829003601f168201915b5050505050905090565b60006104bb82610a08565b6104f957604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610f24602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006105208261069f565b9050806001600160a01b0316836001600160a01b0316141561057657604051600160e51b62461bcd028152600401808060200182810382526021815260200180610fa86021913960400191505060405180910390fd5b336001600160a01b0382161480610592575061059281336109da565b6105d057604051600160e51b62461bcd028152600401808060200182810382526038815260200180610e996038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6106363382610a25565b61067457604051600160e51b62461bcd028152600401808060200182810382526031815260200180610fc96031913960400191505060405180910390fd5b61067f838383610acc565b505050565b61067f83838360405180602001604052806000815250610897565b6000818152600160205260408120546001600160a01b0316806106f657604051600160e51b62461bcd028152600401808060200182810382526029815260200180610efb6029913960400191505060405180910390fd5b92915050565b60006001600160a01b03821661074657604051600160e51b62461bcd02815260040180806020018281038252602a815260200180610ed1602a913960400191505060405180910390fd5b6001600160a01b03821660009081526003602052604090206106f690610c16565b60068054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104a65780601f1061047b576101008083540402835291602001916104a6565b6001600160a01b0382163314156108295760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6108a284848461062c565b6108ae84848484610c1a565b6108ec57604051600160e51b62461bcd028152600401808060200182810382526032815260200180610e176032913960400191505060405180910390fd5b50505050565b60606108fd82610a08565b61093b57604051600160e51b62461bcd02815260040180806020018281038252602f815260200180610f79602f913960400191505060405180910390fd5b60008281526007602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156109ce5780601f106109a3576101008083540402835291602001916109ce565b820191906000526020600020905b8154815290600101906020018083116109b157829003601f168201915b50505050509050919050565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6000908152600160205260409020546001600160a01b0316151590565b6000610a3082610a08565b610a6e57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180610e6d602c913960400191505060405180910390fd5b6000610a798361069f565b9050806001600160a01b0316846001600160a01b03161480610ab45750836001600160a01b0316610aa9846104b0565b6001600160a01b0316145b80610ac45750610ac481856109da565b949350505050565b826001600160a01b0316610adf8261069f565b6001600160a01b031614610b2757604051600160e51b62461bcd028152600401808060200182810382526029815260200180610f506029913960400191505060405180910390fd5b6001600160a01b038216610b6f57604051600160e51b62461bcd028152600401808060200182810382526024815260200180610e496024913960400191505060405180910390fd5b610b7881610d53565b6001600160a01b0383166000908152600360205260409020610b9990610d90565b6001600160a01b0382166000908152600360205260409020610bba90610da7565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5490565b6000610c2e846001600160a01b0316610db0565b610c3a57506001610ac4565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b83811015610cb7578181015183820152602001610c9f565b50505050905090810190601f168015610ce45780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610d0657600080fd5b505af1158015610d1a573d6000803e3d6000fd5b505050506040513d6020811015610d3057600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6000818152600260205260409020546001600160a01b031615610d8d57600081815260026020526040902080546001600160a01b03191690555b50565b8054610da390600163ffffffff610db616565b9055565b80546001019055565b3b151590565b600082821115610e105760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a7230582037ba54c848524be0056a573891a8b0f5c56b08f8613060e9876ee13fe582c6480029"
  4384  
  4385  // DeployERC721Metadata deploys a new Klaytn contract, binding an instance of ERC721Metadata to it.
  4386  func DeployERC721Metadata(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string) (common.Address, *types.Transaction, *ERC721Metadata, error) {
  4387  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
  4388  	if err != nil {
  4389  		return common.Address{}, nil, nil, err
  4390  	}
  4391  
  4392  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ERC721MetadataBin), backend, name, symbol)
  4393  	if err != nil {
  4394  		return common.Address{}, nil, nil, err
  4395  	}
  4396  	return address, tx, &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
  4397  }
  4398  
  4399  // ERC721Metadata is an auto generated Go binding around a Klaytn contract.
  4400  type ERC721Metadata struct {
  4401  	ERC721MetadataCaller     // Read-only binding to the contract
  4402  	ERC721MetadataTransactor // Write-only binding to the contract
  4403  	ERC721MetadataFilterer   // Log filterer for contract events
  4404  }
  4405  
  4406  // ERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
  4407  type ERC721MetadataCaller struct {
  4408  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4409  }
  4410  
  4411  // ERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
  4412  type ERC721MetadataTransactor struct {
  4413  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4414  }
  4415  
  4416  // ERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  4417  type ERC721MetadataFilterer struct {
  4418  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  4419  }
  4420  
  4421  // ERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
  4422  // with pre-set call and transact options.
  4423  type ERC721MetadataSession struct {
  4424  	Contract     *ERC721Metadata   // Generic contract binding to set the session for
  4425  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  4426  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  4427  }
  4428  
  4429  // ERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  4430  // with pre-set call options.
  4431  type ERC721MetadataCallerSession struct {
  4432  	Contract *ERC721MetadataCaller // Generic contract caller binding to set the session for
  4433  	CallOpts bind.CallOpts         // Call options to use throughout this session
  4434  }
  4435  
  4436  // ERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  4437  // with pre-set transact options.
  4438  type ERC721MetadataTransactorSession struct {
  4439  	Contract     *ERC721MetadataTransactor // Generic contract transactor binding to set the session for
  4440  	TransactOpts bind.TransactOpts         // Transaction auth options to use throughout this session
  4441  }
  4442  
  4443  // ERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
  4444  type ERC721MetadataRaw struct {
  4445  	Contract *ERC721Metadata // Generic contract binding to access the raw methods on
  4446  }
  4447  
  4448  // ERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  4449  type ERC721MetadataCallerRaw struct {
  4450  	Contract *ERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
  4451  }
  4452  
  4453  // ERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  4454  type ERC721MetadataTransactorRaw struct {
  4455  	Contract *ERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
  4456  }
  4457  
  4458  // NewERC721Metadata creates a new instance of ERC721Metadata, bound to a specific deployed contract.
  4459  func NewERC721Metadata(address common.Address, backend bind.ContractBackend) (*ERC721Metadata, error) {
  4460  	contract, err := bindERC721Metadata(address, backend, backend, backend)
  4461  	if err != nil {
  4462  		return nil, err
  4463  	}
  4464  	return &ERC721Metadata{ERC721MetadataCaller: ERC721MetadataCaller{contract: contract}, ERC721MetadataTransactor: ERC721MetadataTransactor{contract: contract}, ERC721MetadataFilterer: ERC721MetadataFilterer{contract: contract}}, nil
  4465  }
  4466  
  4467  // NewERC721MetadataCaller creates a new read-only instance of ERC721Metadata, bound to a specific deployed contract.
  4468  func NewERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataCaller, error) {
  4469  	contract, err := bindERC721Metadata(address, caller, nil, nil)
  4470  	if err != nil {
  4471  		return nil, err
  4472  	}
  4473  	return &ERC721MetadataCaller{contract: contract}, nil
  4474  }
  4475  
  4476  // NewERC721MetadataTransactor creates a new write-only instance of ERC721Metadata, bound to a specific deployed contract.
  4477  func NewERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataTransactor, error) {
  4478  	contract, err := bindERC721Metadata(address, nil, transactor, nil)
  4479  	if err != nil {
  4480  		return nil, err
  4481  	}
  4482  	return &ERC721MetadataTransactor{contract: contract}, nil
  4483  }
  4484  
  4485  // NewERC721MetadataFilterer creates a new log filterer instance of ERC721Metadata, bound to a specific deployed contract.
  4486  func NewERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataFilterer, error) {
  4487  	contract, err := bindERC721Metadata(address, nil, nil, filterer)
  4488  	if err != nil {
  4489  		return nil, err
  4490  	}
  4491  	return &ERC721MetadataFilterer{contract: contract}, nil
  4492  }
  4493  
  4494  // bindERC721Metadata binds a generic wrapper to an already deployed contract.
  4495  func bindERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  4496  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataABI))
  4497  	if err != nil {
  4498  		return nil, err
  4499  	}
  4500  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  4501  }
  4502  
  4503  // Call invokes the (constant) contract method with params as input values and
  4504  // sets the output to result. The result type might be a single field for simple
  4505  // returns, a slice of interfaces for anonymous returns and a struct for named
  4506  // returns.
  4507  func (_ERC721Metadata *ERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4508  	return _ERC721Metadata.Contract.ERC721MetadataCaller.contract.Call(opts, result, method, params...)
  4509  }
  4510  
  4511  // Transfer initiates a plain transaction to move funds to the contract, calling
  4512  // its default method if one is available.
  4513  func (_ERC721Metadata *ERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4514  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transfer(opts)
  4515  }
  4516  
  4517  // Transact invokes the (paid) contract method with params as input values.
  4518  func (_ERC721Metadata *ERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4519  	return _ERC721Metadata.Contract.ERC721MetadataTransactor.contract.Transact(opts, method, params...)
  4520  }
  4521  
  4522  // Call invokes the (constant) contract method with params as input values and
  4523  // sets the output to result. The result type might be a single field for simple
  4524  // returns, a slice of interfaces for anonymous returns and a struct for named
  4525  // returns.
  4526  func (_ERC721Metadata *ERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  4527  	return _ERC721Metadata.Contract.contract.Call(opts, result, method, params...)
  4528  }
  4529  
  4530  // Transfer initiates a plain transaction to move funds to the contract, calling
  4531  // its default method if one is available.
  4532  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  4533  	return _ERC721Metadata.Contract.contract.Transfer(opts)
  4534  }
  4535  
  4536  // Transact invokes the (paid) contract method with params as input values.
  4537  func (_ERC721Metadata *ERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  4538  	return _ERC721Metadata.Contract.contract.Transact(opts, method, params...)
  4539  }
  4540  
  4541  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4542  //
  4543  // Solidity: function balanceOf(address owner) view returns(uint256)
  4544  func (_ERC721Metadata *ERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  4545  	var (
  4546  		ret0 = new(*big.Int)
  4547  	)
  4548  	out := ret0
  4549  	err := _ERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
  4550  	return *ret0, err
  4551  }
  4552  
  4553  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4554  //
  4555  // Solidity: function balanceOf(address owner) view returns(uint256)
  4556  func (_ERC721Metadata *ERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4557  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
  4558  }
  4559  
  4560  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  4561  //
  4562  // Solidity: function balanceOf(address owner) view returns(uint256)
  4563  func (_ERC721Metadata *ERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  4564  	return _ERC721Metadata.Contract.BalanceOf(&_ERC721Metadata.CallOpts, owner)
  4565  }
  4566  
  4567  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4568  //
  4569  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4570  func (_ERC721Metadata *ERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4571  	var (
  4572  		ret0 = new(common.Address)
  4573  	)
  4574  	out := ret0
  4575  	err := _ERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
  4576  	return *ret0, err
  4577  }
  4578  
  4579  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4580  //
  4581  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4582  func (_ERC721Metadata *ERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4583  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
  4584  }
  4585  
  4586  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  4587  //
  4588  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  4589  func (_ERC721Metadata *ERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  4590  	return _ERC721Metadata.Contract.GetApproved(&_ERC721Metadata.CallOpts, tokenId)
  4591  }
  4592  
  4593  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4594  //
  4595  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4596  func (_ERC721Metadata *ERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  4597  	var (
  4598  		ret0 = new(bool)
  4599  	)
  4600  	out := ret0
  4601  	err := _ERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  4602  	return *ret0, err
  4603  }
  4604  
  4605  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4606  //
  4607  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4608  func (_ERC721Metadata *ERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4609  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
  4610  }
  4611  
  4612  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  4613  //
  4614  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  4615  func (_ERC721Metadata *ERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  4616  	return _ERC721Metadata.Contract.IsApprovedForAll(&_ERC721Metadata.CallOpts, owner, operator)
  4617  }
  4618  
  4619  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4620  //
  4621  // Solidity: function name() view returns(string)
  4622  func (_ERC721Metadata *ERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
  4623  	var (
  4624  		ret0 = new(string)
  4625  	)
  4626  	out := ret0
  4627  	err := _ERC721Metadata.contract.Call(opts, out, "name")
  4628  	return *ret0, err
  4629  }
  4630  
  4631  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4632  //
  4633  // Solidity: function name() view returns(string)
  4634  func (_ERC721Metadata *ERC721MetadataSession) Name() (string, error) {
  4635  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  4636  }
  4637  
  4638  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  4639  //
  4640  // Solidity: function name() view returns(string)
  4641  func (_ERC721Metadata *ERC721MetadataCallerSession) Name() (string, error) {
  4642  	return _ERC721Metadata.Contract.Name(&_ERC721Metadata.CallOpts)
  4643  }
  4644  
  4645  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4646  //
  4647  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4648  func (_ERC721Metadata *ERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  4649  	var (
  4650  		ret0 = new(common.Address)
  4651  	)
  4652  	out := ret0
  4653  	err := _ERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
  4654  	return *ret0, err
  4655  }
  4656  
  4657  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4658  //
  4659  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4660  func (_ERC721Metadata *ERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4661  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
  4662  }
  4663  
  4664  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  4665  //
  4666  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  4667  func (_ERC721Metadata *ERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  4668  	return _ERC721Metadata.Contract.OwnerOf(&_ERC721Metadata.CallOpts, tokenId)
  4669  }
  4670  
  4671  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4672  //
  4673  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4674  func (_ERC721Metadata *ERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  4675  	var (
  4676  		ret0 = new(bool)
  4677  	)
  4678  	out := ret0
  4679  	err := _ERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
  4680  	return *ret0, err
  4681  }
  4682  
  4683  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4684  //
  4685  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4686  func (_ERC721Metadata *ERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4687  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
  4688  }
  4689  
  4690  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  4691  //
  4692  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  4693  func (_ERC721Metadata *ERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  4694  	return _ERC721Metadata.Contract.SupportsInterface(&_ERC721Metadata.CallOpts, interfaceId)
  4695  }
  4696  
  4697  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  4698  //
  4699  // Solidity: function symbol() view returns(string)
  4700  func (_ERC721Metadata *ERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
  4701  	var (
  4702  		ret0 = new(string)
  4703  	)
  4704  	out := ret0
  4705  	err := _ERC721Metadata.contract.Call(opts, out, "symbol")
  4706  	return *ret0, err
  4707  }
  4708  
  4709  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  4710  //
  4711  // Solidity: function symbol() view returns(string)
  4712  func (_ERC721Metadata *ERC721MetadataSession) Symbol() (string, error) {
  4713  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  4714  }
  4715  
  4716  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  4717  //
  4718  // Solidity: function symbol() view returns(string)
  4719  func (_ERC721Metadata *ERC721MetadataCallerSession) Symbol() (string, error) {
  4720  	return _ERC721Metadata.Contract.Symbol(&_ERC721Metadata.CallOpts)
  4721  }
  4722  
  4723  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  4724  //
  4725  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  4726  func (_ERC721Metadata *ERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  4727  	var (
  4728  		ret0 = new(string)
  4729  	)
  4730  	out := ret0
  4731  	err := _ERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
  4732  	return *ret0, err
  4733  }
  4734  
  4735  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  4736  //
  4737  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  4738  func (_ERC721Metadata *ERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
  4739  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
  4740  }
  4741  
  4742  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  4743  //
  4744  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  4745  func (_ERC721Metadata *ERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  4746  	return _ERC721Metadata.Contract.TokenURI(&_ERC721Metadata.CallOpts, tokenId)
  4747  }
  4748  
  4749  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4750  //
  4751  // Solidity: function approve(address to, uint256 tokenId) returns()
  4752  func (_ERC721Metadata *ERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4753  	return _ERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
  4754  }
  4755  
  4756  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4757  //
  4758  // Solidity: function approve(address to, uint256 tokenId) returns()
  4759  func (_ERC721Metadata *ERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4760  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
  4761  }
  4762  
  4763  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  4764  //
  4765  // Solidity: function approve(address to, uint256 tokenId) returns()
  4766  func (_ERC721Metadata *ERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4767  	return _ERC721Metadata.Contract.Approve(&_ERC721Metadata.TransactOpts, to, tokenId)
  4768  }
  4769  
  4770  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4771  //
  4772  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4773  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4774  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  4775  }
  4776  
  4777  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4778  //
  4779  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4780  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4781  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  4782  }
  4783  
  4784  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  4785  //
  4786  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  4787  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4788  	return _ERC721Metadata.Contract.SafeTransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  4789  }
  4790  
  4791  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4792  //
  4793  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4794  func (_ERC721Metadata *ERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4795  	return _ERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  4796  }
  4797  
  4798  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4799  //
  4800  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4801  func (_ERC721Metadata *ERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4802  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
  4803  }
  4804  
  4805  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  4806  //
  4807  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  4808  func (_ERC721Metadata *ERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  4809  	return _ERC721Metadata.Contract.SafeTransferFrom0(&_ERC721Metadata.TransactOpts, from, to, tokenId, _data)
  4810  }
  4811  
  4812  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4813  //
  4814  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4815  func (_ERC721Metadata *ERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  4816  	return _ERC721Metadata.contract.Transact(opts, "setApprovalForAll", to, approved)
  4817  }
  4818  
  4819  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4820  //
  4821  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4822  func (_ERC721Metadata *ERC721MetadataSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4823  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
  4824  }
  4825  
  4826  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  4827  //
  4828  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  4829  func (_ERC721Metadata *ERC721MetadataTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  4830  	return _ERC721Metadata.Contract.SetApprovalForAll(&_ERC721Metadata.TransactOpts, to, approved)
  4831  }
  4832  
  4833  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4834  //
  4835  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4836  func (_ERC721Metadata *ERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4837  	return _ERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
  4838  }
  4839  
  4840  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4841  //
  4842  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4843  func (_ERC721Metadata *ERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4844  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  4845  }
  4846  
  4847  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  4848  //
  4849  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  4850  func (_ERC721Metadata *ERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  4851  	return _ERC721Metadata.Contract.TransferFrom(&_ERC721Metadata.TransactOpts, from, to, tokenId)
  4852  }
  4853  
  4854  // ERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721Metadata contract.
  4855  type ERC721MetadataApprovalIterator struct {
  4856  	Event *ERC721MetadataApproval // Event containing the contract specifics and raw log
  4857  
  4858  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  4859  	event    string              // Event name to use for unpacking event data
  4860  
  4861  	logs chan types.Log      // Log channel receiving the found contract events
  4862  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  4863  	done bool                // Whether the subscription completed delivering logs
  4864  	fail error               // Occurred error to stop iteration
  4865  }
  4866  
  4867  // Next advances the iterator to the subsequent event, returning whether there
  4868  // are any more events found. In case of a retrieval or parsing error, false is
  4869  // returned and Error() can be queried for the exact failure.
  4870  func (it *ERC721MetadataApprovalIterator) Next() bool {
  4871  	// If the iterator failed, stop iterating
  4872  	if it.fail != nil {
  4873  		return false
  4874  	}
  4875  	// If the iterator completed, deliver directly whatever's available
  4876  	if it.done {
  4877  		select {
  4878  		case log := <-it.logs:
  4879  			it.Event = new(ERC721MetadataApproval)
  4880  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4881  				it.fail = err
  4882  				return false
  4883  			}
  4884  			it.Event.Raw = log
  4885  			return true
  4886  
  4887  		default:
  4888  			return false
  4889  		}
  4890  	}
  4891  	// Iterator still in progress, wait for either a data or an error event
  4892  	select {
  4893  	case log := <-it.logs:
  4894  		it.Event = new(ERC721MetadataApproval)
  4895  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  4896  			it.fail = err
  4897  			return false
  4898  		}
  4899  		it.Event.Raw = log
  4900  		return true
  4901  
  4902  	case err := <-it.sub.Err():
  4903  		it.done = true
  4904  		it.fail = err
  4905  		return it.Next()
  4906  	}
  4907  }
  4908  
  4909  // Error returns any retrieval or parsing error occurred during filtering.
  4910  func (it *ERC721MetadataApprovalIterator) Error() error {
  4911  	return it.fail
  4912  }
  4913  
  4914  // Close terminates the iteration process, releasing any pending underlying
  4915  // resources.
  4916  func (it *ERC721MetadataApprovalIterator) Close() error {
  4917  	it.sub.Unsubscribe()
  4918  	return nil
  4919  }
  4920  
  4921  // ERC721MetadataApproval represents a Approval event raised by the ERC721Metadata contract.
  4922  type ERC721MetadataApproval struct {
  4923  	Owner    common.Address
  4924  	Approved common.Address
  4925  	TokenId  *big.Int
  4926  	Raw      types.Log // Blockchain specific contextual infos
  4927  }
  4928  
  4929  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4930  //
  4931  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4932  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataApprovalIterator, error) {
  4933  
  4934  	var ownerRule []interface{}
  4935  	for _, ownerItem := range owner {
  4936  		ownerRule = append(ownerRule, ownerItem)
  4937  	}
  4938  	var approvedRule []interface{}
  4939  	for _, approvedItem := range approved {
  4940  		approvedRule = append(approvedRule, approvedItem)
  4941  	}
  4942  	var tokenIdRule []interface{}
  4943  	for _, tokenIdItem := range tokenId {
  4944  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4945  	}
  4946  
  4947  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4948  	if err != nil {
  4949  		return nil, err
  4950  	}
  4951  	return &ERC721MetadataApprovalIterator{contract: _ERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
  4952  }
  4953  
  4954  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  4955  //
  4956  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  4957  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  4958  
  4959  	var ownerRule []interface{}
  4960  	for _, ownerItem := range owner {
  4961  		ownerRule = append(ownerRule, ownerItem)
  4962  	}
  4963  	var approvedRule []interface{}
  4964  	for _, approvedItem := range approved {
  4965  		approvedRule = append(approvedRule, approvedItem)
  4966  	}
  4967  	var tokenIdRule []interface{}
  4968  	for _, tokenIdItem := range tokenId {
  4969  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  4970  	}
  4971  
  4972  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  4973  	if err != nil {
  4974  		return nil, err
  4975  	}
  4976  	return event.NewSubscription(func(quit <-chan struct{}) error {
  4977  		defer sub.Unsubscribe()
  4978  		for {
  4979  			select {
  4980  			case log := <-logs:
  4981  				// New log arrived, parse the event and forward to the user
  4982  				event := new(ERC721MetadataApproval)
  4983  				if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  4984  					return err
  4985  				}
  4986  				event.Raw = log
  4987  
  4988  				select {
  4989  				case sink <- event:
  4990  				case err := <-sub.Err():
  4991  					return err
  4992  				case <-quit:
  4993  					return nil
  4994  				}
  4995  			case err := <-sub.Err():
  4996  				return err
  4997  			case <-quit:
  4998  				return nil
  4999  			}
  5000  		}
  5001  	}), nil
  5002  }
  5003  
  5004  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5005  //
  5006  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5007  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApproval(log types.Log) (*ERC721MetadataApproval, error) {
  5008  	event := new(ERC721MetadataApproval)
  5009  	if err := _ERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
  5010  		return nil, err
  5011  	}
  5012  	return event, nil
  5013  }
  5014  
  5015  // ERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721Metadata contract.
  5016  type ERC721MetadataApprovalForAllIterator struct {
  5017  	Event *ERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
  5018  
  5019  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5020  	event    string              // Event name to use for unpacking event data
  5021  
  5022  	logs chan types.Log      // Log channel receiving the found contract events
  5023  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5024  	done bool                // Whether the subscription completed delivering logs
  5025  	fail error               // Occurred error to stop iteration
  5026  }
  5027  
  5028  // Next advances the iterator to the subsequent event, returning whether there
  5029  // are any more events found. In case of a retrieval or parsing error, false is
  5030  // returned and Error() can be queried for the exact failure.
  5031  func (it *ERC721MetadataApprovalForAllIterator) Next() bool {
  5032  	// If the iterator failed, stop iterating
  5033  	if it.fail != nil {
  5034  		return false
  5035  	}
  5036  	// If the iterator completed, deliver directly whatever's available
  5037  	if it.done {
  5038  		select {
  5039  		case log := <-it.logs:
  5040  			it.Event = new(ERC721MetadataApprovalForAll)
  5041  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5042  				it.fail = err
  5043  				return false
  5044  			}
  5045  			it.Event.Raw = log
  5046  			return true
  5047  
  5048  		default:
  5049  			return false
  5050  		}
  5051  	}
  5052  	// Iterator still in progress, wait for either a data or an error event
  5053  	select {
  5054  	case log := <-it.logs:
  5055  		it.Event = new(ERC721MetadataApprovalForAll)
  5056  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5057  			it.fail = err
  5058  			return false
  5059  		}
  5060  		it.Event.Raw = log
  5061  		return true
  5062  
  5063  	case err := <-it.sub.Err():
  5064  		it.done = true
  5065  		it.fail = err
  5066  		return it.Next()
  5067  	}
  5068  }
  5069  
  5070  // Error returns any retrieval or parsing error occurred during filtering.
  5071  func (it *ERC721MetadataApprovalForAllIterator) Error() error {
  5072  	return it.fail
  5073  }
  5074  
  5075  // Close terminates the iteration process, releasing any pending underlying
  5076  // resources.
  5077  func (it *ERC721MetadataApprovalForAllIterator) Close() error {
  5078  	it.sub.Unsubscribe()
  5079  	return nil
  5080  }
  5081  
  5082  // ERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the ERC721Metadata contract.
  5083  type ERC721MetadataApprovalForAll struct {
  5084  	Owner    common.Address
  5085  	Operator common.Address
  5086  	Approved bool
  5087  	Raw      types.Log // Blockchain specific contextual infos
  5088  }
  5089  
  5090  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5091  //
  5092  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5093  func (_ERC721Metadata *ERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataApprovalForAllIterator, error) {
  5094  
  5095  	var ownerRule []interface{}
  5096  	for _, ownerItem := range owner {
  5097  		ownerRule = append(ownerRule, ownerItem)
  5098  	}
  5099  	var operatorRule []interface{}
  5100  	for _, operatorItem := range operator {
  5101  		operatorRule = append(operatorRule, operatorItem)
  5102  	}
  5103  
  5104  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5105  	if err != nil {
  5106  		return nil, err
  5107  	}
  5108  	return &ERC721MetadataApprovalForAllIterator{contract: _ERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  5109  }
  5110  
  5111  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5112  //
  5113  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5114  func (_ERC721Metadata *ERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  5115  
  5116  	var ownerRule []interface{}
  5117  	for _, ownerItem := range owner {
  5118  		ownerRule = append(ownerRule, ownerItem)
  5119  	}
  5120  	var operatorRule []interface{}
  5121  	for _, operatorItem := range operator {
  5122  		operatorRule = append(operatorRule, operatorItem)
  5123  	}
  5124  
  5125  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  5126  	if err != nil {
  5127  		return nil, err
  5128  	}
  5129  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5130  		defer sub.Unsubscribe()
  5131  		for {
  5132  			select {
  5133  			case log := <-logs:
  5134  				// New log arrived, parse the event and forward to the user
  5135  				event := new(ERC721MetadataApprovalForAll)
  5136  				if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5137  					return err
  5138  				}
  5139  				event.Raw = log
  5140  
  5141  				select {
  5142  				case sink <- event:
  5143  				case err := <-sub.Err():
  5144  					return err
  5145  				case <-quit:
  5146  					return nil
  5147  				}
  5148  			case err := <-sub.Err():
  5149  				return err
  5150  			case <-quit:
  5151  				return nil
  5152  			}
  5153  		}
  5154  	}), nil
  5155  }
  5156  
  5157  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  5158  //
  5159  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  5160  func (_ERC721Metadata *ERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataApprovalForAll, error) {
  5161  	event := new(ERC721MetadataApprovalForAll)
  5162  	if err := _ERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  5163  		return nil, err
  5164  	}
  5165  	return event, nil
  5166  }
  5167  
  5168  // ERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721Metadata contract.
  5169  type ERC721MetadataTransferIterator struct {
  5170  	Event *ERC721MetadataTransfer // Event containing the contract specifics and raw log
  5171  
  5172  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5173  	event    string              // Event name to use for unpacking event data
  5174  
  5175  	logs chan types.Log      // Log channel receiving the found contract events
  5176  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5177  	done bool                // Whether the subscription completed delivering logs
  5178  	fail error               // Occurred error to stop iteration
  5179  }
  5180  
  5181  // Next advances the iterator to the subsequent event, returning whether there
  5182  // are any more events found. In case of a retrieval or parsing error, false is
  5183  // returned and Error() can be queried for the exact failure.
  5184  func (it *ERC721MetadataTransferIterator) Next() bool {
  5185  	// If the iterator failed, stop iterating
  5186  	if it.fail != nil {
  5187  		return false
  5188  	}
  5189  	// If the iterator completed, deliver directly whatever's available
  5190  	if it.done {
  5191  		select {
  5192  		case log := <-it.logs:
  5193  			it.Event = new(ERC721MetadataTransfer)
  5194  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5195  				it.fail = err
  5196  				return false
  5197  			}
  5198  			it.Event.Raw = log
  5199  			return true
  5200  
  5201  		default:
  5202  			return false
  5203  		}
  5204  	}
  5205  	// Iterator still in progress, wait for either a data or an error event
  5206  	select {
  5207  	case log := <-it.logs:
  5208  		it.Event = new(ERC721MetadataTransfer)
  5209  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5210  			it.fail = err
  5211  			return false
  5212  		}
  5213  		it.Event.Raw = log
  5214  		return true
  5215  
  5216  	case err := <-it.sub.Err():
  5217  		it.done = true
  5218  		it.fail = err
  5219  		return it.Next()
  5220  	}
  5221  }
  5222  
  5223  // Error returns any retrieval or parsing error occurred during filtering.
  5224  func (it *ERC721MetadataTransferIterator) Error() error {
  5225  	return it.fail
  5226  }
  5227  
  5228  // Close terminates the iteration process, releasing any pending underlying
  5229  // resources.
  5230  func (it *ERC721MetadataTransferIterator) Close() error {
  5231  	it.sub.Unsubscribe()
  5232  	return nil
  5233  }
  5234  
  5235  // ERC721MetadataTransfer represents a Transfer event raised by the ERC721Metadata contract.
  5236  type ERC721MetadataTransfer struct {
  5237  	From    common.Address
  5238  	To      common.Address
  5239  	TokenId *big.Int
  5240  	Raw     types.Log // Blockchain specific contextual infos
  5241  }
  5242  
  5243  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5244  //
  5245  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5246  func (_ERC721Metadata *ERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataTransferIterator, error) {
  5247  
  5248  	var fromRule []interface{}
  5249  	for _, fromItem := range from {
  5250  		fromRule = append(fromRule, fromItem)
  5251  	}
  5252  	var toRule []interface{}
  5253  	for _, toItem := range to {
  5254  		toRule = append(toRule, toItem)
  5255  	}
  5256  	var tokenIdRule []interface{}
  5257  	for _, tokenIdItem := range tokenId {
  5258  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5259  	}
  5260  
  5261  	logs, sub, err := _ERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5262  	if err != nil {
  5263  		return nil, err
  5264  	}
  5265  	return &ERC721MetadataTransferIterator{contract: _ERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
  5266  }
  5267  
  5268  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5269  //
  5270  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5271  func (_ERC721Metadata *ERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  5272  
  5273  	var fromRule []interface{}
  5274  	for _, fromItem := range from {
  5275  		fromRule = append(fromRule, fromItem)
  5276  	}
  5277  	var toRule []interface{}
  5278  	for _, toItem := range to {
  5279  		toRule = append(toRule, toItem)
  5280  	}
  5281  	var tokenIdRule []interface{}
  5282  	for _, tokenIdItem := range tokenId {
  5283  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5284  	}
  5285  
  5286  	logs, sub, err := _ERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  5287  	if err != nil {
  5288  		return nil, err
  5289  	}
  5290  	return event.NewSubscription(func(quit <-chan struct{}) error {
  5291  		defer sub.Unsubscribe()
  5292  		for {
  5293  			select {
  5294  			case log := <-logs:
  5295  				// New log arrived, parse the event and forward to the user
  5296  				event := new(ERC721MetadataTransfer)
  5297  				if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5298  					return err
  5299  				}
  5300  				event.Raw = log
  5301  
  5302  				select {
  5303  				case sink <- event:
  5304  				case err := <-sub.Err():
  5305  					return err
  5306  				case <-quit:
  5307  					return nil
  5308  				}
  5309  			case err := <-sub.Err():
  5310  				return err
  5311  			case <-quit:
  5312  				return nil
  5313  			}
  5314  		}
  5315  	}), nil
  5316  }
  5317  
  5318  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  5319  //
  5320  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  5321  func (_ERC721Metadata *ERC721MetadataFilterer) ParseTransfer(log types.Log) (*ERC721MetadataTransfer, error) {
  5322  	event := new(ERC721MetadataTransfer)
  5323  	if err := _ERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
  5324  		return nil, err
  5325  	}
  5326  	return event, nil
  5327  }
  5328  
  5329  // ERC721MetadataMintableABI is the input ABI used to generate the binding from.
  5330  const ERC721MetadataMintableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  5331  
  5332  // ERC721MetadataMintableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  5333  const ERC721MetadataMintableBinRuntime = ``
  5334  
  5335  // ERC721MetadataMintableFuncSigs maps the 4-byte function signature to its string representation.
  5336  var ERC721MetadataMintableFuncSigs = map[string]string{
  5337  	"983b2d56": "addMinter(address)",
  5338  	"095ea7b3": "approve(address,uint256)",
  5339  	"70a08231": "balanceOf(address)",
  5340  	"081812fc": "getApproved(uint256)",
  5341  	"e985e9c5": "isApprovedForAll(address,address)",
  5342  	"aa271e1a": "isMinter(address)",
  5343  	"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
  5344  	"06fdde03": "name()",
  5345  	"6352211e": "ownerOf(uint256)",
  5346  	"98650275": "renounceMinter()",
  5347  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  5348  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  5349  	"a22cb465": "setApprovalForAll(address,bool)",
  5350  	"01ffc9a7": "supportsInterface(bytes4)",
  5351  	"95d89b41": "symbol()",
  5352  	"c87b56dd": "tokenURI(uint256)",
  5353  	"23b872dd": "transferFrom(address,address,uint256)",
  5354  }
  5355  
  5356  // ERC721MetadataMintable is an auto generated Go binding around a Klaytn contract.
  5357  type ERC721MetadataMintable struct {
  5358  	ERC721MetadataMintableCaller     // Read-only binding to the contract
  5359  	ERC721MetadataMintableTransactor // Write-only binding to the contract
  5360  	ERC721MetadataMintableFilterer   // Log filterer for contract events
  5361  }
  5362  
  5363  // ERC721MetadataMintableCaller is an auto generated read-only Go binding around a Klaytn contract.
  5364  type ERC721MetadataMintableCaller struct {
  5365  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5366  }
  5367  
  5368  // ERC721MetadataMintableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  5369  type ERC721MetadataMintableTransactor struct {
  5370  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5371  }
  5372  
  5373  // ERC721MetadataMintableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  5374  type ERC721MetadataMintableFilterer struct {
  5375  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  5376  }
  5377  
  5378  // ERC721MetadataMintableSession is an auto generated Go binding around a Klaytn contract,
  5379  // with pre-set call and transact options.
  5380  type ERC721MetadataMintableSession struct {
  5381  	Contract     *ERC721MetadataMintable // Generic contract binding to set the session for
  5382  	CallOpts     bind.CallOpts           // Call options to use throughout this session
  5383  	TransactOpts bind.TransactOpts       // Transaction auth options to use throughout this session
  5384  }
  5385  
  5386  // ERC721MetadataMintableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  5387  // with pre-set call options.
  5388  type ERC721MetadataMintableCallerSession struct {
  5389  	Contract *ERC721MetadataMintableCaller // Generic contract caller binding to set the session for
  5390  	CallOpts bind.CallOpts                 // Call options to use throughout this session
  5391  }
  5392  
  5393  // ERC721MetadataMintableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  5394  // with pre-set transact options.
  5395  type ERC721MetadataMintableTransactorSession struct {
  5396  	Contract     *ERC721MetadataMintableTransactor // Generic contract transactor binding to set the session for
  5397  	TransactOpts bind.TransactOpts                 // Transaction auth options to use throughout this session
  5398  }
  5399  
  5400  // ERC721MetadataMintableRaw is an auto generated low-level Go binding around a Klaytn contract.
  5401  type ERC721MetadataMintableRaw struct {
  5402  	Contract *ERC721MetadataMintable // Generic contract binding to access the raw methods on
  5403  }
  5404  
  5405  // ERC721MetadataMintableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  5406  type ERC721MetadataMintableCallerRaw struct {
  5407  	Contract *ERC721MetadataMintableCaller // Generic read-only contract binding to access the raw methods on
  5408  }
  5409  
  5410  // ERC721MetadataMintableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  5411  type ERC721MetadataMintableTransactorRaw struct {
  5412  	Contract *ERC721MetadataMintableTransactor // Generic write-only contract binding to access the raw methods on
  5413  }
  5414  
  5415  // NewERC721MetadataMintable creates a new instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5416  func NewERC721MetadataMintable(address common.Address, backend bind.ContractBackend) (*ERC721MetadataMintable, error) {
  5417  	contract, err := bindERC721MetadataMintable(address, backend, backend, backend)
  5418  	if err != nil {
  5419  		return nil, err
  5420  	}
  5421  	return &ERC721MetadataMintable{ERC721MetadataMintableCaller: ERC721MetadataMintableCaller{contract: contract}, ERC721MetadataMintableTransactor: ERC721MetadataMintableTransactor{contract: contract}, ERC721MetadataMintableFilterer: ERC721MetadataMintableFilterer{contract: contract}}, nil
  5422  }
  5423  
  5424  // NewERC721MetadataMintableCaller creates a new read-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5425  func NewERC721MetadataMintableCaller(address common.Address, caller bind.ContractCaller) (*ERC721MetadataMintableCaller, error) {
  5426  	contract, err := bindERC721MetadataMintable(address, caller, nil, nil)
  5427  	if err != nil {
  5428  		return nil, err
  5429  	}
  5430  	return &ERC721MetadataMintableCaller{contract: contract}, nil
  5431  }
  5432  
  5433  // NewERC721MetadataMintableTransactor creates a new write-only instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5434  func NewERC721MetadataMintableTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721MetadataMintableTransactor, error) {
  5435  	contract, err := bindERC721MetadataMintable(address, nil, transactor, nil)
  5436  	if err != nil {
  5437  		return nil, err
  5438  	}
  5439  	return &ERC721MetadataMintableTransactor{contract: contract}, nil
  5440  }
  5441  
  5442  // NewERC721MetadataMintableFilterer creates a new log filterer instance of ERC721MetadataMintable, bound to a specific deployed contract.
  5443  func NewERC721MetadataMintableFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721MetadataMintableFilterer, error) {
  5444  	contract, err := bindERC721MetadataMintable(address, nil, nil, filterer)
  5445  	if err != nil {
  5446  		return nil, err
  5447  	}
  5448  	return &ERC721MetadataMintableFilterer{contract: contract}, nil
  5449  }
  5450  
  5451  // bindERC721MetadataMintable binds a generic wrapper to an already deployed contract.
  5452  func bindERC721MetadataMintable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  5453  	parsed, err := abi.JSON(strings.NewReader(ERC721MetadataMintableABI))
  5454  	if err != nil {
  5455  		return nil, err
  5456  	}
  5457  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  5458  }
  5459  
  5460  // Call invokes the (constant) contract method with params as input values and
  5461  // sets the output to result. The result type might be a single field for simple
  5462  // returns, a slice of interfaces for anonymous returns and a struct for named
  5463  // returns.
  5464  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5465  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableCaller.contract.Call(opts, result, method, params...)
  5466  }
  5467  
  5468  // Transfer initiates a plain transaction to move funds to the contract, calling
  5469  // its default method if one is available.
  5470  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5471  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transfer(opts)
  5472  }
  5473  
  5474  // Transact invokes the (paid) contract method with params as input values.
  5475  func (_ERC721MetadataMintable *ERC721MetadataMintableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5476  	return _ERC721MetadataMintable.Contract.ERC721MetadataMintableTransactor.contract.Transact(opts, method, params...)
  5477  }
  5478  
  5479  // Call invokes the (constant) contract method with params as input values and
  5480  // sets the output to result. The result type might be a single field for simple
  5481  // returns, a slice of interfaces for anonymous returns and a struct for named
  5482  // returns.
  5483  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  5484  	return _ERC721MetadataMintable.Contract.contract.Call(opts, result, method, params...)
  5485  }
  5486  
  5487  // Transfer initiates a plain transaction to move funds to the contract, calling
  5488  // its default method if one is available.
  5489  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  5490  	return _ERC721MetadataMintable.Contract.contract.Transfer(opts)
  5491  }
  5492  
  5493  // Transact invokes the (paid) contract method with params as input values.
  5494  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  5495  	return _ERC721MetadataMintable.Contract.contract.Transact(opts, method, params...)
  5496  }
  5497  
  5498  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5499  //
  5500  // Solidity: function balanceOf(address owner) view returns(uint256)
  5501  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  5502  	var (
  5503  		ret0 = new(*big.Int)
  5504  	)
  5505  	out := ret0
  5506  	err := _ERC721MetadataMintable.contract.Call(opts, out, "balanceOf", owner)
  5507  	return *ret0, err
  5508  }
  5509  
  5510  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5511  //
  5512  // Solidity: function balanceOf(address owner) view returns(uint256)
  5513  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  5514  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
  5515  }
  5516  
  5517  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  5518  //
  5519  // Solidity: function balanceOf(address owner) view returns(uint256)
  5520  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  5521  	return _ERC721MetadataMintable.Contract.BalanceOf(&_ERC721MetadataMintable.CallOpts, owner)
  5522  }
  5523  
  5524  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5525  //
  5526  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5527  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5528  	var (
  5529  		ret0 = new(common.Address)
  5530  	)
  5531  	out := ret0
  5532  	err := _ERC721MetadataMintable.contract.Call(opts, out, "getApproved", tokenId)
  5533  	return *ret0, err
  5534  }
  5535  
  5536  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5537  //
  5538  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5539  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  5540  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
  5541  }
  5542  
  5543  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  5544  //
  5545  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  5546  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  5547  	return _ERC721MetadataMintable.Contract.GetApproved(&_ERC721MetadataMintable.CallOpts, tokenId)
  5548  }
  5549  
  5550  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5551  //
  5552  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5553  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  5554  	var (
  5555  		ret0 = new(bool)
  5556  	)
  5557  	out := ret0
  5558  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  5559  	return *ret0, err
  5560  }
  5561  
  5562  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5563  //
  5564  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5565  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5566  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
  5567  }
  5568  
  5569  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  5570  //
  5571  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  5572  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  5573  	return _ERC721MetadataMintable.Contract.IsApprovedForAll(&_ERC721MetadataMintable.CallOpts, owner, operator)
  5574  }
  5575  
  5576  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5577  //
  5578  // Solidity: function isMinter(address account) view returns(bool)
  5579  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
  5580  	var (
  5581  		ret0 = new(bool)
  5582  	)
  5583  	out := ret0
  5584  	err := _ERC721MetadataMintable.contract.Call(opts, out, "isMinter", account)
  5585  	return *ret0, err
  5586  }
  5587  
  5588  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5589  //
  5590  // Solidity: function isMinter(address account) view returns(bool)
  5591  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) IsMinter(account common.Address) (bool, error) {
  5592  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
  5593  }
  5594  
  5595  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
  5596  //
  5597  // Solidity: function isMinter(address account) view returns(bool)
  5598  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) IsMinter(account common.Address) (bool, error) {
  5599  	return _ERC721MetadataMintable.Contract.IsMinter(&_ERC721MetadataMintable.CallOpts, account)
  5600  }
  5601  
  5602  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5603  //
  5604  // Solidity: function name() view returns(string)
  5605  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Name(opts *bind.CallOpts) (string, error) {
  5606  	var (
  5607  		ret0 = new(string)
  5608  	)
  5609  	out := ret0
  5610  	err := _ERC721MetadataMintable.contract.Call(opts, out, "name")
  5611  	return *ret0, err
  5612  }
  5613  
  5614  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5615  //
  5616  // Solidity: function name() view returns(string)
  5617  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Name() (string, error) {
  5618  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
  5619  }
  5620  
  5621  // Name is a free data retrieval call binding the contract method 0x06fdde03.
  5622  //
  5623  // Solidity: function name() view returns(string)
  5624  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Name() (string, error) {
  5625  	return _ERC721MetadataMintable.Contract.Name(&_ERC721MetadataMintable.CallOpts)
  5626  }
  5627  
  5628  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5629  //
  5630  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5631  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  5632  	var (
  5633  		ret0 = new(common.Address)
  5634  	)
  5635  	out := ret0
  5636  	err := _ERC721MetadataMintable.contract.Call(opts, out, "ownerOf", tokenId)
  5637  	return *ret0, err
  5638  }
  5639  
  5640  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5641  //
  5642  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5643  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5644  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
  5645  }
  5646  
  5647  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  5648  //
  5649  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  5650  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  5651  	return _ERC721MetadataMintable.Contract.OwnerOf(&_ERC721MetadataMintable.CallOpts, tokenId)
  5652  }
  5653  
  5654  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5655  //
  5656  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5657  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  5658  	var (
  5659  		ret0 = new(bool)
  5660  	)
  5661  	out := ret0
  5662  	err := _ERC721MetadataMintable.contract.Call(opts, out, "supportsInterface", interfaceId)
  5663  	return *ret0, err
  5664  }
  5665  
  5666  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5667  //
  5668  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5669  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5670  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
  5671  }
  5672  
  5673  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  5674  //
  5675  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  5676  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  5677  	return _ERC721MetadataMintable.Contract.SupportsInterface(&_ERC721MetadataMintable.CallOpts, interfaceId)
  5678  }
  5679  
  5680  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5681  //
  5682  // Solidity: function symbol() view returns(string)
  5683  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) Symbol(opts *bind.CallOpts) (string, error) {
  5684  	var (
  5685  		ret0 = new(string)
  5686  	)
  5687  	out := ret0
  5688  	err := _ERC721MetadataMintable.contract.Call(opts, out, "symbol")
  5689  	return *ret0, err
  5690  }
  5691  
  5692  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5693  //
  5694  // Solidity: function symbol() view returns(string)
  5695  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Symbol() (string, error) {
  5696  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
  5697  }
  5698  
  5699  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
  5700  //
  5701  // Solidity: function symbol() view returns(string)
  5702  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) Symbol() (string, error) {
  5703  	return _ERC721MetadataMintable.Contract.Symbol(&_ERC721MetadataMintable.CallOpts)
  5704  }
  5705  
  5706  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5707  //
  5708  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5709  func (_ERC721MetadataMintable *ERC721MetadataMintableCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
  5710  	var (
  5711  		ret0 = new(string)
  5712  	)
  5713  	out := ret0
  5714  	err := _ERC721MetadataMintable.contract.Call(opts, out, "tokenURI", tokenId)
  5715  	return *ret0, err
  5716  }
  5717  
  5718  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5719  //
  5720  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5721  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TokenURI(tokenId *big.Int) (string, error) {
  5722  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
  5723  }
  5724  
  5725  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
  5726  //
  5727  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
  5728  func (_ERC721MetadataMintable *ERC721MetadataMintableCallerSession) TokenURI(tokenId *big.Int) (string, error) {
  5729  	return _ERC721MetadataMintable.Contract.TokenURI(&_ERC721MetadataMintable.CallOpts, tokenId)
  5730  }
  5731  
  5732  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  5733  //
  5734  // Solidity: function addMinter(address account) returns()
  5735  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
  5736  	return _ERC721MetadataMintable.contract.Transact(opts, "addMinter", account)
  5737  }
  5738  
  5739  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  5740  //
  5741  // Solidity: function addMinter(address account) returns()
  5742  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) AddMinter(account common.Address) (*types.Transaction, error) {
  5743  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
  5744  }
  5745  
  5746  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
  5747  //
  5748  // Solidity: function addMinter(address account) returns()
  5749  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
  5750  	return _ERC721MetadataMintable.Contract.AddMinter(&_ERC721MetadataMintable.TransactOpts, account)
  5751  }
  5752  
  5753  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5754  //
  5755  // Solidity: function approve(address to, uint256 tokenId) returns()
  5756  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5757  	return _ERC721MetadataMintable.contract.Transact(opts, "approve", to, tokenId)
  5758  }
  5759  
  5760  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5761  //
  5762  // Solidity: function approve(address to, uint256 tokenId) returns()
  5763  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5764  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
  5765  }
  5766  
  5767  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  5768  //
  5769  // Solidity: function approve(address to, uint256 tokenId) returns()
  5770  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5771  	return _ERC721MetadataMintable.Contract.Approve(&_ERC721MetadataMintable.TransactOpts, to, tokenId)
  5772  }
  5773  
  5774  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  5775  //
  5776  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  5777  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  5778  	return _ERC721MetadataMintable.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
  5779  }
  5780  
  5781  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  5782  //
  5783  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  5784  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  5785  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
  5786  }
  5787  
  5788  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
  5789  //
  5790  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
  5791  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
  5792  	return _ERC721MetadataMintable.Contract.MintWithTokenURI(&_ERC721MetadataMintable.TransactOpts, to, tokenId, tokenURI)
  5793  }
  5794  
  5795  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  5796  //
  5797  // Solidity: function renounceMinter() returns()
  5798  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
  5799  	return _ERC721MetadataMintable.contract.Transact(opts, "renounceMinter")
  5800  }
  5801  
  5802  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  5803  //
  5804  // Solidity: function renounceMinter() returns()
  5805  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) RenounceMinter() (*types.Transaction, error) {
  5806  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
  5807  }
  5808  
  5809  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
  5810  //
  5811  // Solidity: function renounceMinter() returns()
  5812  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) RenounceMinter() (*types.Transaction, error) {
  5813  	return _ERC721MetadataMintable.Contract.RenounceMinter(&_ERC721MetadataMintable.TransactOpts)
  5814  }
  5815  
  5816  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5817  //
  5818  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5819  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5820  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  5821  }
  5822  
  5823  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5824  //
  5825  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5826  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5827  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  5828  }
  5829  
  5830  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  5831  //
  5832  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  5833  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5834  	return _ERC721MetadataMintable.Contract.SafeTransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  5835  }
  5836  
  5837  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5838  //
  5839  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5840  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5841  	return _ERC721MetadataMintable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  5842  }
  5843  
  5844  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5845  //
  5846  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5847  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5848  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
  5849  }
  5850  
  5851  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  5852  //
  5853  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  5854  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  5855  	return _ERC721MetadataMintable.Contract.SafeTransferFrom0(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId, _data)
  5856  }
  5857  
  5858  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5859  //
  5860  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5861  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  5862  	return _ERC721MetadataMintable.contract.Transact(opts, "setApprovalForAll", to, approved)
  5863  }
  5864  
  5865  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5866  //
  5867  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5868  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  5869  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
  5870  }
  5871  
  5872  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  5873  //
  5874  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  5875  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  5876  	return _ERC721MetadataMintable.Contract.SetApprovalForAll(&_ERC721MetadataMintable.TransactOpts, to, approved)
  5877  }
  5878  
  5879  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5880  //
  5881  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5882  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5883  	return _ERC721MetadataMintable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  5884  }
  5885  
  5886  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5887  //
  5888  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5889  func (_ERC721MetadataMintable *ERC721MetadataMintableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5890  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  5891  }
  5892  
  5893  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  5894  //
  5895  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  5896  func (_ERC721MetadataMintable *ERC721MetadataMintableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  5897  	return _ERC721MetadataMintable.Contract.TransferFrom(&_ERC721MetadataMintable.TransactOpts, from, to, tokenId)
  5898  }
  5899  
  5900  // ERC721MetadataMintableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721MetadataMintable contract.
  5901  type ERC721MetadataMintableApprovalIterator struct {
  5902  	Event *ERC721MetadataMintableApproval // Event containing the contract specifics and raw log
  5903  
  5904  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  5905  	event    string              // Event name to use for unpacking event data
  5906  
  5907  	logs chan types.Log      // Log channel receiving the found contract events
  5908  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  5909  	done bool                // Whether the subscription completed delivering logs
  5910  	fail error               // Occurred error to stop iteration
  5911  }
  5912  
  5913  // Next advances the iterator to the subsequent event, returning whether there
  5914  // are any more events found. In case of a retrieval or parsing error, false is
  5915  // returned and Error() can be queried for the exact failure.
  5916  func (it *ERC721MetadataMintableApprovalIterator) Next() bool {
  5917  	// If the iterator failed, stop iterating
  5918  	if it.fail != nil {
  5919  		return false
  5920  	}
  5921  	// If the iterator completed, deliver directly whatever's available
  5922  	if it.done {
  5923  		select {
  5924  		case log := <-it.logs:
  5925  			it.Event = new(ERC721MetadataMintableApproval)
  5926  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5927  				it.fail = err
  5928  				return false
  5929  			}
  5930  			it.Event.Raw = log
  5931  			return true
  5932  
  5933  		default:
  5934  			return false
  5935  		}
  5936  	}
  5937  	// Iterator still in progress, wait for either a data or an error event
  5938  	select {
  5939  	case log := <-it.logs:
  5940  		it.Event = new(ERC721MetadataMintableApproval)
  5941  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  5942  			it.fail = err
  5943  			return false
  5944  		}
  5945  		it.Event.Raw = log
  5946  		return true
  5947  
  5948  	case err := <-it.sub.Err():
  5949  		it.done = true
  5950  		it.fail = err
  5951  		return it.Next()
  5952  	}
  5953  }
  5954  
  5955  // Error returns any retrieval or parsing error occurred during filtering.
  5956  func (it *ERC721MetadataMintableApprovalIterator) Error() error {
  5957  	return it.fail
  5958  }
  5959  
  5960  // Close terminates the iteration process, releasing any pending underlying
  5961  // resources.
  5962  func (it *ERC721MetadataMintableApprovalIterator) Close() error {
  5963  	it.sub.Unsubscribe()
  5964  	return nil
  5965  }
  5966  
  5967  // ERC721MetadataMintableApproval represents a Approval event raised by the ERC721MetadataMintable contract.
  5968  type ERC721MetadataMintableApproval struct {
  5969  	Owner    common.Address
  5970  	Approved common.Address
  5971  	TokenId  *big.Int
  5972  	Raw      types.Log // Blockchain specific contextual infos
  5973  }
  5974  
  5975  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  5976  //
  5977  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  5978  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableApprovalIterator, error) {
  5979  
  5980  	var ownerRule []interface{}
  5981  	for _, ownerItem := range owner {
  5982  		ownerRule = append(ownerRule, ownerItem)
  5983  	}
  5984  	var approvedRule []interface{}
  5985  	for _, approvedItem := range approved {
  5986  		approvedRule = append(approvedRule, approvedItem)
  5987  	}
  5988  	var tokenIdRule []interface{}
  5989  	for _, tokenIdItem := range tokenId {
  5990  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  5991  	}
  5992  
  5993  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  5994  	if err != nil {
  5995  		return nil, err
  5996  	}
  5997  	return &ERC721MetadataMintableApprovalIterator{contract: _ERC721MetadataMintable.contract, event: "Approval", logs: logs, sub: sub}, nil
  5998  }
  5999  
  6000  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6001  //
  6002  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  6003  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  6004  
  6005  	var ownerRule []interface{}
  6006  	for _, ownerItem := range owner {
  6007  		ownerRule = append(ownerRule, ownerItem)
  6008  	}
  6009  	var approvedRule []interface{}
  6010  	for _, approvedItem := range approved {
  6011  		approvedRule = append(approvedRule, approvedItem)
  6012  	}
  6013  	var tokenIdRule []interface{}
  6014  	for _, tokenIdItem := range tokenId {
  6015  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6016  	}
  6017  
  6018  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  6019  	if err != nil {
  6020  		return nil, err
  6021  	}
  6022  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6023  		defer sub.Unsubscribe()
  6024  		for {
  6025  			select {
  6026  			case log := <-logs:
  6027  				// New log arrived, parse the event and forward to the user
  6028  				event := new(ERC721MetadataMintableApproval)
  6029  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
  6030  					return err
  6031  				}
  6032  				event.Raw = log
  6033  
  6034  				select {
  6035  				case sink <- event:
  6036  				case err := <-sub.Err():
  6037  					return err
  6038  				case <-quit:
  6039  					return nil
  6040  				}
  6041  			case err := <-sub.Err():
  6042  				return err
  6043  			case <-quit:
  6044  				return nil
  6045  			}
  6046  		}
  6047  	}), nil
  6048  }
  6049  
  6050  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  6051  //
  6052  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  6053  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApproval(log types.Log) (*ERC721MetadataMintableApproval, error) {
  6054  	event := new(ERC721MetadataMintableApproval)
  6055  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Approval", log); err != nil {
  6056  		return nil, err
  6057  	}
  6058  	return event, nil
  6059  }
  6060  
  6061  // ERC721MetadataMintableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721MetadataMintable contract.
  6062  type ERC721MetadataMintableApprovalForAllIterator struct {
  6063  	Event *ERC721MetadataMintableApprovalForAll // Event containing the contract specifics and raw log
  6064  
  6065  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6066  	event    string              // Event name to use for unpacking event data
  6067  
  6068  	logs chan types.Log      // Log channel receiving the found contract events
  6069  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6070  	done bool                // Whether the subscription completed delivering logs
  6071  	fail error               // Occurred error to stop iteration
  6072  }
  6073  
  6074  // Next advances the iterator to the subsequent event, returning whether there
  6075  // are any more events found. In case of a retrieval or parsing error, false is
  6076  // returned and Error() can be queried for the exact failure.
  6077  func (it *ERC721MetadataMintableApprovalForAllIterator) Next() bool {
  6078  	// If the iterator failed, stop iterating
  6079  	if it.fail != nil {
  6080  		return false
  6081  	}
  6082  	// If the iterator completed, deliver directly whatever's available
  6083  	if it.done {
  6084  		select {
  6085  		case log := <-it.logs:
  6086  			it.Event = new(ERC721MetadataMintableApprovalForAll)
  6087  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6088  				it.fail = err
  6089  				return false
  6090  			}
  6091  			it.Event.Raw = log
  6092  			return true
  6093  
  6094  		default:
  6095  			return false
  6096  		}
  6097  	}
  6098  	// Iterator still in progress, wait for either a data or an error event
  6099  	select {
  6100  	case log := <-it.logs:
  6101  		it.Event = new(ERC721MetadataMintableApprovalForAll)
  6102  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6103  			it.fail = err
  6104  			return false
  6105  		}
  6106  		it.Event.Raw = log
  6107  		return true
  6108  
  6109  	case err := <-it.sub.Err():
  6110  		it.done = true
  6111  		it.fail = err
  6112  		return it.Next()
  6113  	}
  6114  }
  6115  
  6116  // Error returns any retrieval or parsing error occurred during filtering.
  6117  func (it *ERC721MetadataMintableApprovalForAllIterator) Error() error {
  6118  	return it.fail
  6119  }
  6120  
  6121  // Close terminates the iteration process, releasing any pending underlying
  6122  // resources.
  6123  func (it *ERC721MetadataMintableApprovalForAllIterator) Close() error {
  6124  	it.sub.Unsubscribe()
  6125  	return nil
  6126  }
  6127  
  6128  // ERC721MetadataMintableApprovalForAll represents a ApprovalForAll event raised by the ERC721MetadataMintable contract.
  6129  type ERC721MetadataMintableApprovalForAll struct {
  6130  	Owner    common.Address
  6131  	Operator common.Address
  6132  	Approved bool
  6133  	Raw      types.Log // Blockchain specific contextual infos
  6134  }
  6135  
  6136  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6137  //
  6138  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6139  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721MetadataMintableApprovalForAllIterator, error) {
  6140  
  6141  	var ownerRule []interface{}
  6142  	for _, ownerItem := range owner {
  6143  		ownerRule = append(ownerRule, ownerItem)
  6144  	}
  6145  	var operatorRule []interface{}
  6146  	for _, operatorItem := range operator {
  6147  		operatorRule = append(operatorRule, operatorItem)
  6148  	}
  6149  
  6150  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  6151  	if err != nil {
  6152  		return nil, err
  6153  	}
  6154  	return &ERC721MetadataMintableApprovalForAllIterator{contract: _ERC721MetadataMintable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  6155  }
  6156  
  6157  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6158  //
  6159  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6160  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  6161  
  6162  	var ownerRule []interface{}
  6163  	for _, ownerItem := range owner {
  6164  		ownerRule = append(ownerRule, ownerItem)
  6165  	}
  6166  	var operatorRule []interface{}
  6167  	for _, operatorItem := range operator {
  6168  		operatorRule = append(operatorRule, operatorItem)
  6169  	}
  6170  
  6171  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  6172  	if err != nil {
  6173  		return nil, err
  6174  	}
  6175  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6176  		defer sub.Unsubscribe()
  6177  		for {
  6178  			select {
  6179  			case log := <-logs:
  6180  				// New log arrived, parse the event and forward to the user
  6181  				event := new(ERC721MetadataMintableApprovalForAll)
  6182  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  6183  					return err
  6184  				}
  6185  				event.Raw = log
  6186  
  6187  				select {
  6188  				case sink <- event:
  6189  				case err := <-sub.Err():
  6190  					return err
  6191  				case <-quit:
  6192  					return nil
  6193  				}
  6194  			case err := <-sub.Err():
  6195  				return err
  6196  			case <-quit:
  6197  				return nil
  6198  			}
  6199  		}
  6200  	}), nil
  6201  }
  6202  
  6203  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  6204  //
  6205  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  6206  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseApprovalForAll(log types.Log) (*ERC721MetadataMintableApprovalForAll, error) {
  6207  	event := new(ERC721MetadataMintableApprovalForAll)
  6208  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  6209  		return nil, err
  6210  	}
  6211  	return event, nil
  6212  }
  6213  
  6214  // ERC721MetadataMintableMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ERC721MetadataMintable contract.
  6215  type ERC721MetadataMintableMinterAddedIterator struct {
  6216  	Event *ERC721MetadataMintableMinterAdded // Event containing the contract specifics and raw log
  6217  
  6218  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6219  	event    string              // Event name to use for unpacking event data
  6220  
  6221  	logs chan types.Log      // Log channel receiving the found contract events
  6222  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6223  	done bool                // Whether the subscription completed delivering logs
  6224  	fail error               // Occurred error to stop iteration
  6225  }
  6226  
  6227  // Next advances the iterator to the subsequent event, returning whether there
  6228  // are any more events found. In case of a retrieval or parsing error, false is
  6229  // returned and Error() can be queried for the exact failure.
  6230  func (it *ERC721MetadataMintableMinterAddedIterator) Next() bool {
  6231  	// If the iterator failed, stop iterating
  6232  	if it.fail != nil {
  6233  		return false
  6234  	}
  6235  	// If the iterator completed, deliver directly whatever's available
  6236  	if it.done {
  6237  		select {
  6238  		case log := <-it.logs:
  6239  			it.Event = new(ERC721MetadataMintableMinterAdded)
  6240  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6241  				it.fail = err
  6242  				return false
  6243  			}
  6244  			it.Event.Raw = log
  6245  			return true
  6246  
  6247  		default:
  6248  			return false
  6249  		}
  6250  	}
  6251  	// Iterator still in progress, wait for either a data or an error event
  6252  	select {
  6253  	case log := <-it.logs:
  6254  		it.Event = new(ERC721MetadataMintableMinterAdded)
  6255  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6256  			it.fail = err
  6257  			return false
  6258  		}
  6259  		it.Event.Raw = log
  6260  		return true
  6261  
  6262  	case err := <-it.sub.Err():
  6263  		it.done = true
  6264  		it.fail = err
  6265  		return it.Next()
  6266  	}
  6267  }
  6268  
  6269  // Error returns any retrieval or parsing error occurred during filtering.
  6270  func (it *ERC721MetadataMintableMinterAddedIterator) Error() error {
  6271  	return it.fail
  6272  }
  6273  
  6274  // Close terminates the iteration process, releasing any pending underlying
  6275  // resources.
  6276  func (it *ERC721MetadataMintableMinterAddedIterator) Close() error {
  6277  	it.sub.Unsubscribe()
  6278  	return nil
  6279  }
  6280  
  6281  // ERC721MetadataMintableMinterAdded represents a MinterAdded event raised by the ERC721MetadataMintable contract.
  6282  type ERC721MetadataMintableMinterAdded struct {
  6283  	Account common.Address
  6284  	Raw     types.Log // Blockchain specific contextual infos
  6285  }
  6286  
  6287  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6288  //
  6289  // Solidity: event MinterAdded(address indexed account)
  6290  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterAddedIterator, error) {
  6291  
  6292  	var accountRule []interface{}
  6293  	for _, accountItem := range account {
  6294  		accountRule = append(accountRule, accountItem)
  6295  	}
  6296  
  6297  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterAdded", accountRule)
  6298  	if err != nil {
  6299  		return nil, err
  6300  	}
  6301  	return &ERC721MetadataMintableMinterAddedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
  6302  }
  6303  
  6304  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6305  //
  6306  // Solidity: event MinterAdded(address indexed account)
  6307  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterAdded, account []common.Address) (event.Subscription, error) {
  6308  
  6309  	var accountRule []interface{}
  6310  	for _, accountItem := range account {
  6311  		accountRule = append(accountRule, accountItem)
  6312  	}
  6313  
  6314  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterAdded", accountRule)
  6315  	if err != nil {
  6316  		return nil, err
  6317  	}
  6318  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6319  		defer sub.Unsubscribe()
  6320  		for {
  6321  			select {
  6322  			case log := <-logs:
  6323  				// New log arrived, parse the event and forward to the user
  6324  				event := new(ERC721MetadataMintableMinterAdded)
  6325  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6326  					return err
  6327  				}
  6328  				event.Raw = log
  6329  
  6330  				select {
  6331  				case sink <- event:
  6332  				case err := <-sub.Err():
  6333  					return err
  6334  				case <-quit:
  6335  					return nil
  6336  				}
  6337  			case err := <-sub.Err():
  6338  				return err
  6339  			case <-quit:
  6340  				return nil
  6341  			}
  6342  		}
  6343  	}), nil
  6344  }
  6345  
  6346  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
  6347  //
  6348  // Solidity: event MinterAdded(address indexed account)
  6349  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterAdded(log types.Log) (*ERC721MetadataMintableMinterAdded, error) {
  6350  	event := new(ERC721MetadataMintableMinterAdded)
  6351  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterAdded", log); err != nil {
  6352  		return nil, err
  6353  	}
  6354  	return event, nil
  6355  }
  6356  
  6357  // ERC721MetadataMintableMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ERC721MetadataMintable contract.
  6358  type ERC721MetadataMintableMinterRemovedIterator struct {
  6359  	Event *ERC721MetadataMintableMinterRemoved // Event containing the contract specifics and raw log
  6360  
  6361  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6362  	event    string              // Event name to use for unpacking event data
  6363  
  6364  	logs chan types.Log      // Log channel receiving the found contract events
  6365  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6366  	done bool                // Whether the subscription completed delivering logs
  6367  	fail error               // Occurred error to stop iteration
  6368  }
  6369  
  6370  // Next advances the iterator to the subsequent event, returning whether there
  6371  // are any more events found. In case of a retrieval or parsing error, false is
  6372  // returned and Error() can be queried for the exact failure.
  6373  func (it *ERC721MetadataMintableMinterRemovedIterator) Next() bool {
  6374  	// If the iterator failed, stop iterating
  6375  	if it.fail != nil {
  6376  		return false
  6377  	}
  6378  	// If the iterator completed, deliver directly whatever's available
  6379  	if it.done {
  6380  		select {
  6381  		case log := <-it.logs:
  6382  			it.Event = new(ERC721MetadataMintableMinterRemoved)
  6383  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6384  				it.fail = err
  6385  				return false
  6386  			}
  6387  			it.Event.Raw = log
  6388  			return true
  6389  
  6390  		default:
  6391  			return false
  6392  		}
  6393  	}
  6394  	// Iterator still in progress, wait for either a data or an error event
  6395  	select {
  6396  	case log := <-it.logs:
  6397  		it.Event = new(ERC721MetadataMintableMinterRemoved)
  6398  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6399  			it.fail = err
  6400  			return false
  6401  		}
  6402  		it.Event.Raw = log
  6403  		return true
  6404  
  6405  	case err := <-it.sub.Err():
  6406  		it.done = true
  6407  		it.fail = err
  6408  		return it.Next()
  6409  	}
  6410  }
  6411  
  6412  // Error returns any retrieval or parsing error occurred during filtering.
  6413  func (it *ERC721MetadataMintableMinterRemovedIterator) Error() error {
  6414  	return it.fail
  6415  }
  6416  
  6417  // Close terminates the iteration process, releasing any pending underlying
  6418  // resources.
  6419  func (it *ERC721MetadataMintableMinterRemovedIterator) Close() error {
  6420  	it.sub.Unsubscribe()
  6421  	return nil
  6422  }
  6423  
  6424  // ERC721MetadataMintableMinterRemoved represents a MinterRemoved event raised by the ERC721MetadataMintable contract.
  6425  type ERC721MetadataMintableMinterRemoved struct {
  6426  	Account common.Address
  6427  	Raw     types.Log // Blockchain specific contextual infos
  6428  }
  6429  
  6430  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6431  //
  6432  // Solidity: event MinterRemoved(address indexed account)
  6433  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ERC721MetadataMintableMinterRemovedIterator, error) {
  6434  
  6435  	var accountRule []interface{}
  6436  	for _, accountItem := range account {
  6437  		accountRule = append(accountRule, accountItem)
  6438  	}
  6439  
  6440  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "MinterRemoved", accountRule)
  6441  	if err != nil {
  6442  		return nil, err
  6443  	}
  6444  	return &ERC721MetadataMintableMinterRemovedIterator{contract: _ERC721MetadataMintable.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
  6445  }
  6446  
  6447  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6448  //
  6449  // Solidity: event MinterRemoved(address indexed account)
  6450  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableMinterRemoved, account []common.Address) (event.Subscription, error) {
  6451  
  6452  	var accountRule []interface{}
  6453  	for _, accountItem := range account {
  6454  		accountRule = append(accountRule, accountItem)
  6455  	}
  6456  
  6457  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "MinterRemoved", accountRule)
  6458  	if err != nil {
  6459  		return nil, err
  6460  	}
  6461  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6462  		defer sub.Unsubscribe()
  6463  		for {
  6464  			select {
  6465  			case log := <-logs:
  6466  				// New log arrived, parse the event and forward to the user
  6467  				event := new(ERC721MetadataMintableMinterRemoved)
  6468  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6469  					return err
  6470  				}
  6471  				event.Raw = log
  6472  
  6473  				select {
  6474  				case sink <- event:
  6475  				case err := <-sub.Err():
  6476  					return err
  6477  				case <-quit:
  6478  					return nil
  6479  				}
  6480  			case err := <-sub.Err():
  6481  				return err
  6482  			case <-quit:
  6483  				return nil
  6484  			}
  6485  		}
  6486  	}), nil
  6487  }
  6488  
  6489  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
  6490  //
  6491  // Solidity: event MinterRemoved(address indexed account)
  6492  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseMinterRemoved(log types.Log) (*ERC721MetadataMintableMinterRemoved, error) {
  6493  	event := new(ERC721MetadataMintableMinterRemoved)
  6494  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
  6495  		return nil, err
  6496  	}
  6497  	return event, nil
  6498  }
  6499  
  6500  // ERC721MetadataMintableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721MetadataMintable contract.
  6501  type ERC721MetadataMintableTransferIterator struct {
  6502  	Event *ERC721MetadataMintableTransfer // Event containing the contract specifics and raw log
  6503  
  6504  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  6505  	event    string              // Event name to use for unpacking event data
  6506  
  6507  	logs chan types.Log      // Log channel receiving the found contract events
  6508  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  6509  	done bool                // Whether the subscription completed delivering logs
  6510  	fail error               // Occurred error to stop iteration
  6511  }
  6512  
  6513  // Next advances the iterator to the subsequent event, returning whether there
  6514  // are any more events found. In case of a retrieval or parsing error, false is
  6515  // returned and Error() can be queried for the exact failure.
  6516  func (it *ERC721MetadataMintableTransferIterator) Next() bool {
  6517  	// If the iterator failed, stop iterating
  6518  	if it.fail != nil {
  6519  		return false
  6520  	}
  6521  	// If the iterator completed, deliver directly whatever's available
  6522  	if it.done {
  6523  		select {
  6524  		case log := <-it.logs:
  6525  			it.Event = new(ERC721MetadataMintableTransfer)
  6526  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6527  				it.fail = err
  6528  				return false
  6529  			}
  6530  			it.Event.Raw = log
  6531  			return true
  6532  
  6533  		default:
  6534  			return false
  6535  		}
  6536  	}
  6537  	// Iterator still in progress, wait for either a data or an error event
  6538  	select {
  6539  	case log := <-it.logs:
  6540  		it.Event = new(ERC721MetadataMintableTransfer)
  6541  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  6542  			it.fail = err
  6543  			return false
  6544  		}
  6545  		it.Event.Raw = log
  6546  		return true
  6547  
  6548  	case err := <-it.sub.Err():
  6549  		it.done = true
  6550  		it.fail = err
  6551  		return it.Next()
  6552  	}
  6553  }
  6554  
  6555  // Error returns any retrieval or parsing error occurred during filtering.
  6556  func (it *ERC721MetadataMintableTransferIterator) Error() error {
  6557  	return it.fail
  6558  }
  6559  
  6560  // Close terminates the iteration process, releasing any pending underlying
  6561  // resources.
  6562  func (it *ERC721MetadataMintableTransferIterator) Close() error {
  6563  	it.sub.Unsubscribe()
  6564  	return nil
  6565  }
  6566  
  6567  // ERC721MetadataMintableTransfer represents a Transfer event raised by the ERC721MetadataMintable contract.
  6568  type ERC721MetadataMintableTransfer struct {
  6569  	From    common.Address
  6570  	To      common.Address
  6571  	TokenId *big.Int
  6572  	Raw     types.Log // Blockchain specific contextual infos
  6573  }
  6574  
  6575  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6576  //
  6577  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6578  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721MetadataMintableTransferIterator, error) {
  6579  
  6580  	var fromRule []interface{}
  6581  	for _, fromItem := range from {
  6582  		fromRule = append(fromRule, fromItem)
  6583  	}
  6584  	var toRule []interface{}
  6585  	for _, toItem := range to {
  6586  		toRule = append(toRule, toItem)
  6587  	}
  6588  	var tokenIdRule []interface{}
  6589  	for _, tokenIdItem := range tokenId {
  6590  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6591  	}
  6592  
  6593  	logs, sub, err := _ERC721MetadataMintable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  6594  	if err != nil {
  6595  		return nil, err
  6596  	}
  6597  	return &ERC721MetadataMintableTransferIterator{contract: _ERC721MetadataMintable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  6598  }
  6599  
  6600  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6601  //
  6602  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6603  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721MetadataMintableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  6604  
  6605  	var fromRule []interface{}
  6606  	for _, fromItem := range from {
  6607  		fromRule = append(fromRule, fromItem)
  6608  	}
  6609  	var toRule []interface{}
  6610  	for _, toItem := range to {
  6611  		toRule = append(toRule, toItem)
  6612  	}
  6613  	var tokenIdRule []interface{}
  6614  	for _, tokenIdItem := range tokenId {
  6615  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  6616  	}
  6617  
  6618  	logs, sub, err := _ERC721MetadataMintable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  6619  	if err != nil {
  6620  		return nil, err
  6621  	}
  6622  	return event.NewSubscription(func(quit <-chan struct{}) error {
  6623  		defer sub.Unsubscribe()
  6624  		for {
  6625  			select {
  6626  			case log := <-logs:
  6627  				// New log arrived, parse the event and forward to the user
  6628  				event := new(ERC721MetadataMintableTransfer)
  6629  				if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  6630  					return err
  6631  				}
  6632  				event.Raw = log
  6633  
  6634  				select {
  6635  				case sink <- event:
  6636  				case err := <-sub.Err():
  6637  					return err
  6638  				case <-quit:
  6639  					return nil
  6640  				}
  6641  			case err := <-sub.Err():
  6642  				return err
  6643  			case <-quit:
  6644  				return nil
  6645  			}
  6646  		}
  6647  	}), nil
  6648  }
  6649  
  6650  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  6651  //
  6652  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  6653  func (_ERC721MetadataMintable *ERC721MetadataMintableFilterer) ParseTransfer(log types.Log) (*ERC721MetadataMintableTransfer, error) {
  6654  	event := new(ERC721MetadataMintableTransfer)
  6655  	if err := _ERC721MetadataMintable.contract.UnpackLog(event, "Transfer", log); err != nil {
  6656  		return nil, err
  6657  	}
  6658  	return event, nil
  6659  }
  6660  
  6661  // ERC721ServiceChainABI is the input ABI used to generate the binding from.
  6662  const ERC721ServiceChainABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  6663  
  6664  // ERC721ServiceChainBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  6665  const ERC721ServiceChainBinRuntime = ``
  6666  
  6667  // ERC721ServiceChainFuncSigs maps the 4-byte function signature to its string representation.
  6668  var ERC721ServiceChainFuncSigs = map[string]string{
  6669  	"095ea7b3": "approve(address,uint256)",
  6670  	"70a08231": "balanceOf(address)",
  6671  	"e78cea92": "bridge()",
  6672  	"081812fc": "getApproved(uint256)",
  6673  	"e985e9c5": "isApprovedForAll(address,address)",
  6674  	"8f32d59b": "isOwner()",
  6675  	"8da5cb5b": "owner()",
  6676  	"6352211e": "ownerOf(uint256)",
  6677  	"715018a6": "renounceOwnership()",
  6678  	"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
  6679  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  6680  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  6681  	"a22cb465": "setApprovalForAll(address,bool)",
  6682  	"8dd14802": "setBridge(address)",
  6683  	"01ffc9a7": "supportsInterface(bytes4)",
  6684  	"23b872dd": "transferFrom(address,address,uint256)",
  6685  	"f2fde38b": "transferOwnership(address)",
  6686  }
  6687  
  6688  // ERC721ServiceChain is an auto generated Go binding around a Klaytn contract.
  6689  type ERC721ServiceChain struct {
  6690  	ERC721ServiceChainCaller     // Read-only binding to the contract
  6691  	ERC721ServiceChainTransactor // Write-only binding to the contract
  6692  	ERC721ServiceChainFilterer   // Log filterer for contract events
  6693  }
  6694  
  6695  // ERC721ServiceChainCaller is an auto generated read-only Go binding around a Klaytn contract.
  6696  type ERC721ServiceChainCaller struct {
  6697  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6698  }
  6699  
  6700  // ERC721ServiceChainTransactor is an auto generated write-only Go binding around a Klaytn contract.
  6701  type ERC721ServiceChainTransactor struct {
  6702  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6703  }
  6704  
  6705  // ERC721ServiceChainFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  6706  type ERC721ServiceChainFilterer struct {
  6707  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  6708  }
  6709  
  6710  // ERC721ServiceChainSession is an auto generated Go binding around a Klaytn contract,
  6711  // with pre-set call and transact options.
  6712  type ERC721ServiceChainSession struct {
  6713  	Contract     *ERC721ServiceChain // Generic contract binding to set the session for
  6714  	CallOpts     bind.CallOpts       // Call options to use throughout this session
  6715  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
  6716  }
  6717  
  6718  // ERC721ServiceChainCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  6719  // with pre-set call options.
  6720  type ERC721ServiceChainCallerSession struct {
  6721  	Contract *ERC721ServiceChainCaller // Generic contract caller binding to set the session for
  6722  	CallOpts bind.CallOpts             // Call options to use throughout this session
  6723  }
  6724  
  6725  // ERC721ServiceChainTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  6726  // with pre-set transact options.
  6727  type ERC721ServiceChainTransactorSession struct {
  6728  	Contract     *ERC721ServiceChainTransactor // Generic contract transactor binding to set the session for
  6729  	TransactOpts bind.TransactOpts             // Transaction auth options to use throughout this session
  6730  }
  6731  
  6732  // ERC721ServiceChainRaw is an auto generated low-level Go binding around a Klaytn contract.
  6733  type ERC721ServiceChainRaw struct {
  6734  	Contract *ERC721ServiceChain // Generic contract binding to access the raw methods on
  6735  }
  6736  
  6737  // ERC721ServiceChainCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  6738  type ERC721ServiceChainCallerRaw struct {
  6739  	Contract *ERC721ServiceChainCaller // Generic read-only contract binding to access the raw methods on
  6740  }
  6741  
  6742  // ERC721ServiceChainTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  6743  type ERC721ServiceChainTransactorRaw struct {
  6744  	Contract *ERC721ServiceChainTransactor // Generic write-only contract binding to access the raw methods on
  6745  }
  6746  
  6747  // NewERC721ServiceChain creates a new instance of ERC721ServiceChain, bound to a specific deployed contract.
  6748  func NewERC721ServiceChain(address common.Address, backend bind.ContractBackend) (*ERC721ServiceChain, error) {
  6749  	contract, err := bindERC721ServiceChain(address, backend, backend, backend)
  6750  	if err != nil {
  6751  		return nil, err
  6752  	}
  6753  	return &ERC721ServiceChain{ERC721ServiceChainCaller: ERC721ServiceChainCaller{contract: contract}, ERC721ServiceChainTransactor: ERC721ServiceChainTransactor{contract: contract}, ERC721ServiceChainFilterer: ERC721ServiceChainFilterer{contract: contract}}, nil
  6754  }
  6755  
  6756  // NewERC721ServiceChainCaller creates a new read-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  6757  func NewERC721ServiceChainCaller(address common.Address, caller bind.ContractCaller) (*ERC721ServiceChainCaller, error) {
  6758  	contract, err := bindERC721ServiceChain(address, caller, nil, nil)
  6759  	if err != nil {
  6760  		return nil, err
  6761  	}
  6762  	return &ERC721ServiceChainCaller{contract: contract}, nil
  6763  }
  6764  
  6765  // NewERC721ServiceChainTransactor creates a new write-only instance of ERC721ServiceChain, bound to a specific deployed contract.
  6766  func NewERC721ServiceChainTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC721ServiceChainTransactor, error) {
  6767  	contract, err := bindERC721ServiceChain(address, nil, transactor, nil)
  6768  	if err != nil {
  6769  		return nil, err
  6770  	}
  6771  	return &ERC721ServiceChainTransactor{contract: contract}, nil
  6772  }
  6773  
  6774  // NewERC721ServiceChainFilterer creates a new log filterer instance of ERC721ServiceChain, bound to a specific deployed contract.
  6775  func NewERC721ServiceChainFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC721ServiceChainFilterer, error) {
  6776  	contract, err := bindERC721ServiceChain(address, nil, nil, filterer)
  6777  	if err != nil {
  6778  		return nil, err
  6779  	}
  6780  	return &ERC721ServiceChainFilterer{contract: contract}, nil
  6781  }
  6782  
  6783  // bindERC721ServiceChain binds a generic wrapper to an already deployed contract.
  6784  func bindERC721ServiceChain(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  6785  	parsed, err := abi.JSON(strings.NewReader(ERC721ServiceChainABI))
  6786  	if err != nil {
  6787  		return nil, err
  6788  	}
  6789  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  6790  }
  6791  
  6792  // Call invokes the (constant) contract method with params as input values and
  6793  // sets the output to result. The result type might be a single field for simple
  6794  // returns, a slice of interfaces for anonymous returns and a struct for named
  6795  // returns.
  6796  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6797  	return _ERC721ServiceChain.Contract.ERC721ServiceChainCaller.contract.Call(opts, result, method, params...)
  6798  }
  6799  
  6800  // Transfer initiates a plain transaction to move funds to the contract, calling
  6801  // its default method if one is available.
  6802  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6803  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transfer(opts)
  6804  }
  6805  
  6806  // Transact invokes the (paid) contract method with params as input values.
  6807  func (_ERC721ServiceChain *ERC721ServiceChainRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6808  	return _ERC721ServiceChain.Contract.ERC721ServiceChainTransactor.contract.Transact(opts, method, params...)
  6809  }
  6810  
  6811  // Call invokes the (constant) contract method with params as input values and
  6812  // sets the output to result. The result type might be a single field for simple
  6813  // returns, a slice of interfaces for anonymous returns and a struct for named
  6814  // returns.
  6815  func (_ERC721ServiceChain *ERC721ServiceChainCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  6816  	return _ERC721ServiceChain.Contract.contract.Call(opts, result, method, params...)
  6817  }
  6818  
  6819  // Transfer initiates a plain transaction to move funds to the contract, calling
  6820  // its default method if one is available.
  6821  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  6822  	return _ERC721ServiceChain.Contract.contract.Transfer(opts)
  6823  }
  6824  
  6825  // Transact invokes the (paid) contract method with params as input values.
  6826  func (_ERC721ServiceChain *ERC721ServiceChainTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  6827  	return _ERC721ServiceChain.Contract.contract.Transact(opts, method, params...)
  6828  }
  6829  
  6830  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6831  //
  6832  // Solidity: function balanceOf(address owner) view returns(uint256)
  6833  func (_ERC721ServiceChain *ERC721ServiceChainCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  6834  	var (
  6835  		ret0 = new(*big.Int)
  6836  	)
  6837  	out := ret0
  6838  	err := _ERC721ServiceChain.contract.Call(opts, out, "balanceOf", owner)
  6839  	return *ret0, err
  6840  }
  6841  
  6842  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6843  //
  6844  // Solidity: function balanceOf(address owner) view returns(uint256)
  6845  func (_ERC721ServiceChain *ERC721ServiceChainSession) BalanceOf(owner common.Address) (*big.Int, error) {
  6846  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  6847  }
  6848  
  6849  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  6850  //
  6851  // Solidity: function balanceOf(address owner) view returns(uint256)
  6852  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  6853  	return _ERC721ServiceChain.Contract.BalanceOf(&_ERC721ServiceChain.CallOpts, owner)
  6854  }
  6855  
  6856  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6857  //
  6858  // Solidity: function bridge() view returns(address)
  6859  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
  6860  	var (
  6861  		ret0 = new(common.Address)
  6862  	)
  6863  	out := ret0
  6864  	err := _ERC721ServiceChain.contract.Call(opts, out, "bridge")
  6865  	return *ret0, err
  6866  }
  6867  
  6868  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6869  //
  6870  // Solidity: function bridge() view returns(address)
  6871  func (_ERC721ServiceChain *ERC721ServiceChainSession) Bridge() (common.Address, error) {
  6872  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  6873  }
  6874  
  6875  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
  6876  //
  6877  // Solidity: function bridge() view returns(address)
  6878  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Bridge() (common.Address, error) {
  6879  	return _ERC721ServiceChain.Contract.Bridge(&_ERC721ServiceChain.CallOpts)
  6880  }
  6881  
  6882  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  6883  //
  6884  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  6885  func (_ERC721ServiceChain *ERC721ServiceChainCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  6886  	var (
  6887  		ret0 = new(common.Address)
  6888  	)
  6889  	out := ret0
  6890  	err := _ERC721ServiceChain.contract.Call(opts, out, "getApproved", tokenId)
  6891  	return *ret0, err
  6892  }
  6893  
  6894  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  6895  //
  6896  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  6897  func (_ERC721ServiceChain *ERC721ServiceChainSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  6898  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  6899  }
  6900  
  6901  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  6902  //
  6903  // Solidity: function getApproved(uint256 tokenId) view returns(address)
  6904  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  6905  	return _ERC721ServiceChain.Contract.GetApproved(&_ERC721ServiceChain.CallOpts, tokenId)
  6906  }
  6907  
  6908  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  6909  //
  6910  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  6911  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  6912  	var (
  6913  		ret0 = new(bool)
  6914  	)
  6915  	out := ret0
  6916  	err := _ERC721ServiceChain.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  6917  	return *ret0, err
  6918  }
  6919  
  6920  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  6921  //
  6922  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  6923  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  6924  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  6925  }
  6926  
  6927  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  6928  //
  6929  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  6930  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  6931  	return _ERC721ServiceChain.Contract.IsApprovedForAll(&_ERC721ServiceChain.CallOpts, owner, operator)
  6932  }
  6933  
  6934  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6935  //
  6936  // Solidity: function isOwner() view returns(bool)
  6937  func (_ERC721ServiceChain *ERC721ServiceChainCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
  6938  	var (
  6939  		ret0 = new(bool)
  6940  	)
  6941  	out := ret0
  6942  	err := _ERC721ServiceChain.contract.Call(opts, out, "isOwner")
  6943  	return *ret0, err
  6944  }
  6945  
  6946  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6947  //
  6948  // Solidity: function isOwner() view returns(bool)
  6949  func (_ERC721ServiceChain *ERC721ServiceChainSession) IsOwner() (bool, error) {
  6950  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  6951  }
  6952  
  6953  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
  6954  //
  6955  // Solidity: function isOwner() view returns(bool)
  6956  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) IsOwner() (bool, error) {
  6957  	return _ERC721ServiceChain.Contract.IsOwner(&_ERC721ServiceChain.CallOpts)
  6958  }
  6959  
  6960  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6961  //
  6962  // Solidity: function owner() view returns(address)
  6963  func (_ERC721ServiceChain *ERC721ServiceChainCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
  6964  	var (
  6965  		ret0 = new(common.Address)
  6966  	)
  6967  	out := ret0
  6968  	err := _ERC721ServiceChain.contract.Call(opts, out, "owner")
  6969  	return *ret0, err
  6970  }
  6971  
  6972  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6973  //
  6974  // Solidity: function owner() view returns(address)
  6975  func (_ERC721ServiceChain *ERC721ServiceChainSession) Owner() (common.Address, error) {
  6976  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  6977  }
  6978  
  6979  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
  6980  //
  6981  // Solidity: function owner() view returns(address)
  6982  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) Owner() (common.Address, error) {
  6983  	return _ERC721ServiceChain.Contract.Owner(&_ERC721ServiceChain.CallOpts)
  6984  }
  6985  
  6986  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  6987  //
  6988  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  6989  func (_ERC721ServiceChain *ERC721ServiceChainCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  6990  	var (
  6991  		ret0 = new(common.Address)
  6992  	)
  6993  	out := ret0
  6994  	err := _ERC721ServiceChain.contract.Call(opts, out, "ownerOf", tokenId)
  6995  	return *ret0, err
  6996  }
  6997  
  6998  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  6999  //
  7000  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7001  func (_ERC721ServiceChain *ERC721ServiceChainSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7002  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  7003  }
  7004  
  7005  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  7006  //
  7007  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
  7008  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  7009  	return _ERC721ServiceChain.Contract.OwnerOf(&_ERC721ServiceChain.CallOpts, tokenId)
  7010  }
  7011  
  7012  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7013  //
  7014  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7015  func (_ERC721ServiceChain *ERC721ServiceChainCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  7016  	var (
  7017  		ret0 = new(bool)
  7018  	)
  7019  	out := ret0
  7020  	err := _ERC721ServiceChain.contract.Call(opts, out, "supportsInterface", interfaceId)
  7021  	return *ret0, err
  7022  }
  7023  
  7024  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7025  //
  7026  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7027  func (_ERC721ServiceChain *ERC721ServiceChainSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7028  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  7029  }
  7030  
  7031  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  7032  //
  7033  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  7034  func (_ERC721ServiceChain *ERC721ServiceChainCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  7035  	return _ERC721ServiceChain.Contract.SupportsInterface(&_ERC721ServiceChain.CallOpts, interfaceId)
  7036  }
  7037  
  7038  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7039  //
  7040  // Solidity: function approve(address to, uint256 tokenId) returns()
  7041  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7042  	return _ERC721ServiceChain.contract.Transact(opts, "approve", to, tokenId)
  7043  }
  7044  
  7045  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7046  //
  7047  // Solidity: function approve(address to, uint256 tokenId) returns()
  7048  func (_ERC721ServiceChain *ERC721ServiceChainSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7049  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  7050  }
  7051  
  7052  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  7053  //
  7054  // Solidity: function approve(address to, uint256 tokenId) returns()
  7055  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7056  	return _ERC721ServiceChain.Contract.Approve(&_ERC721ServiceChain.TransactOpts, to, tokenId)
  7057  }
  7058  
  7059  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7060  //
  7061  // Solidity: function renounceOwnership() returns()
  7062  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
  7063  	return _ERC721ServiceChain.contract.Transact(opts, "renounceOwnership")
  7064  }
  7065  
  7066  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7067  //
  7068  // Solidity: function renounceOwnership() returns()
  7069  func (_ERC721ServiceChain *ERC721ServiceChainSession) RenounceOwnership() (*types.Transaction, error) {
  7070  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  7071  }
  7072  
  7073  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
  7074  //
  7075  // Solidity: function renounceOwnership() returns()
  7076  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RenounceOwnership() (*types.Transaction, error) {
  7077  	return _ERC721ServiceChain.Contract.RenounceOwnership(&_ERC721ServiceChain.TransactOpts)
  7078  }
  7079  
  7080  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7081  //
  7082  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7083  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7084  	return _ERC721ServiceChain.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
  7085  }
  7086  
  7087  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7088  //
  7089  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7090  func (_ERC721ServiceChain *ERC721ServiceChainSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7091  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  7092  }
  7093  
  7094  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
  7095  //
  7096  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
  7097  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  7098  	return _ERC721ServiceChain.Contract.RequestValueTransfer(&_ERC721ServiceChain.TransactOpts, _uid, _to, _extraData)
  7099  }
  7100  
  7101  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7102  //
  7103  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7104  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7105  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  7106  }
  7107  
  7108  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7109  //
  7110  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7111  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7112  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7113  }
  7114  
  7115  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  7116  //
  7117  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  7118  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7119  	return _ERC721ServiceChain.Contract.SafeTransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7120  }
  7121  
  7122  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7123  //
  7124  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7125  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7126  	return _ERC721ServiceChain.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
  7127  }
  7128  
  7129  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7130  //
  7131  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7132  func (_ERC721ServiceChain *ERC721ServiceChainSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7133  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  7134  }
  7135  
  7136  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  7137  //
  7138  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
  7139  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
  7140  	return _ERC721ServiceChain.Contract.SafeTransferFrom0(&_ERC721ServiceChain.TransactOpts, from, to, tokenId, _data)
  7141  }
  7142  
  7143  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7144  //
  7145  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7146  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
  7147  	return _ERC721ServiceChain.contract.Transact(opts, "setApprovalForAll", to, approved)
  7148  }
  7149  
  7150  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7151  //
  7152  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7153  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  7154  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  7155  }
  7156  
  7157  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  7158  //
  7159  // Solidity: function setApprovalForAll(address to, bool approved) returns()
  7160  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
  7161  	return _ERC721ServiceChain.Contract.SetApprovalForAll(&_ERC721ServiceChain.TransactOpts, to, approved)
  7162  }
  7163  
  7164  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7165  //
  7166  // Solidity: function setBridge(address _bridge) returns()
  7167  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
  7168  	return _ERC721ServiceChain.contract.Transact(opts, "setBridge", _bridge)
  7169  }
  7170  
  7171  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7172  //
  7173  // Solidity: function setBridge(address _bridge) returns()
  7174  func (_ERC721ServiceChain *ERC721ServiceChainSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  7175  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  7176  }
  7177  
  7178  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
  7179  //
  7180  // Solidity: function setBridge(address _bridge) returns()
  7181  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
  7182  	return _ERC721ServiceChain.Contract.SetBridge(&_ERC721ServiceChain.TransactOpts, _bridge)
  7183  }
  7184  
  7185  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7186  //
  7187  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7188  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7189  	return _ERC721ServiceChain.contract.Transact(opts, "transferFrom", from, to, tokenId)
  7190  }
  7191  
  7192  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7193  //
  7194  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7195  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7196  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7197  }
  7198  
  7199  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  7200  //
  7201  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  7202  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  7203  	return _ERC721ServiceChain.Contract.TransferFrom(&_ERC721ServiceChain.TransactOpts, from, to, tokenId)
  7204  }
  7205  
  7206  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7207  //
  7208  // Solidity: function transferOwnership(address newOwner) returns()
  7209  func (_ERC721ServiceChain *ERC721ServiceChainTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
  7210  	return _ERC721ServiceChain.contract.Transact(opts, "transferOwnership", newOwner)
  7211  }
  7212  
  7213  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7214  //
  7215  // Solidity: function transferOwnership(address newOwner) returns()
  7216  func (_ERC721ServiceChain *ERC721ServiceChainSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7217  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  7218  }
  7219  
  7220  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
  7221  //
  7222  // Solidity: function transferOwnership(address newOwner) returns()
  7223  func (_ERC721ServiceChain *ERC721ServiceChainTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
  7224  	return _ERC721ServiceChain.Contract.TransferOwnership(&_ERC721ServiceChain.TransactOpts, newOwner)
  7225  }
  7226  
  7227  // ERC721ServiceChainApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC721ServiceChain contract.
  7228  type ERC721ServiceChainApprovalIterator struct {
  7229  	Event *ERC721ServiceChainApproval // Event containing the contract specifics and raw log
  7230  
  7231  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7232  	event    string              // Event name to use for unpacking event data
  7233  
  7234  	logs chan types.Log      // Log channel receiving the found contract events
  7235  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7236  	done bool                // Whether the subscription completed delivering logs
  7237  	fail error               // Occurred error to stop iteration
  7238  }
  7239  
  7240  // Next advances the iterator to the subsequent event, returning whether there
  7241  // are any more events found. In case of a retrieval or parsing error, false is
  7242  // returned and Error() can be queried for the exact failure.
  7243  func (it *ERC721ServiceChainApprovalIterator) Next() bool {
  7244  	// If the iterator failed, stop iterating
  7245  	if it.fail != nil {
  7246  		return false
  7247  	}
  7248  	// If the iterator completed, deliver directly whatever's available
  7249  	if it.done {
  7250  		select {
  7251  		case log := <-it.logs:
  7252  			it.Event = new(ERC721ServiceChainApproval)
  7253  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7254  				it.fail = err
  7255  				return false
  7256  			}
  7257  			it.Event.Raw = log
  7258  			return true
  7259  
  7260  		default:
  7261  			return false
  7262  		}
  7263  	}
  7264  	// Iterator still in progress, wait for either a data or an error event
  7265  	select {
  7266  	case log := <-it.logs:
  7267  		it.Event = new(ERC721ServiceChainApproval)
  7268  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7269  			it.fail = err
  7270  			return false
  7271  		}
  7272  		it.Event.Raw = log
  7273  		return true
  7274  
  7275  	case err := <-it.sub.Err():
  7276  		it.done = true
  7277  		it.fail = err
  7278  		return it.Next()
  7279  	}
  7280  }
  7281  
  7282  // Error returns any retrieval or parsing error occurred during filtering.
  7283  func (it *ERC721ServiceChainApprovalIterator) Error() error {
  7284  	return it.fail
  7285  }
  7286  
  7287  // Close terminates the iteration process, releasing any pending underlying
  7288  // resources.
  7289  func (it *ERC721ServiceChainApprovalIterator) Close() error {
  7290  	it.sub.Unsubscribe()
  7291  	return nil
  7292  }
  7293  
  7294  // ERC721ServiceChainApproval represents a Approval event raised by the ERC721ServiceChain contract.
  7295  type ERC721ServiceChainApproval struct {
  7296  	Owner    common.Address
  7297  	Approved common.Address
  7298  	TokenId  *big.Int
  7299  	Raw      types.Log // Blockchain specific contextual infos
  7300  }
  7301  
  7302  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7303  //
  7304  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7305  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ERC721ServiceChainApprovalIterator, error) {
  7306  
  7307  	var ownerRule []interface{}
  7308  	for _, ownerItem := range owner {
  7309  		ownerRule = append(ownerRule, ownerItem)
  7310  	}
  7311  	var approvedRule []interface{}
  7312  	for _, approvedItem := range approved {
  7313  		approvedRule = append(approvedRule, approvedItem)
  7314  	}
  7315  	var tokenIdRule []interface{}
  7316  	for _, tokenIdItem := range tokenId {
  7317  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7318  	}
  7319  
  7320  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  7321  	if err != nil {
  7322  		return nil, err
  7323  	}
  7324  	return &ERC721ServiceChainApprovalIterator{contract: _ERC721ServiceChain.contract, event: "Approval", logs: logs, sub: sub}, nil
  7325  }
  7326  
  7327  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7328  //
  7329  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7330  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  7331  
  7332  	var ownerRule []interface{}
  7333  	for _, ownerItem := range owner {
  7334  		ownerRule = append(ownerRule, ownerItem)
  7335  	}
  7336  	var approvedRule []interface{}
  7337  	for _, approvedItem := range approved {
  7338  		approvedRule = append(approvedRule, approvedItem)
  7339  	}
  7340  	var tokenIdRule []interface{}
  7341  	for _, tokenIdItem := range tokenId {
  7342  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7343  	}
  7344  
  7345  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  7346  	if err != nil {
  7347  		return nil, err
  7348  	}
  7349  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7350  		defer sub.Unsubscribe()
  7351  		for {
  7352  			select {
  7353  			case log := <-logs:
  7354  				// New log arrived, parse the event and forward to the user
  7355  				event := new(ERC721ServiceChainApproval)
  7356  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  7357  					return err
  7358  				}
  7359  				event.Raw = log
  7360  
  7361  				select {
  7362  				case sink <- event:
  7363  				case err := <-sub.Err():
  7364  					return err
  7365  				case <-quit:
  7366  					return nil
  7367  				}
  7368  			case err := <-sub.Err():
  7369  				return err
  7370  			case <-quit:
  7371  				return nil
  7372  			}
  7373  		}
  7374  	}), nil
  7375  }
  7376  
  7377  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  7378  //
  7379  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  7380  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApproval(log types.Log) (*ERC721ServiceChainApproval, error) {
  7381  	event := new(ERC721ServiceChainApproval)
  7382  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Approval", log); err != nil {
  7383  		return nil, err
  7384  	}
  7385  	return event, nil
  7386  }
  7387  
  7388  // ERC721ServiceChainApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ERC721ServiceChain contract.
  7389  type ERC721ServiceChainApprovalForAllIterator struct {
  7390  	Event *ERC721ServiceChainApprovalForAll // Event containing the contract specifics and raw log
  7391  
  7392  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7393  	event    string              // Event name to use for unpacking event data
  7394  
  7395  	logs chan types.Log      // Log channel receiving the found contract events
  7396  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7397  	done bool                // Whether the subscription completed delivering logs
  7398  	fail error               // Occurred error to stop iteration
  7399  }
  7400  
  7401  // Next advances the iterator to the subsequent event, returning whether there
  7402  // are any more events found. In case of a retrieval or parsing error, false is
  7403  // returned and Error() can be queried for the exact failure.
  7404  func (it *ERC721ServiceChainApprovalForAllIterator) Next() bool {
  7405  	// If the iterator failed, stop iterating
  7406  	if it.fail != nil {
  7407  		return false
  7408  	}
  7409  	// If the iterator completed, deliver directly whatever's available
  7410  	if it.done {
  7411  		select {
  7412  		case log := <-it.logs:
  7413  			it.Event = new(ERC721ServiceChainApprovalForAll)
  7414  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7415  				it.fail = err
  7416  				return false
  7417  			}
  7418  			it.Event.Raw = log
  7419  			return true
  7420  
  7421  		default:
  7422  			return false
  7423  		}
  7424  	}
  7425  	// Iterator still in progress, wait for either a data or an error event
  7426  	select {
  7427  	case log := <-it.logs:
  7428  		it.Event = new(ERC721ServiceChainApprovalForAll)
  7429  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7430  			it.fail = err
  7431  			return false
  7432  		}
  7433  		it.Event.Raw = log
  7434  		return true
  7435  
  7436  	case err := <-it.sub.Err():
  7437  		it.done = true
  7438  		it.fail = err
  7439  		return it.Next()
  7440  	}
  7441  }
  7442  
  7443  // Error returns any retrieval or parsing error occurred during filtering.
  7444  func (it *ERC721ServiceChainApprovalForAllIterator) Error() error {
  7445  	return it.fail
  7446  }
  7447  
  7448  // Close terminates the iteration process, releasing any pending underlying
  7449  // resources.
  7450  func (it *ERC721ServiceChainApprovalForAllIterator) Close() error {
  7451  	it.sub.Unsubscribe()
  7452  	return nil
  7453  }
  7454  
  7455  // ERC721ServiceChainApprovalForAll represents a ApprovalForAll event raised by the ERC721ServiceChain contract.
  7456  type ERC721ServiceChainApprovalForAll struct {
  7457  	Owner    common.Address
  7458  	Operator common.Address
  7459  	Approved bool
  7460  	Raw      types.Log // Blockchain specific contextual infos
  7461  }
  7462  
  7463  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7464  //
  7465  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7466  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ERC721ServiceChainApprovalForAllIterator, error) {
  7467  
  7468  	var ownerRule []interface{}
  7469  	for _, ownerItem := range owner {
  7470  		ownerRule = append(ownerRule, ownerItem)
  7471  	}
  7472  	var operatorRule []interface{}
  7473  	for _, operatorItem := range operator {
  7474  		operatorRule = append(operatorRule, operatorItem)
  7475  	}
  7476  
  7477  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  7478  	if err != nil {
  7479  		return nil, err
  7480  	}
  7481  	return &ERC721ServiceChainApprovalForAllIterator{contract: _ERC721ServiceChain.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  7482  }
  7483  
  7484  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7485  //
  7486  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7487  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  7488  
  7489  	var ownerRule []interface{}
  7490  	for _, ownerItem := range owner {
  7491  		ownerRule = append(ownerRule, ownerItem)
  7492  	}
  7493  	var operatorRule []interface{}
  7494  	for _, operatorItem := range operator {
  7495  		operatorRule = append(operatorRule, operatorItem)
  7496  	}
  7497  
  7498  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  7499  	if err != nil {
  7500  		return nil, err
  7501  	}
  7502  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7503  		defer sub.Unsubscribe()
  7504  		for {
  7505  			select {
  7506  			case log := <-logs:
  7507  				// New log arrived, parse the event and forward to the user
  7508  				event := new(ERC721ServiceChainApprovalForAll)
  7509  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  7510  					return err
  7511  				}
  7512  				event.Raw = log
  7513  
  7514  				select {
  7515  				case sink <- event:
  7516  				case err := <-sub.Err():
  7517  					return err
  7518  				case <-quit:
  7519  					return nil
  7520  				}
  7521  			case err := <-sub.Err():
  7522  				return err
  7523  			case <-quit:
  7524  				return nil
  7525  			}
  7526  		}
  7527  	}), nil
  7528  }
  7529  
  7530  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  7531  //
  7532  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  7533  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseApprovalForAll(log types.Log) (*ERC721ServiceChainApprovalForAll, error) {
  7534  	event := new(ERC721ServiceChainApprovalForAll)
  7535  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  7536  		return nil, err
  7537  	}
  7538  	return event, nil
  7539  }
  7540  
  7541  // ERC721ServiceChainOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ERC721ServiceChain contract.
  7542  type ERC721ServiceChainOwnershipTransferredIterator struct {
  7543  	Event *ERC721ServiceChainOwnershipTransferred // Event containing the contract specifics and raw log
  7544  
  7545  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7546  	event    string              // Event name to use for unpacking event data
  7547  
  7548  	logs chan types.Log      // Log channel receiving the found contract events
  7549  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7550  	done bool                // Whether the subscription completed delivering logs
  7551  	fail error               // Occurred error to stop iteration
  7552  }
  7553  
  7554  // Next advances the iterator to the subsequent event, returning whether there
  7555  // are any more events found. In case of a retrieval or parsing error, false is
  7556  // returned and Error() can be queried for the exact failure.
  7557  func (it *ERC721ServiceChainOwnershipTransferredIterator) Next() bool {
  7558  	// If the iterator failed, stop iterating
  7559  	if it.fail != nil {
  7560  		return false
  7561  	}
  7562  	// If the iterator completed, deliver directly whatever's available
  7563  	if it.done {
  7564  		select {
  7565  		case log := <-it.logs:
  7566  			it.Event = new(ERC721ServiceChainOwnershipTransferred)
  7567  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7568  				it.fail = err
  7569  				return false
  7570  			}
  7571  			it.Event.Raw = log
  7572  			return true
  7573  
  7574  		default:
  7575  			return false
  7576  		}
  7577  	}
  7578  	// Iterator still in progress, wait for either a data or an error event
  7579  	select {
  7580  	case log := <-it.logs:
  7581  		it.Event = new(ERC721ServiceChainOwnershipTransferred)
  7582  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7583  			it.fail = err
  7584  			return false
  7585  		}
  7586  		it.Event.Raw = log
  7587  		return true
  7588  
  7589  	case err := <-it.sub.Err():
  7590  		it.done = true
  7591  		it.fail = err
  7592  		return it.Next()
  7593  	}
  7594  }
  7595  
  7596  // Error returns any retrieval or parsing error occurred during filtering.
  7597  func (it *ERC721ServiceChainOwnershipTransferredIterator) Error() error {
  7598  	return it.fail
  7599  }
  7600  
  7601  // Close terminates the iteration process, releasing any pending underlying
  7602  // resources.
  7603  func (it *ERC721ServiceChainOwnershipTransferredIterator) Close() error {
  7604  	it.sub.Unsubscribe()
  7605  	return nil
  7606  }
  7607  
  7608  // ERC721ServiceChainOwnershipTransferred represents a OwnershipTransferred event raised by the ERC721ServiceChain contract.
  7609  type ERC721ServiceChainOwnershipTransferred struct {
  7610  	PreviousOwner common.Address
  7611  	NewOwner      common.Address
  7612  	Raw           types.Log // Blockchain specific contextual infos
  7613  }
  7614  
  7615  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7616  //
  7617  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7618  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ERC721ServiceChainOwnershipTransferredIterator, error) {
  7619  
  7620  	var previousOwnerRule []interface{}
  7621  	for _, previousOwnerItem := range previousOwner {
  7622  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7623  	}
  7624  	var newOwnerRule []interface{}
  7625  	for _, newOwnerItem := range newOwner {
  7626  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7627  	}
  7628  
  7629  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7630  	if err != nil {
  7631  		return nil, err
  7632  	}
  7633  	return &ERC721ServiceChainOwnershipTransferredIterator{contract: _ERC721ServiceChain.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
  7634  }
  7635  
  7636  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7637  //
  7638  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7639  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
  7640  
  7641  	var previousOwnerRule []interface{}
  7642  	for _, previousOwnerItem := range previousOwner {
  7643  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
  7644  	}
  7645  	var newOwnerRule []interface{}
  7646  	for _, newOwnerItem := range newOwner {
  7647  		newOwnerRule = append(newOwnerRule, newOwnerItem)
  7648  	}
  7649  
  7650  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
  7651  	if err != nil {
  7652  		return nil, err
  7653  	}
  7654  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7655  		defer sub.Unsubscribe()
  7656  		for {
  7657  			select {
  7658  			case log := <-logs:
  7659  				// New log arrived, parse the event and forward to the user
  7660  				event := new(ERC721ServiceChainOwnershipTransferred)
  7661  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7662  					return err
  7663  				}
  7664  				event.Raw = log
  7665  
  7666  				select {
  7667  				case sink <- event:
  7668  				case err := <-sub.Err():
  7669  					return err
  7670  				case <-quit:
  7671  					return nil
  7672  				}
  7673  			case err := <-sub.Err():
  7674  				return err
  7675  			case <-quit:
  7676  				return nil
  7677  			}
  7678  		}
  7679  	}), nil
  7680  }
  7681  
  7682  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
  7683  //
  7684  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
  7685  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseOwnershipTransferred(log types.Log) (*ERC721ServiceChainOwnershipTransferred, error) {
  7686  	event := new(ERC721ServiceChainOwnershipTransferred)
  7687  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
  7688  		return nil, err
  7689  	}
  7690  	return event, nil
  7691  }
  7692  
  7693  // ERC721ServiceChainTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC721ServiceChain contract.
  7694  type ERC721ServiceChainTransferIterator struct {
  7695  	Event *ERC721ServiceChainTransfer // Event containing the contract specifics and raw log
  7696  
  7697  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  7698  	event    string              // Event name to use for unpacking event data
  7699  
  7700  	logs chan types.Log      // Log channel receiving the found contract events
  7701  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  7702  	done bool                // Whether the subscription completed delivering logs
  7703  	fail error               // Occurred error to stop iteration
  7704  }
  7705  
  7706  // Next advances the iterator to the subsequent event, returning whether there
  7707  // are any more events found. In case of a retrieval or parsing error, false is
  7708  // returned and Error() can be queried for the exact failure.
  7709  func (it *ERC721ServiceChainTransferIterator) Next() bool {
  7710  	// If the iterator failed, stop iterating
  7711  	if it.fail != nil {
  7712  		return false
  7713  	}
  7714  	// If the iterator completed, deliver directly whatever's available
  7715  	if it.done {
  7716  		select {
  7717  		case log := <-it.logs:
  7718  			it.Event = new(ERC721ServiceChainTransfer)
  7719  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7720  				it.fail = err
  7721  				return false
  7722  			}
  7723  			it.Event.Raw = log
  7724  			return true
  7725  
  7726  		default:
  7727  			return false
  7728  		}
  7729  	}
  7730  	// Iterator still in progress, wait for either a data or an error event
  7731  	select {
  7732  	case log := <-it.logs:
  7733  		it.Event = new(ERC721ServiceChainTransfer)
  7734  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  7735  			it.fail = err
  7736  			return false
  7737  		}
  7738  		it.Event.Raw = log
  7739  		return true
  7740  
  7741  	case err := <-it.sub.Err():
  7742  		it.done = true
  7743  		it.fail = err
  7744  		return it.Next()
  7745  	}
  7746  }
  7747  
  7748  // Error returns any retrieval or parsing error occurred during filtering.
  7749  func (it *ERC721ServiceChainTransferIterator) Error() error {
  7750  	return it.fail
  7751  }
  7752  
  7753  // Close terminates the iteration process, releasing any pending underlying
  7754  // resources.
  7755  func (it *ERC721ServiceChainTransferIterator) Close() error {
  7756  	it.sub.Unsubscribe()
  7757  	return nil
  7758  }
  7759  
  7760  // ERC721ServiceChainTransfer represents a Transfer event raised by the ERC721ServiceChain contract.
  7761  type ERC721ServiceChainTransfer struct {
  7762  	From    common.Address
  7763  	To      common.Address
  7764  	TokenId *big.Int
  7765  	Raw     types.Log // Blockchain specific contextual infos
  7766  }
  7767  
  7768  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7769  //
  7770  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  7771  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ERC721ServiceChainTransferIterator, error) {
  7772  
  7773  	var fromRule []interface{}
  7774  	for _, fromItem := range from {
  7775  		fromRule = append(fromRule, fromItem)
  7776  	}
  7777  	var toRule []interface{}
  7778  	for _, toItem := range to {
  7779  		toRule = append(toRule, toItem)
  7780  	}
  7781  	var tokenIdRule []interface{}
  7782  	for _, tokenIdItem := range tokenId {
  7783  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7784  	}
  7785  
  7786  	logs, sub, err := _ERC721ServiceChain.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  7787  	if err != nil {
  7788  		return nil, err
  7789  	}
  7790  	return &ERC721ServiceChainTransferIterator{contract: _ERC721ServiceChain.contract, event: "Transfer", logs: logs, sub: sub}, nil
  7791  }
  7792  
  7793  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7794  //
  7795  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  7796  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC721ServiceChainTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  7797  
  7798  	var fromRule []interface{}
  7799  	for _, fromItem := range from {
  7800  		fromRule = append(fromRule, fromItem)
  7801  	}
  7802  	var toRule []interface{}
  7803  	for _, toItem := range to {
  7804  		toRule = append(toRule, toItem)
  7805  	}
  7806  	var tokenIdRule []interface{}
  7807  	for _, tokenIdItem := range tokenId {
  7808  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  7809  	}
  7810  
  7811  	logs, sub, err := _ERC721ServiceChain.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  7812  	if err != nil {
  7813  		return nil, err
  7814  	}
  7815  	return event.NewSubscription(func(quit <-chan struct{}) error {
  7816  		defer sub.Unsubscribe()
  7817  		for {
  7818  			select {
  7819  			case log := <-logs:
  7820  				// New log arrived, parse the event and forward to the user
  7821  				event := new(ERC721ServiceChainTransfer)
  7822  				if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  7823  					return err
  7824  				}
  7825  				event.Raw = log
  7826  
  7827  				select {
  7828  				case sink <- event:
  7829  				case err := <-sub.Err():
  7830  					return err
  7831  				case <-quit:
  7832  					return nil
  7833  				}
  7834  			case err := <-sub.Err():
  7835  				return err
  7836  			case <-quit:
  7837  				return nil
  7838  			}
  7839  		}
  7840  	}), nil
  7841  }
  7842  
  7843  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  7844  //
  7845  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  7846  func (_ERC721ServiceChain *ERC721ServiceChainFilterer) ParseTransfer(log types.Log) (*ERC721ServiceChainTransfer, error) {
  7847  	event := new(ERC721ServiceChainTransfer)
  7848  	if err := _ERC721ServiceChain.contract.UnpackLog(event, "Transfer", log); err != nil {
  7849  		return nil, err
  7850  	}
  7851  	return event, nil
  7852  }
  7853  
  7854  // IERC165ABI is the input ABI used to generate the binding from.
  7855  const IERC165ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
  7856  
  7857  // IERC165BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  7858  const IERC165BinRuntime = ``
  7859  
  7860  // IERC165FuncSigs maps the 4-byte function signature to its string representation.
  7861  var IERC165FuncSigs = map[string]string{
  7862  	"01ffc9a7": "supportsInterface(bytes4)",
  7863  }
  7864  
  7865  // IERC165 is an auto generated Go binding around a Klaytn contract.
  7866  type IERC165 struct {
  7867  	IERC165Caller     // Read-only binding to the contract
  7868  	IERC165Transactor // Write-only binding to the contract
  7869  	IERC165Filterer   // Log filterer for contract events
  7870  }
  7871  
  7872  // IERC165Caller is an auto generated read-only Go binding around a Klaytn contract.
  7873  type IERC165Caller struct {
  7874  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7875  }
  7876  
  7877  // IERC165Transactor is an auto generated write-only Go binding around a Klaytn contract.
  7878  type IERC165Transactor struct {
  7879  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7880  }
  7881  
  7882  // IERC165Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  7883  type IERC165Filterer struct {
  7884  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  7885  }
  7886  
  7887  // IERC165Session is an auto generated Go binding around a Klaytn contract,
  7888  // with pre-set call and transact options.
  7889  type IERC165Session struct {
  7890  	Contract     *IERC165          // Generic contract binding to set the session for
  7891  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  7892  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  7893  }
  7894  
  7895  // IERC165CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  7896  // with pre-set call options.
  7897  type IERC165CallerSession struct {
  7898  	Contract *IERC165Caller // Generic contract caller binding to set the session for
  7899  	CallOpts bind.CallOpts  // Call options to use throughout this session
  7900  }
  7901  
  7902  // IERC165TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  7903  // with pre-set transact options.
  7904  type IERC165TransactorSession struct {
  7905  	Contract     *IERC165Transactor // Generic contract transactor binding to set the session for
  7906  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  7907  }
  7908  
  7909  // IERC165Raw is an auto generated low-level Go binding around a Klaytn contract.
  7910  type IERC165Raw struct {
  7911  	Contract *IERC165 // Generic contract binding to access the raw methods on
  7912  }
  7913  
  7914  // IERC165CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  7915  type IERC165CallerRaw struct {
  7916  	Contract *IERC165Caller // Generic read-only contract binding to access the raw methods on
  7917  }
  7918  
  7919  // IERC165TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  7920  type IERC165TransactorRaw struct {
  7921  	Contract *IERC165Transactor // Generic write-only contract binding to access the raw methods on
  7922  }
  7923  
  7924  // NewIERC165 creates a new instance of IERC165, bound to a specific deployed contract.
  7925  func NewIERC165(address common.Address, backend bind.ContractBackend) (*IERC165, error) {
  7926  	contract, err := bindIERC165(address, backend, backend, backend)
  7927  	if err != nil {
  7928  		return nil, err
  7929  	}
  7930  	return &IERC165{IERC165Caller: IERC165Caller{contract: contract}, IERC165Transactor: IERC165Transactor{contract: contract}, IERC165Filterer: IERC165Filterer{contract: contract}}, nil
  7931  }
  7932  
  7933  // NewIERC165Caller creates a new read-only instance of IERC165, bound to a specific deployed contract.
  7934  func NewIERC165Caller(address common.Address, caller bind.ContractCaller) (*IERC165Caller, error) {
  7935  	contract, err := bindIERC165(address, caller, nil, nil)
  7936  	if err != nil {
  7937  		return nil, err
  7938  	}
  7939  	return &IERC165Caller{contract: contract}, nil
  7940  }
  7941  
  7942  // NewIERC165Transactor creates a new write-only instance of IERC165, bound to a specific deployed contract.
  7943  func NewIERC165Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC165Transactor, error) {
  7944  	contract, err := bindIERC165(address, nil, transactor, nil)
  7945  	if err != nil {
  7946  		return nil, err
  7947  	}
  7948  	return &IERC165Transactor{contract: contract}, nil
  7949  }
  7950  
  7951  // NewIERC165Filterer creates a new log filterer instance of IERC165, bound to a specific deployed contract.
  7952  func NewIERC165Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC165Filterer, error) {
  7953  	contract, err := bindIERC165(address, nil, nil, filterer)
  7954  	if err != nil {
  7955  		return nil, err
  7956  	}
  7957  	return &IERC165Filterer{contract: contract}, nil
  7958  }
  7959  
  7960  // bindIERC165 binds a generic wrapper to an already deployed contract.
  7961  func bindIERC165(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  7962  	parsed, err := abi.JSON(strings.NewReader(IERC165ABI))
  7963  	if err != nil {
  7964  		return nil, err
  7965  	}
  7966  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  7967  }
  7968  
  7969  // Call invokes the (constant) contract method with params as input values and
  7970  // sets the output to result. The result type might be a single field for simple
  7971  // returns, a slice of interfaces for anonymous returns and a struct for named
  7972  // returns.
  7973  func (_IERC165 *IERC165Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7974  	return _IERC165.Contract.IERC165Caller.contract.Call(opts, result, method, params...)
  7975  }
  7976  
  7977  // Transfer initiates a plain transaction to move funds to the contract, calling
  7978  // its default method if one is available.
  7979  func (_IERC165 *IERC165Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7980  	return _IERC165.Contract.IERC165Transactor.contract.Transfer(opts)
  7981  }
  7982  
  7983  // Transact invokes the (paid) contract method with params as input values.
  7984  func (_IERC165 *IERC165Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  7985  	return _IERC165.Contract.IERC165Transactor.contract.Transact(opts, method, params...)
  7986  }
  7987  
  7988  // Call invokes the (constant) contract method with params as input values and
  7989  // sets the output to result. The result type might be a single field for simple
  7990  // returns, a slice of interfaces for anonymous returns and a struct for named
  7991  // returns.
  7992  func (_IERC165 *IERC165CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  7993  	return _IERC165.Contract.contract.Call(opts, result, method, params...)
  7994  }
  7995  
  7996  // Transfer initiates a plain transaction to move funds to the contract, calling
  7997  // its default method if one is available.
  7998  func (_IERC165 *IERC165TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  7999  	return _IERC165.Contract.contract.Transfer(opts)
  8000  }
  8001  
  8002  // Transact invokes the (paid) contract method with params as input values.
  8003  func (_IERC165 *IERC165TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8004  	return _IERC165.Contract.contract.Transact(opts, method, params...)
  8005  }
  8006  
  8007  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8008  //
  8009  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8010  func (_IERC165 *IERC165Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  8011  	var (
  8012  		ret0 = new(bool)
  8013  	)
  8014  	out := ret0
  8015  	err := _IERC165.contract.Call(opts, out, "supportsInterface", interfaceId)
  8016  	return *ret0, err
  8017  }
  8018  
  8019  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8020  //
  8021  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8022  func (_IERC165 *IERC165Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8023  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  8024  }
  8025  
  8026  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8027  //
  8028  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8029  func (_IERC165 *IERC165CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8030  	return _IERC165.Contract.SupportsInterface(&_IERC165.CallOpts, interfaceId)
  8031  }
  8032  
  8033  // IERC721ABI is the input ABI used to generate the binding from.
  8034  const IERC721ABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  8035  
  8036  // IERC721BinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  8037  const IERC721BinRuntime = ``
  8038  
  8039  // IERC721FuncSigs maps the 4-byte function signature to its string representation.
  8040  var IERC721FuncSigs = map[string]string{
  8041  	"095ea7b3": "approve(address,uint256)",
  8042  	"70a08231": "balanceOf(address)",
  8043  	"081812fc": "getApproved(uint256)",
  8044  	"e985e9c5": "isApprovedForAll(address,address)",
  8045  	"6352211e": "ownerOf(uint256)",
  8046  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  8047  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  8048  	"a22cb465": "setApprovalForAll(address,bool)",
  8049  	"01ffc9a7": "supportsInterface(bytes4)",
  8050  	"23b872dd": "transferFrom(address,address,uint256)",
  8051  }
  8052  
  8053  // IERC721 is an auto generated Go binding around a Klaytn contract.
  8054  type IERC721 struct {
  8055  	IERC721Caller     // Read-only binding to the contract
  8056  	IERC721Transactor // Write-only binding to the contract
  8057  	IERC721Filterer   // Log filterer for contract events
  8058  }
  8059  
  8060  // IERC721Caller is an auto generated read-only Go binding around a Klaytn contract.
  8061  type IERC721Caller struct {
  8062  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8063  }
  8064  
  8065  // IERC721Transactor is an auto generated write-only Go binding around a Klaytn contract.
  8066  type IERC721Transactor struct {
  8067  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8068  }
  8069  
  8070  // IERC721Filterer is an auto generated log filtering Go binding around a Klaytn contract events.
  8071  type IERC721Filterer struct {
  8072  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8073  }
  8074  
  8075  // IERC721Session is an auto generated Go binding around a Klaytn contract,
  8076  // with pre-set call and transact options.
  8077  type IERC721Session struct {
  8078  	Contract     *IERC721          // Generic contract binding to set the session for
  8079  	CallOpts     bind.CallOpts     // Call options to use throughout this session
  8080  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
  8081  }
  8082  
  8083  // IERC721CallerSession is an auto generated read-only Go binding around a Klaytn contract,
  8084  // with pre-set call options.
  8085  type IERC721CallerSession struct {
  8086  	Contract *IERC721Caller // Generic contract caller binding to set the session for
  8087  	CallOpts bind.CallOpts  // Call options to use throughout this session
  8088  }
  8089  
  8090  // IERC721TransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  8091  // with pre-set transact options.
  8092  type IERC721TransactorSession struct {
  8093  	Contract     *IERC721Transactor // Generic contract transactor binding to set the session for
  8094  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  8095  }
  8096  
  8097  // IERC721Raw is an auto generated low-level Go binding around a Klaytn contract.
  8098  type IERC721Raw struct {
  8099  	Contract *IERC721 // Generic contract binding to access the raw methods on
  8100  }
  8101  
  8102  // IERC721CallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  8103  type IERC721CallerRaw struct {
  8104  	Contract *IERC721Caller // Generic read-only contract binding to access the raw methods on
  8105  }
  8106  
  8107  // IERC721TransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  8108  type IERC721TransactorRaw struct {
  8109  	Contract *IERC721Transactor // Generic write-only contract binding to access the raw methods on
  8110  }
  8111  
  8112  // NewIERC721 creates a new instance of IERC721, bound to a specific deployed contract.
  8113  func NewIERC721(address common.Address, backend bind.ContractBackend) (*IERC721, error) {
  8114  	contract, err := bindIERC721(address, backend, backend, backend)
  8115  	if err != nil {
  8116  		return nil, err
  8117  	}
  8118  	return &IERC721{IERC721Caller: IERC721Caller{contract: contract}, IERC721Transactor: IERC721Transactor{contract: contract}, IERC721Filterer: IERC721Filterer{contract: contract}}, nil
  8119  }
  8120  
  8121  // NewIERC721Caller creates a new read-only instance of IERC721, bound to a specific deployed contract.
  8122  func NewIERC721Caller(address common.Address, caller bind.ContractCaller) (*IERC721Caller, error) {
  8123  	contract, err := bindIERC721(address, caller, nil, nil)
  8124  	if err != nil {
  8125  		return nil, err
  8126  	}
  8127  	return &IERC721Caller{contract: contract}, nil
  8128  }
  8129  
  8130  // NewIERC721Transactor creates a new write-only instance of IERC721, bound to a specific deployed contract.
  8131  func NewIERC721Transactor(address common.Address, transactor bind.ContractTransactor) (*IERC721Transactor, error) {
  8132  	contract, err := bindIERC721(address, nil, transactor, nil)
  8133  	if err != nil {
  8134  		return nil, err
  8135  	}
  8136  	return &IERC721Transactor{contract: contract}, nil
  8137  }
  8138  
  8139  // NewIERC721Filterer creates a new log filterer instance of IERC721, bound to a specific deployed contract.
  8140  func NewIERC721Filterer(address common.Address, filterer bind.ContractFilterer) (*IERC721Filterer, error) {
  8141  	contract, err := bindIERC721(address, nil, nil, filterer)
  8142  	if err != nil {
  8143  		return nil, err
  8144  	}
  8145  	return &IERC721Filterer{contract: contract}, nil
  8146  }
  8147  
  8148  // bindIERC721 binds a generic wrapper to an already deployed contract.
  8149  func bindIERC721(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  8150  	parsed, err := abi.JSON(strings.NewReader(IERC721ABI))
  8151  	if err != nil {
  8152  		return nil, err
  8153  	}
  8154  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  8155  }
  8156  
  8157  // Call invokes the (constant) contract method with params as input values and
  8158  // sets the output to result. The result type might be a single field for simple
  8159  // returns, a slice of interfaces for anonymous returns and a struct for named
  8160  // returns.
  8161  func (_IERC721 *IERC721Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8162  	return _IERC721.Contract.IERC721Caller.contract.Call(opts, result, method, params...)
  8163  }
  8164  
  8165  // Transfer initiates a plain transaction to move funds to the contract, calling
  8166  // its default method if one is available.
  8167  func (_IERC721 *IERC721Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8168  	return _IERC721.Contract.IERC721Transactor.contract.Transfer(opts)
  8169  }
  8170  
  8171  // Transact invokes the (paid) contract method with params as input values.
  8172  func (_IERC721 *IERC721Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8173  	return _IERC721.Contract.IERC721Transactor.contract.Transact(opts, method, params...)
  8174  }
  8175  
  8176  // Call invokes the (constant) contract method with params as input values and
  8177  // sets the output to result. The result type might be a single field for simple
  8178  // returns, a slice of interfaces for anonymous returns and a struct for named
  8179  // returns.
  8180  func (_IERC721 *IERC721CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  8181  	return _IERC721.Contract.contract.Call(opts, result, method, params...)
  8182  }
  8183  
  8184  // Transfer initiates a plain transaction to move funds to the contract, calling
  8185  // its default method if one is available.
  8186  func (_IERC721 *IERC721TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  8187  	return _IERC721.Contract.contract.Transfer(opts)
  8188  }
  8189  
  8190  // Transact invokes the (paid) contract method with params as input values.
  8191  func (_IERC721 *IERC721TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  8192  	return _IERC721.Contract.contract.Transact(opts, method, params...)
  8193  }
  8194  
  8195  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8196  //
  8197  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8198  func (_IERC721 *IERC721Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  8199  	var (
  8200  		ret0 = new(*big.Int)
  8201  	)
  8202  	out := ret0
  8203  	err := _IERC721.contract.Call(opts, out, "balanceOf", owner)
  8204  	return *ret0, err
  8205  }
  8206  
  8207  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8208  //
  8209  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8210  func (_IERC721 *IERC721Session) BalanceOf(owner common.Address) (*big.Int, error) {
  8211  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  8212  }
  8213  
  8214  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  8215  //
  8216  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  8217  func (_IERC721 *IERC721CallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  8218  	return _IERC721.Contract.BalanceOf(&_IERC721.CallOpts, owner)
  8219  }
  8220  
  8221  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8222  //
  8223  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8224  func (_IERC721 *IERC721Caller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  8225  	var (
  8226  		ret0 = new(common.Address)
  8227  	)
  8228  	out := ret0
  8229  	err := _IERC721.contract.Call(opts, out, "getApproved", tokenId)
  8230  	return *ret0, err
  8231  }
  8232  
  8233  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8234  //
  8235  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8236  func (_IERC721 *IERC721Session) GetApproved(tokenId *big.Int) (common.Address, error) {
  8237  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  8238  }
  8239  
  8240  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  8241  //
  8242  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  8243  func (_IERC721 *IERC721CallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  8244  	return _IERC721.Contract.GetApproved(&_IERC721.CallOpts, tokenId)
  8245  }
  8246  
  8247  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8248  //
  8249  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8250  func (_IERC721 *IERC721Caller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  8251  	var (
  8252  		ret0 = new(bool)
  8253  	)
  8254  	out := ret0
  8255  	err := _IERC721.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  8256  	return *ret0, err
  8257  }
  8258  
  8259  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8260  //
  8261  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8262  func (_IERC721 *IERC721Session) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  8263  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  8264  }
  8265  
  8266  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  8267  //
  8268  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  8269  func (_IERC721 *IERC721CallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  8270  	return _IERC721.Contract.IsApprovedForAll(&_IERC721.CallOpts, owner, operator)
  8271  }
  8272  
  8273  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8274  //
  8275  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8276  func (_IERC721 *IERC721Caller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  8277  	var (
  8278  		ret0 = new(common.Address)
  8279  	)
  8280  	out := ret0
  8281  	err := _IERC721.contract.Call(opts, out, "ownerOf", tokenId)
  8282  	return *ret0, err
  8283  }
  8284  
  8285  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8286  //
  8287  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8288  func (_IERC721 *IERC721Session) OwnerOf(tokenId *big.Int) (common.Address, error) {
  8289  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  8290  }
  8291  
  8292  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  8293  //
  8294  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  8295  func (_IERC721 *IERC721CallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  8296  	return _IERC721.Contract.OwnerOf(&_IERC721.CallOpts, tokenId)
  8297  }
  8298  
  8299  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8300  //
  8301  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8302  func (_IERC721 *IERC721Caller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  8303  	var (
  8304  		ret0 = new(bool)
  8305  	)
  8306  	out := ret0
  8307  	err := _IERC721.contract.Call(opts, out, "supportsInterface", interfaceId)
  8308  	return *ret0, err
  8309  }
  8310  
  8311  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8312  //
  8313  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8314  func (_IERC721 *IERC721Session) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8315  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  8316  }
  8317  
  8318  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  8319  //
  8320  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  8321  func (_IERC721 *IERC721CallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  8322  	return _IERC721.Contract.SupportsInterface(&_IERC721.CallOpts, interfaceId)
  8323  }
  8324  
  8325  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8326  //
  8327  // Solidity: function approve(address to, uint256 tokenId) returns()
  8328  func (_IERC721 *IERC721Transactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8329  	return _IERC721.contract.Transact(opts, "approve", to, tokenId)
  8330  }
  8331  
  8332  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8333  //
  8334  // Solidity: function approve(address to, uint256 tokenId) returns()
  8335  func (_IERC721 *IERC721Session) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8336  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  8337  }
  8338  
  8339  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  8340  //
  8341  // Solidity: function approve(address to, uint256 tokenId) returns()
  8342  func (_IERC721 *IERC721TransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8343  	return _IERC721.Contract.Approve(&_IERC721.TransactOpts, to, tokenId)
  8344  }
  8345  
  8346  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8347  //
  8348  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8349  func (_IERC721 *IERC721Transactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8350  	return _IERC721.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  8351  }
  8352  
  8353  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8354  //
  8355  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8356  func (_IERC721 *IERC721Session) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8357  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8358  }
  8359  
  8360  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  8361  //
  8362  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  8363  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8364  	return _IERC721.Contract.SafeTransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8365  }
  8366  
  8367  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8368  //
  8369  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8370  func (_IERC721 *IERC721Transactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8371  	return _IERC721.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  8372  }
  8373  
  8374  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8375  //
  8376  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8377  func (_IERC721 *IERC721Session) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8378  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  8379  }
  8380  
  8381  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  8382  //
  8383  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  8384  func (_IERC721 *IERC721TransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  8385  	return _IERC721.Contract.SafeTransferFrom0(&_IERC721.TransactOpts, from, to, tokenId, data)
  8386  }
  8387  
  8388  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8389  //
  8390  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8391  func (_IERC721 *IERC721Transactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  8392  	return _IERC721.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  8393  }
  8394  
  8395  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8396  //
  8397  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8398  func (_IERC721 *IERC721Session) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  8399  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  8400  }
  8401  
  8402  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  8403  //
  8404  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  8405  func (_IERC721 *IERC721TransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  8406  	return _IERC721.Contract.SetApprovalForAll(&_IERC721.TransactOpts, operator, _approved)
  8407  }
  8408  
  8409  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8410  //
  8411  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8412  func (_IERC721 *IERC721Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8413  	return _IERC721.contract.Transact(opts, "transferFrom", from, to, tokenId)
  8414  }
  8415  
  8416  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8417  //
  8418  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8419  func (_IERC721 *IERC721Session) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8420  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8421  }
  8422  
  8423  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  8424  //
  8425  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  8426  func (_IERC721 *IERC721TransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  8427  	return _IERC721.Contract.TransferFrom(&_IERC721.TransactOpts, from, to, tokenId)
  8428  }
  8429  
  8430  // IERC721ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721 contract.
  8431  type IERC721ApprovalIterator struct {
  8432  	Event *IERC721Approval // Event containing the contract specifics and raw log
  8433  
  8434  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8435  	event    string              // Event name to use for unpacking event data
  8436  
  8437  	logs chan types.Log      // Log channel receiving the found contract events
  8438  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8439  	done bool                // Whether the subscription completed delivering logs
  8440  	fail error               // Occurred error to stop iteration
  8441  }
  8442  
  8443  // Next advances the iterator to the subsequent event, returning whether there
  8444  // are any more events found. In case of a retrieval or parsing error, false is
  8445  // returned and Error() can be queried for the exact failure.
  8446  func (it *IERC721ApprovalIterator) Next() bool {
  8447  	// If the iterator failed, stop iterating
  8448  	if it.fail != nil {
  8449  		return false
  8450  	}
  8451  	// If the iterator completed, deliver directly whatever's available
  8452  	if it.done {
  8453  		select {
  8454  		case log := <-it.logs:
  8455  			it.Event = new(IERC721Approval)
  8456  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8457  				it.fail = err
  8458  				return false
  8459  			}
  8460  			it.Event.Raw = log
  8461  			return true
  8462  
  8463  		default:
  8464  			return false
  8465  		}
  8466  	}
  8467  	// Iterator still in progress, wait for either a data or an error event
  8468  	select {
  8469  	case log := <-it.logs:
  8470  		it.Event = new(IERC721Approval)
  8471  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8472  			it.fail = err
  8473  			return false
  8474  		}
  8475  		it.Event.Raw = log
  8476  		return true
  8477  
  8478  	case err := <-it.sub.Err():
  8479  		it.done = true
  8480  		it.fail = err
  8481  		return it.Next()
  8482  	}
  8483  }
  8484  
  8485  // Error returns any retrieval or parsing error occurred during filtering.
  8486  func (it *IERC721ApprovalIterator) Error() error {
  8487  	return it.fail
  8488  }
  8489  
  8490  // Close terminates the iteration process, releasing any pending underlying
  8491  // resources.
  8492  func (it *IERC721ApprovalIterator) Close() error {
  8493  	it.sub.Unsubscribe()
  8494  	return nil
  8495  }
  8496  
  8497  // IERC721Approval represents a Approval event raised by the IERC721 contract.
  8498  type IERC721Approval struct {
  8499  	Owner    common.Address
  8500  	Approved common.Address
  8501  	TokenId  *big.Int
  8502  	Raw      types.Log // Blockchain specific contextual infos
  8503  }
  8504  
  8505  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8506  //
  8507  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8508  func (_IERC721 *IERC721Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721ApprovalIterator, error) {
  8509  
  8510  	var ownerRule []interface{}
  8511  	for _, ownerItem := range owner {
  8512  		ownerRule = append(ownerRule, ownerItem)
  8513  	}
  8514  	var approvedRule []interface{}
  8515  	for _, approvedItem := range approved {
  8516  		approvedRule = append(approvedRule, approvedItem)
  8517  	}
  8518  	var tokenIdRule []interface{}
  8519  	for _, tokenIdItem := range tokenId {
  8520  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8521  	}
  8522  
  8523  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8524  	if err != nil {
  8525  		return nil, err
  8526  	}
  8527  	return &IERC721ApprovalIterator{contract: _IERC721.contract, event: "Approval", logs: logs, sub: sub}, nil
  8528  }
  8529  
  8530  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8531  //
  8532  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8533  func (_IERC721 *IERC721Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721Approval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  8534  
  8535  	var ownerRule []interface{}
  8536  	for _, ownerItem := range owner {
  8537  		ownerRule = append(ownerRule, ownerItem)
  8538  	}
  8539  	var approvedRule []interface{}
  8540  	for _, approvedItem := range approved {
  8541  		approvedRule = append(approvedRule, approvedItem)
  8542  	}
  8543  	var tokenIdRule []interface{}
  8544  	for _, tokenIdItem := range tokenId {
  8545  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8546  	}
  8547  
  8548  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  8549  	if err != nil {
  8550  		return nil, err
  8551  	}
  8552  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8553  		defer sub.Unsubscribe()
  8554  		for {
  8555  			select {
  8556  			case log := <-logs:
  8557  				// New log arrived, parse the event and forward to the user
  8558  				event := new(IERC721Approval)
  8559  				if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  8560  					return err
  8561  				}
  8562  				event.Raw = log
  8563  
  8564  				select {
  8565  				case sink <- event:
  8566  				case err := <-sub.Err():
  8567  					return err
  8568  				case <-quit:
  8569  					return nil
  8570  				}
  8571  			case err := <-sub.Err():
  8572  				return err
  8573  			case <-quit:
  8574  				return nil
  8575  			}
  8576  		}
  8577  	}), nil
  8578  }
  8579  
  8580  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  8581  //
  8582  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  8583  func (_IERC721 *IERC721Filterer) ParseApproval(log types.Log) (*IERC721Approval, error) {
  8584  	event := new(IERC721Approval)
  8585  	if err := _IERC721.contract.UnpackLog(event, "Approval", log); err != nil {
  8586  		return nil, err
  8587  	}
  8588  	return event, nil
  8589  }
  8590  
  8591  // IERC721ApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721 contract.
  8592  type IERC721ApprovalForAllIterator struct {
  8593  	Event *IERC721ApprovalForAll // Event containing the contract specifics and raw log
  8594  
  8595  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8596  	event    string              // Event name to use for unpacking event data
  8597  
  8598  	logs chan types.Log      // Log channel receiving the found contract events
  8599  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8600  	done bool                // Whether the subscription completed delivering logs
  8601  	fail error               // Occurred error to stop iteration
  8602  }
  8603  
  8604  // Next advances the iterator to the subsequent event, returning whether there
  8605  // are any more events found. In case of a retrieval or parsing error, false is
  8606  // returned and Error() can be queried for the exact failure.
  8607  func (it *IERC721ApprovalForAllIterator) Next() bool {
  8608  	// If the iterator failed, stop iterating
  8609  	if it.fail != nil {
  8610  		return false
  8611  	}
  8612  	// If the iterator completed, deliver directly whatever's available
  8613  	if it.done {
  8614  		select {
  8615  		case log := <-it.logs:
  8616  			it.Event = new(IERC721ApprovalForAll)
  8617  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8618  				it.fail = err
  8619  				return false
  8620  			}
  8621  			it.Event.Raw = log
  8622  			return true
  8623  
  8624  		default:
  8625  			return false
  8626  		}
  8627  	}
  8628  	// Iterator still in progress, wait for either a data or an error event
  8629  	select {
  8630  	case log := <-it.logs:
  8631  		it.Event = new(IERC721ApprovalForAll)
  8632  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8633  			it.fail = err
  8634  			return false
  8635  		}
  8636  		it.Event.Raw = log
  8637  		return true
  8638  
  8639  	case err := <-it.sub.Err():
  8640  		it.done = true
  8641  		it.fail = err
  8642  		return it.Next()
  8643  	}
  8644  }
  8645  
  8646  // Error returns any retrieval or parsing error occurred during filtering.
  8647  func (it *IERC721ApprovalForAllIterator) Error() error {
  8648  	return it.fail
  8649  }
  8650  
  8651  // Close terminates the iteration process, releasing any pending underlying
  8652  // resources.
  8653  func (it *IERC721ApprovalForAllIterator) Close() error {
  8654  	it.sub.Unsubscribe()
  8655  	return nil
  8656  }
  8657  
  8658  // IERC721ApprovalForAll represents a ApprovalForAll event raised by the IERC721 contract.
  8659  type IERC721ApprovalForAll struct {
  8660  	Owner    common.Address
  8661  	Operator common.Address
  8662  	Approved bool
  8663  	Raw      types.Log // Blockchain specific contextual infos
  8664  }
  8665  
  8666  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8667  //
  8668  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8669  func (_IERC721 *IERC721Filterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721ApprovalForAllIterator, error) {
  8670  
  8671  	var ownerRule []interface{}
  8672  	for _, ownerItem := range owner {
  8673  		ownerRule = append(ownerRule, ownerItem)
  8674  	}
  8675  	var operatorRule []interface{}
  8676  	for _, operatorItem := range operator {
  8677  		operatorRule = append(operatorRule, operatorItem)
  8678  	}
  8679  
  8680  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  8681  	if err != nil {
  8682  		return nil, err
  8683  	}
  8684  	return &IERC721ApprovalForAllIterator{contract: _IERC721.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  8685  }
  8686  
  8687  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8688  //
  8689  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8690  func (_IERC721 *IERC721Filterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721ApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  8691  
  8692  	var ownerRule []interface{}
  8693  	for _, ownerItem := range owner {
  8694  		ownerRule = append(ownerRule, ownerItem)
  8695  	}
  8696  	var operatorRule []interface{}
  8697  	for _, operatorItem := range operator {
  8698  		operatorRule = append(operatorRule, operatorItem)
  8699  	}
  8700  
  8701  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  8702  	if err != nil {
  8703  		return nil, err
  8704  	}
  8705  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8706  		defer sub.Unsubscribe()
  8707  		for {
  8708  			select {
  8709  			case log := <-logs:
  8710  				// New log arrived, parse the event and forward to the user
  8711  				event := new(IERC721ApprovalForAll)
  8712  				if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  8713  					return err
  8714  				}
  8715  				event.Raw = log
  8716  
  8717  				select {
  8718  				case sink <- event:
  8719  				case err := <-sub.Err():
  8720  					return err
  8721  				case <-quit:
  8722  					return nil
  8723  				}
  8724  			case err := <-sub.Err():
  8725  				return err
  8726  			case <-quit:
  8727  				return nil
  8728  			}
  8729  		}
  8730  	}), nil
  8731  }
  8732  
  8733  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  8734  //
  8735  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  8736  func (_IERC721 *IERC721Filterer) ParseApprovalForAll(log types.Log) (*IERC721ApprovalForAll, error) {
  8737  	event := new(IERC721ApprovalForAll)
  8738  	if err := _IERC721.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  8739  		return nil, err
  8740  	}
  8741  	return event, nil
  8742  }
  8743  
  8744  // IERC721TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721 contract.
  8745  type IERC721TransferIterator struct {
  8746  	Event *IERC721Transfer // Event containing the contract specifics and raw log
  8747  
  8748  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  8749  	event    string              // Event name to use for unpacking event data
  8750  
  8751  	logs chan types.Log      // Log channel receiving the found contract events
  8752  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  8753  	done bool                // Whether the subscription completed delivering logs
  8754  	fail error               // Occurred error to stop iteration
  8755  }
  8756  
  8757  // Next advances the iterator to the subsequent event, returning whether there
  8758  // are any more events found. In case of a retrieval or parsing error, false is
  8759  // returned and Error() can be queried for the exact failure.
  8760  func (it *IERC721TransferIterator) Next() bool {
  8761  	// If the iterator failed, stop iterating
  8762  	if it.fail != nil {
  8763  		return false
  8764  	}
  8765  	// If the iterator completed, deliver directly whatever's available
  8766  	if it.done {
  8767  		select {
  8768  		case log := <-it.logs:
  8769  			it.Event = new(IERC721Transfer)
  8770  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8771  				it.fail = err
  8772  				return false
  8773  			}
  8774  			it.Event.Raw = log
  8775  			return true
  8776  
  8777  		default:
  8778  			return false
  8779  		}
  8780  	}
  8781  	// Iterator still in progress, wait for either a data or an error event
  8782  	select {
  8783  	case log := <-it.logs:
  8784  		it.Event = new(IERC721Transfer)
  8785  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  8786  			it.fail = err
  8787  			return false
  8788  		}
  8789  		it.Event.Raw = log
  8790  		return true
  8791  
  8792  	case err := <-it.sub.Err():
  8793  		it.done = true
  8794  		it.fail = err
  8795  		return it.Next()
  8796  	}
  8797  }
  8798  
  8799  // Error returns any retrieval or parsing error occurred during filtering.
  8800  func (it *IERC721TransferIterator) Error() error {
  8801  	return it.fail
  8802  }
  8803  
  8804  // Close terminates the iteration process, releasing any pending underlying
  8805  // resources.
  8806  func (it *IERC721TransferIterator) Close() error {
  8807  	it.sub.Unsubscribe()
  8808  	return nil
  8809  }
  8810  
  8811  // IERC721Transfer represents a Transfer event raised by the IERC721 contract.
  8812  type IERC721Transfer struct {
  8813  	From    common.Address
  8814  	To      common.Address
  8815  	TokenId *big.Int
  8816  	Raw     types.Log // Blockchain specific contextual infos
  8817  }
  8818  
  8819  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8820  //
  8821  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8822  func (_IERC721 *IERC721Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721TransferIterator, error) {
  8823  
  8824  	var fromRule []interface{}
  8825  	for _, fromItem := range from {
  8826  		fromRule = append(fromRule, fromItem)
  8827  	}
  8828  	var toRule []interface{}
  8829  	for _, toItem := range to {
  8830  		toRule = append(toRule, toItem)
  8831  	}
  8832  	var tokenIdRule []interface{}
  8833  	for _, tokenIdItem := range tokenId {
  8834  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8835  	}
  8836  
  8837  	logs, sub, err := _IERC721.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  8838  	if err != nil {
  8839  		return nil, err
  8840  	}
  8841  	return &IERC721TransferIterator{contract: _IERC721.contract, event: "Transfer", logs: logs, sub: sub}, nil
  8842  }
  8843  
  8844  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8845  //
  8846  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8847  func (_IERC721 *IERC721Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721Transfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  8848  
  8849  	var fromRule []interface{}
  8850  	for _, fromItem := range from {
  8851  		fromRule = append(fromRule, fromItem)
  8852  	}
  8853  	var toRule []interface{}
  8854  	for _, toItem := range to {
  8855  		toRule = append(toRule, toItem)
  8856  	}
  8857  	var tokenIdRule []interface{}
  8858  	for _, tokenIdItem := range tokenId {
  8859  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  8860  	}
  8861  
  8862  	logs, sub, err := _IERC721.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  8863  	if err != nil {
  8864  		return nil, err
  8865  	}
  8866  	return event.NewSubscription(func(quit <-chan struct{}) error {
  8867  		defer sub.Unsubscribe()
  8868  		for {
  8869  			select {
  8870  			case log := <-logs:
  8871  				// New log arrived, parse the event and forward to the user
  8872  				event := new(IERC721Transfer)
  8873  				if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  8874  					return err
  8875  				}
  8876  				event.Raw = log
  8877  
  8878  				select {
  8879  				case sink <- event:
  8880  				case err := <-sub.Err():
  8881  					return err
  8882  				case <-quit:
  8883  					return nil
  8884  				}
  8885  			case err := <-sub.Err():
  8886  				return err
  8887  			case <-quit:
  8888  				return nil
  8889  			}
  8890  		}
  8891  	}), nil
  8892  }
  8893  
  8894  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  8895  //
  8896  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  8897  func (_IERC721 *IERC721Filterer) ParseTransfer(log types.Log) (*IERC721Transfer, error) {
  8898  	event := new(IERC721Transfer)
  8899  	if err := _IERC721.contract.UnpackLog(event, "Transfer", log); err != nil {
  8900  		return nil, err
  8901  	}
  8902  	return event, nil
  8903  }
  8904  
  8905  // IERC721BridgeReceiverABI is the input ABI used to generate the binding from.
  8906  const IERC721BridgeReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"_from\",\"type\":\"address\"},{\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
  8907  
  8908  // IERC721BridgeReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  8909  const IERC721BridgeReceiverBinRuntime = ``
  8910  
  8911  // IERC721BridgeReceiverFuncSigs maps the 4-byte function signature to its string representation.
  8912  var IERC721BridgeReceiverFuncSigs = map[string]string{
  8913  	"cf0da290": "onERC721Received(address,uint256,address,bytes)",
  8914  }
  8915  
  8916  // IERC721BridgeReceiver is an auto generated Go binding around a Klaytn contract.
  8917  type IERC721BridgeReceiver struct {
  8918  	IERC721BridgeReceiverCaller     // Read-only binding to the contract
  8919  	IERC721BridgeReceiverTransactor // Write-only binding to the contract
  8920  	IERC721BridgeReceiverFilterer   // Log filterer for contract events
  8921  }
  8922  
  8923  // IERC721BridgeReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
  8924  type IERC721BridgeReceiverCaller struct {
  8925  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8926  }
  8927  
  8928  // IERC721BridgeReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
  8929  type IERC721BridgeReceiverTransactor struct {
  8930  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8931  }
  8932  
  8933  // IERC721BridgeReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  8934  type IERC721BridgeReceiverFilterer struct {
  8935  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  8936  }
  8937  
  8938  // IERC721BridgeReceiverSession is an auto generated Go binding around a Klaytn contract,
  8939  // with pre-set call and transact options.
  8940  type IERC721BridgeReceiverSession struct {
  8941  	Contract     *IERC721BridgeReceiver // Generic contract binding to set the session for
  8942  	CallOpts     bind.CallOpts          // Call options to use throughout this session
  8943  	TransactOpts bind.TransactOpts      // Transaction auth options to use throughout this session
  8944  }
  8945  
  8946  // IERC721BridgeReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  8947  // with pre-set call options.
  8948  type IERC721BridgeReceiverCallerSession struct {
  8949  	Contract *IERC721BridgeReceiverCaller // Generic contract caller binding to set the session for
  8950  	CallOpts bind.CallOpts                // Call options to use throughout this session
  8951  }
  8952  
  8953  // IERC721BridgeReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  8954  // with pre-set transact options.
  8955  type IERC721BridgeReceiverTransactorSession struct {
  8956  	Contract     *IERC721BridgeReceiverTransactor // Generic contract transactor binding to set the session for
  8957  	TransactOpts bind.TransactOpts                // Transaction auth options to use throughout this session
  8958  }
  8959  
  8960  // IERC721BridgeReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
  8961  type IERC721BridgeReceiverRaw struct {
  8962  	Contract *IERC721BridgeReceiver // Generic contract binding to access the raw methods on
  8963  }
  8964  
  8965  // IERC721BridgeReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  8966  type IERC721BridgeReceiverCallerRaw struct {
  8967  	Contract *IERC721BridgeReceiverCaller // Generic read-only contract binding to access the raw methods on
  8968  }
  8969  
  8970  // IERC721BridgeReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  8971  type IERC721BridgeReceiverTransactorRaw struct {
  8972  	Contract *IERC721BridgeReceiverTransactor // Generic write-only contract binding to access the raw methods on
  8973  }
  8974  
  8975  // NewIERC721BridgeReceiver creates a new instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  8976  func NewIERC721BridgeReceiver(address common.Address, backend bind.ContractBackend) (*IERC721BridgeReceiver, error) {
  8977  	contract, err := bindIERC721BridgeReceiver(address, backend, backend, backend)
  8978  	if err != nil {
  8979  		return nil, err
  8980  	}
  8981  	return &IERC721BridgeReceiver{IERC721BridgeReceiverCaller: IERC721BridgeReceiverCaller{contract: contract}, IERC721BridgeReceiverTransactor: IERC721BridgeReceiverTransactor{contract: contract}, IERC721BridgeReceiverFilterer: IERC721BridgeReceiverFilterer{contract: contract}}, nil
  8982  }
  8983  
  8984  // NewIERC721BridgeReceiverCaller creates a new read-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  8985  func NewIERC721BridgeReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721BridgeReceiverCaller, error) {
  8986  	contract, err := bindIERC721BridgeReceiver(address, caller, nil, nil)
  8987  	if err != nil {
  8988  		return nil, err
  8989  	}
  8990  	return &IERC721BridgeReceiverCaller{contract: contract}, nil
  8991  }
  8992  
  8993  // NewIERC721BridgeReceiverTransactor creates a new write-only instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  8994  func NewIERC721BridgeReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721BridgeReceiverTransactor, error) {
  8995  	contract, err := bindIERC721BridgeReceiver(address, nil, transactor, nil)
  8996  	if err != nil {
  8997  		return nil, err
  8998  	}
  8999  	return &IERC721BridgeReceiverTransactor{contract: contract}, nil
  9000  }
  9001  
  9002  // NewIERC721BridgeReceiverFilterer creates a new log filterer instance of IERC721BridgeReceiver, bound to a specific deployed contract.
  9003  func NewIERC721BridgeReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721BridgeReceiverFilterer, error) {
  9004  	contract, err := bindIERC721BridgeReceiver(address, nil, nil, filterer)
  9005  	if err != nil {
  9006  		return nil, err
  9007  	}
  9008  	return &IERC721BridgeReceiverFilterer{contract: contract}, nil
  9009  }
  9010  
  9011  // bindIERC721BridgeReceiver binds a generic wrapper to an already deployed contract.
  9012  func bindIERC721BridgeReceiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9013  	parsed, err := abi.JSON(strings.NewReader(IERC721BridgeReceiverABI))
  9014  	if err != nil {
  9015  		return nil, err
  9016  	}
  9017  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9018  }
  9019  
  9020  // Call invokes the (constant) contract method with params as input values and
  9021  // sets the output to result. The result type might be a single field for simple
  9022  // returns, a slice of interfaces for anonymous returns and a struct for named
  9023  // returns.
  9024  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9025  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverCaller.contract.Call(opts, result, method, params...)
  9026  }
  9027  
  9028  // Transfer initiates a plain transaction to move funds to the contract, calling
  9029  // its default method if one is available.
  9030  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9031  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transfer(opts)
  9032  }
  9033  
  9034  // Transact invokes the (paid) contract method with params as input values.
  9035  func (_IERC721BridgeReceiver *IERC721BridgeReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9036  	return _IERC721BridgeReceiver.Contract.IERC721BridgeReceiverTransactor.contract.Transact(opts, method, params...)
  9037  }
  9038  
  9039  // Call invokes the (constant) contract method with params as input values and
  9040  // sets the output to result. The result type might be a single field for simple
  9041  // returns, a slice of interfaces for anonymous returns and a struct for named
  9042  // returns.
  9043  func (_IERC721BridgeReceiver *IERC721BridgeReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9044  	return _IERC721BridgeReceiver.Contract.contract.Call(opts, result, method, params...)
  9045  }
  9046  
  9047  // Transfer initiates a plain transaction to move funds to the contract, calling
  9048  // its default method if one is available.
  9049  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9050  	return _IERC721BridgeReceiver.Contract.contract.Transfer(opts)
  9051  }
  9052  
  9053  // Transact invokes the (paid) contract method with params as input values.
  9054  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9055  	return _IERC721BridgeReceiver.Contract.contract.Transact(opts, method, params...)
  9056  }
  9057  
  9058  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9059  //
  9060  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9061  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, _from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9062  	return _IERC721BridgeReceiver.contract.Transact(opts, "onERC721Received", _from, _tokenId, _to, _extraData)
  9063  }
  9064  
  9065  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9066  //
  9067  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9068  func (_IERC721BridgeReceiver *IERC721BridgeReceiverSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9069  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  9070  }
  9071  
  9072  // OnERC721Received is a paid mutator transaction binding the contract method 0xcf0da290.
  9073  //
  9074  // Solidity: function onERC721Received(address _from, uint256 _tokenId, address _to, bytes _extraData) returns()
  9075  func (_IERC721BridgeReceiver *IERC721BridgeReceiverTransactorSession) OnERC721Received(_from common.Address, _tokenId *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
  9076  	return _IERC721BridgeReceiver.Contract.OnERC721Received(&_IERC721BridgeReceiver.TransactOpts, _from, _tokenId, _to, _extraData)
  9077  }
  9078  
  9079  // IERC721EnumerableABI is the input ABI used to generate the binding from.
  9080  const IERC721EnumerableABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
  9081  
  9082  // IERC721EnumerableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
  9083  const IERC721EnumerableBinRuntime = ``
  9084  
  9085  // IERC721EnumerableFuncSigs maps the 4-byte function signature to its string representation.
  9086  var IERC721EnumerableFuncSigs = map[string]string{
  9087  	"095ea7b3": "approve(address,uint256)",
  9088  	"70a08231": "balanceOf(address)",
  9089  	"081812fc": "getApproved(uint256)",
  9090  	"e985e9c5": "isApprovedForAll(address,address)",
  9091  	"6352211e": "ownerOf(uint256)",
  9092  	"42842e0e": "safeTransferFrom(address,address,uint256)",
  9093  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
  9094  	"a22cb465": "setApprovalForAll(address,bool)",
  9095  	"01ffc9a7": "supportsInterface(bytes4)",
  9096  	"4f6ccce7": "tokenByIndex(uint256)",
  9097  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
  9098  	"18160ddd": "totalSupply()",
  9099  	"23b872dd": "transferFrom(address,address,uint256)",
  9100  }
  9101  
  9102  // IERC721Enumerable is an auto generated Go binding around a Klaytn contract.
  9103  type IERC721Enumerable struct {
  9104  	IERC721EnumerableCaller     // Read-only binding to the contract
  9105  	IERC721EnumerableTransactor // Write-only binding to the contract
  9106  	IERC721EnumerableFilterer   // Log filterer for contract events
  9107  }
  9108  
  9109  // IERC721EnumerableCaller is an auto generated read-only Go binding around a Klaytn contract.
  9110  type IERC721EnumerableCaller struct {
  9111  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9112  }
  9113  
  9114  // IERC721EnumerableTransactor is an auto generated write-only Go binding around a Klaytn contract.
  9115  type IERC721EnumerableTransactor struct {
  9116  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9117  }
  9118  
  9119  // IERC721EnumerableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
  9120  type IERC721EnumerableFilterer struct {
  9121  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
  9122  }
  9123  
  9124  // IERC721EnumerableSession is an auto generated Go binding around a Klaytn contract,
  9125  // with pre-set call and transact options.
  9126  type IERC721EnumerableSession struct {
  9127  	Contract     *IERC721Enumerable // Generic contract binding to set the session for
  9128  	CallOpts     bind.CallOpts      // Call options to use throughout this session
  9129  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
  9130  }
  9131  
  9132  // IERC721EnumerableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
  9133  // with pre-set call options.
  9134  type IERC721EnumerableCallerSession struct {
  9135  	Contract *IERC721EnumerableCaller // Generic contract caller binding to set the session for
  9136  	CallOpts bind.CallOpts            // Call options to use throughout this session
  9137  }
  9138  
  9139  // IERC721EnumerableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
  9140  // with pre-set transact options.
  9141  type IERC721EnumerableTransactorSession struct {
  9142  	Contract     *IERC721EnumerableTransactor // Generic contract transactor binding to set the session for
  9143  	TransactOpts bind.TransactOpts            // Transaction auth options to use throughout this session
  9144  }
  9145  
  9146  // IERC721EnumerableRaw is an auto generated low-level Go binding around a Klaytn contract.
  9147  type IERC721EnumerableRaw struct {
  9148  	Contract *IERC721Enumerable // Generic contract binding to access the raw methods on
  9149  }
  9150  
  9151  // IERC721EnumerableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
  9152  type IERC721EnumerableCallerRaw struct {
  9153  	Contract *IERC721EnumerableCaller // Generic read-only contract binding to access the raw methods on
  9154  }
  9155  
  9156  // IERC721EnumerableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
  9157  type IERC721EnumerableTransactorRaw struct {
  9158  	Contract *IERC721EnumerableTransactor // Generic write-only contract binding to access the raw methods on
  9159  }
  9160  
  9161  // NewIERC721Enumerable creates a new instance of IERC721Enumerable, bound to a specific deployed contract.
  9162  func NewIERC721Enumerable(address common.Address, backend bind.ContractBackend) (*IERC721Enumerable, error) {
  9163  	contract, err := bindIERC721Enumerable(address, backend, backend, backend)
  9164  	if err != nil {
  9165  		return nil, err
  9166  	}
  9167  	return &IERC721Enumerable{IERC721EnumerableCaller: IERC721EnumerableCaller{contract: contract}, IERC721EnumerableTransactor: IERC721EnumerableTransactor{contract: contract}, IERC721EnumerableFilterer: IERC721EnumerableFilterer{contract: contract}}, nil
  9168  }
  9169  
  9170  // NewIERC721EnumerableCaller creates a new read-only instance of IERC721Enumerable, bound to a specific deployed contract.
  9171  func NewIERC721EnumerableCaller(address common.Address, caller bind.ContractCaller) (*IERC721EnumerableCaller, error) {
  9172  	contract, err := bindIERC721Enumerable(address, caller, nil, nil)
  9173  	if err != nil {
  9174  		return nil, err
  9175  	}
  9176  	return &IERC721EnumerableCaller{contract: contract}, nil
  9177  }
  9178  
  9179  // NewIERC721EnumerableTransactor creates a new write-only instance of IERC721Enumerable, bound to a specific deployed contract.
  9180  func NewIERC721EnumerableTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721EnumerableTransactor, error) {
  9181  	contract, err := bindIERC721Enumerable(address, nil, transactor, nil)
  9182  	if err != nil {
  9183  		return nil, err
  9184  	}
  9185  	return &IERC721EnumerableTransactor{contract: contract}, nil
  9186  }
  9187  
  9188  // NewIERC721EnumerableFilterer creates a new log filterer instance of IERC721Enumerable, bound to a specific deployed contract.
  9189  func NewIERC721EnumerableFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721EnumerableFilterer, error) {
  9190  	contract, err := bindIERC721Enumerable(address, nil, nil, filterer)
  9191  	if err != nil {
  9192  		return nil, err
  9193  	}
  9194  	return &IERC721EnumerableFilterer{contract: contract}, nil
  9195  }
  9196  
  9197  // bindIERC721Enumerable binds a generic wrapper to an already deployed contract.
  9198  func bindIERC721Enumerable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
  9199  	parsed, err := abi.JSON(strings.NewReader(IERC721EnumerableABI))
  9200  	if err != nil {
  9201  		return nil, err
  9202  	}
  9203  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
  9204  }
  9205  
  9206  // Call invokes the (constant) contract method with params as input values and
  9207  // sets the output to result. The result type might be a single field for simple
  9208  // returns, a slice of interfaces for anonymous returns and a struct for named
  9209  // returns.
  9210  func (_IERC721Enumerable *IERC721EnumerableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9211  	return _IERC721Enumerable.Contract.IERC721EnumerableCaller.contract.Call(opts, result, method, params...)
  9212  }
  9213  
  9214  // Transfer initiates a plain transaction to move funds to the contract, calling
  9215  // its default method if one is available.
  9216  func (_IERC721Enumerable *IERC721EnumerableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9217  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transfer(opts)
  9218  }
  9219  
  9220  // Transact invokes the (paid) contract method with params as input values.
  9221  func (_IERC721Enumerable *IERC721EnumerableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9222  	return _IERC721Enumerable.Contract.IERC721EnumerableTransactor.contract.Transact(opts, method, params...)
  9223  }
  9224  
  9225  // Call invokes the (constant) contract method with params as input values and
  9226  // sets the output to result. The result type might be a single field for simple
  9227  // returns, a slice of interfaces for anonymous returns and a struct for named
  9228  // returns.
  9229  func (_IERC721Enumerable *IERC721EnumerableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
  9230  	return _IERC721Enumerable.Contract.contract.Call(opts, result, method, params...)
  9231  }
  9232  
  9233  // Transfer initiates a plain transaction to move funds to the contract, calling
  9234  // its default method if one is available.
  9235  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
  9236  	return _IERC721Enumerable.Contract.contract.Transfer(opts)
  9237  }
  9238  
  9239  // Transact invokes the (paid) contract method with params as input values.
  9240  func (_IERC721Enumerable *IERC721EnumerableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
  9241  	return _IERC721Enumerable.Contract.contract.Transact(opts, method, params...)
  9242  }
  9243  
  9244  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9245  //
  9246  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9247  func (_IERC721Enumerable *IERC721EnumerableCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
  9248  	var (
  9249  		ret0 = new(*big.Int)
  9250  	)
  9251  	out := ret0
  9252  	err := _IERC721Enumerable.contract.Call(opts, out, "balanceOf", owner)
  9253  	return *ret0, err
  9254  }
  9255  
  9256  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9257  //
  9258  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9259  func (_IERC721Enumerable *IERC721EnumerableSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9260  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  9261  }
  9262  
  9263  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
  9264  //
  9265  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
  9266  func (_IERC721Enumerable *IERC721EnumerableCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
  9267  	return _IERC721Enumerable.Contract.BalanceOf(&_IERC721Enumerable.CallOpts, owner)
  9268  }
  9269  
  9270  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9271  //
  9272  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9273  func (_IERC721Enumerable *IERC721EnumerableCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9274  	var (
  9275  		ret0 = new(common.Address)
  9276  	)
  9277  	out := ret0
  9278  	err := _IERC721Enumerable.contract.Call(opts, out, "getApproved", tokenId)
  9279  	return *ret0, err
  9280  }
  9281  
  9282  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9283  //
  9284  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9285  func (_IERC721Enumerable *IERC721EnumerableSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9286  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  9287  }
  9288  
  9289  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
  9290  //
  9291  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
  9292  func (_IERC721Enumerable *IERC721EnumerableCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
  9293  	return _IERC721Enumerable.Contract.GetApproved(&_IERC721Enumerable.CallOpts, tokenId)
  9294  }
  9295  
  9296  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9297  //
  9298  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9299  func (_IERC721Enumerable *IERC721EnumerableCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
  9300  	var (
  9301  		ret0 = new(bool)
  9302  	)
  9303  	out := ret0
  9304  	err := _IERC721Enumerable.contract.Call(opts, out, "isApprovedForAll", owner, operator)
  9305  	return *ret0, err
  9306  }
  9307  
  9308  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9309  //
  9310  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9311  func (_IERC721Enumerable *IERC721EnumerableSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9312  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  9313  }
  9314  
  9315  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
  9316  //
  9317  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
  9318  func (_IERC721Enumerable *IERC721EnumerableCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
  9319  	return _IERC721Enumerable.Contract.IsApprovedForAll(&_IERC721Enumerable.CallOpts, owner, operator)
  9320  }
  9321  
  9322  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9323  //
  9324  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9325  func (_IERC721Enumerable *IERC721EnumerableCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
  9326  	var (
  9327  		ret0 = new(common.Address)
  9328  	)
  9329  	out := ret0
  9330  	err := _IERC721Enumerable.contract.Call(opts, out, "ownerOf", tokenId)
  9331  	return *ret0, err
  9332  }
  9333  
  9334  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9335  //
  9336  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9337  func (_IERC721Enumerable *IERC721EnumerableSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9338  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  9339  }
  9340  
  9341  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
  9342  //
  9343  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
  9344  func (_IERC721Enumerable *IERC721EnumerableCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
  9345  	return _IERC721Enumerable.Contract.OwnerOf(&_IERC721Enumerable.CallOpts, tokenId)
  9346  }
  9347  
  9348  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9349  //
  9350  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9351  func (_IERC721Enumerable *IERC721EnumerableCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
  9352  	var (
  9353  		ret0 = new(bool)
  9354  	)
  9355  	out := ret0
  9356  	err := _IERC721Enumerable.contract.Call(opts, out, "supportsInterface", interfaceId)
  9357  	return *ret0, err
  9358  }
  9359  
  9360  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9361  //
  9362  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9363  func (_IERC721Enumerable *IERC721EnumerableSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9364  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  9365  }
  9366  
  9367  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
  9368  //
  9369  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
  9370  func (_IERC721Enumerable *IERC721EnumerableCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
  9371  	return _IERC721Enumerable.Contract.SupportsInterface(&_IERC721Enumerable.CallOpts, interfaceId)
  9372  }
  9373  
  9374  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9375  //
  9376  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9377  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
  9378  	var (
  9379  		ret0 = new(*big.Int)
  9380  	)
  9381  	out := ret0
  9382  	err := _IERC721Enumerable.contract.Call(opts, out, "tokenByIndex", index)
  9383  	return *ret0, err
  9384  }
  9385  
  9386  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9387  //
  9388  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9389  func (_IERC721Enumerable *IERC721EnumerableSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9390  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  9391  }
  9392  
  9393  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
  9394  //
  9395  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
  9396  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
  9397  	return _IERC721Enumerable.Contract.TokenByIndex(&_IERC721Enumerable.CallOpts, index)
  9398  }
  9399  
  9400  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9401  //
  9402  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9403  func (_IERC721Enumerable *IERC721EnumerableCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
  9404  	var (
  9405  		ret0 = new(*big.Int)
  9406  	)
  9407  	out := ret0
  9408  	err := _IERC721Enumerable.contract.Call(opts, out, "tokenOfOwnerByIndex", owner, index)
  9409  	return *ret0, err
  9410  }
  9411  
  9412  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9413  //
  9414  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9415  func (_IERC721Enumerable *IERC721EnumerableSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9416  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  9417  }
  9418  
  9419  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
  9420  //
  9421  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256 tokenId)
  9422  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
  9423  	return _IERC721Enumerable.Contract.TokenOfOwnerByIndex(&_IERC721Enumerable.CallOpts, owner, index)
  9424  }
  9425  
  9426  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9427  //
  9428  // Solidity: function totalSupply() view returns(uint256)
  9429  func (_IERC721Enumerable *IERC721EnumerableCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
  9430  	var (
  9431  		ret0 = new(*big.Int)
  9432  	)
  9433  	out := ret0
  9434  	err := _IERC721Enumerable.contract.Call(opts, out, "totalSupply")
  9435  	return *ret0, err
  9436  }
  9437  
  9438  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9439  //
  9440  // Solidity: function totalSupply() view returns(uint256)
  9441  func (_IERC721Enumerable *IERC721EnumerableSession) TotalSupply() (*big.Int, error) {
  9442  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  9443  }
  9444  
  9445  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
  9446  //
  9447  // Solidity: function totalSupply() view returns(uint256)
  9448  func (_IERC721Enumerable *IERC721EnumerableCallerSession) TotalSupply() (*big.Int, error) {
  9449  	return _IERC721Enumerable.Contract.TotalSupply(&_IERC721Enumerable.CallOpts)
  9450  }
  9451  
  9452  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9453  //
  9454  // Solidity: function approve(address to, uint256 tokenId) returns()
  9455  func (_IERC721Enumerable *IERC721EnumerableTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9456  	return _IERC721Enumerable.contract.Transact(opts, "approve", to, tokenId)
  9457  }
  9458  
  9459  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9460  //
  9461  // Solidity: function approve(address to, uint256 tokenId) returns()
  9462  func (_IERC721Enumerable *IERC721EnumerableSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9463  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  9464  }
  9465  
  9466  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
  9467  //
  9468  // Solidity: function approve(address to, uint256 tokenId) returns()
  9469  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9470  	return _IERC721Enumerable.Contract.Approve(&_IERC721Enumerable.TransactOpts, to, tokenId)
  9471  }
  9472  
  9473  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9474  //
  9475  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9476  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9477  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
  9478  }
  9479  
  9480  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9481  //
  9482  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9483  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9484  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9485  }
  9486  
  9487  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
  9488  //
  9489  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
  9490  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9491  	return _IERC721Enumerable.Contract.SafeTransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9492  }
  9493  
  9494  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  9495  //
  9496  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  9497  func (_IERC721Enumerable *IERC721EnumerableTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  9498  	return _IERC721Enumerable.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
  9499  }
  9500  
  9501  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  9502  //
  9503  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  9504  func (_IERC721Enumerable *IERC721EnumerableSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  9505  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
  9506  }
  9507  
  9508  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
  9509  //
  9510  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
  9511  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
  9512  	return _IERC721Enumerable.Contract.SafeTransferFrom0(&_IERC721Enumerable.TransactOpts, from, to, tokenId, data)
  9513  }
  9514  
  9515  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  9516  //
  9517  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  9518  func (_IERC721Enumerable *IERC721EnumerableTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
  9519  	return _IERC721Enumerable.contract.Transact(opts, "setApprovalForAll", operator, _approved)
  9520  }
  9521  
  9522  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  9523  //
  9524  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  9525  func (_IERC721Enumerable *IERC721EnumerableSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  9526  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
  9527  }
  9528  
  9529  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
  9530  //
  9531  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
  9532  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
  9533  	return _IERC721Enumerable.Contract.SetApprovalForAll(&_IERC721Enumerable.TransactOpts, operator, _approved)
  9534  }
  9535  
  9536  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9537  //
  9538  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  9539  func (_IERC721Enumerable *IERC721EnumerableTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9540  	return _IERC721Enumerable.contract.Transact(opts, "transferFrom", from, to, tokenId)
  9541  }
  9542  
  9543  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9544  //
  9545  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  9546  func (_IERC721Enumerable *IERC721EnumerableSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9547  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9548  }
  9549  
  9550  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
  9551  //
  9552  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
  9553  func (_IERC721Enumerable *IERC721EnumerableTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
  9554  	return _IERC721Enumerable.Contract.TransferFrom(&_IERC721Enumerable.TransactOpts, from, to, tokenId)
  9555  }
  9556  
  9557  // IERC721EnumerableApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Enumerable contract.
  9558  type IERC721EnumerableApprovalIterator struct {
  9559  	Event *IERC721EnumerableApproval // Event containing the contract specifics and raw log
  9560  
  9561  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9562  	event    string              // Event name to use for unpacking event data
  9563  
  9564  	logs chan types.Log      // Log channel receiving the found contract events
  9565  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9566  	done bool                // Whether the subscription completed delivering logs
  9567  	fail error               // Occurred error to stop iteration
  9568  }
  9569  
  9570  // Next advances the iterator to the subsequent event, returning whether there
  9571  // are any more events found. In case of a retrieval or parsing error, false is
  9572  // returned and Error() can be queried for the exact failure.
  9573  func (it *IERC721EnumerableApprovalIterator) Next() bool {
  9574  	// If the iterator failed, stop iterating
  9575  	if it.fail != nil {
  9576  		return false
  9577  	}
  9578  	// If the iterator completed, deliver directly whatever's available
  9579  	if it.done {
  9580  		select {
  9581  		case log := <-it.logs:
  9582  			it.Event = new(IERC721EnumerableApproval)
  9583  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9584  				it.fail = err
  9585  				return false
  9586  			}
  9587  			it.Event.Raw = log
  9588  			return true
  9589  
  9590  		default:
  9591  			return false
  9592  		}
  9593  	}
  9594  	// Iterator still in progress, wait for either a data or an error event
  9595  	select {
  9596  	case log := <-it.logs:
  9597  		it.Event = new(IERC721EnumerableApproval)
  9598  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9599  			it.fail = err
  9600  			return false
  9601  		}
  9602  		it.Event.Raw = log
  9603  		return true
  9604  
  9605  	case err := <-it.sub.Err():
  9606  		it.done = true
  9607  		it.fail = err
  9608  		return it.Next()
  9609  	}
  9610  }
  9611  
  9612  // Error returns any retrieval or parsing error occurred during filtering.
  9613  func (it *IERC721EnumerableApprovalIterator) Error() error {
  9614  	return it.fail
  9615  }
  9616  
  9617  // Close terminates the iteration process, releasing any pending underlying
  9618  // resources.
  9619  func (it *IERC721EnumerableApprovalIterator) Close() error {
  9620  	it.sub.Unsubscribe()
  9621  	return nil
  9622  }
  9623  
  9624  // IERC721EnumerableApproval represents a Approval event raised by the IERC721Enumerable contract.
  9625  type IERC721EnumerableApproval struct {
  9626  	Owner    common.Address
  9627  	Approved common.Address
  9628  	TokenId  *big.Int
  9629  	Raw      types.Log // Blockchain specific contextual infos
  9630  }
  9631  
  9632  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9633  //
  9634  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  9635  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721EnumerableApprovalIterator, error) {
  9636  
  9637  	var ownerRule []interface{}
  9638  	for _, ownerItem := range owner {
  9639  		ownerRule = append(ownerRule, ownerItem)
  9640  	}
  9641  	var approvedRule []interface{}
  9642  	for _, approvedItem := range approved {
  9643  		approvedRule = append(approvedRule, approvedItem)
  9644  	}
  9645  	var tokenIdRule []interface{}
  9646  	for _, tokenIdItem := range tokenId {
  9647  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9648  	}
  9649  
  9650  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  9651  	if err != nil {
  9652  		return nil, err
  9653  	}
  9654  	return &IERC721EnumerableApprovalIterator{contract: _IERC721Enumerable.contract, event: "Approval", logs: logs, sub: sub}, nil
  9655  }
  9656  
  9657  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9658  //
  9659  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  9660  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  9661  
  9662  	var ownerRule []interface{}
  9663  	for _, ownerItem := range owner {
  9664  		ownerRule = append(ownerRule, ownerItem)
  9665  	}
  9666  	var approvedRule []interface{}
  9667  	for _, approvedItem := range approved {
  9668  		approvedRule = append(approvedRule, approvedItem)
  9669  	}
  9670  	var tokenIdRule []interface{}
  9671  	for _, tokenIdItem := range tokenId {
  9672  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9673  	}
  9674  
  9675  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
  9676  	if err != nil {
  9677  		return nil, err
  9678  	}
  9679  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9680  		defer sub.Unsubscribe()
  9681  		for {
  9682  			select {
  9683  			case log := <-logs:
  9684  				// New log arrived, parse the event and forward to the user
  9685  				event := new(IERC721EnumerableApproval)
  9686  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  9687  					return err
  9688  				}
  9689  				event.Raw = log
  9690  
  9691  				select {
  9692  				case sink <- event:
  9693  				case err := <-sub.Err():
  9694  					return err
  9695  				case <-quit:
  9696  					return nil
  9697  				}
  9698  			case err := <-sub.Err():
  9699  				return err
  9700  			case <-quit:
  9701  				return nil
  9702  			}
  9703  		}
  9704  	}), nil
  9705  }
  9706  
  9707  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
  9708  //
  9709  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
  9710  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApproval(log types.Log) (*IERC721EnumerableApproval, error) {
  9711  	event := new(IERC721EnumerableApproval)
  9712  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Approval", log); err != nil {
  9713  		return nil, err
  9714  	}
  9715  	return event, nil
  9716  }
  9717  
  9718  // IERC721EnumerableApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Enumerable contract.
  9719  type IERC721EnumerableApprovalForAllIterator struct {
  9720  	Event *IERC721EnumerableApprovalForAll // Event containing the contract specifics and raw log
  9721  
  9722  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9723  	event    string              // Event name to use for unpacking event data
  9724  
  9725  	logs chan types.Log      // Log channel receiving the found contract events
  9726  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9727  	done bool                // Whether the subscription completed delivering logs
  9728  	fail error               // Occurred error to stop iteration
  9729  }
  9730  
  9731  // Next advances the iterator to the subsequent event, returning whether there
  9732  // are any more events found. In case of a retrieval or parsing error, false is
  9733  // returned and Error() can be queried for the exact failure.
  9734  func (it *IERC721EnumerableApprovalForAllIterator) Next() bool {
  9735  	// If the iterator failed, stop iterating
  9736  	if it.fail != nil {
  9737  		return false
  9738  	}
  9739  	// If the iterator completed, deliver directly whatever's available
  9740  	if it.done {
  9741  		select {
  9742  		case log := <-it.logs:
  9743  			it.Event = new(IERC721EnumerableApprovalForAll)
  9744  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9745  				it.fail = err
  9746  				return false
  9747  			}
  9748  			it.Event.Raw = log
  9749  			return true
  9750  
  9751  		default:
  9752  			return false
  9753  		}
  9754  	}
  9755  	// Iterator still in progress, wait for either a data or an error event
  9756  	select {
  9757  	case log := <-it.logs:
  9758  		it.Event = new(IERC721EnumerableApprovalForAll)
  9759  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9760  			it.fail = err
  9761  			return false
  9762  		}
  9763  		it.Event.Raw = log
  9764  		return true
  9765  
  9766  	case err := <-it.sub.Err():
  9767  		it.done = true
  9768  		it.fail = err
  9769  		return it.Next()
  9770  	}
  9771  }
  9772  
  9773  // Error returns any retrieval or parsing error occurred during filtering.
  9774  func (it *IERC721EnumerableApprovalForAllIterator) Error() error {
  9775  	return it.fail
  9776  }
  9777  
  9778  // Close terminates the iteration process, releasing any pending underlying
  9779  // resources.
  9780  func (it *IERC721EnumerableApprovalForAllIterator) Close() error {
  9781  	it.sub.Unsubscribe()
  9782  	return nil
  9783  }
  9784  
  9785  // IERC721EnumerableApprovalForAll represents a ApprovalForAll event raised by the IERC721Enumerable contract.
  9786  type IERC721EnumerableApprovalForAll struct {
  9787  	Owner    common.Address
  9788  	Operator common.Address
  9789  	Approved bool
  9790  	Raw      types.Log // Blockchain specific contextual infos
  9791  }
  9792  
  9793  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9794  //
  9795  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9796  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721EnumerableApprovalForAllIterator, error) {
  9797  
  9798  	var ownerRule []interface{}
  9799  	for _, ownerItem := range owner {
  9800  		ownerRule = append(ownerRule, ownerItem)
  9801  	}
  9802  	var operatorRule []interface{}
  9803  	for _, operatorItem := range operator {
  9804  		operatorRule = append(operatorRule, operatorItem)
  9805  	}
  9806  
  9807  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  9808  	if err != nil {
  9809  		return nil, err
  9810  	}
  9811  	return &IERC721EnumerableApprovalForAllIterator{contract: _IERC721Enumerable.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
  9812  }
  9813  
  9814  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9815  //
  9816  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9817  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
  9818  
  9819  	var ownerRule []interface{}
  9820  	for _, ownerItem := range owner {
  9821  		ownerRule = append(ownerRule, ownerItem)
  9822  	}
  9823  	var operatorRule []interface{}
  9824  	for _, operatorItem := range operator {
  9825  		operatorRule = append(operatorRule, operatorItem)
  9826  	}
  9827  
  9828  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
  9829  	if err != nil {
  9830  		return nil, err
  9831  	}
  9832  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9833  		defer sub.Unsubscribe()
  9834  		for {
  9835  			select {
  9836  			case log := <-logs:
  9837  				// New log arrived, parse the event and forward to the user
  9838  				event := new(IERC721EnumerableApprovalForAll)
  9839  				if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  9840  					return err
  9841  				}
  9842  				event.Raw = log
  9843  
  9844  				select {
  9845  				case sink <- event:
  9846  				case err := <-sub.Err():
  9847  					return err
  9848  				case <-quit:
  9849  					return nil
  9850  				}
  9851  			case err := <-sub.Err():
  9852  				return err
  9853  			case <-quit:
  9854  				return nil
  9855  			}
  9856  		}
  9857  	}), nil
  9858  }
  9859  
  9860  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
  9861  //
  9862  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
  9863  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseApprovalForAll(log types.Log) (*IERC721EnumerableApprovalForAll, error) {
  9864  	event := new(IERC721EnumerableApprovalForAll)
  9865  	if err := _IERC721Enumerable.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
  9866  		return nil, err
  9867  	}
  9868  	return event, nil
  9869  }
  9870  
  9871  // IERC721EnumerableTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Enumerable contract.
  9872  type IERC721EnumerableTransferIterator struct {
  9873  	Event *IERC721EnumerableTransfer // Event containing the contract specifics and raw log
  9874  
  9875  	contract *bind.BoundContract // Generic contract to use for unpacking event data
  9876  	event    string              // Event name to use for unpacking event data
  9877  
  9878  	logs chan types.Log      // Log channel receiving the found contract events
  9879  	sub  klaytn.Subscription // Subscription for errors, completion and termination
  9880  	done bool                // Whether the subscription completed delivering logs
  9881  	fail error               // Occurred error to stop iteration
  9882  }
  9883  
  9884  // Next advances the iterator to the subsequent event, returning whether there
  9885  // are any more events found. In case of a retrieval or parsing error, false is
  9886  // returned and Error() can be queried for the exact failure.
  9887  func (it *IERC721EnumerableTransferIterator) Next() bool {
  9888  	// If the iterator failed, stop iterating
  9889  	if it.fail != nil {
  9890  		return false
  9891  	}
  9892  	// If the iterator completed, deliver directly whatever's available
  9893  	if it.done {
  9894  		select {
  9895  		case log := <-it.logs:
  9896  			it.Event = new(IERC721EnumerableTransfer)
  9897  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9898  				it.fail = err
  9899  				return false
  9900  			}
  9901  			it.Event.Raw = log
  9902  			return true
  9903  
  9904  		default:
  9905  			return false
  9906  		}
  9907  	}
  9908  	// Iterator still in progress, wait for either a data or an error event
  9909  	select {
  9910  	case log := <-it.logs:
  9911  		it.Event = new(IERC721EnumerableTransfer)
  9912  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  9913  			it.fail = err
  9914  			return false
  9915  		}
  9916  		it.Event.Raw = log
  9917  		return true
  9918  
  9919  	case err := <-it.sub.Err():
  9920  		it.done = true
  9921  		it.fail = err
  9922  		return it.Next()
  9923  	}
  9924  }
  9925  
  9926  // Error returns any retrieval or parsing error occurred during filtering.
  9927  func (it *IERC721EnumerableTransferIterator) Error() error {
  9928  	return it.fail
  9929  }
  9930  
  9931  // Close terminates the iteration process, releasing any pending underlying
  9932  // resources.
  9933  func (it *IERC721EnumerableTransferIterator) Close() error {
  9934  	it.sub.Unsubscribe()
  9935  	return nil
  9936  }
  9937  
  9938  // IERC721EnumerableTransfer represents a Transfer event raised by the IERC721Enumerable contract.
  9939  type IERC721EnumerableTransfer struct {
  9940  	From    common.Address
  9941  	To      common.Address
  9942  	TokenId *big.Int
  9943  	Raw     types.Log // Blockchain specific contextual infos
  9944  }
  9945  
  9946  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9947  //
  9948  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9949  func (_IERC721Enumerable *IERC721EnumerableFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721EnumerableTransferIterator, error) {
  9950  
  9951  	var fromRule []interface{}
  9952  	for _, fromItem := range from {
  9953  		fromRule = append(fromRule, fromItem)
  9954  	}
  9955  	var toRule []interface{}
  9956  	for _, toItem := range to {
  9957  		toRule = append(toRule, toItem)
  9958  	}
  9959  	var tokenIdRule []interface{}
  9960  	for _, tokenIdItem := range tokenId {
  9961  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9962  	}
  9963  
  9964  	logs, sub, err := _IERC721Enumerable.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9965  	if err != nil {
  9966  		return nil, err
  9967  	}
  9968  	return &IERC721EnumerableTransferIterator{contract: _IERC721Enumerable.contract, event: "Transfer", logs: logs, sub: sub}, nil
  9969  }
  9970  
  9971  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
  9972  //
  9973  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
  9974  func (_IERC721Enumerable *IERC721EnumerableFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721EnumerableTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
  9975  
  9976  	var fromRule []interface{}
  9977  	for _, fromItem := range from {
  9978  		fromRule = append(fromRule, fromItem)
  9979  	}
  9980  	var toRule []interface{}
  9981  	for _, toItem := range to {
  9982  		toRule = append(toRule, toItem)
  9983  	}
  9984  	var tokenIdRule []interface{}
  9985  	for _, tokenIdItem := range tokenId {
  9986  		tokenIdRule = append(tokenIdRule, tokenIdItem)
  9987  	}
  9988  
  9989  	logs, sub, err := _IERC721Enumerable.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
  9990  	if err != nil {
  9991  		return nil, err
  9992  	}
  9993  	return event.NewSubscription(func(quit <-chan struct{}) error {
  9994  		defer sub.Unsubscribe()
  9995  		for {
  9996  			select {
  9997  			case log := <-logs:
  9998  				// New log arrived, parse the event and forward to the user
  9999  				event := new(IERC721EnumerableTransfer)
 10000  				if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
 10001  					return err
 10002  				}
 10003  				event.Raw = log
 10004  
 10005  				select {
 10006  				case sink <- event:
 10007  				case err := <-sub.Err():
 10008  					return err
 10009  				case <-quit:
 10010  					return nil
 10011  				}
 10012  			case err := <-sub.Err():
 10013  				return err
 10014  			case <-quit:
 10015  				return nil
 10016  			}
 10017  		}
 10018  	}), nil
 10019  }
 10020  
 10021  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10022  //
 10023  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10024  func (_IERC721Enumerable *IERC721EnumerableFilterer) ParseTransfer(log types.Log) (*IERC721EnumerableTransfer, error) {
 10025  	event := new(IERC721EnumerableTransfer)
 10026  	if err := _IERC721Enumerable.contract.UnpackLog(event, "Transfer", log); err != nil {
 10027  		return nil, err
 10028  	}
 10029  	return event, nil
 10030  }
 10031  
 10032  // IERC721MetadataABI is the input ABI used to generate the binding from.
 10033  const IERC721MetadataABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"operator\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"balance\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"_approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 10034  
 10035  // IERC721MetadataBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10036  const IERC721MetadataBinRuntime = ``
 10037  
 10038  // IERC721MetadataFuncSigs maps the 4-byte function signature to its string representation.
 10039  var IERC721MetadataFuncSigs = map[string]string{
 10040  	"095ea7b3": "approve(address,uint256)",
 10041  	"70a08231": "balanceOf(address)",
 10042  	"081812fc": "getApproved(uint256)",
 10043  	"e985e9c5": "isApprovedForAll(address,address)",
 10044  	"06fdde03": "name()",
 10045  	"6352211e": "ownerOf(uint256)",
 10046  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 10047  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 10048  	"a22cb465": "setApprovalForAll(address,bool)",
 10049  	"01ffc9a7": "supportsInterface(bytes4)",
 10050  	"95d89b41": "symbol()",
 10051  	"c87b56dd": "tokenURI(uint256)",
 10052  	"23b872dd": "transferFrom(address,address,uint256)",
 10053  }
 10054  
 10055  // IERC721Metadata is an auto generated Go binding around a Klaytn contract.
 10056  type IERC721Metadata struct {
 10057  	IERC721MetadataCaller     // Read-only binding to the contract
 10058  	IERC721MetadataTransactor // Write-only binding to the contract
 10059  	IERC721MetadataFilterer   // Log filterer for contract events
 10060  }
 10061  
 10062  // IERC721MetadataCaller is an auto generated read-only Go binding around a Klaytn contract.
 10063  type IERC721MetadataCaller struct {
 10064  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10065  }
 10066  
 10067  // IERC721MetadataTransactor is an auto generated write-only Go binding around a Klaytn contract.
 10068  type IERC721MetadataTransactor struct {
 10069  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10070  }
 10071  
 10072  // IERC721MetadataFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 10073  type IERC721MetadataFilterer struct {
 10074  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 10075  }
 10076  
 10077  // IERC721MetadataSession is an auto generated Go binding around a Klaytn contract,
 10078  // with pre-set call and transact options.
 10079  type IERC721MetadataSession struct {
 10080  	Contract     *IERC721Metadata  // Generic contract binding to set the session for
 10081  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 10082  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 10083  }
 10084  
 10085  // IERC721MetadataCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 10086  // with pre-set call options.
 10087  type IERC721MetadataCallerSession struct {
 10088  	Contract *IERC721MetadataCaller // Generic contract caller binding to set the session for
 10089  	CallOpts bind.CallOpts          // Call options to use throughout this session
 10090  }
 10091  
 10092  // IERC721MetadataTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 10093  // with pre-set transact options.
 10094  type IERC721MetadataTransactorSession struct {
 10095  	Contract     *IERC721MetadataTransactor // Generic contract transactor binding to set the session for
 10096  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 10097  }
 10098  
 10099  // IERC721MetadataRaw is an auto generated low-level Go binding around a Klaytn contract.
 10100  type IERC721MetadataRaw struct {
 10101  	Contract *IERC721Metadata // Generic contract binding to access the raw methods on
 10102  }
 10103  
 10104  // IERC721MetadataCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 10105  type IERC721MetadataCallerRaw struct {
 10106  	Contract *IERC721MetadataCaller // Generic read-only contract binding to access the raw methods on
 10107  }
 10108  
 10109  // IERC721MetadataTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 10110  type IERC721MetadataTransactorRaw struct {
 10111  	Contract *IERC721MetadataTransactor // Generic write-only contract binding to access the raw methods on
 10112  }
 10113  
 10114  // NewIERC721Metadata creates a new instance of IERC721Metadata, bound to a specific deployed contract.
 10115  func NewIERC721Metadata(address common.Address, backend bind.ContractBackend) (*IERC721Metadata, error) {
 10116  	contract, err := bindIERC721Metadata(address, backend, backend, backend)
 10117  	if err != nil {
 10118  		return nil, err
 10119  	}
 10120  	return &IERC721Metadata{IERC721MetadataCaller: IERC721MetadataCaller{contract: contract}, IERC721MetadataTransactor: IERC721MetadataTransactor{contract: contract}, IERC721MetadataFilterer: IERC721MetadataFilterer{contract: contract}}, nil
 10121  }
 10122  
 10123  // NewIERC721MetadataCaller creates a new read-only instance of IERC721Metadata, bound to a specific deployed contract.
 10124  func NewIERC721MetadataCaller(address common.Address, caller bind.ContractCaller) (*IERC721MetadataCaller, error) {
 10125  	contract, err := bindIERC721Metadata(address, caller, nil, nil)
 10126  	if err != nil {
 10127  		return nil, err
 10128  	}
 10129  	return &IERC721MetadataCaller{contract: contract}, nil
 10130  }
 10131  
 10132  // NewIERC721MetadataTransactor creates a new write-only instance of IERC721Metadata, bound to a specific deployed contract.
 10133  func NewIERC721MetadataTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721MetadataTransactor, error) {
 10134  	contract, err := bindIERC721Metadata(address, nil, transactor, nil)
 10135  	if err != nil {
 10136  		return nil, err
 10137  	}
 10138  	return &IERC721MetadataTransactor{contract: contract}, nil
 10139  }
 10140  
 10141  // NewIERC721MetadataFilterer creates a new log filterer instance of IERC721Metadata, bound to a specific deployed contract.
 10142  func NewIERC721MetadataFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721MetadataFilterer, error) {
 10143  	contract, err := bindIERC721Metadata(address, nil, nil, filterer)
 10144  	if err != nil {
 10145  		return nil, err
 10146  	}
 10147  	return &IERC721MetadataFilterer{contract: contract}, nil
 10148  }
 10149  
 10150  // bindIERC721Metadata binds a generic wrapper to an already deployed contract.
 10151  func bindIERC721Metadata(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 10152  	parsed, err := abi.JSON(strings.NewReader(IERC721MetadataABI))
 10153  	if err != nil {
 10154  		return nil, err
 10155  	}
 10156  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 10157  }
 10158  
 10159  // Call invokes the (constant) contract method with params as input values and
 10160  // sets the output to result. The result type might be a single field for simple
 10161  // returns, a slice of interfaces for anonymous returns and a struct for named
 10162  // returns.
 10163  func (_IERC721Metadata *IERC721MetadataRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10164  	return _IERC721Metadata.Contract.IERC721MetadataCaller.contract.Call(opts, result, method, params...)
 10165  }
 10166  
 10167  // Transfer initiates a plain transaction to move funds to the contract, calling
 10168  // its default method if one is available.
 10169  func (_IERC721Metadata *IERC721MetadataRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10170  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transfer(opts)
 10171  }
 10172  
 10173  // Transact invokes the (paid) contract method with params as input values.
 10174  func (_IERC721Metadata *IERC721MetadataRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10175  	return _IERC721Metadata.Contract.IERC721MetadataTransactor.contract.Transact(opts, method, params...)
 10176  }
 10177  
 10178  // Call invokes the (constant) contract method with params as input values and
 10179  // sets the output to result. The result type might be a single field for simple
 10180  // returns, a slice of interfaces for anonymous returns and a struct for named
 10181  // returns.
 10182  func (_IERC721Metadata *IERC721MetadataCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 10183  	return _IERC721Metadata.Contract.contract.Call(opts, result, method, params...)
 10184  }
 10185  
 10186  // Transfer initiates a plain transaction to move funds to the contract, calling
 10187  // its default method if one is available.
 10188  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 10189  	return _IERC721Metadata.Contract.contract.Transfer(opts)
 10190  }
 10191  
 10192  // Transact invokes the (paid) contract method with params as input values.
 10193  func (_IERC721Metadata *IERC721MetadataTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 10194  	return _IERC721Metadata.Contract.contract.Transact(opts, method, params...)
 10195  }
 10196  
 10197  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10198  //
 10199  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10200  func (_IERC721Metadata *IERC721MetadataCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 10201  	var (
 10202  		ret0 = new(*big.Int)
 10203  	)
 10204  	out := ret0
 10205  	err := _IERC721Metadata.contract.Call(opts, out, "balanceOf", owner)
 10206  	return *ret0, err
 10207  }
 10208  
 10209  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10210  //
 10211  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10212  func (_IERC721Metadata *IERC721MetadataSession) BalanceOf(owner common.Address) (*big.Int, error) {
 10213  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 10214  }
 10215  
 10216  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 10217  //
 10218  // Solidity: function balanceOf(address owner) view returns(uint256 balance)
 10219  func (_IERC721Metadata *IERC721MetadataCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 10220  	return _IERC721Metadata.Contract.BalanceOf(&_IERC721Metadata.CallOpts, owner)
 10221  }
 10222  
 10223  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10224  //
 10225  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10226  func (_IERC721Metadata *IERC721MetadataCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 10227  	var (
 10228  		ret0 = new(common.Address)
 10229  	)
 10230  	out := ret0
 10231  	err := _IERC721Metadata.contract.Call(opts, out, "getApproved", tokenId)
 10232  	return *ret0, err
 10233  }
 10234  
 10235  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10236  //
 10237  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10238  func (_IERC721Metadata *IERC721MetadataSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 10239  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 10240  }
 10241  
 10242  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 10243  //
 10244  // Solidity: function getApproved(uint256 tokenId) view returns(address operator)
 10245  func (_IERC721Metadata *IERC721MetadataCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 10246  	return _IERC721Metadata.Contract.GetApproved(&_IERC721Metadata.CallOpts, tokenId)
 10247  }
 10248  
 10249  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10250  //
 10251  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10252  func (_IERC721Metadata *IERC721MetadataCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 10253  	var (
 10254  		ret0 = new(bool)
 10255  	)
 10256  	out := ret0
 10257  	err := _IERC721Metadata.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 10258  	return *ret0, err
 10259  }
 10260  
 10261  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10262  //
 10263  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10264  func (_IERC721Metadata *IERC721MetadataSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 10265  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 10266  }
 10267  
 10268  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 10269  //
 10270  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 10271  func (_IERC721Metadata *IERC721MetadataCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 10272  	return _IERC721Metadata.Contract.IsApprovedForAll(&_IERC721Metadata.CallOpts, owner, operator)
 10273  }
 10274  
 10275  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10276  //
 10277  // Solidity: function name() view returns(string)
 10278  func (_IERC721Metadata *IERC721MetadataCaller) Name(opts *bind.CallOpts) (string, error) {
 10279  	var (
 10280  		ret0 = new(string)
 10281  	)
 10282  	out := ret0
 10283  	err := _IERC721Metadata.contract.Call(opts, out, "name")
 10284  	return *ret0, err
 10285  }
 10286  
 10287  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10288  //
 10289  // Solidity: function name() view returns(string)
 10290  func (_IERC721Metadata *IERC721MetadataSession) Name() (string, error) {
 10291  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 10292  }
 10293  
 10294  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 10295  //
 10296  // Solidity: function name() view returns(string)
 10297  func (_IERC721Metadata *IERC721MetadataCallerSession) Name() (string, error) {
 10298  	return _IERC721Metadata.Contract.Name(&_IERC721Metadata.CallOpts)
 10299  }
 10300  
 10301  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10302  //
 10303  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10304  func (_IERC721Metadata *IERC721MetadataCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 10305  	var (
 10306  		ret0 = new(common.Address)
 10307  	)
 10308  	out := ret0
 10309  	err := _IERC721Metadata.contract.Call(opts, out, "ownerOf", tokenId)
 10310  	return *ret0, err
 10311  }
 10312  
 10313  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10314  //
 10315  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10316  func (_IERC721Metadata *IERC721MetadataSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 10317  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 10318  }
 10319  
 10320  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 10321  //
 10322  // Solidity: function ownerOf(uint256 tokenId) view returns(address owner)
 10323  func (_IERC721Metadata *IERC721MetadataCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 10324  	return _IERC721Metadata.Contract.OwnerOf(&_IERC721Metadata.CallOpts, tokenId)
 10325  }
 10326  
 10327  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10328  //
 10329  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10330  func (_IERC721Metadata *IERC721MetadataCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 10331  	var (
 10332  		ret0 = new(bool)
 10333  	)
 10334  	out := ret0
 10335  	err := _IERC721Metadata.contract.Call(opts, out, "supportsInterface", interfaceId)
 10336  	return *ret0, err
 10337  }
 10338  
 10339  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10340  //
 10341  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10342  func (_IERC721Metadata *IERC721MetadataSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10343  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 10344  }
 10345  
 10346  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 10347  //
 10348  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 10349  func (_IERC721Metadata *IERC721MetadataCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 10350  	return _IERC721Metadata.Contract.SupportsInterface(&_IERC721Metadata.CallOpts, interfaceId)
 10351  }
 10352  
 10353  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10354  //
 10355  // Solidity: function symbol() view returns(string)
 10356  func (_IERC721Metadata *IERC721MetadataCaller) Symbol(opts *bind.CallOpts) (string, error) {
 10357  	var (
 10358  		ret0 = new(string)
 10359  	)
 10360  	out := ret0
 10361  	err := _IERC721Metadata.contract.Call(opts, out, "symbol")
 10362  	return *ret0, err
 10363  }
 10364  
 10365  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10366  //
 10367  // Solidity: function symbol() view returns(string)
 10368  func (_IERC721Metadata *IERC721MetadataSession) Symbol() (string, error) {
 10369  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 10370  }
 10371  
 10372  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 10373  //
 10374  // Solidity: function symbol() view returns(string)
 10375  func (_IERC721Metadata *IERC721MetadataCallerSession) Symbol() (string, error) {
 10376  	return _IERC721Metadata.Contract.Symbol(&_IERC721Metadata.CallOpts)
 10377  }
 10378  
 10379  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10380  //
 10381  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10382  func (_IERC721Metadata *IERC721MetadataCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 10383  	var (
 10384  		ret0 = new(string)
 10385  	)
 10386  	out := ret0
 10387  	err := _IERC721Metadata.contract.Call(opts, out, "tokenURI", tokenId)
 10388  	return *ret0, err
 10389  }
 10390  
 10391  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10392  //
 10393  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10394  func (_IERC721Metadata *IERC721MetadataSession) TokenURI(tokenId *big.Int) (string, error) {
 10395  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 10396  }
 10397  
 10398  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 10399  //
 10400  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 10401  func (_IERC721Metadata *IERC721MetadataCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 10402  	return _IERC721Metadata.Contract.TokenURI(&_IERC721Metadata.CallOpts, tokenId)
 10403  }
 10404  
 10405  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10406  //
 10407  // Solidity: function approve(address to, uint256 tokenId) returns()
 10408  func (_IERC721Metadata *IERC721MetadataTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10409  	return _IERC721Metadata.contract.Transact(opts, "approve", to, tokenId)
 10410  }
 10411  
 10412  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10413  //
 10414  // Solidity: function approve(address to, uint256 tokenId) returns()
 10415  func (_IERC721Metadata *IERC721MetadataSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10416  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 10417  }
 10418  
 10419  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 10420  //
 10421  // Solidity: function approve(address to, uint256 tokenId) returns()
 10422  func (_IERC721Metadata *IERC721MetadataTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10423  	return _IERC721Metadata.Contract.Approve(&_IERC721Metadata.TransactOpts, to, tokenId)
 10424  }
 10425  
 10426  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10427  //
 10428  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10429  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10430  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 10431  }
 10432  
 10433  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10434  //
 10435  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10436  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10437  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10438  }
 10439  
 10440  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 10441  //
 10442  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 10443  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10444  	return _IERC721Metadata.Contract.SafeTransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10445  }
 10446  
 10447  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10448  //
 10449  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10450  func (_IERC721Metadata *IERC721MetadataTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10451  	return _IERC721Metadata.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, data)
 10452  }
 10453  
 10454  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10455  //
 10456  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10457  func (_IERC721Metadata *IERC721MetadataSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10458  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 10459  }
 10460  
 10461  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 10462  //
 10463  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes data) returns()
 10464  func (_IERC721Metadata *IERC721MetadataTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 10465  	return _IERC721Metadata.Contract.SafeTransferFrom0(&_IERC721Metadata.TransactOpts, from, to, tokenId, data)
 10466  }
 10467  
 10468  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10469  //
 10470  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10471  func (_IERC721Metadata *IERC721MetadataTransactor) SetApprovalForAll(opts *bind.TransactOpts, operator common.Address, _approved bool) (*types.Transaction, error) {
 10472  	return _IERC721Metadata.contract.Transact(opts, "setApprovalForAll", operator, _approved)
 10473  }
 10474  
 10475  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10476  //
 10477  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10478  func (_IERC721Metadata *IERC721MetadataSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 10479  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 10480  }
 10481  
 10482  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 10483  //
 10484  // Solidity: function setApprovalForAll(address operator, bool _approved) returns()
 10485  func (_IERC721Metadata *IERC721MetadataTransactorSession) SetApprovalForAll(operator common.Address, _approved bool) (*types.Transaction, error) {
 10486  	return _IERC721Metadata.Contract.SetApprovalForAll(&_IERC721Metadata.TransactOpts, operator, _approved)
 10487  }
 10488  
 10489  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10490  //
 10491  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10492  func (_IERC721Metadata *IERC721MetadataTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10493  	return _IERC721Metadata.contract.Transact(opts, "transferFrom", from, to, tokenId)
 10494  }
 10495  
 10496  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10497  //
 10498  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10499  func (_IERC721Metadata *IERC721MetadataSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10500  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10501  }
 10502  
 10503  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 10504  //
 10505  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 10506  func (_IERC721Metadata *IERC721MetadataTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 10507  	return _IERC721Metadata.Contract.TransferFrom(&_IERC721Metadata.TransactOpts, from, to, tokenId)
 10508  }
 10509  
 10510  // IERC721MetadataApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IERC721Metadata contract.
 10511  type IERC721MetadataApprovalIterator struct {
 10512  	Event *IERC721MetadataApproval // Event containing the contract specifics and raw log
 10513  
 10514  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10515  	event    string              // Event name to use for unpacking event data
 10516  
 10517  	logs chan types.Log      // Log channel receiving the found contract events
 10518  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10519  	done bool                // Whether the subscription completed delivering logs
 10520  	fail error               // Occurred error to stop iteration
 10521  }
 10522  
 10523  // Next advances the iterator to the subsequent event, returning whether there
 10524  // are any more events found. In case of a retrieval or parsing error, false is
 10525  // returned and Error() can be queried for the exact failure.
 10526  func (it *IERC721MetadataApprovalIterator) Next() bool {
 10527  	// If the iterator failed, stop iterating
 10528  	if it.fail != nil {
 10529  		return false
 10530  	}
 10531  	// If the iterator completed, deliver directly whatever's available
 10532  	if it.done {
 10533  		select {
 10534  		case log := <-it.logs:
 10535  			it.Event = new(IERC721MetadataApproval)
 10536  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10537  				it.fail = err
 10538  				return false
 10539  			}
 10540  			it.Event.Raw = log
 10541  			return true
 10542  
 10543  		default:
 10544  			return false
 10545  		}
 10546  	}
 10547  	// Iterator still in progress, wait for either a data or an error event
 10548  	select {
 10549  	case log := <-it.logs:
 10550  		it.Event = new(IERC721MetadataApproval)
 10551  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10552  			it.fail = err
 10553  			return false
 10554  		}
 10555  		it.Event.Raw = log
 10556  		return true
 10557  
 10558  	case err := <-it.sub.Err():
 10559  		it.done = true
 10560  		it.fail = err
 10561  		return it.Next()
 10562  	}
 10563  }
 10564  
 10565  // Error returns any retrieval or parsing error occurred during filtering.
 10566  func (it *IERC721MetadataApprovalIterator) Error() error {
 10567  	return it.fail
 10568  }
 10569  
 10570  // Close terminates the iteration process, releasing any pending underlying
 10571  // resources.
 10572  func (it *IERC721MetadataApprovalIterator) Close() error {
 10573  	it.sub.Unsubscribe()
 10574  	return nil
 10575  }
 10576  
 10577  // IERC721MetadataApproval represents a Approval event raised by the IERC721Metadata contract.
 10578  type IERC721MetadataApproval struct {
 10579  	Owner    common.Address
 10580  	Approved common.Address
 10581  	TokenId  *big.Int
 10582  	Raw      types.Log // Blockchain specific contextual infos
 10583  }
 10584  
 10585  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10586  //
 10587  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10588  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*IERC721MetadataApprovalIterator, error) {
 10589  
 10590  	var ownerRule []interface{}
 10591  	for _, ownerItem := range owner {
 10592  		ownerRule = append(ownerRule, ownerItem)
 10593  	}
 10594  	var approvedRule []interface{}
 10595  	for _, approvedItem := range approved {
 10596  		approvedRule = append(approvedRule, approvedItem)
 10597  	}
 10598  	var tokenIdRule []interface{}
 10599  	for _, tokenIdItem := range tokenId {
 10600  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10601  	}
 10602  
 10603  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10604  	if err != nil {
 10605  		return nil, err
 10606  	}
 10607  	return &IERC721MetadataApprovalIterator{contract: _IERC721Metadata.contract, event: "Approval", logs: logs, sub: sub}, nil
 10608  }
 10609  
 10610  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10611  //
 10612  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10613  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 10614  
 10615  	var ownerRule []interface{}
 10616  	for _, ownerItem := range owner {
 10617  		ownerRule = append(ownerRule, ownerItem)
 10618  	}
 10619  	var approvedRule []interface{}
 10620  	for _, approvedItem := range approved {
 10621  		approvedRule = append(approvedRule, approvedItem)
 10622  	}
 10623  	var tokenIdRule []interface{}
 10624  	for _, tokenIdItem := range tokenId {
 10625  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10626  	}
 10627  
 10628  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 10629  	if err != nil {
 10630  		return nil, err
 10631  	}
 10632  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10633  		defer sub.Unsubscribe()
 10634  		for {
 10635  			select {
 10636  			case log := <-logs:
 10637  				// New log arrived, parse the event and forward to the user
 10638  				event := new(IERC721MetadataApproval)
 10639  				if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 10640  					return err
 10641  				}
 10642  				event.Raw = log
 10643  
 10644  				select {
 10645  				case sink <- event:
 10646  				case err := <-sub.Err():
 10647  					return err
 10648  				case <-quit:
 10649  					return nil
 10650  				}
 10651  			case err := <-sub.Err():
 10652  				return err
 10653  			case <-quit:
 10654  				return nil
 10655  			}
 10656  		}
 10657  	}), nil
 10658  }
 10659  
 10660  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 10661  //
 10662  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 10663  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApproval(log types.Log) (*IERC721MetadataApproval, error) {
 10664  	event := new(IERC721MetadataApproval)
 10665  	if err := _IERC721Metadata.contract.UnpackLog(event, "Approval", log); err != nil {
 10666  		return nil, err
 10667  	}
 10668  	return event, nil
 10669  }
 10670  
 10671  // IERC721MetadataApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the IERC721Metadata contract.
 10672  type IERC721MetadataApprovalForAllIterator struct {
 10673  	Event *IERC721MetadataApprovalForAll // Event containing the contract specifics and raw log
 10674  
 10675  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10676  	event    string              // Event name to use for unpacking event data
 10677  
 10678  	logs chan types.Log      // Log channel receiving the found contract events
 10679  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10680  	done bool                // Whether the subscription completed delivering logs
 10681  	fail error               // Occurred error to stop iteration
 10682  }
 10683  
 10684  // Next advances the iterator to the subsequent event, returning whether there
 10685  // are any more events found. In case of a retrieval or parsing error, false is
 10686  // returned and Error() can be queried for the exact failure.
 10687  func (it *IERC721MetadataApprovalForAllIterator) Next() bool {
 10688  	// If the iterator failed, stop iterating
 10689  	if it.fail != nil {
 10690  		return false
 10691  	}
 10692  	// If the iterator completed, deliver directly whatever's available
 10693  	if it.done {
 10694  		select {
 10695  		case log := <-it.logs:
 10696  			it.Event = new(IERC721MetadataApprovalForAll)
 10697  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10698  				it.fail = err
 10699  				return false
 10700  			}
 10701  			it.Event.Raw = log
 10702  			return true
 10703  
 10704  		default:
 10705  			return false
 10706  		}
 10707  	}
 10708  	// Iterator still in progress, wait for either a data or an error event
 10709  	select {
 10710  	case log := <-it.logs:
 10711  		it.Event = new(IERC721MetadataApprovalForAll)
 10712  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10713  			it.fail = err
 10714  			return false
 10715  		}
 10716  		it.Event.Raw = log
 10717  		return true
 10718  
 10719  	case err := <-it.sub.Err():
 10720  		it.done = true
 10721  		it.fail = err
 10722  		return it.Next()
 10723  	}
 10724  }
 10725  
 10726  // Error returns any retrieval or parsing error occurred during filtering.
 10727  func (it *IERC721MetadataApprovalForAllIterator) Error() error {
 10728  	return it.fail
 10729  }
 10730  
 10731  // Close terminates the iteration process, releasing any pending underlying
 10732  // resources.
 10733  func (it *IERC721MetadataApprovalForAllIterator) Close() error {
 10734  	it.sub.Unsubscribe()
 10735  	return nil
 10736  }
 10737  
 10738  // IERC721MetadataApprovalForAll represents a ApprovalForAll event raised by the IERC721Metadata contract.
 10739  type IERC721MetadataApprovalForAll struct {
 10740  	Owner    common.Address
 10741  	Operator common.Address
 10742  	Approved bool
 10743  	Raw      types.Log // Blockchain specific contextual infos
 10744  }
 10745  
 10746  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10747  //
 10748  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10749  func (_IERC721Metadata *IERC721MetadataFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*IERC721MetadataApprovalForAllIterator, error) {
 10750  
 10751  	var ownerRule []interface{}
 10752  	for _, ownerItem := range owner {
 10753  		ownerRule = append(ownerRule, ownerItem)
 10754  	}
 10755  	var operatorRule []interface{}
 10756  	for _, operatorItem := range operator {
 10757  		operatorRule = append(operatorRule, operatorItem)
 10758  	}
 10759  
 10760  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10761  	if err != nil {
 10762  		return nil, err
 10763  	}
 10764  	return &IERC721MetadataApprovalForAllIterator{contract: _IERC721Metadata.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 10765  }
 10766  
 10767  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10768  //
 10769  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10770  func (_IERC721Metadata *IERC721MetadataFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *IERC721MetadataApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 10771  
 10772  	var ownerRule []interface{}
 10773  	for _, ownerItem := range owner {
 10774  		ownerRule = append(ownerRule, ownerItem)
 10775  	}
 10776  	var operatorRule []interface{}
 10777  	for _, operatorItem := range operator {
 10778  		operatorRule = append(operatorRule, operatorItem)
 10779  	}
 10780  
 10781  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 10782  	if err != nil {
 10783  		return nil, err
 10784  	}
 10785  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10786  		defer sub.Unsubscribe()
 10787  		for {
 10788  			select {
 10789  			case log := <-logs:
 10790  				// New log arrived, parse the event and forward to the user
 10791  				event := new(IERC721MetadataApprovalForAll)
 10792  				if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10793  					return err
 10794  				}
 10795  				event.Raw = log
 10796  
 10797  				select {
 10798  				case sink <- event:
 10799  				case err := <-sub.Err():
 10800  					return err
 10801  				case <-quit:
 10802  					return nil
 10803  				}
 10804  			case err := <-sub.Err():
 10805  				return err
 10806  			case <-quit:
 10807  				return nil
 10808  			}
 10809  		}
 10810  	}), nil
 10811  }
 10812  
 10813  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 10814  //
 10815  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 10816  func (_IERC721Metadata *IERC721MetadataFilterer) ParseApprovalForAll(log types.Log) (*IERC721MetadataApprovalForAll, error) {
 10817  	event := new(IERC721MetadataApprovalForAll)
 10818  	if err := _IERC721Metadata.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 10819  		return nil, err
 10820  	}
 10821  	return event, nil
 10822  }
 10823  
 10824  // IERC721MetadataTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IERC721Metadata contract.
 10825  type IERC721MetadataTransferIterator struct {
 10826  	Event *IERC721MetadataTransfer // Event containing the contract specifics and raw log
 10827  
 10828  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 10829  	event    string              // Event name to use for unpacking event data
 10830  
 10831  	logs chan types.Log      // Log channel receiving the found contract events
 10832  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 10833  	done bool                // Whether the subscription completed delivering logs
 10834  	fail error               // Occurred error to stop iteration
 10835  }
 10836  
 10837  // Next advances the iterator to the subsequent event, returning whether there
 10838  // are any more events found. In case of a retrieval or parsing error, false is
 10839  // returned and Error() can be queried for the exact failure.
 10840  func (it *IERC721MetadataTransferIterator) Next() bool {
 10841  	// If the iterator failed, stop iterating
 10842  	if it.fail != nil {
 10843  		return false
 10844  	}
 10845  	// If the iterator completed, deliver directly whatever's available
 10846  	if it.done {
 10847  		select {
 10848  		case log := <-it.logs:
 10849  			it.Event = new(IERC721MetadataTransfer)
 10850  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10851  				it.fail = err
 10852  				return false
 10853  			}
 10854  			it.Event.Raw = log
 10855  			return true
 10856  
 10857  		default:
 10858  			return false
 10859  		}
 10860  	}
 10861  	// Iterator still in progress, wait for either a data or an error event
 10862  	select {
 10863  	case log := <-it.logs:
 10864  		it.Event = new(IERC721MetadataTransfer)
 10865  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 10866  			it.fail = err
 10867  			return false
 10868  		}
 10869  		it.Event.Raw = log
 10870  		return true
 10871  
 10872  	case err := <-it.sub.Err():
 10873  		it.done = true
 10874  		it.fail = err
 10875  		return it.Next()
 10876  	}
 10877  }
 10878  
 10879  // Error returns any retrieval or parsing error occurred during filtering.
 10880  func (it *IERC721MetadataTransferIterator) Error() error {
 10881  	return it.fail
 10882  }
 10883  
 10884  // Close terminates the iteration process, releasing any pending underlying
 10885  // resources.
 10886  func (it *IERC721MetadataTransferIterator) Close() error {
 10887  	it.sub.Unsubscribe()
 10888  	return nil
 10889  }
 10890  
 10891  // IERC721MetadataTransfer represents a Transfer event raised by the IERC721Metadata contract.
 10892  type IERC721MetadataTransfer struct {
 10893  	From    common.Address
 10894  	To      common.Address
 10895  	TokenId *big.Int
 10896  	Raw     types.Log // Blockchain specific contextual infos
 10897  }
 10898  
 10899  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10900  //
 10901  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10902  func (_IERC721Metadata *IERC721MetadataFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*IERC721MetadataTransferIterator, error) {
 10903  
 10904  	var fromRule []interface{}
 10905  	for _, fromItem := range from {
 10906  		fromRule = append(fromRule, fromItem)
 10907  	}
 10908  	var toRule []interface{}
 10909  	for _, toItem := range to {
 10910  		toRule = append(toRule, toItem)
 10911  	}
 10912  	var tokenIdRule []interface{}
 10913  	for _, tokenIdItem := range tokenId {
 10914  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10915  	}
 10916  
 10917  	logs, sub, err := _IERC721Metadata.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 10918  	if err != nil {
 10919  		return nil, err
 10920  	}
 10921  	return &IERC721MetadataTransferIterator{contract: _IERC721Metadata.contract, event: "Transfer", logs: logs, sub: sub}, nil
 10922  }
 10923  
 10924  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10925  //
 10926  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10927  func (_IERC721Metadata *IERC721MetadataFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IERC721MetadataTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 10928  
 10929  	var fromRule []interface{}
 10930  	for _, fromItem := range from {
 10931  		fromRule = append(fromRule, fromItem)
 10932  	}
 10933  	var toRule []interface{}
 10934  	for _, toItem := range to {
 10935  		toRule = append(toRule, toItem)
 10936  	}
 10937  	var tokenIdRule []interface{}
 10938  	for _, tokenIdItem := range tokenId {
 10939  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 10940  	}
 10941  
 10942  	logs, sub, err := _IERC721Metadata.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 10943  	if err != nil {
 10944  		return nil, err
 10945  	}
 10946  	return event.NewSubscription(func(quit <-chan struct{}) error {
 10947  		defer sub.Unsubscribe()
 10948  		for {
 10949  			select {
 10950  			case log := <-logs:
 10951  				// New log arrived, parse the event and forward to the user
 10952  				event := new(IERC721MetadataTransfer)
 10953  				if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 10954  					return err
 10955  				}
 10956  				event.Raw = log
 10957  
 10958  				select {
 10959  				case sink <- event:
 10960  				case err := <-sub.Err():
 10961  					return err
 10962  				case <-quit:
 10963  					return nil
 10964  				}
 10965  			case err := <-sub.Err():
 10966  				return err
 10967  			case <-quit:
 10968  				return nil
 10969  			}
 10970  		}
 10971  	}), nil
 10972  }
 10973  
 10974  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 10975  //
 10976  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 10977  func (_IERC721Metadata *IERC721MetadataFilterer) ParseTransfer(log types.Log) (*IERC721MetadataTransfer, error) {
 10978  	event := new(IERC721MetadataTransfer)
 10979  	if err := _IERC721Metadata.contract.UnpackLog(event, "Transfer", log); err != nil {
 10980  		return nil, err
 10981  	}
 10982  	return event, nil
 10983  }
 10984  
 10985  // IERC721ReceiverABI is the input ABI used to generate the binding from.
 10986  const IERC721ReceiverABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"operator\",\"type\":\"address\"},{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]"
 10987  
 10988  // IERC721ReceiverBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 10989  const IERC721ReceiverBinRuntime = ``
 10990  
 10991  // IERC721ReceiverFuncSigs maps the 4-byte function signature to its string representation.
 10992  var IERC721ReceiverFuncSigs = map[string]string{
 10993  	"150b7a02": "onERC721Received(address,address,uint256,bytes)",
 10994  }
 10995  
 10996  // IERC721Receiver is an auto generated Go binding around a Klaytn contract.
 10997  type IERC721Receiver struct {
 10998  	IERC721ReceiverCaller     // Read-only binding to the contract
 10999  	IERC721ReceiverTransactor // Write-only binding to the contract
 11000  	IERC721ReceiverFilterer   // Log filterer for contract events
 11001  }
 11002  
 11003  // IERC721ReceiverCaller is an auto generated read-only Go binding around a Klaytn contract.
 11004  type IERC721ReceiverCaller struct {
 11005  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11006  }
 11007  
 11008  // IERC721ReceiverTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11009  type IERC721ReceiverTransactor struct {
 11010  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11011  }
 11012  
 11013  // IERC721ReceiverFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11014  type IERC721ReceiverFilterer struct {
 11015  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11016  }
 11017  
 11018  // IERC721ReceiverSession is an auto generated Go binding around a Klaytn contract,
 11019  // with pre-set call and transact options.
 11020  type IERC721ReceiverSession struct {
 11021  	Contract     *IERC721Receiver  // Generic contract binding to set the session for
 11022  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11023  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11024  }
 11025  
 11026  // IERC721ReceiverCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11027  // with pre-set call options.
 11028  type IERC721ReceiverCallerSession struct {
 11029  	Contract *IERC721ReceiverCaller // Generic contract caller binding to set the session for
 11030  	CallOpts bind.CallOpts          // Call options to use throughout this session
 11031  }
 11032  
 11033  // IERC721ReceiverTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11034  // with pre-set transact options.
 11035  type IERC721ReceiverTransactorSession struct {
 11036  	Contract     *IERC721ReceiverTransactor // Generic contract transactor binding to set the session for
 11037  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 11038  }
 11039  
 11040  // IERC721ReceiverRaw is an auto generated low-level Go binding around a Klaytn contract.
 11041  type IERC721ReceiverRaw struct {
 11042  	Contract *IERC721Receiver // Generic contract binding to access the raw methods on
 11043  }
 11044  
 11045  // IERC721ReceiverCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11046  type IERC721ReceiverCallerRaw struct {
 11047  	Contract *IERC721ReceiverCaller // Generic read-only contract binding to access the raw methods on
 11048  }
 11049  
 11050  // IERC721ReceiverTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11051  type IERC721ReceiverTransactorRaw struct {
 11052  	Contract *IERC721ReceiverTransactor // Generic write-only contract binding to access the raw methods on
 11053  }
 11054  
 11055  // NewIERC721Receiver creates a new instance of IERC721Receiver, bound to a specific deployed contract.
 11056  func NewIERC721Receiver(address common.Address, backend bind.ContractBackend) (*IERC721Receiver, error) {
 11057  	contract, err := bindIERC721Receiver(address, backend, backend, backend)
 11058  	if err != nil {
 11059  		return nil, err
 11060  	}
 11061  	return &IERC721Receiver{IERC721ReceiverCaller: IERC721ReceiverCaller{contract: contract}, IERC721ReceiverTransactor: IERC721ReceiverTransactor{contract: contract}, IERC721ReceiverFilterer: IERC721ReceiverFilterer{contract: contract}}, nil
 11062  }
 11063  
 11064  // NewIERC721ReceiverCaller creates a new read-only instance of IERC721Receiver, bound to a specific deployed contract.
 11065  func NewIERC721ReceiverCaller(address common.Address, caller bind.ContractCaller) (*IERC721ReceiverCaller, error) {
 11066  	contract, err := bindIERC721Receiver(address, caller, nil, nil)
 11067  	if err != nil {
 11068  		return nil, err
 11069  	}
 11070  	return &IERC721ReceiverCaller{contract: contract}, nil
 11071  }
 11072  
 11073  // NewIERC721ReceiverTransactor creates a new write-only instance of IERC721Receiver, bound to a specific deployed contract.
 11074  func NewIERC721ReceiverTransactor(address common.Address, transactor bind.ContractTransactor) (*IERC721ReceiverTransactor, error) {
 11075  	contract, err := bindIERC721Receiver(address, nil, transactor, nil)
 11076  	if err != nil {
 11077  		return nil, err
 11078  	}
 11079  	return &IERC721ReceiverTransactor{contract: contract}, nil
 11080  }
 11081  
 11082  // NewIERC721ReceiverFilterer creates a new log filterer instance of IERC721Receiver, bound to a specific deployed contract.
 11083  func NewIERC721ReceiverFilterer(address common.Address, filterer bind.ContractFilterer) (*IERC721ReceiverFilterer, error) {
 11084  	contract, err := bindIERC721Receiver(address, nil, nil, filterer)
 11085  	if err != nil {
 11086  		return nil, err
 11087  	}
 11088  	return &IERC721ReceiverFilterer{contract: contract}, nil
 11089  }
 11090  
 11091  // bindIERC721Receiver binds a generic wrapper to an already deployed contract.
 11092  func bindIERC721Receiver(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11093  	parsed, err := abi.JSON(strings.NewReader(IERC721ReceiverABI))
 11094  	if err != nil {
 11095  		return nil, err
 11096  	}
 11097  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11098  }
 11099  
 11100  // Call invokes the (constant) contract method with params as input values and
 11101  // sets the output to result. The result type might be a single field for simple
 11102  // returns, a slice of interfaces for anonymous returns and a struct for named
 11103  // returns.
 11104  func (_IERC721Receiver *IERC721ReceiverRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11105  	return _IERC721Receiver.Contract.IERC721ReceiverCaller.contract.Call(opts, result, method, params...)
 11106  }
 11107  
 11108  // Transfer initiates a plain transaction to move funds to the contract, calling
 11109  // its default method if one is available.
 11110  func (_IERC721Receiver *IERC721ReceiverRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11111  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transfer(opts)
 11112  }
 11113  
 11114  // Transact invokes the (paid) contract method with params as input values.
 11115  func (_IERC721Receiver *IERC721ReceiverRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11116  	return _IERC721Receiver.Contract.IERC721ReceiverTransactor.contract.Transact(opts, method, params...)
 11117  }
 11118  
 11119  // Call invokes the (constant) contract method with params as input values and
 11120  // sets the output to result. The result type might be a single field for simple
 11121  // returns, a slice of interfaces for anonymous returns and a struct for named
 11122  // returns.
 11123  func (_IERC721Receiver *IERC721ReceiverCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11124  	return _IERC721Receiver.Contract.contract.Call(opts, result, method, params...)
 11125  }
 11126  
 11127  // Transfer initiates a plain transaction to move funds to the contract, calling
 11128  // its default method if one is available.
 11129  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11130  	return _IERC721Receiver.Contract.contract.Transfer(opts)
 11131  }
 11132  
 11133  // Transact invokes the (paid) contract method with params as input values.
 11134  func (_IERC721Receiver *IERC721ReceiverTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11135  	return _IERC721Receiver.Contract.contract.Transact(opts, method, params...)
 11136  }
 11137  
 11138  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11139  //
 11140  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11141  func (_IERC721Receiver *IERC721ReceiverTransactor) OnERC721Received(opts *bind.TransactOpts, operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11142  	return _IERC721Receiver.contract.Transact(opts, "onERC721Received", operator, from, tokenId, data)
 11143  }
 11144  
 11145  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11146  //
 11147  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11148  func (_IERC721Receiver *IERC721ReceiverSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11149  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 11150  }
 11151  
 11152  // OnERC721Received is a paid mutator transaction binding the contract method 0x150b7a02.
 11153  //
 11154  // Solidity: function onERC721Received(address operator, address from, uint256 tokenId, bytes data) returns(bytes4)
 11155  func (_IERC721Receiver *IERC721ReceiverTransactorSession) OnERC721Received(operator common.Address, from common.Address, tokenId *big.Int, data []byte) (*types.Transaction, error) {
 11156  	return _IERC721Receiver.Contract.OnERC721Received(&_IERC721Receiver.TransactOpts, operator, from, tokenId, data)
 11157  }
 11158  
 11159  // MinterRoleABI is the input ABI used to generate the binding from.
 11160  const MinterRoleABI = "[{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"}]"
 11161  
 11162  // MinterRoleBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11163  const MinterRoleBinRuntime = ``
 11164  
 11165  // MinterRoleFuncSigs maps the 4-byte function signature to its string representation.
 11166  var MinterRoleFuncSigs = map[string]string{
 11167  	"983b2d56": "addMinter(address)",
 11168  	"aa271e1a": "isMinter(address)",
 11169  	"98650275": "renounceMinter()",
 11170  }
 11171  
 11172  // MinterRole is an auto generated Go binding around a Klaytn contract.
 11173  type MinterRole struct {
 11174  	MinterRoleCaller     // Read-only binding to the contract
 11175  	MinterRoleTransactor // Write-only binding to the contract
 11176  	MinterRoleFilterer   // Log filterer for contract events
 11177  }
 11178  
 11179  // MinterRoleCaller is an auto generated read-only Go binding around a Klaytn contract.
 11180  type MinterRoleCaller struct {
 11181  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11182  }
 11183  
 11184  // MinterRoleTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11185  type MinterRoleTransactor struct {
 11186  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11187  }
 11188  
 11189  // MinterRoleFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11190  type MinterRoleFilterer struct {
 11191  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11192  }
 11193  
 11194  // MinterRoleSession is an auto generated Go binding around a Klaytn contract,
 11195  // with pre-set call and transact options.
 11196  type MinterRoleSession struct {
 11197  	Contract     *MinterRole       // Generic contract binding to set the session for
 11198  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11199  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11200  }
 11201  
 11202  // MinterRoleCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11203  // with pre-set call options.
 11204  type MinterRoleCallerSession struct {
 11205  	Contract *MinterRoleCaller // Generic contract caller binding to set the session for
 11206  	CallOpts bind.CallOpts     // Call options to use throughout this session
 11207  }
 11208  
 11209  // MinterRoleTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11210  // with pre-set transact options.
 11211  type MinterRoleTransactorSession struct {
 11212  	Contract     *MinterRoleTransactor // Generic contract transactor binding to set the session for
 11213  	TransactOpts bind.TransactOpts     // Transaction auth options to use throughout this session
 11214  }
 11215  
 11216  // MinterRoleRaw is an auto generated low-level Go binding around a Klaytn contract.
 11217  type MinterRoleRaw struct {
 11218  	Contract *MinterRole // Generic contract binding to access the raw methods on
 11219  }
 11220  
 11221  // MinterRoleCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11222  type MinterRoleCallerRaw struct {
 11223  	Contract *MinterRoleCaller // Generic read-only contract binding to access the raw methods on
 11224  }
 11225  
 11226  // MinterRoleTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11227  type MinterRoleTransactorRaw struct {
 11228  	Contract *MinterRoleTransactor // Generic write-only contract binding to access the raw methods on
 11229  }
 11230  
 11231  // NewMinterRole creates a new instance of MinterRole, bound to a specific deployed contract.
 11232  func NewMinterRole(address common.Address, backend bind.ContractBackend) (*MinterRole, error) {
 11233  	contract, err := bindMinterRole(address, backend, backend, backend)
 11234  	if err != nil {
 11235  		return nil, err
 11236  	}
 11237  	return &MinterRole{MinterRoleCaller: MinterRoleCaller{contract: contract}, MinterRoleTransactor: MinterRoleTransactor{contract: contract}, MinterRoleFilterer: MinterRoleFilterer{contract: contract}}, nil
 11238  }
 11239  
 11240  // NewMinterRoleCaller creates a new read-only instance of MinterRole, bound to a specific deployed contract.
 11241  func NewMinterRoleCaller(address common.Address, caller bind.ContractCaller) (*MinterRoleCaller, error) {
 11242  	contract, err := bindMinterRole(address, caller, nil, nil)
 11243  	if err != nil {
 11244  		return nil, err
 11245  	}
 11246  	return &MinterRoleCaller{contract: contract}, nil
 11247  }
 11248  
 11249  // NewMinterRoleTransactor creates a new write-only instance of MinterRole, bound to a specific deployed contract.
 11250  func NewMinterRoleTransactor(address common.Address, transactor bind.ContractTransactor) (*MinterRoleTransactor, error) {
 11251  	contract, err := bindMinterRole(address, nil, transactor, nil)
 11252  	if err != nil {
 11253  		return nil, err
 11254  	}
 11255  	return &MinterRoleTransactor{contract: contract}, nil
 11256  }
 11257  
 11258  // NewMinterRoleFilterer creates a new log filterer instance of MinterRole, bound to a specific deployed contract.
 11259  func NewMinterRoleFilterer(address common.Address, filterer bind.ContractFilterer) (*MinterRoleFilterer, error) {
 11260  	contract, err := bindMinterRole(address, nil, nil, filterer)
 11261  	if err != nil {
 11262  		return nil, err
 11263  	}
 11264  	return &MinterRoleFilterer{contract: contract}, nil
 11265  }
 11266  
 11267  // bindMinterRole binds a generic wrapper to an already deployed contract.
 11268  func bindMinterRole(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11269  	parsed, err := abi.JSON(strings.NewReader(MinterRoleABI))
 11270  	if err != nil {
 11271  		return nil, err
 11272  	}
 11273  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11274  }
 11275  
 11276  // Call invokes the (constant) contract method with params as input values and
 11277  // sets the output to result. The result type might be a single field for simple
 11278  // returns, a slice of interfaces for anonymous returns and a struct for named
 11279  // returns.
 11280  func (_MinterRole *MinterRoleRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11281  	return _MinterRole.Contract.MinterRoleCaller.contract.Call(opts, result, method, params...)
 11282  }
 11283  
 11284  // Transfer initiates a plain transaction to move funds to the contract, calling
 11285  // its default method if one is available.
 11286  func (_MinterRole *MinterRoleRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11287  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transfer(opts)
 11288  }
 11289  
 11290  // Transact invokes the (paid) contract method with params as input values.
 11291  func (_MinterRole *MinterRoleRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11292  	return _MinterRole.Contract.MinterRoleTransactor.contract.Transact(opts, method, params...)
 11293  }
 11294  
 11295  // Call invokes the (constant) contract method with params as input values and
 11296  // sets the output to result. The result type might be a single field for simple
 11297  // returns, a slice of interfaces for anonymous returns and a struct for named
 11298  // returns.
 11299  func (_MinterRole *MinterRoleCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11300  	return _MinterRole.Contract.contract.Call(opts, result, method, params...)
 11301  }
 11302  
 11303  // Transfer initiates a plain transaction to move funds to the contract, calling
 11304  // its default method if one is available.
 11305  func (_MinterRole *MinterRoleTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11306  	return _MinterRole.Contract.contract.Transfer(opts)
 11307  }
 11308  
 11309  // Transact invokes the (paid) contract method with params as input values.
 11310  func (_MinterRole *MinterRoleTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11311  	return _MinterRole.Contract.contract.Transact(opts, method, params...)
 11312  }
 11313  
 11314  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11315  //
 11316  // Solidity: function isMinter(address account) view returns(bool)
 11317  func (_MinterRole *MinterRoleCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 11318  	var (
 11319  		ret0 = new(bool)
 11320  	)
 11321  	out := ret0
 11322  	err := _MinterRole.contract.Call(opts, out, "isMinter", account)
 11323  	return *ret0, err
 11324  }
 11325  
 11326  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11327  //
 11328  // Solidity: function isMinter(address account) view returns(bool)
 11329  func (_MinterRole *MinterRoleSession) IsMinter(account common.Address) (bool, error) {
 11330  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 11331  }
 11332  
 11333  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 11334  //
 11335  // Solidity: function isMinter(address account) view returns(bool)
 11336  func (_MinterRole *MinterRoleCallerSession) IsMinter(account common.Address) (bool, error) {
 11337  	return _MinterRole.Contract.IsMinter(&_MinterRole.CallOpts, account)
 11338  }
 11339  
 11340  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11341  //
 11342  // Solidity: function addMinter(address account) returns()
 11343  func (_MinterRole *MinterRoleTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 11344  	return _MinterRole.contract.Transact(opts, "addMinter", account)
 11345  }
 11346  
 11347  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11348  //
 11349  // Solidity: function addMinter(address account) returns()
 11350  func (_MinterRole *MinterRoleSession) AddMinter(account common.Address) (*types.Transaction, error) {
 11351  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 11352  }
 11353  
 11354  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 11355  //
 11356  // Solidity: function addMinter(address account) returns()
 11357  func (_MinterRole *MinterRoleTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 11358  	return _MinterRole.Contract.AddMinter(&_MinterRole.TransactOpts, account)
 11359  }
 11360  
 11361  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11362  //
 11363  // Solidity: function renounceMinter() returns()
 11364  func (_MinterRole *MinterRoleTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 11365  	return _MinterRole.contract.Transact(opts, "renounceMinter")
 11366  }
 11367  
 11368  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11369  //
 11370  // Solidity: function renounceMinter() returns()
 11371  func (_MinterRole *MinterRoleSession) RenounceMinter() (*types.Transaction, error) {
 11372  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 11373  }
 11374  
 11375  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 11376  //
 11377  // Solidity: function renounceMinter() returns()
 11378  func (_MinterRole *MinterRoleTransactorSession) RenounceMinter() (*types.Transaction, error) {
 11379  	return _MinterRole.Contract.RenounceMinter(&_MinterRole.TransactOpts)
 11380  }
 11381  
 11382  // MinterRoleMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the MinterRole contract.
 11383  type MinterRoleMinterAddedIterator struct {
 11384  	Event *MinterRoleMinterAdded // Event containing the contract specifics and raw log
 11385  
 11386  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11387  	event    string              // Event name to use for unpacking event data
 11388  
 11389  	logs chan types.Log      // Log channel receiving the found contract events
 11390  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11391  	done bool                // Whether the subscription completed delivering logs
 11392  	fail error               // Occurred error to stop iteration
 11393  }
 11394  
 11395  // Next advances the iterator to the subsequent event, returning whether there
 11396  // are any more events found. In case of a retrieval or parsing error, false is
 11397  // returned and Error() can be queried for the exact failure.
 11398  func (it *MinterRoleMinterAddedIterator) Next() bool {
 11399  	// If the iterator failed, stop iterating
 11400  	if it.fail != nil {
 11401  		return false
 11402  	}
 11403  	// If the iterator completed, deliver directly whatever's available
 11404  	if it.done {
 11405  		select {
 11406  		case log := <-it.logs:
 11407  			it.Event = new(MinterRoleMinterAdded)
 11408  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11409  				it.fail = err
 11410  				return false
 11411  			}
 11412  			it.Event.Raw = log
 11413  			return true
 11414  
 11415  		default:
 11416  			return false
 11417  		}
 11418  	}
 11419  	// Iterator still in progress, wait for either a data or an error event
 11420  	select {
 11421  	case log := <-it.logs:
 11422  		it.Event = new(MinterRoleMinterAdded)
 11423  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11424  			it.fail = err
 11425  			return false
 11426  		}
 11427  		it.Event.Raw = log
 11428  		return true
 11429  
 11430  	case err := <-it.sub.Err():
 11431  		it.done = true
 11432  		it.fail = err
 11433  		return it.Next()
 11434  	}
 11435  }
 11436  
 11437  // Error returns any retrieval or parsing error occurred during filtering.
 11438  func (it *MinterRoleMinterAddedIterator) Error() error {
 11439  	return it.fail
 11440  }
 11441  
 11442  // Close terminates the iteration process, releasing any pending underlying
 11443  // resources.
 11444  func (it *MinterRoleMinterAddedIterator) Close() error {
 11445  	it.sub.Unsubscribe()
 11446  	return nil
 11447  }
 11448  
 11449  // MinterRoleMinterAdded represents a MinterAdded event raised by the MinterRole contract.
 11450  type MinterRoleMinterAdded struct {
 11451  	Account common.Address
 11452  	Raw     types.Log // Blockchain specific contextual infos
 11453  }
 11454  
 11455  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11456  //
 11457  // Solidity: event MinterAdded(address indexed account)
 11458  func (_MinterRole *MinterRoleFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterAddedIterator, error) {
 11459  
 11460  	var accountRule []interface{}
 11461  	for _, accountItem := range account {
 11462  		accountRule = append(accountRule, accountItem)
 11463  	}
 11464  
 11465  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterAdded", accountRule)
 11466  	if err != nil {
 11467  		return nil, err
 11468  	}
 11469  	return &MinterRoleMinterAddedIterator{contract: _MinterRole.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 11470  }
 11471  
 11472  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11473  //
 11474  // Solidity: event MinterAdded(address indexed account)
 11475  func (_MinterRole *MinterRoleFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterAdded, account []common.Address) (event.Subscription, error) {
 11476  
 11477  	var accountRule []interface{}
 11478  	for _, accountItem := range account {
 11479  		accountRule = append(accountRule, accountItem)
 11480  	}
 11481  
 11482  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterAdded", accountRule)
 11483  	if err != nil {
 11484  		return nil, err
 11485  	}
 11486  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11487  		defer sub.Unsubscribe()
 11488  		for {
 11489  			select {
 11490  			case log := <-logs:
 11491  				// New log arrived, parse the event and forward to the user
 11492  				event := new(MinterRoleMinterAdded)
 11493  				if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 11494  					return err
 11495  				}
 11496  				event.Raw = log
 11497  
 11498  				select {
 11499  				case sink <- event:
 11500  				case err := <-sub.Err():
 11501  					return err
 11502  				case <-quit:
 11503  					return nil
 11504  				}
 11505  			case err := <-sub.Err():
 11506  				return err
 11507  			case <-quit:
 11508  				return nil
 11509  			}
 11510  		}
 11511  	}), nil
 11512  }
 11513  
 11514  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 11515  //
 11516  // Solidity: event MinterAdded(address indexed account)
 11517  func (_MinterRole *MinterRoleFilterer) ParseMinterAdded(log types.Log) (*MinterRoleMinterAdded, error) {
 11518  	event := new(MinterRoleMinterAdded)
 11519  	if err := _MinterRole.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 11520  		return nil, err
 11521  	}
 11522  	return event, nil
 11523  }
 11524  
 11525  // MinterRoleMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the MinterRole contract.
 11526  type MinterRoleMinterRemovedIterator struct {
 11527  	Event *MinterRoleMinterRemoved // Event containing the contract specifics and raw log
 11528  
 11529  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11530  	event    string              // Event name to use for unpacking event data
 11531  
 11532  	logs chan types.Log      // Log channel receiving the found contract events
 11533  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11534  	done bool                // Whether the subscription completed delivering logs
 11535  	fail error               // Occurred error to stop iteration
 11536  }
 11537  
 11538  // Next advances the iterator to the subsequent event, returning whether there
 11539  // are any more events found. In case of a retrieval or parsing error, false is
 11540  // returned and Error() can be queried for the exact failure.
 11541  func (it *MinterRoleMinterRemovedIterator) Next() bool {
 11542  	// If the iterator failed, stop iterating
 11543  	if it.fail != nil {
 11544  		return false
 11545  	}
 11546  	// If the iterator completed, deliver directly whatever's available
 11547  	if it.done {
 11548  		select {
 11549  		case log := <-it.logs:
 11550  			it.Event = new(MinterRoleMinterRemoved)
 11551  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11552  				it.fail = err
 11553  				return false
 11554  			}
 11555  			it.Event.Raw = log
 11556  			return true
 11557  
 11558  		default:
 11559  			return false
 11560  		}
 11561  	}
 11562  	// Iterator still in progress, wait for either a data or an error event
 11563  	select {
 11564  	case log := <-it.logs:
 11565  		it.Event = new(MinterRoleMinterRemoved)
 11566  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11567  			it.fail = err
 11568  			return false
 11569  		}
 11570  		it.Event.Raw = log
 11571  		return true
 11572  
 11573  	case err := <-it.sub.Err():
 11574  		it.done = true
 11575  		it.fail = err
 11576  		return it.Next()
 11577  	}
 11578  }
 11579  
 11580  // Error returns any retrieval or parsing error occurred during filtering.
 11581  func (it *MinterRoleMinterRemovedIterator) Error() error {
 11582  	return it.fail
 11583  }
 11584  
 11585  // Close terminates the iteration process, releasing any pending underlying
 11586  // resources.
 11587  func (it *MinterRoleMinterRemovedIterator) Close() error {
 11588  	it.sub.Unsubscribe()
 11589  	return nil
 11590  }
 11591  
 11592  // MinterRoleMinterRemoved represents a MinterRemoved event raised by the MinterRole contract.
 11593  type MinterRoleMinterRemoved struct {
 11594  	Account common.Address
 11595  	Raw     types.Log // Blockchain specific contextual infos
 11596  }
 11597  
 11598  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11599  //
 11600  // Solidity: event MinterRemoved(address indexed account)
 11601  func (_MinterRole *MinterRoleFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*MinterRoleMinterRemovedIterator, error) {
 11602  
 11603  	var accountRule []interface{}
 11604  	for _, accountItem := range account {
 11605  		accountRule = append(accountRule, accountItem)
 11606  	}
 11607  
 11608  	logs, sub, err := _MinterRole.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 11609  	if err != nil {
 11610  		return nil, err
 11611  	}
 11612  	return &MinterRoleMinterRemovedIterator{contract: _MinterRole.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 11613  }
 11614  
 11615  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11616  //
 11617  // Solidity: event MinterRemoved(address indexed account)
 11618  func (_MinterRole *MinterRoleFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *MinterRoleMinterRemoved, account []common.Address) (event.Subscription, error) {
 11619  
 11620  	var accountRule []interface{}
 11621  	for _, accountItem := range account {
 11622  		accountRule = append(accountRule, accountItem)
 11623  	}
 11624  
 11625  	logs, sub, err := _MinterRole.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 11626  	if err != nil {
 11627  		return nil, err
 11628  	}
 11629  	return event.NewSubscription(func(quit <-chan struct{}) error {
 11630  		defer sub.Unsubscribe()
 11631  		for {
 11632  			select {
 11633  			case log := <-logs:
 11634  				// New log arrived, parse the event and forward to the user
 11635  				event := new(MinterRoleMinterRemoved)
 11636  				if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 11637  					return err
 11638  				}
 11639  				event.Raw = log
 11640  
 11641  				select {
 11642  				case sink <- event:
 11643  				case err := <-sub.Err():
 11644  					return err
 11645  				case <-quit:
 11646  					return nil
 11647  				}
 11648  			case err := <-sub.Err():
 11649  				return err
 11650  			case <-quit:
 11651  				return nil
 11652  			}
 11653  		}
 11654  	}), nil
 11655  }
 11656  
 11657  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 11658  //
 11659  // Solidity: event MinterRemoved(address indexed account)
 11660  func (_MinterRole *MinterRoleFilterer) ParseMinterRemoved(log types.Log) (*MinterRoleMinterRemoved, error) {
 11661  	event := new(MinterRoleMinterRemoved)
 11662  	if err := _MinterRole.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 11663  		return nil, err
 11664  	}
 11665  	return event, nil
 11666  }
 11667  
 11668  // OwnableABI is the input ABI used to generate the binding from.
 11669  const OwnableABI = "[{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"}]"
 11670  
 11671  // OwnableBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 11672  const OwnableBinRuntime = ``
 11673  
 11674  // OwnableFuncSigs maps the 4-byte function signature to its string representation.
 11675  var OwnableFuncSigs = map[string]string{
 11676  	"8f32d59b": "isOwner()",
 11677  	"8da5cb5b": "owner()",
 11678  	"715018a6": "renounceOwnership()",
 11679  	"f2fde38b": "transferOwnership(address)",
 11680  }
 11681  
 11682  // Ownable is an auto generated Go binding around a Klaytn contract.
 11683  type Ownable struct {
 11684  	OwnableCaller     // Read-only binding to the contract
 11685  	OwnableTransactor // Write-only binding to the contract
 11686  	OwnableFilterer   // Log filterer for contract events
 11687  }
 11688  
 11689  // OwnableCaller is an auto generated read-only Go binding around a Klaytn contract.
 11690  type OwnableCaller struct {
 11691  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11692  }
 11693  
 11694  // OwnableTransactor is an auto generated write-only Go binding around a Klaytn contract.
 11695  type OwnableTransactor struct {
 11696  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11697  }
 11698  
 11699  // OwnableFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 11700  type OwnableFilterer struct {
 11701  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 11702  }
 11703  
 11704  // OwnableSession is an auto generated Go binding around a Klaytn contract,
 11705  // with pre-set call and transact options.
 11706  type OwnableSession struct {
 11707  	Contract     *Ownable          // Generic contract binding to set the session for
 11708  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 11709  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 11710  }
 11711  
 11712  // OwnableCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 11713  // with pre-set call options.
 11714  type OwnableCallerSession struct {
 11715  	Contract *OwnableCaller // Generic contract caller binding to set the session for
 11716  	CallOpts bind.CallOpts  // Call options to use throughout this session
 11717  }
 11718  
 11719  // OwnableTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 11720  // with pre-set transact options.
 11721  type OwnableTransactorSession struct {
 11722  	Contract     *OwnableTransactor // Generic contract transactor binding to set the session for
 11723  	TransactOpts bind.TransactOpts  // Transaction auth options to use throughout this session
 11724  }
 11725  
 11726  // OwnableRaw is an auto generated low-level Go binding around a Klaytn contract.
 11727  type OwnableRaw struct {
 11728  	Contract *Ownable // Generic contract binding to access the raw methods on
 11729  }
 11730  
 11731  // OwnableCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 11732  type OwnableCallerRaw struct {
 11733  	Contract *OwnableCaller // Generic read-only contract binding to access the raw methods on
 11734  }
 11735  
 11736  // OwnableTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 11737  type OwnableTransactorRaw struct {
 11738  	Contract *OwnableTransactor // Generic write-only contract binding to access the raw methods on
 11739  }
 11740  
 11741  // NewOwnable creates a new instance of Ownable, bound to a specific deployed contract.
 11742  func NewOwnable(address common.Address, backend bind.ContractBackend) (*Ownable, error) {
 11743  	contract, err := bindOwnable(address, backend, backend, backend)
 11744  	if err != nil {
 11745  		return nil, err
 11746  	}
 11747  	return &Ownable{OwnableCaller: OwnableCaller{contract: contract}, OwnableTransactor: OwnableTransactor{contract: contract}, OwnableFilterer: OwnableFilterer{contract: contract}}, nil
 11748  }
 11749  
 11750  // NewOwnableCaller creates a new read-only instance of Ownable, bound to a specific deployed contract.
 11751  func NewOwnableCaller(address common.Address, caller bind.ContractCaller) (*OwnableCaller, error) {
 11752  	contract, err := bindOwnable(address, caller, nil, nil)
 11753  	if err != nil {
 11754  		return nil, err
 11755  	}
 11756  	return &OwnableCaller{contract: contract}, nil
 11757  }
 11758  
 11759  // NewOwnableTransactor creates a new write-only instance of Ownable, bound to a specific deployed contract.
 11760  func NewOwnableTransactor(address common.Address, transactor bind.ContractTransactor) (*OwnableTransactor, error) {
 11761  	contract, err := bindOwnable(address, nil, transactor, nil)
 11762  	if err != nil {
 11763  		return nil, err
 11764  	}
 11765  	return &OwnableTransactor{contract: contract}, nil
 11766  }
 11767  
 11768  // NewOwnableFilterer creates a new log filterer instance of Ownable, bound to a specific deployed contract.
 11769  func NewOwnableFilterer(address common.Address, filterer bind.ContractFilterer) (*OwnableFilterer, error) {
 11770  	contract, err := bindOwnable(address, nil, nil, filterer)
 11771  	if err != nil {
 11772  		return nil, err
 11773  	}
 11774  	return &OwnableFilterer{contract: contract}, nil
 11775  }
 11776  
 11777  // bindOwnable binds a generic wrapper to an already deployed contract.
 11778  func bindOwnable(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 11779  	parsed, err := abi.JSON(strings.NewReader(OwnableABI))
 11780  	if err != nil {
 11781  		return nil, err
 11782  	}
 11783  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 11784  }
 11785  
 11786  // Call invokes the (constant) contract method with params as input values and
 11787  // sets the output to result. The result type might be a single field for simple
 11788  // returns, a slice of interfaces for anonymous returns and a struct for named
 11789  // returns.
 11790  func (_Ownable *OwnableRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11791  	return _Ownable.Contract.OwnableCaller.contract.Call(opts, result, method, params...)
 11792  }
 11793  
 11794  // Transfer initiates a plain transaction to move funds to the contract, calling
 11795  // its default method if one is available.
 11796  func (_Ownable *OwnableRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11797  	return _Ownable.Contract.OwnableTransactor.contract.Transfer(opts)
 11798  }
 11799  
 11800  // Transact invokes the (paid) contract method with params as input values.
 11801  func (_Ownable *OwnableRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11802  	return _Ownable.Contract.OwnableTransactor.contract.Transact(opts, method, params...)
 11803  }
 11804  
 11805  // Call invokes the (constant) contract method with params as input values and
 11806  // sets the output to result. The result type might be a single field for simple
 11807  // returns, a slice of interfaces for anonymous returns and a struct for named
 11808  // returns.
 11809  func (_Ownable *OwnableCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 11810  	return _Ownable.Contract.contract.Call(opts, result, method, params...)
 11811  }
 11812  
 11813  // Transfer initiates a plain transaction to move funds to the contract, calling
 11814  // its default method if one is available.
 11815  func (_Ownable *OwnableTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 11816  	return _Ownable.Contract.contract.Transfer(opts)
 11817  }
 11818  
 11819  // Transact invokes the (paid) contract method with params as input values.
 11820  func (_Ownable *OwnableTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 11821  	return _Ownable.Contract.contract.Transact(opts, method, params...)
 11822  }
 11823  
 11824  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 11825  //
 11826  // Solidity: function isOwner() view returns(bool)
 11827  func (_Ownable *OwnableCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 11828  	var (
 11829  		ret0 = new(bool)
 11830  	)
 11831  	out := ret0
 11832  	err := _Ownable.contract.Call(opts, out, "isOwner")
 11833  	return *ret0, err
 11834  }
 11835  
 11836  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 11837  //
 11838  // Solidity: function isOwner() view returns(bool)
 11839  func (_Ownable *OwnableSession) IsOwner() (bool, error) {
 11840  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 11841  }
 11842  
 11843  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 11844  //
 11845  // Solidity: function isOwner() view returns(bool)
 11846  func (_Ownable *OwnableCallerSession) IsOwner() (bool, error) {
 11847  	return _Ownable.Contract.IsOwner(&_Ownable.CallOpts)
 11848  }
 11849  
 11850  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 11851  //
 11852  // Solidity: function owner() view returns(address)
 11853  func (_Ownable *OwnableCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 11854  	var (
 11855  		ret0 = new(common.Address)
 11856  	)
 11857  	out := ret0
 11858  	err := _Ownable.contract.Call(opts, out, "owner")
 11859  	return *ret0, err
 11860  }
 11861  
 11862  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 11863  //
 11864  // Solidity: function owner() view returns(address)
 11865  func (_Ownable *OwnableSession) Owner() (common.Address, error) {
 11866  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 11867  }
 11868  
 11869  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 11870  //
 11871  // Solidity: function owner() view returns(address)
 11872  func (_Ownable *OwnableCallerSession) Owner() (common.Address, error) {
 11873  	return _Ownable.Contract.Owner(&_Ownable.CallOpts)
 11874  }
 11875  
 11876  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 11877  //
 11878  // Solidity: function renounceOwnership() returns()
 11879  func (_Ownable *OwnableTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 11880  	return _Ownable.contract.Transact(opts, "renounceOwnership")
 11881  }
 11882  
 11883  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 11884  //
 11885  // Solidity: function renounceOwnership() returns()
 11886  func (_Ownable *OwnableSession) RenounceOwnership() (*types.Transaction, error) {
 11887  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 11888  }
 11889  
 11890  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 11891  //
 11892  // Solidity: function renounceOwnership() returns()
 11893  func (_Ownable *OwnableTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 11894  	return _Ownable.Contract.RenounceOwnership(&_Ownable.TransactOpts)
 11895  }
 11896  
 11897  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 11898  //
 11899  // Solidity: function transferOwnership(address newOwner) returns()
 11900  func (_Ownable *OwnableTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 11901  	return _Ownable.contract.Transact(opts, "transferOwnership", newOwner)
 11902  }
 11903  
 11904  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 11905  //
 11906  // Solidity: function transferOwnership(address newOwner) returns()
 11907  func (_Ownable *OwnableSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 11908  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 11909  }
 11910  
 11911  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 11912  //
 11913  // Solidity: function transferOwnership(address newOwner) returns()
 11914  func (_Ownable *OwnableTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 11915  	return _Ownable.Contract.TransferOwnership(&_Ownable.TransactOpts, newOwner)
 11916  }
 11917  
 11918  // OwnableOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the Ownable contract.
 11919  type OwnableOwnershipTransferredIterator struct {
 11920  	Event *OwnableOwnershipTransferred // Event containing the contract specifics and raw log
 11921  
 11922  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 11923  	event    string              // Event name to use for unpacking event data
 11924  
 11925  	logs chan types.Log      // Log channel receiving the found contract events
 11926  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 11927  	done bool                // Whether the subscription completed delivering logs
 11928  	fail error               // Occurred error to stop iteration
 11929  }
 11930  
 11931  // Next advances the iterator to the subsequent event, returning whether there
 11932  // are any more events found. In case of a retrieval or parsing error, false is
 11933  // returned and Error() can be queried for the exact failure.
 11934  func (it *OwnableOwnershipTransferredIterator) Next() bool {
 11935  	// If the iterator failed, stop iterating
 11936  	if it.fail != nil {
 11937  		return false
 11938  	}
 11939  	// If the iterator completed, deliver directly whatever's available
 11940  	if it.done {
 11941  		select {
 11942  		case log := <-it.logs:
 11943  			it.Event = new(OwnableOwnershipTransferred)
 11944  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11945  				it.fail = err
 11946  				return false
 11947  			}
 11948  			it.Event.Raw = log
 11949  			return true
 11950  
 11951  		default:
 11952  			return false
 11953  		}
 11954  	}
 11955  	// Iterator still in progress, wait for either a data or an error event
 11956  	select {
 11957  	case log := <-it.logs:
 11958  		it.Event = new(OwnableOwnershipTransferred)
 11959  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 11960  			it.fail = err
 11961  			return false
 11962  		}
 11963  		it.Event.Raw = log
 11964  		return true
 11965  
 11966  	case err := <-it.sub.Err():
 11967  		it.done = true
 11968  		it.fail = err
 11969  		return it.Next()
 11970  	}
 11971  }
 11972  
 11973  // Error returns any retrieval or parsing error occurred during filtering.
 11974  func (it *OwnableOwnershipTransferredIterator) Error() error {
 11975  	return it.fail
 11976  }
 11977  
 11978  // Close terminates the iteration process, releasing any pending underlying
 11979  // resources.
 11980  func (it *OwnableOwnershipTransferredIterator) Close() error {
 11981  	it.sub.Unsubscribe()
 11982  	return nil
 11983  }
 11984  
 11985  // OwnableOwnershipTransferred represents a OwnershipTransferred event raised by the Ownable contract.
 11986  type OwnableOwnershipTransferred struct {
 11987  	PreviousOwner common.Address
 11988  	NewOwner      common.Address
 11989  	Raw           types.Log // Blockchain specific contextual infos
 11990  }
 11991  
 11992  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 11993  //
 11994  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 11995  func (_Ownable *OwnableFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*OwnableOwnershipTransferredIterator, error) {
 11996  
 11997  	var previousOwnerRule []interface{}
 11998  	for _, previousOwnerItem := range previousOwner {
 11999  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 12000  	}
 12001  	var newOwnerRule []interface{}
 12002  	for _, newOwnerItem := range newOwner {
 12003  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 12004  	}
 12005  
 12006  	logs, sub, err := _Ownable.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 12007  	if err != nil {
 12008  		return nil, err
 12009  	}
 12010  	return &OwnableOwnershipTransferredIterator{contract: _Ownable.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 12011  }
 12012  
 12013  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 12014  //
 12015  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 12016  func (_Ownable *OwnableFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *OwnableOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 12017  
 12018  	var previousOwnerRule []interface{}
 12019  	for _, previousOwnerItem := range previousOwner {
 12020  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 12021  	}
 12022  	var newOwnerRule []interface{}
 12023  	for _, newOwnerItem := range newOwner {
 12024  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 12025  	}
 12026  
 12027  	logs, sub, err := _Ownable.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 12028  	if err != nil {
 12029  		return nil, err
 12030  	}
 12031  	return event.NewSubscription(func(quit <-chan struct{}) error {
 12032  		defer sub.Unsubscribe()
 12033  		for {
 12034  			select {
 12035  			case log := <-logs:
 12036  				// New log arrived, parse the event and forward to the user
 12037  				event := new(OwnableOwnershipTransferred)
 12038  				if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 12039  					return err
 12040  				}
 12041  				event.Raw = log
 12042  
 12043  				select {
 12044  				case sink <- event:
 12045  				case err := <-sub.Err():
 12046  					return err
 12047  				case <-quit:
 12048  					return nil
 12049  				}
 12050  			case err := <-sub.Err():
 12051  				return err
 12052  			case <-quit:
 12053  				return nil
 12054  			}
 12055  		}
 12056  	}), nil
 12057  }
 12058  
 12059  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 12060  //
 12061  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 12062  func (_Ownable *OwnableFilterer) ParseOwnershipTransferred(log types.Log) (*OwnableOwnershipTransferred, error) {
 12063  	event := new(OwnableOwnershipTransferred)
 12064  	if err := _Ownable.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 12065  		return nil, err
 12066  	}
 12067  	return event, nil
 12068  }
 12069  
 12070  // RolesABI is the input ABI used to generate the binding from.
 12071  const RolesABI = "[]"
 12072  
 12073  // RolesBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12074  const RolesBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029`
 12075  
 12076  // RolesBin is the compiled bytecode used for deploying new contracts.
 12077  var RolesBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a7230582026429ed555f83236ac076363d644804ff5b0baa4e098f1d4ef783a49049f7df70029"
 12078  
 12079  // DeployRoles deploys a new Klaytn contract, binding an instance of Roles to it.
 12080  func DeployRoles(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Roles, error) {
 12081  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 12082  	if err != nil {
 12083  		return common.Address{}, nil, nil, err
 12084  	}
 12085  
 12086  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(RolesBin), backend)
 12087  	if err != nil {
 12088  		return common.Address{}, nil, nil, err
 12089  	}
 12090  	return address, tx, &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12091  }
 12092  
 12093  // Roles is an auto generated Go binding around a Klaytn contract.
 12094  type Roles struct {
 12095  	RolesCaller     // Read-only binding to the contract
 12096  	RolesTransactor // Write-only binding to the contract
 12097  	RolesFilterer   // Log filterer for contract events
 12098  }
 12099  
 12100  // RolesCaller is an auto generated read-only Go binding around a Klaytn contract.
 12101  type RolesCaller struct {
 12102  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12103  }
 12104  
 12105  // RolesTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12106  type RolesTransactor struct {
 12107  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12108  }
 12109  
 12110  // RolesFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12111  type RolesFilterer struct {
 12112  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12113  }
 12114  
 12115  // RolesSession is an auto generated Go binding around a Klaytn contract,
 12116  // with pre-set call and transact options.
 12117  type RolesSession struct {
 12118  	Contract     *Roles            // Generic contract binding to set the session for
 12119  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12120  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12121  }
 12122  
 12123  // RolesCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12124  // with pre-set call options.
 12125  type RolesCallerSession struct {
 12126  	Contract *RolesCaller  // Generic contract caller binding to set the session for
 12127  	CallOpts bind.CallOpts // Call options to use throughout this session
 12128  }
 12129  
 12130  // RolesTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12131  // with pre-set transact options.
 12132  type RolesTransactorSession struct {
 12133  	Contract     *RolesTransactor  // Generic contract transactor binding to set the session for
 12134  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12135  }
 12136  
 12137  // RolesRaw is an auto generated low-level Go binding around a Klaytn contract.
 12138  type RolesRaw struct {
 12139  	Contract *Roles // Generic contract binding to access the raw methods on
 12140  }
 12141  
 12142  // RolesCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12143  type RolesCallerRaw struct {
 12144  	Contract *RolesCaller // Generic read-only contract binding to access the raw methods on
 12145  }
 12146  
 12147  // RolesTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12148  type RolesTransactorRaw struct {
 12149  	Contract *RolesTransactor // Generic write-only contract binding to access the raw methods on
 12150  }
 12151  
 12152  // NewRoles creates a new instance of Roles, bound to a specific deployed contract.
 12153  func NewRoles(address common.Address, backend bind.ContractBackend) (*Roles, error) {
 12154  	contract, err := bindRoles(address, backend, backend, backend)
 12155  	if err != nil {
 12156  		return nil, err
 12157  	}
 12158  	return &Roles{RolesCaller: RolesCaller{contract: contract}, RolesTransactor: RolesTransactor{contract: contract}, RolesFilterer: RolesFilterer{contract: contract}}, nil
 12159  }
 12160  
 12161  // NewRolesCaller creates a new read-only instance of Roles, bound to a specific deployed contract.
 12162  func NewRolesCaller(address common.Address, caller bind.ContractCaller) (*RolesCaller, error) {
 12163  	contract, err := bindRoles(address, caller, nil, nil)
 12164  	if err != nil {
 12165  		return nil, err
 12166  	}
 12167  	return &RolesCaller{contract: contract}, nil
 12168  }
 12169  
 12170  // NewRolesTransactor creates a new write-only instance of Roles, bound to a specific deployed contract.
 12171  func NewRolesTransactor(address common.Address, transactor bind.ContractTransactor) (*RolesTransactor, error) {
 12172  	contract, err := bindRoles(address, nil, transactor, nil)
 12173  	if err != nil {
 12174  		return nil, err
 12175  	}
 12176  	return &RolesTransactor{contract: contract}, nil
 12177  }
 12178  
 12179  // NewRolesFilterer creates a new log filterer instance of Roles, bound to a specific deployed contract.
 12180  func NewRolesFilterer(address common.Address, filterer bind.ContractFilterer) (*RolesFilterer, error) {
 12181  	contract, err := bindRoles(address, nil, nil, filterer)
 12182  	if err != nil {
 12183  		return nil, err
 12184  	}
 12185  	return &RolesFilterer{contract: contract}, nil
 12186  }
 12187  
 12188  // bindRoles binds a generic wrapper to an already deployed contract.
 12189  func bindRoles(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12190  	parsed, err := abi.JSON(strings.NewReader(RolesABI))
 12191  	if err != nil {
 12192  		return nil, err
 12193  	}
 12194  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12195  }
 12196  
 12197  // Call invokes the (constant) contract method with params as input values and
 12198  // sets the output to result. The result type might be a single field for simple
 12199  // returns, a slice of interfaces for anonymous returns and a struct for named
 12200  // returns.
 12201  func (_Roles *RolesRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12202  	return _Roles.Contract.RolesCaller.contract.Call(opts, result, method, params...)
 12203  }
 12204  
 12205  // Transfer initiates a plain transaction to move funds to the contract, calling
 12206  // its default method if one is available.
 12207  func (_Roles *RolesRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12208  	return _Roles.Contract.RolesTransactor.contract.Transfer(opts)
 12209  }
 12210  
 12211  // Transact invokes the (paid) contract method with params as input values.
 12212  func (_Roles *RolesRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12213  	return _Roles.Contract.RolesTransactor.contract.Transact(opts, method, params...)
 12214  }
 12215  
 12216  // Call invokes the (constant) contract method with params as input values and
 12217  // sets the output to result. The result type might be a single field for simple
 12218  // returns, a slice of interfaces for anonymous returns and a struct for named
 12219  // returns.
 12220  func (_Roles *RolesCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12221  	return _Roles.Contract.contract.Call(opts, result, method, params...)
 12222  }
 12223  
 12224  // Transfer initiates a plain transaction to move funds to the contract, calling
 12225  // its default method if one is available.
 12226  func (_Roles *RolesTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12227  	return _Roles.Contract.contract.Transfer(opts)
 12228  }
 12229  
 12230  // Transact invokes the (paid) contract method with params as input values.
 12231  func (_Roles *RolesTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12232  	return _Roles.Contract.contract.Transact(opts, method, params...)
 12233  }
 12234  
 12235  // SafeMathABI is the input ABI used to generate the binding from.
 12236  const SafeMathABI = "[]"
 12237  
 12238  // SafeMathBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12239  const SafeMathBinRuntime = `73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029`
 12240  
 12241  // SafeMathBin is the compiled bytecode used for deploying new contracts.
 12242  var SafeMathBin = "0x604c6023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea165627a7a723058201aa360e6241ae1bc829140fb38ae5ca1672181b2a5c529c4ca3a045ed2896feb0029"
 12243  
 12244  // DeploySafeMath deploys a new Klaytn contract, binding an instance of SafeMath to it.
 12245  func DeploySafeMath(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *SafeMath, error) {
 12246  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 12247  	if err != nil {
 12248  		return common.Address{}, nil, nil, err
 12249  	}
 12250  
 12251  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(SafeMathBin), backend)
 12252  	if err != nil {
 12253  		return common.Address{}, nil, nil, err
 12254  	}
 12255  	return address, tx, &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 12256  }
 12257  
 12258  // SafeMath is an auto generated Go binding around a Klaytn contract.
 12259  type SafeMath struct {
 12260  	SafeMathCaller     // Read-only binding to the contract
 12261  	SafeMathTransactor // Write-only binding to the contract
 12262  	SafeMathFilterer   // Log filterer for contract events
 12263  }
 12264  
 12265  // SafeMathCaller is an auto generated read-only Go binding around a Klaytn contract.
 12266  type SafeMathCaller struct {
 12267  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12268  }
 12269  
 12270  // SafeMathTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12271  type SafeMathTransactor struct {
 12272  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12273  }
 12274  
 12275  // SafeMathFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12276  type SafeMathFilterer struct {
 12277  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12278  }
 12279  
 12280  // SafeMathSession is an auto generated Go binding around a Klaytn contract,
 12281  // with pre-set call and transact options.
 12282  type SafeMathSession struct {
 12283  	Contract     *SafeMath         // Generic contract binding to set the session for
 12284  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12285  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12286  }
 12287  
 12288  // SafeMathCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12289  // with pre-set call options.
 12290  type SafeMathCallerSession struct {
 12291  	Contract *SafeMathCaller // Generic contract caller binding to set the session for
 12292  	CallOpts bind.CallOpts   // Call options to use throughout this session
 12293  }
 12294  
 12295  // SafeMathTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12296  // with pre-set transact options.
 12297  type SafeMathTransactorSession struct {
 12298  	Contract     *SafeMathTransactor // Generic contract transactor binding to set the session for
 12299  	TransactOpts bind.TransactOpts   // Transaction auth options to use throughout this session
 12300  }
 12301  
 12302  // SafeMathRaw is an auto generated low-level Go binding around a Klaytn contract.
 12303  type SafeMathRaw struct {
 12304  	Contract *SafeMath // Generic contract binding to access the raw methods on
 12305  }
 12306  
 12307  // SafeMathCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12308  type SafeMathCallerRaw struct {
 12309  	Contract *SafeMathCaller // Generic read-only contract binding to access the raw methods on
 12310  }
 12311  
 12312  // SafeMathTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12313  type SafeMathTransactorRaw struct {
 12314  	Contract *SafeMathTransactor // Generic write-only contract binding to access the raw methods on
 12315  }
 12316  
 12317  // NewSafeMath creates a new instance of SafeMath, bound to a specific deployed contract.
 12318  func NewSafeMath(address common.Address, backend bind.ContractBackend) (*SafeMath, error) {
 12319  	contract, err := bindSafeMath(address, backend, backend, backend)
 12320  	if err != nil {
 12321  		return nil, err
 12322  	}
 12323  	return &SafeMath{SafeMathCaller: SafeMathCaller{contract: contract}, SafeMathTransactor: SafeMathTransactor{contract: contract}, SafeMathFilterer: SafeMathFilterer{contract: contract}}, nil
 12324  }
 12325  
 12326  // NewSafeMathCaller creates a new read-only instance of SafeMath, bound to a specific deployed contract.
 12327  func NewSafeMathCaller(address common.Address, caller bind.ContractCaller) (*SafeMathCaller, error) {
 12328  	contract, err := bindSafeMath(address, caller, nil, nil)
 12329  	if err != nil {
 12330  		return nil, err
 12331  	}
 12332  	return &SafeMathCaller{contract: contract}, nil
 12333  }
 12334  
 12335  // NewSafeMathTransactor creates a new write-only instance of SafeMath, bound to a specific deployed contract.
 12336  func NewSafeMathTransactor(address common.Address, transactor bind.ContractTransactor) (*SafeMathTransactor, error) {
 12337  	contract, err := bindSafeMath(address, nil, transactor, nil)
 12338  	if err != nil {
 12339  		return nil, err
 12340  	}
 12341  	return &SafeMathTransactor{contract: contract}, nil
 12342  }
 12343  
 12344  // NewSafeMathFilterer creates a new log filterer instance of SafeMath, bound to a specific deployed contract.
 12345  func NewSafeMathFilterer(address common.Address, filterer bind.ContractFilterer) (*SafeMathFilterer, error) {
 12346  	contract, err := bindSafeMath(address, nil, nil, filterer)
 12347  	if err != nil {
 12348  		return nil, err
 12349  	}
 12350  	return &SafeMathFilterer{contract: contract}, nil
 12351  }
 12352  
 12353  // bindSafeMath binds a generic wrapper to an already deployed contract.
 12354  func bindSafeMath(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12355  	parsed, err := abi.JSON(strings.NewReader(SafeMathABI))
 12356  	if err != nil {
 12357  		return nil, err
 12358  	}
 12359  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12360  }
 12361  
 12362  // Call invokes the (constant) contract method with params as input values and
 12363  // sets the output to result. The result type might be a single field for simple
 12364  // returns, a slice of interfaces for anonymous returns and a struct for named
 12365  // returns.
 12366  func (_SafeMath *SafeMathRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12367  	return _SafeMath.Contract.SafeMathCaller.contract.Call(opts, result, method, params...)
 12368  }
 12369  
 12370  // Transfer initiates a plain transaction to move funds to the contract, calling
 12371  // its default method if one is available.
 12372  func (_SafeMath *SafeMathRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12373  	return _SafeMath.Contract.SafeMathTransactor.contract.Transfer(opts)
 12374  }
 12375  
 12376  // Transact invokes the (paid) contract method with params as input values.
 12377  func (_SafeMath *SafeMathRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12378  	return _SafeMath.Contract.SafeMathTransactor.contract.Transact(opts, method, params...)
 12379  }
 12380  
 12381  // Call invokes the (constant) contract method with params as input values and
 12382  // sets the output to result. The result type might be a single field for simple
 12383  // returns, a slice of interfaces for anonymous returns and a struct for named
 12384  // returns.
 12385  func (_SafeMath *SafeMathCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12386  	return _SafeMath.Contract.contract.Call(opts, result, method, params...)
 12387  }
 12388  
 12389  // Transfer initiates a plain transaction to move funds to the contract, calling
 12390  // its default method if one is available.
 12391  func (_SafeMath *SafeMathTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12392  	return _SafeMath.Contract.contract.Transfer(opts)
 12393  }
 12394  
 12395  // Transact invokes the (paid) contract method with params as input values.
 12396  func (_SafeMath *SafeMathTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12397  	return _SafeMath.Contract.contract.Transact(opts, method, params...)
 12398  }
 12399  
 12400  // ServiceChainNFTABI is the input ABI used to generate the binding from.
 12401  const ServiceChainNFTABI = "[{\"constant\":true,\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_uid\",\"type\":\"uint256\"},{\"name\":\"_to\",\"type\":\"address\"},{\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"requestValueTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"tokenURI\",\"type\":\"string\"}],\"name\":\"mintWithTokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_user\",\"type\":\"address\"},{\"name\":\"_startID\",\"type\":\"uint256\"},{\"name\":\"_endID\",\"type\":\"uint256\"}],\"name\":\"registerBulk\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"name\":\"setBridge\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"from\",\"type\":\"address\"},{\"name\":\"to\",\"type\":\"address\"},{\"name\":\"tokenId\",\"type\":\"uint256\"},{\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"bridge\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_bridge\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"}]"
 12402  
 12403  // ServiceChainNFTBinRuntime is the compiled bytecode used for adding genesis block without deploying code.
 12404  const ServiceChainNFTBinRuntime = `608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820c0a409364e62b03c239b1fb84bf994c3cdf1c1af2191cf79ebf33c05434d7f710029`
 12405  
 12406  // ServiceChainNFTFuncSigs maps the 4-byte function signature to its string representation.
 12407  var ServiceChainNFTFuncSigs = map[string]string{
 12408  	"983b2d56": "addMinter(address)",
 12409  	"095ea7b3": "approve(address,uint256)",
 12410  	"70a08231": "balanceOf(address)",
 12411  	"e78cea92": "bridge()",
 12412  	"42966c68": "burn(uint256)",
 12413  	"081812fc": "getApproved(uint256)",
 12414  	"e985e9c5": "isApprovedForAll(address,address)",
 12415  	"aa271e1a": "isMinter(address)",
 12416  	"8f32d59b": "isOwner()",
 12417  	"50bb4e7f": "mintWithTokenURI(address,uint256,string)",
 12418  	"06fdde03": "name()",
 12419  	"8da5cb5b": "owner()",
 12420  	"6352211e": "ownerOf(uint256)",
 12421  	"7a9adac6": "registerBulk(address,uint256,uint256)",
 12422  	"98650275": "renounceMinter()",
 12423  	"715018a6": "renounceOwnership()",
 12424  	"3f4c4e3d": "requestValueTransfer(uint256,address,bytes)",
 12425  	"42842e0e": "safeTransferFrom(address,address,uint256)",
 12426  	"b88d4fde": "safeTransferFrom(address,address,uint256,bytes)",
 12427  	"a22cb465": "setApprovalForAll(address,bool)",
 12428  	"8dd14802": "setBridge(address)",
 12429  	"01ffc9a7": "supportsInterface(bytes4)",
 12430  	"95d89b41": "symbol()",
 12431  	"4f6ccce7": "tokenByIndex(uint256)",
 12432  	"2f745c59": "tokenOfOwnerByIndex(address,uint256)",
 12433  	"c87b56dd": "tokenURI(uint256)",
 12434  	"18160ddd": "totalSupply()",
 12435  	"23b872dd": "transferFrom(address,address,uint256)",
 12436  	"f2fde38b": "transferOwnership(address)",
 12437  }
 12438  
 12439  // ServiceChainNFTBin is the compiled bytecode used for deploying new contracts.
 12440  var ServiceChainNFTBin = "0x60806040523480156200001157600080fd5b50604051602080620029a6833981018060405260208110156200003357600080fd5b5051604080518082018252600f81527f53657276696365436861696e4e465400000000000000000000000000000000006020828101919091528251808401909352600383527f53434e00000000000000000000000000000000000000000000000000000000008382015283929082908290620000d5907f01ffc9a70000000000000000000000000000000000000000000000000000000090620001c3811b901c565b620000ed6380ac58cd60e01b620001c360201b60201c565b6200010563780e9d6360e01b620001c360201b60201c565b81516200011a9060099060208501906200054c565b5080516200013090600a9060208401906200054c565b5062000149635b5e139f60e01b620001c360201b60201c565b505050506200015e336200029260201b60201c565b600d80546001600160a01b0319163317908190556040516001600160a01b0391909116906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620001bb81620002e460201b60201c565b5050620005ee565b7fffffffff0000000000000000000000000000000000000000000000000000000080821614156200025557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b7fffffffff00000000000000000000000000000000000000000000000000000000166000908152602081905260409020805460ff19166001179055565b620002ad81600c6200040d60201b62001b9f1790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b620002f4620004b160201b60201c565b6200036057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6200037f816001600160a01b0316620004c360201b620014821760201c565b620003eb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b6200041f8282620004c960201b60201c565b156200048c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b600d546001600160a01b031633145b90565b3b151590565b60006001600160a01b0382166200052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180620029846022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200058f57805160ff1916838001178555620005bf565b82800160010185558215620005bf579182015b82811115620005bf578251825591602001919060010190620005a2565b50620005cd929150620005d1565b5090565b620004c091905b80821115620005cd5760008155600101620005d8565b61238680620005fe6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063715018a61161010457806398650275116100a2578063c87b56dd11610071578063c87b56dd14610722578063e78cea921461073f578063e985e9c514610747578063f2fde38b14610775576101cf565b80639865027514610600578063a22cb46514610608578063aa271e1a14610636578063b88d4fde1461065c576101cf565b80638dd14802116100de5780638dd14802146105a45780638f32d59b146105ca57806395d89b41146105d2578063983b2d56146105da576101cf565b8063715018a6146105625780637a9adac61461056a5780638da5cb5b1461059c576101cf565b80633f4c4e3d116101715780634f6ccce71161014b5780634f6ccce71461044757806350bb4e7f146104645780636352211e1461051f57806370a082311461053c576101cf565b80633f4c4e3d1461036f57806342842e0e146103f457806342966c681461042a576101cf565b8063095ea7b3116101ad578063095ea7b3146102c557806318160ddd146102f357806323b872dd1461030d5780632f745c5914610343576101cf565b806301ffc9a7146101d457806306fdde031461020f578063081812fc1461028c575b600080fd5b6101fb600480360360208110156101ea57600080fd5b50356001600160e01b03191661079b565b604080519115158252519081900360200190f35b6102176107ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610251578181015183820152602001610239565b50505050905090810190601f16801561027e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102a9600480360360208110156102a257600080fd5b5035610851565b604080516001600160a01b039092168252519081900360200190f35b6102f1600480360360408110156102db57600080fd5b506001600160a01b0381351690602001356108b6565b005b6102fb6109cd565b60408051918252519081900360200190f35b6102f16004803603606081101561032357600080fd5b506001600160a01b038135811691602081013590911690604001356109d3565b6102fb6004803603604081101561035957600080fd5b506001600160a01b038135169060200135610a2b565b6102f16004803603606081101561038557600080fd5b8135916001600160a01b03602082013516918101906060810160408201356401000000008111156103b557600080fd5b8201836020820111156103c757600080fd5b803590602001918460018302840111640100000000831117156103e957600080fd5b509092509050610aad565b6102f16004803603606081101561040a57600080fd5b506001600160a01b03813581169160208101359091169060400135610b7a565b6102f16004803603602081101561044057600080fd5b5035610b95565b6102fb6004803603602081101561045d57600080fd5b5035610be9565b6101fb6004803603606081101561047a57600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156104aa57600080fd5b8201836020820111156104bc57600080fd5b803590602001918460018302840111640100000000831117156104de57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c52945050505050565b6102a96004803603602081101561053557600080fd5b5035610cb9565b6102fb6004803603602081101561055257600080fd5b50356001600160a01b0316610d16565b6102f1610d81565b6102f16004803603606081101561058057600080fd5b506001600160a01b038135169060208101359060400135610e15565b6102a9610ea5565b6102f1600480360360208110156105ba57600080fd5b50356001600160a01b0316610eb4565b6101fb610f86565b610217610f97565b6102f1600480360360208110156105f057600080fd5b50356001600160a01b0316610ff8565b6102f1611048565b6102f16004803603604081101561061e57600080fd5b506001600160a01b0381351690602001351515611053565b6101fb6004803603602081101561064c57600080fd5b50356001600160a01b0316611122565b6102f16004803603608081101561067257600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611135945050505050565b6102176004803603602081101561073857600080fd5b503561118a565b6102a9611272565b6101fb6004803603604081101561075d57600080fd5b506001600160a01b0381358116916020013516611281565b6102f16004803603602081101561078b57600080fd5b50356001600160a01b03166112af565b6001600160e01b03191660009081526020819052604090205460ff1690565b60098054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b820191906000526020600020905b81548152906001019060200180831161082957829003601f168201915b505050505090505b90565b600061085c82611302565b61089a57604051600160e51b62461bcd02815260040180806020018281038252602c815260200180612196602c913960400191505060405180910390fd5b506000908152600260205260409020546001600160a01b031690565b60006108c182610cb9565b9050806001600160a01b0316836001600160a01b0316141561091757604051600160e51b62461bcd0281526004018080602001828103825260218152602001806122886021913960400191505060405180910390fd5b336001600160a01b038216148061093357506109338133611281565b61097157604051600160e51b62461bcd0281526004018080602001828103825260388152602001806120ba6038913960400191505060405180910390fd5b60008281526002602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60075490565b6109dd338261131f565b610a1b57604051600160e51b62461bcd0281526004018080602001828103825260318152602001806122a96031913960400191505060405180910390fd5b610a268383836113c6565b505050565b6000610a3683610d16565b8210610a7657604051600160e51b62461bcd02815260040180806020018281038252602b815260200180611fe7602b913960400191505060405180910390fd5b6001600160a01b0383166000908152600560205260409020805483908110610a9a57fe5b9060005260206000200154905092915050565b600e54610ac59033906001600160a01b0316866109d3565b600e54604051600160e41b630cf0da290281523360048201818152602483018890526001600160a01b0387811660448501526080606485019081526084850187905294169363cf0da290938992899289928992919060a401848480828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610b5c57600080fd5b505af1158015610b70573d6000803e3d6000fd5b5050505050505050565b610a2683838360405180602001604052806000815250611135565b610b9f338261131f565b610bdd57604051600160e51b62461bcd02815260040180806020018281038252603081526020018061232b6030913960400191505060405180910390fd5b610be6816113e5565b50565b6000610bf36109cd565b8210610c3357604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806122da602c913960400191505060405180910390fd5b60078281548110610c4057fe5b90600052602060002001549050919050565b6000610c5d33611122565b610c9b57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610ca584846113f7565b610caf8383611418565b5060019392505050565b6000818152600160205260408120546001600160a01b031680610d1057604051600160e51b62461bcd02815260040180806020018281038252602981526020018061211c6029913960400191505060405180910390fd5b92915050565b60006001600160a01b038216610d6057604051600160e51b62461bcd02815260040180806020018281038252602a8152602001806120f2602a913960400191505060405180910390fd5b6001600160a01b0382166000908152600360205260409020610d109061147e565b610d89610f86565b610dcb5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b600d546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b610e1d610f86565b610e5f5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b815b81811015610e9f57610e968482604051806040016040528060078152602001600160c81b667465737455524902815250610c52565b50600101610e61565b50505050565b600d546001600160a01b031690565b610ebc610f86565b610efe5760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610f10816001600160a01b0316611482565b610f645760408051600160e51b62461bcd02815260206004820152601860248201527f627269646765206973206e6f74206120636f6e74726163740000000000000000604482015290519081900360640190fd5b600e80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b0316331490565b600a8054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156108465780601f1061081b57610100808354040283529160200191610846565b61100133611122565b61103f57604051600160e51b62461bcd0281526004018080602001828103825260308152602001806121456030913960400191505060405180910390fd5b610be681611488565b611051336114d0565b565b6001600160a01b0382163314156110b45760408051600160e51b62461bcd02815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b3360008181526004602090815260408083206001600160a01b03871680855290835292819020805460ff1916861515908117909155815190815290519293927f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31929181900390910190a35050565b6000610d10600c8363ffffffff61151816565b6111408484846109d3565b61114c84848484611582565b610e9f57604051600160e51b62461bcd0281526004018080602001828103825260328152602001806120126032913960400191505060405180910390fd5b606061119582611302565b6111d357604051600160e51b62461bcd02815260040180806020018281038252602f815260200180612259602f913960400191505060405180910390fd5b6000828152600b602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845290918301828280156112665780601f1061123b57610100808354040283529160200191611266565b820191906000526020600020905b81548152906001019060200180831161124957829003601f168201915b50505050509050919050565b600e546001600160a01b031681565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b6112b7610f86565b6112f95760408051600160e51b62461bcd02815260206004820181905260248201526000805160206121ee833981519152604482015290519081900360640190fd5b610be6816116bb565b6000908152600160205260409020546001600160a01b0316151590565b600061132a82611302565b61136857604051600160e51b62461bcd02815260040180806020018281038252602c81526020018061208e602c913960400191505060405180910390fd5b600061137383610cb9565b9050806001600160a01b0316846001600160a01b031614806113ae5750836001600160a01b03166113a384610851565b6001600160a01b0316145b806113be57506113be8185611281565b949350505050565b6113d183838361175f565b6113db83826118a9565b610a26828261199e565b610be66113f182610cb9565b826119dc565b6114018282611a24565b61140b828261199e565b61141481611b5b565b5050565b61142182611302565b61145f57604051600160e51b62461bcd02815260040180806020018281038252602c8152602001806121c2602c913960400191505060405180910390fd5b6000828152600b602090815260409091208251610a2692840190611eea565b5490565b3b151590565b611499600c8263ffffffff611b9f16565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6114e1600c8263ffffffff611c2316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b03821661156257604051600160e51b62461bcd02815260040180806020018281038252602281526020018061220e6022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6000611596846001600160a01b0316611482565b6115a2575060016113be565b604051600160e11b630a85bd0102815233600482018181526001600160a01b03888116602485015260448401879052608060648501908152865160848601528651600095928a169463150b7a029490938c938b938b939260a4019060208501908083838e5b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561166e57600080fd5b505af1158015611682573d6000803e3d6000fd5b505050506040513d602081101561169857600080fd5b50516001600160e01b031916600160e11b630a85bd010214915050949350505050565b6001600160a01b03811661170357604051600160e51b62461bcd0281526004018080602001828103825260268152602001806120446026913960400191505060405180910390fd5b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b826001600160a01b031661177282610cb9565b6001600160a01b0316146117ba57604051600160e51b62461bcd0281526004018080602001828103825260298152602001806122306029913960400191505060405180910390fd5b6001600160a01b03821661180257604051600160e51b62461bcd02815260040180806020018281038252602481526020018061206a6024913960400191505060405180910390fd5b61180b81611c8d565b6001600160a01b038316600090815260036020526040902061182c90611cc8565b6001600160a01b038216600090815260036020526040902061184d90611cdf565b60008181526001602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6001600160a01b0382166000908152600560205260408120546118d390600163ffffffff611ce816565b60008381526006602052604090205490915080821461196e576001600160a01b038416600090815260056020526040812080548490811061191057fe5b906000526020600020015490508060056000876001600160a01b03166001600160a01b03168152602001908152602001600020838154811061194e57fe5b600091825260208083209091019290925591825260069052604090208190555b6001600160a01b0384166000908152600560205260409020805490611997906000198301611f68565b5050505050565b6001600160a01b0390911660009081526005602081815260408084208054868652600684529185208290559282526001810183559183529091200155565b6119e68282611d48565b6000818152600b60205260409020546002600019610100600184161502019091160415611414576000818152600b6020526040812061141491611f8c565b6001600160a01b038216611a825760408051600160e51b62461bcd02815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015290519081900360640190fd5b611a8b81611302565b15611ae05760408051600160e51b62461bcd02815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015290519081900360640190fd5b600081815260016020908152604080832080546001600160a01b0319166001600160a01b038716908117909155835260039091529020611b1f90611cdf565b60405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600780546000838152600860205260408120829055600182018355919091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880155565b611ba98282611518565b15611bfe5760408051600160e51b62461bcd02815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b611c2d8282611518565b611c6b57604051600160e51b62461bcd0281526004018080602001828103825260218152602001806121756021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b6000818152600260205260409020546001600160a01b031615610be657600090815260026020526040902080546001600160a01b0319169055565b8054611cdb90600163ffffffff611ce816565b9055565b80546001019055565b600082821115611d425760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b611d528282611d74565b611d5c82826118a9565b60008181526006602052604081205561141481611e4e565b816001600160a01b0316611d8782610cb9565b6001600160a01b031614611dcf57604051600160e51b62461bcd0281526004018080602001828103825260258152602001806123066025913960400191505060405180910390fd5b611dd881611c8d565b6001600160a01b0382166000908152600360205260409020611df990611cc8565b60008181526001602052604080822080546001600160a01b0319169055518291906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600754600090611e6590600163ffffffff611ce816565b60008381526008602052604081205460078054939450909284908110611e8757fe5b906000526020600020015490508060078381548110611ea257fe5b60009182526020808320909101929092558281526008909152604090208290556007805490611ed5906000198301611f68565b50505060009182525060086020526040812055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611f2b57805160ff1916838001178555611f58565b82800160010185558215611f58579182015b82811115611f58578251825591602001919060010190611f3d565b50611f64929150611fcc565b5090565b815481835581811115610a2657600083815260209020610a26918101908301611fcc565b50805460018160011615610100020316600290046000825580601f10611fb25750610be6565b601f016020900490600052602060002090810190610be691905b61084e91905b80821115611f645760008155600101611fd256fe455243373231456e756d657261626c653a206f776e657220696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c654552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572526f6c65733a206163636f756e7420697320746865207a65726f20616464726573734552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243373231456e756d657261626c653a20676c6f62616c20696e646578206f7574206f6620626f756e64734552433732313a206275726e206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a165627a7a72305820c0a409364e62b03c239b1fb84bf994c3cdf1c1af2191cf79ebf33c05434d7f710029526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373"
 12441  
 12442  // DeployServiceChainNFT deploys a new Klaytn contract, binding an instance of ServiceChainNFT to it.
 12443  func DeployServiceChainNFT(auth *bind.TransactOpts, backend bind.ContractBackend, _bridge common.Address) (common.Address, *types.Transaction, *ServiceChainNFT, error) {
 12444  	parsed, err := abi.JSON(strings.NewReader(ServiceChainNFTABI))
 12445  	if err != nil {
 12446  		return common.Address{}, nil, nil, err
 12447  	}
 12448  
 12449  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(ServiceChainNFTBin), backend, _bridge)
 12450  	if err != nil {
 12451  		return common.Address{}, nil, nil, err
 12452  	}
 12453  	return address, tx, &ServiceChainNFT{ServiceChainNFTCaller: ServiceChainNFTCaller{contract: contract}, ServiceChainNFTTransactor: ServiceChainNFTTransactor{contract: contract}, ServiceChainNFTFilterer: ServiceChainNFTFilterer{contract: contract}}, nil
 12454  }
 12455  
 12456  // ServiceChainNFT is an auto generated Go binding around a Klaytn contract.
 12457  type ServiceChainNFT struct {
 12458  	ServiceChainNFTCaller     // Read-only binding to the contract
 12459  	ServiceChainNFTTransactor // Write-only binding to the contract
 12460  	ServiceChainNFTFilterer   // Log filterer for contract events
 12461  }
 12462  
 12463  // ServiceChainNFTCaller is an auto generated read-only Go binding around a Klaytn contract.
 12464  type ServiceChainNFTCaller struct {
 12465  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12466  }
 12467  
 12468  // ServiceChainNFTTransactor is an auto generated write-only Go binding around a Klaytn contract.
 12469  type ServiceChainNFTTransactor struct {
 12470  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12471  }
 12472  
 12473  // ServiceChainNFTFilterer is an auto generated log filtering Go binding around a Klaytn contract events.
 12474  type ServiceChainNFTFilterer struct {
 12475  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
 12476  }
 12477  
 12478  // ServiceChainNFTSession is an auto generated Go binding around a Klaytn contract,
 12479  // with pre-set call and transact options.
 12480  type ServiceChainNFTSession struct {
 12481  	Contract     *ServiceChainNFT  // Generic contract binding to set the session for
 12482  	CallOpts     bind.CallOpts     // Call options to use throughout this session
 12483  	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
 12484  }
 12485  
 12486  // ServiceChainNFTCallerSession is an auto generated read-only Go binding around a Klaytn contract,
 12487  // with pre-set call options.
 12488  type ServiceChainNFTCallerSession struct {
 12489  	Contract *ServiceChainNFTCaller // Generic contract caller binding to set the session for
 12490  	CallOpts bind.CallOpts          // Call options to use throughout this session
 12491  }
 12492  
 12493  // ServiceChainNFTTransactorSession is an auto generated write-only Go binding around a Klaytn contract,
 12494  // with pre-set transact options.
 12495  type ServiceChainNFTTransactorSession struct {
 12496  	Contract     *ServiceChainNFTTransactor // Generic contract transactor binding to set the session for
 12497  	TransactOpts bind.TransactOpts          // Transaction auth options to use throughout this session
 12498  }
 12499  
 12500  // ServiceChainNFTRaw is an auto generated low-level Go binding around a Klaytn contract.
 12501  type ServiceChainNFTRaw struct {
 12502  	Contract *ServiceChainNFT // Generic contract binding to access the raw methods on
 12503  }
 12504  
 12505  // ServiceChainNFTCallerRaw is an auto generated low-level read-only Go binding around a Klaytn contract.
 12506  type ServiceChainNFTCallerRaw struct {
 12507  	Contract *ServiceChainNFTCaller // Generic read-only contract binding to access the raw methods on
 12508  }
 12509  
 12510  // ServiceChainNFTTransactorRaw is an auto generated low-level write-only Go binding around a Klaytn contract.
 12511  type ServiceChainNFTTransactorRaw struct {
 12512  	Contract *ServiceChainNFTTransactor // Generic write-only contract binding to access the raw methods on
 12513  }
 12514  
 12515  // NewServiceChainNFT creates a new instance of ServiceChainNFT, bound to a specific deployed contract.
 12516  func NewServiceChainNFT(address common.Address, backend bind.ContractBackend) (*ServiceChainNFT, error) {
 12517  	contract, err := bindServiceChainNFT(address, backend, backend, backend)
 12518  	if err != nil {
 12519  		return nil, err
 12520  	}
 12521  	return &ServiceChainNFT{ServiceChainNFTCaller: ServiceChainNFTCaller{contract: contract}, ServiceChainNFTTransactor: ServiceChainNFTTransactor{contract: contract}, ServiceChainNFTFilterer: ServiceChainNFTFilterer{contract: contract}}, nil
 12522  }
 12523  
 12524  // NewServiceChainNFTCaller creates a new read-only instance of ServiceChainNFT, bound to a specific deployed contract.
 12525  func NewServiceChainNFTCaller(address common.Address, caller bind.ContractCaller) (*ServiceChainNFTCaller, error) {
 12526  	contract, err := bindServiceChainNFT(address, caller, nil, nil)
 12527  	if err != nil {
 12528  		return nil, err
 12529  	}
 12530  	return &ServiceChainNFTCaller{contract: contract}, nil
 12531  }
 12532  
 12533  // NewServiceChainNFTTransactor creates a new write-only instance of ServiceChainNFT, bound to a specific deployed contract.
 12534  func NewServiceChainNFTTransactor(address common.Address, transactor bind.ContractTransactor) (*ServiceChainNFTTransactor, error) {
 12535  	contract, err := bindServiceChainNFT(address, nil, transactor, nil)
 12536  	if err != nil {
 12537  		return nil, err
 12538  	}
 12539  	return &ServiceChainNFTTransactor{contract: contract}, nil
 12540  }
 12541  
 12542  // NewServiceChainNFTFilterer creates a new log filterer instance of ServiceChainNFT, bound to a specific deployed contract.
 12543  func NewServiceChainNFTFilterer(address common.Address, filterer bind.ContractFilterer) (*ServiceChainNFTFilterer, error) {
 12544  	contract, err := bindServiceChainNFT(address, nil, nil, filterer)
 12545  	if err != nil {
 12546  		return nil, err
 12547  	}
 12548  	return &ServiceChainNFTFilterer{contract: contract}, nil
 12549  }
 12550  
 12551  // bindServiceChainNFT binds a generic wrapper to an already deployed contract.
 12552  func bindServiceChainNFT(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
 12553  	parsed, err := abi.JSON(strings.NewReader(ServiceChainNFTABI))
 12554  	if err != nil {
 12555  		return nil, err
 12556  	}
 12557  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
 12558  }
 12559  
 12560  // Call invokes the (constant) contract method with params as input values and
 12561  // sets the output to result. The result type might be a single field for simple
 12562  // returns, a slice of interfaces for anonymous returns and a struct for named
 12563  // returns.
 12564  func (_ServiceChainNFT *ServiceChainNFTRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12565  	return _ServiceChainNFT.Contract.ServiceChainNFTCaller.contract.Call(opts, result, method, params...)
 12566  }
 12567  
 12568  // Transfer initiates a plain transaction to move funds to the contract, calling
 12569  // its default method if one is available.
 12570  func (_ServiceChainNFT *ServiceChainNFTRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12571  	return _ServiceChainNFT.Contract.ServiceChainNFTTransactor.contract.Transfer(opts)
 12572  }
 12573  
 12574  // Transact invokes the (paid) contract method with params as input values.
 12575  func (_ServiceChainNFT *ServiceChainNFTRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12576  	return _ServiceChainNFT.Contract.ServiceChainNFTTransactor.contract.Transact(opts, method, params...)
 12577  }
 12578  
 12579  // Call invokes the (constant) contract method with params as input values and
 12580  // sets the output to result. The result type might be a single field for simple
 12581  // returns, a slice of interfaces for anonymous returns and a struct for named
 12582  // returns.
 12583  func (_ServiceChainNFT *ServiceChainNFTCallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
 12584  	return _ServiceChainNFT.Contract.contract.Call(opts, result, method, params...)
 12585  }
 12586  
 12587  // Transfer initiates a plain transaction to move funds to the contract, calling
 12588  // its default method if one is available.
 12589  func (_ServiceChainNFT *ServiceChainNFTTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
 12590  	return _ServiceChainNFT.Contract.contract.Transfer(opts)
 12591  }
 12592  
 12593  // Transact invokes the (paid) contract method with params as input values.
 12594  func (_ServiceChainNFT *ServiceChainNFTTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
 12595  	return _ServiceChainNFT.Contract.contract.Transact(opts, method, params...)
 12596  }
 12597  
 12598  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12599  //
 12600  // Solidity: function balanceOf(address owner) view returns(uint256)
 12601  func (_ServiceChainNFT *ServiceChainNFTCaller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) {
 12602  	var (
 12603  		ret0 = new(*big.Int)
 12604  	)
 12605  	out := ret0
 12606  	err := _ServiceChainNFT.contract.Call(opts, out, "balanceOf", owner)
 12607  	return *ret0, err
 12608  }
 12609  
 12610  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12611  //
 12612  // Solidity: function balanceOf(address owner) view returns(uint256)
 12613  func (_ServiceChainNFT *ServiceChainNFTSession) BalanceOf(owner common.Address) (*big.Int, error) {
 12614  	return _ServiceChainNFT.Contract.BalanceOf(&_ServiceChainNFT.CallOpts, owner)
 12615  }
 12616  
 12617  // BalanceOf is a free data retrieval call binding the contract method 0x70a08231.
 12618  //
 12619  // Solidity: function balanceOf(address owner) view returns(uint256)
 12620  func (_ServiceChainNFT *ServiceChainNFTCallerSession) BalanceOf(owner common.Address) (*big.Int, error) {
 12621  	return _ServiceChainNFT.Contract.BalanceOf(&_ServiceChainNFT.CallOpts, owner)
 12622  }
 12623  
 12624  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 12625  //
 12626  // Solidity: function bridge() view returns(address)
 12627  func (_ServiceChainNFT *ServiceChainNFTCaller) Bridge(opts *bind.CallOpts) (common.Address, error) {
 12628  	var (
 12629  		ret0 = new(common.Address)
 12630  	)
 12631  	out := ret0
 12632  	err := _ServiceChainNFT.contract.Call(opts, out, "bridge")
 12633  	return *ret0, err
 12634  }
 12635  
 12636  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 12637  //
 12638  // Solidity: function bridge() view returns(address)
 12639  func (_ServiceChainNFT *ServiceChainNFTSession) Bridge() (common.Address, error) {
 12640  	return _ServiceChainNFT.Contract.Bridge(&_ServiceChainNFT.CallOpts)
 12641  }
 12642  
 12643  // Bridge is a free data retrieval call binding the contract method 0xe78cea92.
 12644  //
 12645  // Solidity: function bridge() view returns(address)
 12646  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Bridge() (common.Address, error) {
 12647  	return _ServiceChainNFT.Contract.Bridge(&_ServiceChainNFT.CallOpts)
 12648  }
 12649  
 12650  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 12651  //
 12652  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 12653  func (_ServiceChainNFT *ServiceChainNFTCaller) GetApproved(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 12654  	var (
 12655  		ret0 = new(common.Address)
 12656  	)
 12657  	out := ret0
 12658  	err := _ServiceChainNFT.contract.Call(opts, out, "getApproved", tokenId)
 12659  	return *ret0, err
 12660  }
 12661  
 12662  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 12663  //
 12664  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 12665  func (_ServiceChainNFT *ServiceChainNFTSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 12666  	return _ServiceChainNFT.Contract.GetApproved(&_ServiceChainNFT.CallOpts, tokenId)
 12667  }
 12668  
 12669  // GetApproved is a free data retrieval call binding the contract method 0x081812fc.
 12670  //
 12671  // Solidity: function getApproved(uint256 tokenId) view returns(address)
 12672  func (_ServiceChainNFT *ServiceChainNFTCallerSession) GetApproved(tokenId *big.Int) (common.Address, error) {
 12673  	return _ServiceChainNFT.Contract.GetApproved(&_ServiceChainNFT.CallOpts, tokenId)
 12674  }
 12675  
 12676  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 12677  //
 12678  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 12679  func (_ServiceChainNFT *ServiceChainNFTCaller) IsApprovedForAll(opts *bind.CallOpts, owner common.Address, operator common.Address) (bool, error) {
 12680  	var (
 12681  		ret0 = new(bool)
 12682  	)
 12683  	out := ret0
 12684  	err := _ServiceChainNFT.contract.Call(opts, out, "isApprovedForAll", owner, operator)
 12685  	return *ret0, err
 12686  }
 12687  
 12688  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 12689  //
 12690  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 12691  func (_ServiceChainNFT *ServiceChainNFTSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 12692  	return _ServiceChainNFT.Contract.IsApprovedForAll(&_ServiceChainNFT.CallOpts, owner, operator)
 12693  }
 12694  
 12695  // IsApprovedForAll is a free data retrieval call binding the contract method 0xe985e9c5.
 12696  //
 12697  // Solidity: function isApprovedForAll(address owner, address operator) view returns(bool)
 12698  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsApprovedForAll(owner common.Address, operator common.Address) (bool, error) {
 12699  	return _ServiceChainNFT.Contract.IsApprovedForAll(&_ServiceChainNFT.CallOpts, owner, operator)
 12700  }
 12701  
 12702  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12703  //
 12704  // Solidity: function isMinter(address account) view returns(bool)
 12705  func (_ServiceChainNFT *ServiceChainNFTCaller) IsMinter(opts *bind.CallOpts, account common.Address) (bool, error) {
 12706  	var (
 12707  		ret0 = new(bool)
 12708  	)
 12709  	out := ret0
 12710  	err := _ServiceChainNFT.contract.Call(opts, out, "isMinter", account)
 12711  	return *ret0, err
 12712  }
 12713  
 12714  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12715  //
 12716  // Solidity: function isMinter(address account) view returns(bool)
 12717  func (_ServiceChainNFT *ServiceChainNFTSession) IsMinter(account common.Address) (bool, error) {
 12718  	return _ServiceChainNFT.Contract.IsMinter(&_ServiceChainNFT.CallOpts, account)
 12719  }
 12720  
 12721  // IsMinter is a free data retrieval call binding the contract method 0xaa271e1a.
 12722  //
 12723  // Solidity: function isMinter(address account) view returns(bool)
 12724  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsMinter(account common.Address) (bool, error) {
 12725  	return _ServiceChainNFT.Contract.IsMinter(&_ServiceChainNFT.CallOpts, account)
 12726  }
 12727  
 12728  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12729  //
 12730  // Solidity: function isOwner() view returns(bool)
 12731  func (_ServiceChainNFT *ServiceChainNFTCaller) IsOwner(opts *bind.CallOpts) (bool, error) {
 12732  	var (
 12733  		ret0 = new(bool)
 12734  	)
 12735  	out := ret0
 12736  	err := _ServiceChainNFT.contract.Call(opts, out, "isOwner")
 12737  	return *ret0, err
 12738  }
 12739  
 12740  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12741  //
 12742  // Solidity: function isOwner() view returns(bool)
 12743  func (_ServiceChainNFT *ServiceChainNFTSession) IsOwner() (bool, error) {
 12744  	return _ServiceChainNFT.Contract.IsOwner(&_ServiceChainNFT.CallOpts)
 12745  }
 12746  
 12747  // IsOwner is a free data retrieval call binding the contract method 0x8f32d59b.
 12748  //
 12749  // Solidity: function isOwner() view returns(bool)
 12750  func (_ServiceChainNFT *ServiceChainNFTCallerSession) IsOwner() (bool, error) {
 12751  	return _ServiceChainNFT.Contract.IsOwner(&_ServiceChainNFT.CallOpts)
 12752  }
 12753  
 12754  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 12755  //
 12756  // Solidity: function name() view returns(string)
 12757  func (_ServiceChainNFT *ServiceChainNFTCaller) Name(opts *bind.CallOpts) (string, error) {
 12758  	var (
 12759  		ret0 = new(string)
 12760  	)
 12761  	out := ret0
 12762  	err := _ServiceChainNFT.contract.Call(opts, out, "name")
 12763  	return *ret0, err
 12764  }
 12765  
 12766  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 12767  //
 12768  // Solidity: function name() view returns(string)
 12769  func (_ServiceChainNFT *ServiceChainNFTSession) Name() (string, error) {
 12770  	return _ServiceChainNFT.Contract.Name(&_ServiceChainNFT.CallOpts)
 12771  }
 12772  
 12773  // Name is a free data retrieval call binding the contract method 0x06fdde03.
 12774  //
 12775  // Solidity: function name() view returns(string)
 12776  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Name() (string, error) {
 12777  	return _ServiceChainNFT.Contract.Name(&_ServiceChainNFT.CallOpts)
 12778  }
 12779  
 12780  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12781  //
 12782  // Solidity: function owner() view returns(address)
 12783  func (_ServiceChainNFT *ServiceChainNFTCaller) Owner(opts *bind.CallOpts) (common.Address, error) {
 12784  	var (
 12785  		ret0 = new(common.Address)
 12786  	)
 12787  	out := ret0
 12788  	err := _ServiceChainNFT.contract.Call(opts, out, "owner")
 12789  	return *ret0, err
 12790  }
 12791  
 12792  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12793  //
 12794  // Solidity: function owner() view returns(address)
 12795  func (_ServiceChainNFT *ServiceChainNFTSession) Owner() (common.Address, error) {
 12796  	return _ServiceChainNFT.Contract.Owner(&_ServiceChainNFT.CallOpts)
 12797  }
 12798  
 12799  // Owner is a free data retrieval call binding the contract method 0x8da5cb5b.
 12800  //
 12801  // Solidity: function owner() view returns(address)
 12802  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Owner() (common.Address, error) {
 12803  	return _ServiceChainNFT.Contract.Owner(&_ServiceChainNFT.CallOpts)
 12804  }
 12805  
 12806  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 12807  //
 12808  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 12809  func (_ServiceChainNFT *ServiceChainNFTCaller) OwnerOf(opts *bind.CallOpts, tokenId *big.Int) (common.Address, error) {
 12810  	var (
 12811  		ret0 = new(common.Address)
 12812  	)
 12813  	out := ret0
 12814  	err := _ServiceChainNFT.contract.Call(opts, out, "ownerOf", tokenId)
 12815  	return *ret0, err
 12816  }
 12817  
 12818  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 12819  //
 12820  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 12821  func (_ServiceChainNFT *ServiceChainNFTSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 12822  	return _ServiceChainNFT.Contract.OwnerOf(&_ServiceChainNFT.CallOpts, tokenId)
 12823  }
 12824  
 12825  // OwnerOf is a free data retrieval call binding the contract method 0x6352211e.
 12826  //
 12827  // Solidity: function ownerOf(uint256 tokenId) view returns(address)
 12828  func (_ServiceChainNFT *ServiceChainNFTCallerSession) OwnerOf(tokenId *big.Int) (common.Address, error) {
 12829  	return _ServiceChainNFT.Contract.OwnerOf(&_ServiceChainNFT.CallOpts, tokenId)
 12830  }
 12831  
 12832  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 12833  //
 12834  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 12835  func (_ServiceChainNFT *ServiceChainNFTCaller) SupportsInterface(opts *bind.CallOpts, interfaceId [4]byte) (bool, error) {
 12836  	var (
 12837  		ret0 = new(bool)
 12838  	)
 12839  	out := ret0
 12840  	err := _ServiceChainNFT.contract.Call(opts, out, "supportsInterface", interfaceId)
 12841  	return *ret0, err
 12842  }
 12843  
 12844  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 12845  //
 12846  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 12847  func (_ServiceChainNFT *ServiceChainNFTSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 12848  	return _ServiceChainNFT.Contract.SupportsInterface(&_ServiceChainNFT.CallOpts, interfaceId)
 12849  }
 12850  
 12851  // SupportsInterface is a free data retrieval call binding the contract method 0x01ffc9a7.
 12852  //
 12853  // Solidity: function supportsInterface(bytes4 interfaceId) view returns(bool)
 12854  func (_ServiceChainNFT *ServiceChainNFTCallerSession) SupportsInterface(interfaceId [4]byte) (bool, error) {
 12855  	return _ServiceChainNFT.Contract.SupportsInterface(&_ServiceChainNFT.CallOpts, interfaceId)
 12856  }
 12857  
 12858  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 12859  //
 12860  // Solidity: function symbol() view returns(string)
 12861  func (_ServiceChainNFT *ServiceChainNFTCaller) Symbol(opts *bind.CallOpts) (string, error) {
 12862  	var (
 12863  		ret0 = new(string)
 12864  	)
 12865  	out := ret0
 12866  	err := _ServiceChainNFT.contract.Call(opts, out, "symbol")
 12867  	return *ret0, err
 12868  }
 12869  
 12870  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 12871  //
 12872  // Solidity: function symbol() view returns(string)
 12873  func (_ServiceChainNFT *ServiceChainNFTSession) Symbol() (string, error) {
 12874  	return _ServiceChainNFT.Contract.Symbol(&_ServiceChainNFT.CallOpts)
 12875  }
 12876  
 12877  // Symbol is a free data retrieval call binding the contract method 0x95d89b41.
 12878  //
 12879  // Solidity: function symbol() view returns(string)
 12880  func (_ServiceChainNFT *ServiceChainNFTCallerSession) Symbol() (string, error) {
 12881  	return _ServiceChainNFT.Contract.Symbol(&_ServiceChainNFT.CallOpts)
 12882  }
 12883  
 12884  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 12885  //
 12886  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 12887  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenByIndex(opts *bind.CallOpts, index *big.Int) (*big.Int, error) {
 12888  	var (
 12889  		ret0 = new(*big.Int)
 12890  	)
 12891  	out := ret0
 12892  	err := _ServiceChainNFT.contract.Call(opts, out, "tokenByIndex", index)
 12893  	return *ret0, err
 12894  }
 12895  
 12896  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 12897  //
 12898  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 12899  func (_ServiceChainNFT *ServiceChainNFTSession) TokenByIndex(index *big.Int) (*big.Int, error) {
 12900  	return _ServiceChainNFT.Contract.TokenByIndex(&_ServiceChainNFT.CallOpts, index)
 12901  }
 12902  
 12903  // TokenByIndex is a free data retrieval call binding the contract method 0x4f6ccce7.
 12904  //
 12905  // Solidity: function tokenByIndex(uint256 index) view returns(uint256)
 12906  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenByIndex(index *big.Int) (*big.Int, error) {
 12907  	return _ServiceChainNFT.Contract.TokenByIndex(&_ServiceChainNFT.CallOpts, index)
 12908  }
 12909  
 12910  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 12911  //
 12912  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 12913  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenOfOwnerByIndex(opts *bind.CallOpts, owner common.Address, index *big.Int) (*big.Int, error) {
 12914  	var (
 12915  		ret0 = new(*big.Int)
 12916  	)
 12917  	out := ret0
 12918  	err := _ServiceChainNFT.contract.Call(opts, out, "tokenOfOwnerByIndex", owner, index)
 12919  	return *ret0, err
 12920  }
 12921  
 12922  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 12923  //
 12924  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 12925  func (_ServiceChainNFT *ServiceChainNFTSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
 12926  	return _ServiceChainNFT.Contract.TokenOfOwnerByIndex(&_ServiceChainNFT.CallOpts, owner, index)
 12927  }
 12928  
 12929  // TokenOfOwnerByIndex is a free data retrieval call binding the contract method 0x2f745c59.
 12930  //
 12931  // Solidity: function tokenOfOwnerByIndex(address owner, uint256 index) view returns(uint256)
 12932  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenOfOwnerByIndex(owner common.Address, index *big.Int) (*big.Int, error) {
 12933  	return _ServiceChainNFT.Contract.TokenOfOwnerByIndex(&_ServiceChainNFT.CallOpts, owner, index)
 12934  }
 12935  
 12936  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 12937  //
 12938  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 12939  func (_ServiceChainNFT *ServiceChainNFTCaller) TokenURI(opts *bind.CallOpts, tokenId *big.Int) (string, error) {
 12940  	var (
 12941  		ret0 = new(string)
 12942  	)
 12943  	out := ret0
 12944  	err := _ServiceChainNFT.contract.Call(opts, out, "tokenURI", tokenId)
 12945  	return *ret0, err
 12946  }
 12947  
 12948  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 12949  //
 12950  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 12951  func (_ServiceChainNFT *ServiceChainNFTSession) TokenURI(tokenId *big.Int) (string, error) {
 12952  	return _ServiceChainNFT.Contract.TokenURI(&_ServiceChainNFT.CallOpts, tokenId)
 12953  }
 12954  
 12955  // TokenURI is a free data retrieval call binding the contract method 0xc87b56dd.
 12956  //
 12957  // Solidity: function tokenURI(uint256 tokenId) view returns(string)
 12958  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TokenURI(tokenId *big.Int) (string, error) {
 12959  	return _ServiceChainNFT.Contract.TokenURI(&_ServiceChainNFT.CallOpts, tokenId)
 12960  }
 12961  
 12962  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12963  //
 12964  // Solidity: function totalSupply() view returns(uint256)
 12965  func (_ServiceChainNFT *ServiceChainNFTCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) {
 12966  	var (
 12967  		ret0 = new(*big.Int)
 12968  	)
 12969  	out := ret0
 12970  	err := _ServiceChainNFT.contract.Call(opts, out, "totalSupply")
 12971  	return *ret0, err
 12972  }
 12973  
 12974  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12975  //
 12976  // Solidity: function totalSupply() view returns(uint256)
 12977  func (_ServiceChainNFT *ServiceChainNFTSession) TotalSupply() (*big.Int, error) {
 12978  	return _ServiceChainNFT.Contract.TotalSupply(&_ServiceChainNFT.CallOpts)
 12979  }
 12980  
 12981  // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd.
 12982  //
 12983  // Solidity: function totalSupply() view returns(uint256)
 12984  func (_ServiceChainNFT *ServiceChainNFTCallerSession) TotalSupply() (*big.Int, error) {
 12985  	return _ServiceChainNFT.Contract.TotalSupply(&_ServiceChainNFT.CallOpts)
 12986  }
 12987  
 12988  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 12989  //
 12990  // Solidity: function addMinter(address account) returns()
 12991  func (_ServiceChainNFT *ServiceChainNFTTransactor) AddMinter(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) {
 12992  	return _ServiceChainNFT.contract.Transact(opts, "addMinter", account)
 12993  }
 12994  
 12995  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 12996  //
 12997  // Solidity: function addMinter(address account) returns()
 12998  func (_ServiceChainNFT *ServiceChainNFTSession) AddMinter(account common.Address) (*types.Transaction, error) {
 12999  	return _ServiceChainNFT.Contract.AddMinter(&_ServiceChainNFT.TransactOpts, account)
 13000  }
 13001  
 13002  // AddMinter is a paid mutator transaction binding the contract method 0x983b2d56.
 13003  //
 13004  // Solidity: function addMinter(address account) returns()
 13005  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) AddMinter(account common.Address) (*types.Transaction, error) {
 13006  	return _ServiceChainNFT.Contract.AddMinter(&_ServiceChainNFT.TransactOpts, account)
 13007  }
 13008  
 13009  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13010  //
 13011  // Solidity: function approve(address to, uint256 tokenId) returns()
 13012  func (_ServiceChainNFT *ServiceChainNFTTransactor) Approve(opts *bind.TransactOpts, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13013  	return _ServiceChainNFT.contract.Transact(opts, "approve", to, tokenId)
 13014  }
 13015  
 13016  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13017  //
 13018  // Solidity: function approve(address to, uint256 tokenId) returns()
 13019  func (_ServiceChainNFT *ServiceChainNFTSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13020  	return _ServiceChainNFT.Contract.Approve(&_ServiceChainNFT.TransactOpts, to, tokenId)
 13021  }
 13022  
 13023  // Approve is a paid mutator transaction binding the contract method 0x095ea7b3.
 13024  //
 13025  // Solidity: function approve(address to, uint256 tokenId) returns()
 13026  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) Approve(to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13027  	return _ServiceChainNFT.Contract.Approve(&_ServiceChainNFT.TransactOpts, to, tokenId)
 13028  }
 13029  
 13030  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13031  //
 13032  // Solidity: function burn(uint256 tokenId) returns()
 13033  func (_ServiceChainNFT *ServiceChainNFTTransactor) Burn(opts *bind.TransactOpts, tokenId *big.Int) (*types.Transaction, error) {
 13034  	return _ServiceChainNFT.contract.Transact(opts, "burn", tokenId)
 13035  }
 13036  
 13037  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13038  //
 13039  // Solidity: function burn(uint256 tokenId) returns()
 13040  func (_ServiceChainNFT *ServiceChainNFTSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 13041  	return _ServiceChainNFT.Contract.Burn(&_ServiceChainNFT.TransactOpts, tokenId)
 13042  }
 13043  
 13044  // Burn is a paid mutator transaction binding the contract method 0x42966c68.
 13045  //
 13046  // Solidity: function burn(uint256 tokenId) returns()
 13047  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) Burn(tokenId *big.Int) (*types.Transaction, error) {
 13048  	return _ServiceChainNFT.Contract.Burn(&_ServiceChainNFT.TransactOpts, tokenId)
 13049  }
 13050  
 13051  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13052  //
 13053  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13054  func (_ServiceChainNFT *ServiceChainNFTTransactor) MintWithTokenURI(opts *bind.TransactOpts, to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13055  	return _ServiceChainNFT.contract.Transact(opts, "mintWithTokenURI", to, tokenId, tokenURI)
 13056  }
 13057  
 13058  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13059  //
 13060  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13061  func (_ServiceChainNFT *ServiceChainNFTSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13062  	return _ServiceChainNFT.Contract.MintWithTokenURI(&_ServiceChainNFT.TransactOpts, to, tokenId, tokenURI)
 13063  }
 13064  
 13065  // MintWithTokenURI is a paid mutator transaction binding the contract method 0x50bb4e7f.
 13066  //
 13067  // Solidity: function mintWithTokenURI(address to, uint256 tokenId, string tokenURI) returns(bool)
 13068  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) MintWithTokenURI(to common.Address, tokenId *big.Int, tokenURI string) (*types.Transaction, error) {
 13069  	return _ServiceChainNFT.Contract.MintWithTokenURI(&_ServiceChainNFT.TransactOpts, to, tokenId, tokenURI)
 13070  }
 13071  
 13072  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13073  //
 13074  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13075  func (_ServiceChainNFT *ServiceChainNFTTransactor) RegisterBulk(opts *bind.TransactOpts, _user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13076  	return _ServiceChainNFT.contract.Transact(opts, "registerBulk", _user, _startID, _endID)
 13077  }
 13078  
 13079  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13080  //
 13081  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13082  func (_ServiceChainNFT *ServiceChainNFTSession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13083  	return _ServiceChainNFT.Contract.RegisterBulk(&_ServiceChainNFT.TransactOpts, _user, _startID, _endID)
 13084  }
 13085  
 13086  // RegisterBulk is a paid mutator transaction binding the contract method 0x7a9adac6.
 13087  //
 13088  // Solidity: function registerBulk(address _user, uint256 _startID, uint256 _endID) returns()
 13089  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RegisterBulk(_user common.Address, _startID *big.Int, _endID *big.Int) (*types.Transaction, error) {
 13090  	return _ServiceChainNFT.Contract.RegisterBulk(&_ServiceChainNFT.TransactOpts, _user, _startID, _endID)
 13091  }
 13092  
 13093  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13094  //
 13095  // Solidity: function renounceMinter() returns()
 13096  func (_ServiceChainNFT *ServiceChainNFTTransactor) RenounceMinter(opts *bind.TransactOpts) (*types.Transaction, error) {
 13097  	return _ServiceChainNFT.contract.Transact(opts, "renounceMinter")
 13098  }
 13099  
 13100  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13101  //
 13102  // Solidity: function renounceMinter() returns()
 13103  func (_ServiceChainNFT *ServiceChainNFTSession) RenounceMinter() (*types.Transaction, error) {
 13104  	return _ServiceChainNFT.Contract.RenounceMinter(&_ServiceChainNFT.TransactOpts)
 13105  }
 13106  
 13107  // RenounceMinter is a paid mutator transaction binding the contract method 0x98650275.
 13108  //
 13109  // Solidity: function renounceMinter() returns()
 13110  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RenounceMinter() (*types.Transaction, error) {
 13111  	return _ServiceChainNFT.Contract.RenounceMinter(&_ServiceChainNFT.TransactOpts)
 13112  }
 13113  
 13114  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13115  //
 13116  // Solidity: function renounceOwnership() returns()
 13117  func (_ServiceChainNFT *ServiceChainNFTTransactor) RenounceOwnership(opts *bind.TransactOpts) (*types.Transaction, error) {
 13118  	return _ServiceChainNFT.contract.Transact(opts, "renounceOwnership")
 13119  }
 13120  
 13121  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13122  //
 13123  // Solidity: function renounceOwnership() returns()
 13124  func (_ServiceChainNFT *ServiceChainNFTSession) RenounceOwnership() (*types.Transaction, error) {
 13125  	return _ServiceChainNFT.Contract.RenounceOwnership(&_ServiceChainNFT.TransactOpts)
 13126  }
 13127  
 13128  // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6.
 13129  //
 13130  // Solidity: function renounceOwnership() returns()
 13131  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RenounceOwnership() (*types.Transaction, error) {
 13132  	return _ServiceChainNFT.Contract.RenounceOwnership(&_ServiceChainNFT.TransactOpts)
 13133  }
 13134  
 13135  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13136  //
 13137  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13138  func (_ServiceChainNFT *ServiceChainNFTTransactor) RequestValueTransfer(opts *bind.TransactOpts, _uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13139  	return _ServiceChainNFT.contract.Transact(opts, "requestValueTransfer", _uid, _to, _extraData)
 13140  }
 13141  
 13142  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13143  //
 13144  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13145  func (_ServiceChainNFT *ServiceChainNFTSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13146  	return _ServiceChainNFT.Contract.RequestValueTransfer(&_ServiceChainNFT.TransactOpts, _uid, _to, _extraData)
 13147  }
 13148  
 13149  // RequestValueTransfer is a paid mutator transaction binding the contract method 0x3f4c4e3d.
 13150  //
 13151  // Solidity: function requestValueTransfer(uint256 _uid, address _to, bytes _extraData) returns()
 13152  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) RequestValueTransfer(_uid *big.Int, _to common.Address, _extraData []byte) (*types.Transaction, error) {
 13153  	return _ServiceChainNFT.Contract.RequestValueTransfer(&_ServiceChainNFT.TransactOpts, _uid, _to, _extraData)
 13154  }
 13155  
 13156  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13157  //
 13158  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13159  func (_ServiceChainNFT *ServiceChainNFTTransactor) SafeTransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13160  	return _ServiceChainNFT.contract.Transact(opts, "safeTransferFrom", from, to, tokenId)
 13161  }
 13162  
 13163  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13164  //
 13165  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13166  func (_ServiceChainNFT *ServiceChainNFTSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13167  	return _ServiceChainNFT.Contract.SafeTransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13168  }
 13169  
 13170  // SafeTransferFrom is a paid mutator transaction binding the contract method 0x42842e0e.
 13171  //
 13172  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId) returns()
 13173  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SafeTransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13174  	return _ServiceChainNFT.Contract.SafeTransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13175  }
 13176  
 13177  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13178  //
 13179  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13180  func (_ServiceChainNFT *ServiceChainNFTTransactor) SafeTransferFrom0(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13181  	return _ServiceChainNFT.contract.Transact(opts, "safeTransferFrom0", from, to, tokenId, _data)
 13182  }
 13183  
 13184  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13185  //
 13186  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13187  func (_ServiceChainNFT *ServiceChainNFTSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13188  	return _ServiceChainNFT.Contract.SafeTransferFrom0(&_ServiceChainNFT.TransactOpts, from, to, tokenId, _data)
 13189  }
 13190  
 13191  // SafeTransferFrom0 is a paid mutator transaction binding the contract method 0xb88d4fde.
 13192  //
 13193  // Solidity: function safeTransferFrom(address from, address to, uint256 tokenId, bytes _data) returns()
 13194  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SafeTransferFrom0(from common.Address, to common.Address, tokenId *big.Int, _data []byte) (*types.Transaction, error) {
 13195  	return _ServiceChainNFT.Contract.SafeTransferFrom0(&_ServiceChainNFT.TransactOpts, from, to, tokenId, _data)
 13196  }
 13197  
 13198  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13199  //
 13200  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13201  func (_ServiceChainNFT *ServiceChainNFTTransactor) SetApprovalForAll(opts *bind.TransactOpts, to common.Address, approved bool) (*types.Transaction, error) {
 13202  	return _ServiceChainNFT.contract.Transact(opts, "setApprovalForAll", to, approved)
 13203  }
 13204  
 13205  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13206  //
 13207  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13208  func (_ServiceChainNFT *ServiceChainNFTSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13209  	return _ServiceChainNFT.Contract.SetApprovalForAll(&_ServiceChainNFT.TransactOpts, to, approved)
 13210  }
 13211  
 13212  // SetApprovalForAll is a paid mutator transaction binding the contract method 0xa22cb465.
 13213  //
 13214  // Solidity: function setApprovalForAll(address to, bool approved) returns()
 13215  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SetApprovalForAll(to common.Address, approved bool) (*types.Transaction, error) {
 13216  	return _ServiceChainNFT.Contract.SetApprovalForAll(&_ServiceChainNFT.TransactOpts, to, approved)
 13217  }
 13218  
 13219  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13220  //
 13221  // Solidity: function setBridge(address _bridge) returns()
 13222  func (_ServiceChainNFT *ServiceChainNFTTransactor) SetBridge(opts *bind.TransactOpts, _bridge common.Address) (*types.Transaction, error) {
 13223  	return _ServiceChainNFT.contract.Transact(opts, "setBridge", _bridge)
 13224  }
 13225  
 13226  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13227  //
 13228  // Solidity: function setBridge(address _bridge) returns()
 13229  func (_ServiceChainNFT *ServiceChainNFTSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
 13230  	return _ServiceChainNFT.Contract.SetBridge(&_ServiceChainNFT.TransactOpts, _bridge)
 13231  }
 13232  
 13233  // SetBridge is a paid mutator transaction binding the contract method 0x8dd14802.
 13234  //
 13235  // Solidity: function setBridge(address _bridge) returns()
 13236  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) SetBridge(_bridge common.Address) (*types.Transaction, error) {
 13237  	return _ServiceChainNFT.Contract.SetBridge(&_ServiceChainNFT.TransactOpts, _bridge)
 13238  }
 13239  
 13240  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13241  //
 13242  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13243  func (_ServiceChainNFT *ServiceChainNFTTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13244  	return _ServiceChainNFT.contract.Transact(opts, "transferFrom", from, to, tokenId)
 13245  }
 13246  
 13247  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13248  //
 13249  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13250  func (_ServiceChainNFT *ServiceChainNFTSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13251  	return _ServiceChainNFT.Contract.TransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13252  }
 13253  
 13254  // TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd.
 13255  //
 13256  // Solidity: function transferFrom(address from, address to, uint256 tokenId) returns()
 13257  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) TransferFrom(from common.Address, to common.Address, tokenId *big.Int) (*types.Transaction, error) {
 13258  	return _ServiceChainNFT.Contract.TransferFrom(&_ServiceChainNFT.TransactOpts, from, to, tokenId)
 13259  }
 13260  
 13261  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13262  //
 13263  // Solidity: function transferOwnership(address newOwner) returns()
 13264  func (_ServiceChainNFT *ServiceChainNFTTransactor) TransferOwnership(opts *bind.TransactOpts, newOwner common.Address) (*types.Transaction, error) {
 13265  	return _ServiceChainNFT.contract.Transact(opts, "transferOwnership", newOwner)
 13266  }
 13267  
 13268  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13269  //
 13270  // Solidity: function transferOwnership(address newOwner) returns()
 13271  func (_ServiceChainNFT *ServiceChainNFTSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 13272  	return _ServiceChainNFT.Contract.TransferOwnership(&_ServiceChainNFT.TransactOpts, newOwner)
 13273  }
 13274  
 13275  // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b.
 13276  //
 13277  // Solidity: function transferOwnership(address newOwner) returns()
 13278  func (_ServiceChainNFT *ServiceChainNFTTransactorSession) TransferOwnership(newOwner common.Address) (*types.Transaction, error) {
 13279  	return _ServiceChainNFT.Contract.TransferOwnership(&_ServiceChainNFT.TransactOpts, newOwner)
 13280  }
 13281  
 13282  // ServiceChainNFTApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ServiceChainNFT contract.
 13283  type ServiceChainNFTApprovalIterator struct {
 13284  	Event *ServiceChainNFTApproval // Event containing the contract specifics and raw log
 13285  
 13286  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13287  	event    string              // Event name to use for unpacking event data
 13288  
 13289  	logs chan types.Log      // Log channel receiving the found contract events
 13290  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13291  	done bool                // Whether the subscription completed delivering logs
 13292  	fail error               // Occurred error to stop iteration
 13293  }
 13294  
 13295  // Next advances the iterator to the subsequent event, returning whether there
 13296  // are any more events found. In case of a retrieval or parsing error, false is
 13297  // returned and Error() can be queried for the exact failure.
 13298  func (it *ServiceChainNFTApprovalIterator) Next() bool {
 13299  	// If the iterator failed, stop iterating
 13300  	if it.fail != nil {
 13301  		return false
 13302  	}
 13303  	// If the iterator completed, deliver directly whatever's available
 13304  	if it.done {
 13305  		select {
 13306  		case log := <-it.logs:
 13307  			it.Event = new(ServiceChainNFTApproval)
 13308  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13309  				it.fail = err
 13310  				return false
 13311  			}
 13312  			it.Event.Raw = log
 13313  			return true
 13314  
 13315  		default:
 13316  			return false
 13317  		}
 13318  	}
 13319  	// Iterator still in progress, wait for either a data or an error event
 13320  	select {
 13321  	case log := <-it.logs:
 13322  		it.Event = new(ServiceChainNFTApproval)
 13323  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13324  			it.fail = err
 13325  			return false
 13326  		}
 13327  		it.Event.Raw = log
 13328  		return true
 13329  
 13330  	case err := <-it.sub.Err():
 13331  		it.done = true
 13332  		it.fail = err
 13333  		return it.Next()
 13334  	}
 13335  }
 13336  
 13337  // Error returns any retrieval or parsing error occurred during filtering.
 13338  func (it *ServiceChainNFTApprovalIterator) Error() error {
 13339  	return it.fail
 13340  }
 13341  
 13342  // Close terminates the iteration process, releasing any pending underlying
 13343  // resources.
 13344  func (it *ServiceChainNFTApprovalIterator) Close() error {
 13345  	it.sub.Unsubscribe()
 13346  	return nil
 13347  }
 13348  
 13349  // ServiceChainNFTApproval represents a Approval event raised by the ServiceChainNFT contract.
 13350  type ServiceChainNFTApproval struct {
 13351  	Owner    common.Address
 13352  	Approved common.Address
 13353  	TokenId  *big.Int
 13354  	Raw      types.Log // Blockchain specific contextual infos
 13355  }
 13356  
 13357  // FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13358  //
 13359  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 13360  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, approved []common.Address, tokenId []*big.Int) (*ServiceChainNFTApprovalIterator, error) {
 13361  
 13362  	var ownerRule []interface{}
 13363  	for _, ownerItem := range owner {
 13364  		ownerRule = append(ownerRule, ownerItem)
 13365  	}
 13366  	var approvedRule []interface{}
 13367  	for _, approvedItem := range approved {
 13368  		approvedRule = append(approvedRule, approvedItem)
 13369  	}
 13370  	var tokenIdRule []interface{}
 13371  	for _, tokenIdItem := range tokenId {
 13372  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 13373  	}
 13374  
 13375  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 13376  	if err != nil {
 13377  		return nil, err
 13378  	}
 13379  	return &ServiceChainNFTApprovalIterator{contract: _ServiceChainNFT.contract, event: "Approval", logs: logs, sub: sub}, nil
 13380  }
 13381  
 13382  // WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13383  //
 13384  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 13385  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApproval, owner []common.Address, approved []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 13386  
 13387  	var ownerRule []interface{}
 13388  	for _, ownerItem := range owner {
 13389  		ownerRule = append(ownerRule, ownerItem)
 13390  	}
 13391  	var approvedRule []interface{}
 13392  	for _, approvedItem := range approved {
 13393  		approvedRule = append(approvedRule, approvedItem)
 13394  	}
 13395  	var tokenIdRule []interface{}
 13396  	for _, tokenIdItem := range tokenId {
 13397  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 13398  	}
 13399  
 13400  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "Approval", ownerRule, approvedRule, tokenIdRule)
 13401  	if err != nil {
 13402  		return nil, err
 13403  	}
 13404  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13405  		defer sub.Unsubscribe()
 13406  		for {
 13407  			select {
 13408  			case log := <-logs:
 13409  				// New log arrived, parse the event and forward to the user
 13410  				event := new(ServiceChainNFTApproval)
 13411  				if err := _ServiceChainNFT.contract.UnpackLog(event, "Approval", log); err != nil {
 13412  					return err
 13413  				}
 13414  				event.Raw = log
 13415  
 13416  				select {
 13417  				case sink <- event:
 13418  				case err := <-sub.Err():
 13419  					return err
 13420  				case <-quit:
 13421  					return nil
 13422  				}
 13423  			case err := <-sub.Err():
 13424  				return err
 13425  			case <-quit:
 13426  				return nil
 13427  			}
 13428  		}
 13429  	}), nil
 13430  }
 13431  
 13432  // ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925.
 13433  //
 13434  // Solidity: event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
 13435  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApproval(log types.Log) (*ServiceChainNFTApproval, error) {
 13436  	event := new(ServiceChainNFTApproval)
 13437  	if err := _ServiceChainNFT.contract.UnpackLog(event, "Approval", log); err != nil {
 13438  		return nil, err
 13439  	}
 13440  	return event, nil
 13441  }
 13442  
 13443  // ServiceChainNFTApprovalForAllIterator is returned from FilterApprovalForAll and is used to iterate over the raw logs and unpacked data for ApprovalForAll events raised by the ServiceChainNFT contract.
 13444  type ServiceChainNFTApprovalForAllIterator struct {
 13445  	Event *ServiceChainNFTApprovalForAll // Event containing the contract specifics and raw log
 13446  
 13447  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13448  	event    string              // Event name to use for unpacking event data
 13449  
 13450  	logs chan types.Log      // Log channel receiving the found contract events
 13451  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13452  	done bool                // Whether the subscription completed delivering logs
 13453  	fail error               // Occurred error to stop iteration
 13454  }
 13455  
 13456  // Next advances the iterator to the subsequent event, returning whether there
 13457  // are any more events found. In case of a retrieval or parsing error, false is
 13458  // returned and Error() can be queried for the exact failure.
 13459  func (it *ServiceChainNFTApprovalForAllIterator) Next() bool {
 13460  	// If the iterator failed, stop iterating
 13461  	if it.fail != nil {
 13462  		return false
 13463  	}
 13464  	// If the iterator completed, deliver directly whatever's available
 13465  	if it.done {
 13466  		select {
 13467  		case log := <-it.logs:
 13468  			it.Event = new(ServiceChainNFTApprovalForAll)
 13469  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13470  				it.fail = err
 13471  				return false
 13472  			}
 13473  			it.Event.Raw = log
 13474  			return true
 13475  
 13476  		default:
 13477  			return false
 13478  		}
 13479  	}
 13480  	// Iterator still in progress, wait for either a data or an error event
 13481  	select {
 13482  	case log := <-it.logs:
 13483  		it.Event = new(ServiceChainNFTApprovalForAll)
 13484  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13485  			it.fail = err
 13486  			return false
 13487  		}
 13488  		it.Event.Raw = log
 13489  		return true
 13490  
 13491  	case err := <-it.sub.Err():
 13492  		it.done = true
 13493  		it.fail = err
 13494  		return it.Next()
 13495  	}
 13496  }
 13497  
 13498  // Error returns any retrieval or parsing error occurred during filtering.
 13499  func (it *ServiceChainNFTApprovalForAllIterator) Error() error {
 13500  	return it.fail
 13501  }
 13502  
 13503  // Close terminates the iteration process, releasing any pending underlying
 13504  // resources.
 13505  func (it *ServiceChainNFTApprovalForAllIterator) Close() error {
 13506  	it.sub.Unsubscribe()
 13507  	return nil
 13508  }
 13509  
 13510  // ServiceChainNFTApprovalForAll represents a ApprovalForAll event raised by the ServiceChainNFT contract.
 13511  type ServiceChainNFTApprovalForAll struct {
 13512  	Owner    common.Address
 13513  	Operator common.Address
 13514  	Approved bool
 13515  	Raw      types.Log // Blockchain specific contextual infos
 13516  }
 13517  
 13518  // FilterApprovalForAll is a free log retrieval operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 13519  //
 13520  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 13521  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterApprovalForAll(opts *bind.FilterOpts, owner []common.Address, operator []common.Address) (*ServiceChainNFTApprovalForAllIterator, error) {
 13522  
 13523  	var ownerRule []interface{}
 13524  	for _, ownerItem := range owner {
 13525  		ownerRule = append(ownerRule, ownerItem)
 13526  	}
 13527  	var operatorRule []interface{}
 13528  	for _, operatorItem := range operator {
 13529  		operatorRule = append(operatorRule, operatorItem)
 13530  	}
 13531  
 13532  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 13533  	if err != nil {
 13534  		return nil, err
 13535  	}
 13536  	return &ServiceChainNFTApprovalForAllIterator{contract: _ServiceChainNFT.contract, event: "ApprovalForAll", logs: logs, sub: sub}, nil
 13537  }
 13538  
 13539  // WatchApprovalForAll is a free log subscription operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 13540  //
 13541  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 13542  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchApprovalForAll(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTApprovalForAll, owner []common.Address, operator []common.Address) (event.Subscription, error) {
 13543  
 13544  	var ownerRule []interface{}
 13545  	for _, ownerItem := range owner {
 13546  		ownerRule = append(ownerRule, ownerItem)
 13547  	}
 13548  	var operatorRule []interface{}
 13549  	for _, operatorItem := range operator {
 13550  		operatorRule = append(operatorRule, operatorItem)
 13551  	}
 13552  
 13553  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "ApprovalForAll", ownerRule, operatorRule)
 13554  	if err != nil {
 13555  		return nil, err
 13556  	}
 13557  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13558  		defer sub.Unsubscribe()
 13559  		for {
 13560  			select {
 13561  			case log := <-logs:
 13562  				// New log arrived, parse the event and forward to the user
 13563  				event := new(ServiceChainNFTApprovalForAll)
 13564  				if err := _ServiceChainNFT.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 13565  					return err
 13566  				}
 13567  				event.Raw = log
 13568  
 13569  				select {
 13570  				case sink <- event:
 13571  				case err := <-sub.Err():
 13572  					return err
 13573  				case <-quit:
 13574  					return nil
 13575  				}
 13576  			case err := <-sub.Err():
 13577  				return err
 13578  			case <-quit:
 13579  				return nil
 13580  			}
 13581  		}
 13582  	}), nil
 13583  }
 13584  
 13585  // ParseApprovalForAll is a log parse operation binding the contract event 0x17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31.
 13586  //
 13587  // Solidity: event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
 13588  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseApprovalForAll(log types.Log) (*ServiceChainNFTApprovalForAll, error) {
 13589  	event := new(ServiceChainNFTApprovalForAll)
 13590  	if err := _ServiceChainNFT.contract.UnpackLog(event, "ApprovalForAll", log); err != nil {
 13591  		return nil, err
 13592  	}
 13593  	return event, nil
 13594  }
 13595  
 13596  // ServiceChainNFTMinterAddedIterator is returned from FilterMinterAdded and is used to iterate over the raw logs and unpacked data for MinterAdded events raised by the ServiceChainNFT contract.
 13597  type ServiceChainNFTMinterAddedIterator struct {
 13598  	Event *ServiceChainNFTMinterAdded // Event containing the contract specifics and raw log
 13599  
 13600  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13601  	event    string              // Event name to use for unpacking event data
 13602  
 13603  	logs chan types.Log      // Log channel receiving the found contract events
 13604  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13605  	done bool                // Whether the subscription completed delivering logs
 13606  	fail error               // Occurred error to stop iteration
 13607  }
 13608  
 13609  // Next advances the iterator to the subsequent event, returning whether there
 13610  // are any more events found. In case of a retrieval or parsing error, false is
 13611  // returned and Error() can be queried for the exact failure.
 13612  func (it *ServiceChainNFTMinterAddedIterator) Next() bool {
 13613  	// If the iterator failed, stop iterating
 13614  	if it.fail != nil {
 13615  		return false
 13616  	}
 13617  	// If the iterator completed, deliver directly whatever's available
 13618  	if it.done {
 13619  		select {
 13620  		case log := <-it.logs:
 13621  			it.Event = new(ServiceChainNFTMinterAdded)
 13622  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13623  				it.fail = err
 13624  				return false
 13625  			}
 13626  			it.Event.Raw = log
 13627  			return true
 13628  
 13629  		default:
 13630  			return false
 13631  		}
 13632  	}
 13633  	// Iterator still in progress, wait for either a data or an error event
 13634  	select {
 13635  	case log := <-it.logs:
 13636  		it.Event = new(ServiceChainNFTMinterAdded)
 13637  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13638  			it.fail = err
 13639  			return false
 13640  		}
 13641  		it.Event.Raw = log
 13642  		return true
 13643  
 13644  	case err := <-it.sub.Err():
 13645  		it.done = true
 13646  		it.fail = err
 13647  		return it.Next()
 13648  	}
 13649  }
 13650  
 13651  // Error returns any retrieval or parsing error occurred during filtering.
 13652  func (it *ServiceChainNFTMinterAddedIterator) Error() error {
 13653  	return it.fail
 13654  }
 13655  
 13656  // Close terminates the iteration process, releasing any pending underlying
 13657  // resources.
 13658  func (it *ServiceChainNFTMinterAddedIterator) Close() error {
 13659  	it.sub.Unsubscribe()
 13660  	return nil
 13661  }
 13662  
 13663  // ServiceChainNFTMinterAdded represents a MinterAdded event raised by the ServiceChainNFT contract.
 13664  type ServiceChainNFTMinterAdded struct {
 13665  	Account common.Address
 13666  	Raw     types.Log // Blockchain specific contextual infos
 13667  }
 13668  
 13669  // FilterMinterAdded is a free log retrieval operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13670  //
 13671  // Solidity: event MinterAdded(address indexed account)
 13672  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterAdded(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterAddedIterator, error) {
 13673  
 13674  	var accountRule []interface{}
 13675  	for _, accountItem := range account {
 13676  		accountRule = append(accountRule, accountItem)
 13677  	}
 13678  
 13679  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "MinterAdded", accountRule)
 13680  	if err != nil {
 13681  		return nil, err
 13682  	}
 13683  	return &ServiceChainNFTMinterAddedIterator{contract: _ServiceChainNFT.contract, event: "MinterAdded", logs: logs, sub: sub}, nil
 13684  }
 13685  
 13686  // WatchMinterAdded is a free log subscription operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13687  //
 13688  // Solidity: event MinterAdded(address indexed account)
 13689  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterAdded(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterAdded, account []common.Address) (event.Subscription, error) {
 13690  
 13691  	var accountRule []interface{}
 13692  	for _, accountItem := range account {
 13693  		accountRule = append(accountRule, accountItem)
 13694  	}
 13695  
 13696  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "MinterAdded", accountRule)
 13697  	if err != nil {
 13698  		return nil, err
 13699  	}
 13700  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13701  		defer sub.Unsubscribe()
 13702  		for {
 13703  			select {
 13704  			case log := <-logs:
 13705  				// New log arrived, parse the event and forward to the user
 13706  				event := new(ServiceChainNFTMinterAdded)
 13707  				if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 13708  					return err
 13709  				}
 13710  				event.Raw = log
 13711  
 13712  				select {
 13713  				case sink <- event:
 13714  				case err := <-sub.Err():
 13715  					return err
 13716  				case <-quit:
 13717  					return nil
 13718  				}
 13719  			case err := <-sub.Err():
 13720  				return err
 13721  			case <-quit:
 13722  				return nil
 13723  			}
 13724  		}
 13725  	}), nil
 13726  }
 13727  
 13728  // ParseMinterAdded is a log parse operation binding the contract event 0x6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6.
 13729  //
 13730  // Solidity: event MinterAdded(address indexed account)
 13731  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterAdded(log types.Log) (*ServiceChainNFTMinterAdded, error) {
 13732  	event := new(ServiceChainNFTMinterAdded)
 13733  	if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterAdded", log); err != nil {
 13734  		return nil, err
 13735  	}
 13736  	return event, nil
 13737  }
 13738  
 13739  // ServiceChainNFTMinterRemovedIterator is returned from FilterMinterRemoved and is used to iterate over the raw logs and unpacked data for MinterRemoved events raised by the ServiceChainNFT contract.
 13740  type ServiceChainNFTMinterRemovedIterator struct {
 13741  	Event *ServiceChainNFTMinterRemoved // Event containing the contract specifics and raw log
 13742  
 13743  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13744  	event    string              // Event name to use for unpacking event data
 13745  
 13746  	logs chan types.Log      // Log channel receiving the found contract events
 13747  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13748  	done bool                // Whether the subscription completed delivering logs
 13749  	fail error               // Occurred error to stop iteration
 13750  }
 13751  
 13752  // Next advances the iterator to the subsequent event, returning whether there
 13753  // are any more events found. In case of a retrieval or parsing error, false is
 13754  // returned and Error() can be queried for the exact failure.
 13755  func (it *ServiceChainNFTMinterRemovedIterator) Next() bool {
 13756  	// If the iterator failed, stop iterating
 13757  	if it.fail != nil {
 13758  		return false
 13759  	}
 13760  	// If the iterator completed, deliver directly whatever's available
 13761  	if it.done {
 13762  		select {
 13763  		case log := <-it.logs:
 13764  			it.Event = new(ServiceChainNFTMinterRemoved)
 13765  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13766  				it.fail = err
 13767  				return false
 13768  			}
 13769  			it.Event.Raw = log
 13770  			return true
 13771  
 13772  		default:
 13773  			return false
 13774  		}
 13775  	}
 13776  	// Iterator still in progress, wait for either a data or an error event
 13777  	select {
 13778  	case log := <-it.logs:
 13779  		it.Event = new(ServiceChainNFTMinterRemoved)
 13780  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13781  			it.fail = err
 13782  			return false
 13783  		}
 13784  		it.Event.Raw = log
 13785  		return true
 13786  
 13787  	case err := <-it.sub.Err():
 13788  		it.done = true
 13789  		it.fail = err
 13790  		return it.Next()
 13791  	}
 13792  }
 13793  
 13794  // Error returns any retrieval or parsing error occurred during filtering.
 13795  func (it *ServiceChainNFTMinterRemovedIterator) Error() error {
 13796  	return it.fail
 13797  }
 13798  
 13799  // Close terminates the iteration process, releasing any pending underlying
 13800  // resources.
 13801  func (it *ServiceChainNFTMinterRemovedIterator) Close() error {
 13802  	it.sub.Unsubscribe()
 13803  	return nil
 13804  }
 13805  
 13806  // ServiceChainNFTMinterRemoved represents a MinterRemoved event raised by the ServiceChainNFT contract.
 13807  type ServiceChainNFTMinterRemoved struct {
 13808  	Account common.Address
 13809  	Raw     types.Log // Blockchain specific contextual infos
 13810  }
 13811  
 13812  // FilterMinterRemoved is a free log retrieval operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13813  //
 13814  // Solidity: event MinterRemoved(address indexed account)
 13815  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterMinterRemoved(opts *bind.FilterOpts, account []common.Address) (*ServiceChainNFTMinterRemovedIterator, error) {
 13816  
 13817  	var accountRule []interface{}
 13818  	for _, accountItem := range account {
 13819  		accountRule = append(accountRule, accountItem)
 13820  	}
 13821  
 13822  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "MinterRemoved", accountRule)
 13823  	if err != nil {
 13824  		return nil, err
 13825  	}
 13826  	return &ServiceChainNFTMinterRemovedIterator{contract: _ServiceChainNFT.contract, event: "MinterRemoved", logs: logs, sub: sub}, nil
 13827  }
 13828  
 13829  // WatchMinterRemoved is a free log subscription operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13830  //
 13831  // Solidity: event MinterRemoved(address indexed account)
 13832  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchMinterRemoved(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTMinterRemoved, account []common.Address) (event.Subscription, error) {
 13833  
 13834  	var accountRule []interface{}
 13835  	for _, accountItem := range account {
 13836  		accountRule = append(accountRule, accountItem)
 13837  	}
 13838  
 13839  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "MinterRemoved", accountRule)
 13840  	if err != nil {
 13841  		return nil, err
 13842  	}
 13843  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13844  		defer sub.Unsubscribe()
 13845  		for {
 13846  			select {
 13847  			case log := <-logs:
 13848  				// New log arrived, parse the event and forward to the user
 13849  				event := new(ServiceChainNFTMinterRemoved)
 13850  				if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 13851  					return err
 13852  				}
 13853  				event.Raw = log
 13854  
 13855  				select {
 13856  				case sink <- event:
 13857  				case err := <-sub.Err():
 13858  					return err
 13859  				case <-quit:
 13860  					return nil
 13861  				}
 13862  			case err := <-sub.Err():
 13863  				return err
 13864  			case <-quit:
 13865  				return nil
 13866  			}
 13867  		}
 13868  	}), nil
 13869  }
 13870  
 13871  // ParseMinterRemoved is a log parse operation binding the contract event 0xe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692.
 13872  //
 13873  // Solidity: event MinterRemoved(address indexed account)
 13874  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseMinterRemoved(log types.Log) (*ServiceChainNFTMinterRemoved, error) {
 13875  	event := new(ServiceChainNFTMinterRemoved)
 13876  	if err := _ServiceChainNFT.contract.UnpackLog(event, "MinterRemoved", log); err != nil {
 13877  		return nil, err
 13878  	}
 13879  	return event, nil
 13880  }
 13881  
 13882  // ServiceChainNFTOwnershipTransferredIterator is returned from FilterOwnershipTransferred and is used to iterate over the raw logs and unpacked data for OwnershipTransferred events raised by the ServiceChainNFT contract.
 13883  type ServiceChainNFTOwnershipTransferredIterator struct {
 13884  	Event *ServiceChainNFTOwnershipTransferred // Event containing the contract specifics and raw log
 13885  
 13886  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 13887  	event    string              // Event name to use for unpacking event data
 13888  
 13889  	logs chan types.Log      // Log channel receiving the found contract events
 13890  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 13891  	done bool                // Whether the subscription completed delivering logs
 13892  	fail error               // Occurred error to stop iteration
 13893  }
 13894  
 13895  // Next advances the iterator to the subsequent event, returning whether there
 13896  // are any more events found. In case of a retrieval or parsing error, false is
 13897  // returned and Error() can be queried for the exact failure.
 13898  func (it *ServiceChainNFTOwnershipTransferredIterator) Next() bool {
 13899  	// If the iterator failed, stop iterating
 13900  	if it.fail != nil {
 13901  		return false
 13902  	}
 13903  	// If the iterator completed, deliver directly whatever's available
 13904  	if it.done {
 13905  		select {
 13906  		case log := <-it.logs:
 13907  			it.Event = new(ServiceChainNFTOwnershipTransferred)
 13908  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13909  				it.fail = err
 13910  				return false
 13911  			}
 13912  			it.Event.Raw = log
 13913  			return true
 13914  
 13915  		default:
 13916  			return false
 13917  		}
 13918  	}
 13919  	// Iterator still in progress, wait for either a data or an error event
 13920  	select {
 13921  	case log := <-it.logs:
 13922  		it.Event = new(ServiceChainNFTOwnershipTransferred)
 13923  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 13924  			it.fail = err
 13925  			return false
 13926  		}
 13927  		it.Event.Raw = log
 13928  		return true
 13929  
 13930  	case err := <-it.sub.Err():
 13931  		it.done = true
 13932  		it.fail = err
 13933  		return it.Next()
 13934  	}
 13935  }
 13936  
 13937  // Error returns any retrieval or parsing error occurred during filtering.
 13938  func (it *ServiceChainNFTOwnershipTransferredIterator) Error() error {
 13939  	return it.fail
 13940  }
 13941  
 13942  // Close terminates the iteration process, releasing any pending underlying
 13943  // resources.
 13944  func (it *ServiceChainNFTOwnershipTransferredIterator) Close() error {
 13945  	it.sub.Unsubscribe()
 13946  	return nil
 13947  }
 13948  
 13949  // ServiceChainNFTOwnershipTransferred represents a OwnershipTransferred event raised by the ServiceChainNFT contract.
 13950  type ServiceChainNFTOwnershipTransferred struct {
 13951  	PreviousOwner common.Address
 13952  	NewOwner      common.Address
 13953  	Raw           types.Log // Blockchain specific contextual infos
 13954  }
 13955  
 13956  // FilterOwnershipTransferred is a free log retrieval operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 13957  //
 13958  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 13959  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterOwnershipTransferred(opts *bind.FilterOpts, previousOwner []common.Address, newOwner []common.Address) (*ServiceChainNFTOwnershipTransferredIterator, error) {
 13960  
 13961  	var previousOwnerRule []interface{}
 13962  	for _, previousOwnerItem := range previousOwner {
 13963  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 13964  	}
 13965  	var newOwnerRule []interface{}
 13966  	for _, newOwnerItem := range newOwner {
 13967  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 13968  	}
 13969  
 13970  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 13971  	if err != nil {
 13972  		return nil, err
 13973  	}
 13974  	return &ServiceChainNFTOwnershipTransferredIterator{contract: _ServiceChainNFT.contract, event: "OwnershipTransferred", logs: logs, sub: sub}, nil
 13975  }
 13976  
 13977  // WatchOwnershipTransferred is a free log subscription operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 13978  //
 13979  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 13980  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchOwnershipTransferred(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTOwnershipTransferred, previousOwner []common.Address, newOwner []common.Address) (event.Subscription, error) {
 13981  
 13982  	var previousOwnerRule []interface{}
 13983  	for _, previousOwnerItem := range previousOwner {
 13984  		previousOwnerRule = append(previousOwnerRule, previousOwnerItem)
 13985  	}
 13986  	var newOwnerRule []interface{}
 13987  	for _, newOwnerItem := range newOwner {
 13988  		newOwnerRule = append(newOwnerRule, newOwnerItem)
 13989  	}
 13990  
 13991  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "OwnershipTransferred", previousOwnerRule, newOwnerRule)
 13992  	if err != nil {
 13993  		return nil, err
 13994  	}
 13995  	return event.NewSubscription(func(quit <-chan struct{}) error {
 13996  		defer sub.Unsubscribe()
 13997  		for {
 13998  			select {
 13999  			case log := <-logs:
 14000  				// New log arrived, parse the event and forward to the user
 14001  				event := new(ServiceChainNFTOwnershipTransferred)
 14002  				if err := _ServiceChainNFT.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14003  					return err
 14004  				}
 14005  				event.Raw = log
 14006  
 14007  				select {
 14008  				case sink <- event:
 14009  				case err := <-sub.Err():
 14010  					return err
 14011  				case <-quit:
 14012  					return nil
 14013  				}
 14014  			case err := <-sub.Err():
 14015  				return err
 14016  			case <-quit:
 14017  				return nil
 14018  			}
 14019  		}
 14020  	}), nil
 14021  }
 14022  
 14023  // ParseOwnershipTransferred is a log parse operation binding the contract event 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0.
 14024  //
 14025  // Solidity: event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
 14026  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseOwnershipTransferred(log types.Log) (*ServiceChainNFTOwnershipTransferred, error) {
 14027  	event := new(ServiceChainNFTOwnershipTransferred)
 14028  	if err := _ServiceChainNFT.contract.UnpackLog(event, "OwnershipTransferred", log); err != nil {
 14029  		return nil, err
 14030  	}
 14031  	return event, nil
 14032  }
 14033  
 14034  // ServiceChainNFTTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ServiceChainNFT contract.
 14035  type ServiceChainNFTTransferIterator struct {
 14036  	Event *ServiceChainNFTTransfer // Event containing the contract specifics and raw log
 14037  
 14038  	contract *bind.BoundContract // Generic contract to use for unpacking event data
 14039  	event    string              // Event name to use for unpacking event data
 14040  
 14041  	logs chan types.Log      // Log channel receiving the found contract events
 14042  	sub  klaytn.Subscription // Subscription for errors, completion and termination
 14043  	done bool                // Whether the subscription completed delivering logs
 14044  	fail error               // Occurred error to stop iteration
 14045  }
 14046  
 14047  // Next advances the iterator to the subsequent event, returning whether there
 14048  // are any more events found. In case of a retrieval or parsing error, false is
 14049  // returned and Error() can be queried for the exact failure.
 14050  func (it *ServiceChainNFTTransferIterator) Next() bool {
 14051  	// If the iterator failed, stop iterating
 14052  	if it.fail != nil {
 14053  		return false
 14054  	}
 14055  	// If the iterator completed, deliver directly whatever's available
 14056  	if it.done {
 14057  		select {
 14058  		case log := <-it.logs:
 14059  			it.Event = new(ServiceChainNFTTransfer)
 14060  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14061  				it.fail = err
 14062  				return false
 14063  			}
 14064  			it.Event.Raw = log
 14065  			return true
 14066  
 14067  		default:
 14068  			return false
 14069  		}
 14070  	}
 14071  	// Iterator still in progress, wait for either a data or an error event
 14072  	select {
 14073  	case log := <-it.logs:
 14074  		it.Event = new(ServiceChainNFTTransfer)
 14075  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
 14076  			it.fail = err
 14077  			return false
 14078  		}
 14079  		it.Event.Raw = log
 14080  		return true
 14081  
 14082  	case err := <-it.sub.Err():
 14083  		it.done = true
 14084  		it.fail = err
 14085  		return it.Next()
 14086  	}
 14087  }
 14088  
 14089  // Error returns any retrieval or parsing error occurred during filtering.
 14090  func (it *ServiceChainNFTTransferIterator) Error() error {
 14091  	return it.fail
 14092  }
 14093  
 14094  // Close terminates the iteration process, releasing any pending underlying
 14095  // resources.
 14096  func (it *ServiceChainNFTTransferIterator) Close() error {
 14097  	it.sub.Unsubscribe()
 14098  	return nil
 14099  }
 14100  
 14101  // ServiceChainNFTTransfer represents a Transfer event raised by the ServiceChainNFT contract.
 14102  type ServiceChainNFTTransfer struct {
 14103  	From    common.Address
 14104  	To      common.Address
 14105  	TokenId *big.Int
 14106  	Raw     types.Log // Blockchain specific contextual infos
 14107  }
 14108  
 14109  // FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14110  //
 14111  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14112  func (_ServiceChainNFT *ServiceChainNFTFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address, tokenId []*big.Int) (*ServiceChainNFTTransferIterator, error) {
 14113  
 14114  	var fromRule []interface{}
 14115  	for _, fromItem := range from {
 14116  		fromRule = append(fromRule, fromItem)
 14117  	}
 14118  	var toRule []interface{}
 14119  	for _, toItem := range to {
 14120  		toRule = append(toRule, toItem)
 14121  	}
 14122  	var tokenIdRule []interface{}
 14123  	for _, tokenIdItem := range tokenId {
 14124  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14125  	}
 14126  
 14127  	logs, sub, err := _ServiceChainNFT.contract.FilterLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14128  	if err != nil {
 14129  		return nil, err
 14130  	}
 14131  	return &ServiceChainNFTTransferIterator{contract: _ServiceChainNFT.contract, event: "Transfer", logs: logs, sub: sub}, nil
 14132  }
 14133  
 14134  // WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14135  //
 14136  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14137  func (_ServiceChainNFT *ServiceChainNFTFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ServiceChainNFTTransfer, from []common.Address, to []common.Address, tokenId []*big.Int) (event.Subscription, error) {
 14138  
 14139  	var fromRule []interface{}
 14140  	for _, fromItem := range from {
 14141  		fromRule = append(fromRule, fromItem)
 14142  	}
 14143  	var toRule []interface{}
 14144  	for _, toItem := range to {
 14145  		toRule = append(toRule, toItem)
 14146  	}
 14147  	var tokenIdRule []interface{}
 14148  	for _, tokenIdItem := range tokenId {
 14149  		tokenIdRule = append(tokenIdRule, tokenIdItem)
 14150  	}
 14151  
 14152  	logs, sub, err := _ServiceChainNFT.contract.WatchLogs(opts, "Transfer", fromRule, toRule, tokenIdRule)
 14153  	if err != nil {
 14154  		return nil, err
 14155  	}
 14156  	return event.NewSubscription(func(quit <-chan struct{}) error {
 14157  		defer sub.Unsubscribe()
 14158  		for {
 14159  			select {
 14160  			case log := <-logs:
 14161  				// New log arrived, parse the event and forward to the user
 14162  				event := new(ServiceChainNFTTransfer)
 14163  				if err := _ServiceChainNFT.contract.UnpackLog(event, "Transfer", log); err != nil {
 14164  					return err
 14165  				}
 14166  				event.Raw = log
 14167  
 14168  				select {
 14169  				case sink <- event:
 14170  				case err := <-sub.Err():
 14171  					return err
 14172  				case <-quit:
 14173  					return nil
 14174  				}
 14175  			case err := <-sub.Err():
 14176  				return err
 14177  			case <-quit:
 14178  				return nil
 14179  			}
 14180  		}
 14181  	}), nil
 14182  }
 14183  
 14184  // ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
 14185  //
 14186  // Solidity: event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
 14187  func (_ServiceChainNFT *ServiceChainNFTFilterer) ParseTransfer(log types.Log) (*ServiceChainNFTTransfer, error) {
 14188  	event := new(ServiceChainNFTTransfer)
 14189  	if err := _ServiceChainNFT.contract.UnpackLog(event, "Transfer", log); err != nil {
 14190  		return nil, err
 14191  	}
 14192  	return event, nil
 14193  }