ICC profile, version 4: Go parsing library

File extension

["icc", "icm"]

KS implementation details

License: CC0-1.0

References

This page hosts a formal specification of ICC profile, version 4 using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.

Go source code to parse ICC profile, version 4

icc_4.go

// Code generated by kaitai-struct-compiler from a .ksy source file. DO NOT EDIT.

import (
	"github.com/kaitai-io/kaitai_struct_go_runtime/kaitai"
	"bytes"
	"io"
	"unicode/utf8"
	"golang.org/x/text/encoding/unicode"
)

type Icc4 struct {
	Header *Icc4_ProfileHeader
	TagTable *Icc4_TagTable
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4() *Icc4 {
	return &Icc4{
	}
}

func (this Icc4) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp1 := NewIcc4_ProfileHeader()
	err = tmp1.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Header = tmp1
	tmp2 := NewIcc4_TagTable()
	err = tmp2.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.TagTable = tmp2
	return err
}
type Icc4_DateTimeNumber struct {
	Year uint16
	Month uint16
	Day uint16
	Hour uint16
	Minute uint16
	Second uint16
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_DateTimeNumber() *Icc4_DateTimeNumber {
	return &Icc4_DateTimeNumber{
	}
}

func (this Icc4_DateTimeNumber) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_DateTimeNumber) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp3, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Year = uint16(tmp3)
	tmp4, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Month = uint16(tmp4)
	tmp5, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Day = uint16(tmp5)
	tmp6, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Hour = uint16(tmp6)
	tmp7, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Minute = uint16(tmp7)
	tmp8, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.Second = uint16(tmp8)
	return err
}

type Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia int
const (
	Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia__ColourMedia Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia = 0
	Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia__BlackAndWhiteMedia Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia = 1
)
var values_Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia = map[Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia]struct{}{0: {}, 1: {}}
func (v Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia) isDefined() bool {
	_, ok := values_Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia[v]
	return ok
}

type Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte int
const (
	Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte__Glossy Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte = 0
	Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte__Matte Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte = 1
)
var values_Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte = map[Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte]struct{}{0: {}, 1: {}}
func (v Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte) isDefined() bool {
	_, ok := values_Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte[v]
	return ok
}

type Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity int
const (
	Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity__PositiveMediaPolarity Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity = 0
	Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity__NegativeMediaPolarity Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity = 1
)
var values_Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity = map[Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity]struct{}{0: {}, 1: {}}
func (v Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity) isDefined() bool {
	_, ok := values_Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity[v]
	return ok
}

type Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency int
const (
	Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency__Reflective Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency = 0
	Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency__Transparency Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency = 1
)
var values_Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency = map[Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency]struct{}{0: {}, 1: {}}
func (v Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency) isDefined() bool {
	_, ok := values_Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency[v]
	return ok
}
type Icc4_DeviceAttributes struct {
	ReflectiveOrTransparency Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency
	GlossyOrMatte Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte
	PositiveOrNegativeMediaPolarity Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity
	ColourOrBlackAndWhiteMedia Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia
	Reserved uint64
	VendorSpecific uint64
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_DeviceAttributes() *Icc4_DeviceAttributes {
	return &Icc4_DeviceAttributes{
	}
}

func (this Icc4_DeviceAttributes) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_DeviceAttributes) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp9, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.ReflectiveOrTransparency = Icc4_DeviceAttributes_DeviceAttributesReflectiveOrTransparency(tmp9)
	tmp10, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.GlossyOrMatte = Icc4_DeviceAttributes_DeviceAttributesGlossyOrMatte(tmp10)
	tmp11, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.PositiveOrNegativeMediaPolarity = Icc4_DeviceAttributes_DeviceAttributesPositiveOrNegativeMediaPolarity(tmp11)
	tmp12, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.ColourOrBlackAndWhiteMedia = Icc4_DeviceAttributes_DeviceAttributesColourOrBlackAndWhiteMedia(tmp12)
	tmp13, err := this._io.ReadBitsIntBe(28)
	if err != nil {
		return err
	}
	this.Reserved = tmp13
	tmp14, err := this._io.ReadBitsIntBe(32)
	if err != nil {
		return err
	}
	this.VendorSpecific = tmp14
	return err
}

type Icc4_DeviceManufacturer_DeviceManufacturers int
const (
	Icc4_DeviceManufacturer_DeviceManufacturers__ErdtSystemsGmbhAndCoKg Icc4_DeviceManufacturer_DeviceManufacturers = 878981744
	Icc4_DeviceManufacturer_DeviceManufacturers__AamazingTechnologiesInc Icc4_DeviceManufacturer_DeviceManufacturers = 1094798657
	Icc4_DeviceManufacturer_DeviceManufacturers__AcerPeripherals Icc4_DeviceManufacturer_DeviceManufacturers = 1094927698
	Icc4_DeviceManufacturer_DeviceManufacturers__AcolyteColorResearch Icc4_DeviceManufacturer_DeviceManufacturers = 1094929492
	Icc4_DeviceManufacturer_DeviceManufacturers__ActixSytemsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1094931529
	Icc4_DeviceManufacturer_DeviceManufacturers__AdaraTechnologyInc Icc4_DeviceManufacturer_DeviceManufacturers = 1094992210
	Icc4_DeviceManufacturer_DeviceManufacturers__AdobeSystemsIncorporated Icc4_DeviceManufacturer_DeviceManufacturers = 1094992453
	Icc4_DeviceManufacturer_DeviceManufacturers__AdiSystemsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1094994208
	Icc4_DeviceManufacturer_DeviceManufacturers__AgfaGraphicsNv Icc4_DeviceManufacturer_DeviceManufacturers = 1095190081
	Icc4_DeviceManufacturer_DeviceManufacturers__AlpsElectricUsaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1095519556
	Icc4_DeviceManufacturer_DeviceManufacturers__AlpsElectricUsaInc2 Icc4_DeviceManufacturer_DeviceManufacturers = 1095520339
	Icc4_DeviceManufacturer_DeviceManufacturers__AlwanColorExpertise Icc4_DeviceManufacturer_DeviceManufacturers = 1095522126
	Icc4_DeviceManufacturer_DeviceManufacturers__AmiableTechnologiesInc Icc4_DeviceManufacturer_DeviceManufacturers = 1095586889
	Icc4_DeviceManufacturer_DeviceManufacturers__AocInternationalUsaLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1095713568
	Icc4_DeviceManufacturer_DeviceManufacturers__Apago Icc4_DeviceManufacturer_DeviceManufacturers = 1095778631
	Icc4_DeviceManufacturer_DeviceManufacturers__AppleComputerInc Icc4_DeviceManufacturer_DeviceManufacturers = 1095782476
	Icc4_DeviceManufacturer_DeviceManufacturers__Ast Icc4_DeviceManufacturer_DeviceManufacturers = 1095980064
	Icc4_DeviceManufacturer_DeviceManufacturers__AtandtComputerSystems Icc4_DeviceManufacturer_DeviceManufacturers = 1096033876
	Icc4_DeviceManufacturer_DeviceManufacturers__BarbieriElectronic Icc4_DeviceManufacturer_DeviceManufacturers = 1111573836
	Icc4_DeviceManufacturer_DeviceManufacturers__BarcoNv Icc4_DeviceManufacturer_DeviceManufacturers = 1112687439
	Icc4_DeviceManufacturer_DeviceManufacturers__BreakpointPtyLimited Icc4_DeviceManufacturer_DeviceManufacturers = 1112689488
	Icc4_DeviceManufacturer_DeviceManufacturers__BrotherIndustriesLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1112690516
	Icc4_DeviceManufacturer_DeviceManufacturers__Bull Icc4_DeviceManufacturer_DeviceManufacturers = 1112886348
	Icc4_DeviceManufacturer_DeviceManufacturers__BusComputerSystems Icc4_DeviceManufacturer_DeviceManufacturers = 1112888096
	Icc4_DeviceManufacturer_DeviceManufacturers__CItoh Icc4_DeviceManufacturer_DeviceManufacturers = 1127041364
	Icc4_DeviceManufacturer_DeviceManufacturers__IntelCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1128353106
	Icc4_DeviceManufacturer_DeviceManufacturers__CanonIncCanonDevelopmentAmericasInc Icc4_DeviceManufacturer_DeviceManufacturers = 1128353359
	Icc4_DeviceManufacturer_DeviceManufacturers__CarrollTouch Icc4_DeviceManufacturer_DeviceManufacturers = 1128354386
	Icc4_DeviceManufacturer_DeviceManufacturers__CasioComputerCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1128354633
	Icc4_DeviceManufacturer_DeviceManufacturers__ColorbusPl Icc4_DeviceManufacturer_DeviceManufacturers = 1128420691
	Icc4_DeviceManufacturer_DeviceManufacturers__Crossfield Icc4_DeviceManufacturer_DeviceManufacturers = 1128614944
	Icc4_DeviceManufacturer_DeviceManufacturers__Crossfield2 Icc4_DeviceManufacturer_DeviceManufacturers = 1128615032
	Icc4_DeviceManufacturer_DeviceManufacturers__CgsPublishingTechnologiesInternationalGmbh Icc4_DeviceManufacturer_DeviceManufacturers = 1128747808
	Icc4_DeviceManufacturer_DeviceManufacturers__RochesterRobotics Icc4_DeviceManufacturer_DeviceManufacturers = 1128811808
	Icc4_DeviceManufacturer_DeviceManufacturers__ColourImagingGroupLondon Icc4_DeviceManufacturer_DeviceManufacturers = 1128875852
	Icc4_DeviceManufacturer_DeviceManufacturers__Citizen Icc4_DeviceManufacturer_DeviceManufacturers = 1128879177
	Icc4_DeviceManufacturer_DeviceManufacturers__CandelaLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1129066544
	Icc4_DeviceManufacturer_DeviceManufacturers__ColorIq Icc4_DeviceManufacturer_DeviceManufacturers = 1129072977
	Icc4_DeviceManufacturer_DeviceManufacturers__ChromacoInc Icc4_DeviceManufacturer_DeviceManufacturers = 1129136975
	Icc4_DeviceManufacturer_DeviceManufacturers__Chromix Icc4_DeviceManufacturer_DeviceManufacturers = 1129146712
	Icc4_DeviceManufacturer_DeviceManufacturers__ColorgraphicCommunicationsCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1129270351
	Icc4_DeviceManufacturer_DeviceManufacturers__CompaqComputerCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1129270608
	Icc4_DeviceManufacturer_DeviceManufacturers__CompeqUsaFocusTechnology Icc4_DeviceManufacturer_DeviceManufacturers = 1129270640
	Icc4_DeviceManufacturer_DeviceManufacturers__ConracDisplayProducts Icc4_DeviceManufacturer_DeviceManufacturers = 1129270866
	Icc4_DeviceManufacturer_DeviceManufacturers__CordataTechnologiesInc Icc4_DeviceManufacturer_DeviceManufacturers = 1129271876
	Icc4_DeviceManufacturer_DeviceManufacturers__CompaqComputerCorporation2 Icc4_DeviceManufacturer_DeviceManufacturers = 1129337120
	Icc4_DeviceManufacturer_DeviceManufacturers__Colorpro Icc4_DeviceManufacturer_DeviceManufacturers = 1129337423
	Icc4_DeviceManufacturer_DeviceManufacturers__Cornerstone Icc4_DeviceManufacturer_DeviceManufacturers = 1129467424
	Icc4_DeviceManufacturer_DeviceManufacturers__CtxInternationalInc Icc4_DeviceManufacturer_DeviceManufacturers = 1129601056
	Icc4_DeviceManufacturer_DeviceManufacturers__Colorvision Icc4_DeviceManufacturer_DeviceManufacturers = 1129728339
	Icc4_DeviceManufacturer_DeviceManufacturers__FujitsuLaboratoriesLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1129792288
	Icc4_DeviceManufacturer_DeviceManufacturers__DariusTechnologyLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1145131593
	Icc4_DeviceManufacturer_DeviceManufacturers__Dataproducts Icc4_DeviceManufacturer_DeviceManufacturers = 1145132097
	Icc4_DeviceManufacturer_DeviceManufacturers__DryCreekPhoto Icc4_DeviceManufacturer_DeviceManufacturers = 1145262112
	Icc4_DeviceManufacturer_DeviceManufacturers__DigitalContentsResourceCenterChungAngUniversity Icc4_DeviceManufacturer_DeviceManufacturers = 1145262659
	Icc4_DeviceManufacturer_DeviceManufacturers__DellComputerCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1145392204
	Icc4_DeviceManufacturer_DeviceManufacturers__DainipponInkAndChemicals Icc4_DeviceManufacturer_DeviceManufacturers = 1145652000
	Icc4_DeviceManufacturer_DeviceManufacturers__Diconix Icc4_DeviceManufacturer_DeviceManufacturers = 1145652047
	Icc4_DeviceManufacturer_DeviceManufacturers__Digital Icc4_DeviceManufacturer_DeviceManufacturers = 1145653065
	Icc4_DeviceManufacturer_DeviceManufacturers__DigitalLightAndColor Icc4_DeviceManufacturer_DeviceManufacturers = 1145841219
	Icc4_DeviceManufacturer_DeviceManufacturers__DoppelgangerLlc Icc4_DeviceManufacturer_DeviceManufacturers = 1146113095
	Icc4_DeviceManufacturer_DeviceManufacturers__DainipponScreen Icc4_DeviceManufacturer_DeviceManufacturers = 1146298400
	Icc4_DeviceManufacturer_DeviceManufacturers__Doosol Icc4_DeviceManufacturer_DeviceManufacturers = 1146310476
	Icc4_DeviceManufacturer_DeviceManufacturers__Dupont Icc4_DeviceManufacturer_DeviceManufacturers = 1146441806
	Icc4_DeviceManufacturer_DeviceManufacturers__Epson Icc4_DeviceManufacturer_DeviceManufacturers = 1162892111
	Icc4_DeviceManufacturer_DeviceManufacturers__EskoGraphics Icc4_DeviceManufacturer_DeviceManufacturers = 1163086671
	Icc4_DeviceManufacturer_DeviceManufacturers__ElectronicsAndTelecommunicationsResearchInstitute Icc4_DeviceManufacturer_DeviceManufacturers = 1163153993
	Icc4_DeviceManufacturer_DeviceManufacturers__EverexSystemsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1163281746
	Icc4_DeviceManufacturer_DeviceManufacturers__ExactcodeGmbh Icc4_DeviceManufacturer_DeviceManufacturers = 1163411779
	Icc4_DeviceManufacturer_DeviceManufacturers__EizoNanaoCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1164540527
	Icc4_DeviceManufacturer_DeviceManufacturers__FalcoDataProductsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1178684483
	Icc4_DeviceManufacturer_DeviceManufacturers__FujiPhotoFilmColtd Icc4_DeviceManufacturer_DeviceManufacturers = 1179000864
	Icc4_DeviceManufacturer_DeviceManufacturers__FujifilmElectronicImagingLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1179010377
	Icc4_DeviceManufacturer_DeviceManufacturers__FnordSoftware Icc4_DeviceManufacturer_DeviceManufacturers = 1179537988
	Icc4_DeviceManufacturer_DeviceManufacturers__ForaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1179603521
	Icc4_DeviceManufacturer_DeviceManufacturers__ForefrontTechnologyCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1179603525
	Icc4_DeviceManufacturer_DeviceManufacturers__Fujitsu Icc4_DeviceManufacturer_DeviceManufacturers = 1179658794
	Icc4_DeviceManufacturer_DeviceManufacturers__WaytechDevelopmentInc Icc4_DeviceManufacturer_DeviceManufacturers = 1179664672
	Icc4_DeviceManufacturer_DeviceManufacturers__Fujitsu2 Icc4_DeviceManufacturer_DeviceManufacturers = 1179994697
	Icc4_DeviceManufacturer_DeviceManufacturers__FujiXeroxCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1180180512
	Icc4_DeviceManufacturer_DeviceManufacturers__GccTechnologiesInc Icc4_DeviceManufacturer_DeviceManufacturers = 1195590432
	Icc4_DeviceManufacturer_DeviceManufacturers__GlobalGraphicsSoftwareLimited Icc4_DeviceManufacturer_DeviceManufacturers = 1195856716
	Icc4_DeviceManufacturer_DeviceManufacturers__Gretagmacbeth Icc4_DeviceManufacturer_DeviceManufacturers = 1196245536
	Icc4_DeviceManufacturer_DeviceManufacturers__GmgGmbhAndCoKg Icc4_DeviceManufacturer_DeviceManufacturers = 1196246816
	Icc4_DeviceManufacturer_DeviceManufacturers__GoldstarTechnologyInc Icc4_DeviceManufacturer_DeviceManufacturers = 1196379204
	Icc4_DeviceManufacturer_DeviceManufacturers__GiantprintPtyLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1196446292
	Icc4_DeviceManufacturer_DeviceManufacturers__Gretagmacbeth2 Icc4_DeviceManufacturer_DeviceManufacturers = 1196707138
	Icc4_DeviceManufacturer_DeviceManufacturers__WaytechDevelopmentInc2 Icc4_DeviceManufacturer_DeviceManufacturers = 1196835616
	Icc4_DeviceManufacturer_DeviceManufacturers__SonyCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1196896843
	Icc4_DeviceManufacturer_DeviceManufacturers__Hci Icc4_DeviceManufacturer_DeviceManufacturers = 1212369184
	Icc4_DeviceManufacturer_DeviceManufacturers__HeidelbergerDruckmaschinenAg Icc4_DeviceManufacturer_DeviceManufacturers = 1212435744
	Icc4_DeviceManufacturer_DeviceManufacturers__Hermes Icc4_DeviceManufacturer_DeviceManufacturers = 1212502605
	Icc4_DeviceManufacturer_DeviceManufacturers__HitachiAmericaLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1212765249
	Icc4_DeviceManufacturer_DeviceManufacturers__HewlettPackard Icc4_DeviceManufacturer_DeviceManufacturers = 1213210656
	Icc4_DeviceManufacturer_DeviceManufacturers__HitachiLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1213481760
	Icc4_DeviceManufacturer_DeviceManufacturers__HitiDigitalInc Icc4_DeviceManufacturer_DeviceManufacturers = 1214862441
	Icc4_DeviceManufacturer_DeviceManufacturers__IbmCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1229081888
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1229213268
	Icc4_DeviceManufacturer_DeviceManufacturers__HewlettPackard2 Icc4_DeviceManufacturer_DeviceManufacturers = 1229275936
	Icc4_DeviceManufacturer_DeviceManufacturers__IiyamaNorthAmericaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1229543745
	Icc4_DeviceManufacturer_DeviceManufacturers__IkegamiElectronicsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1229669703
	Icc4_DeviceManufacturer_DeviceManufacturers__ImageSystemsCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1229799751
	Icc4_DeviceManufacturer_DeviceManufacturers__IngramMicroInc Icc4_DeviceManufacturer_DeviceManufacturers = 1229801760
	Icc4_DeviceManufacturer_DeviceManufacturers__IntelCorporation2 Icc4_DeviceManufacturer_DeviceManufacturers = 1229870147
	Icc4_DeviceManufacturer_DeviceManufacturers__Intl Icc4_DeviceManufacturer_DeviceManufacturers = 1229870156
	Icc4_DeviceManufacturer_DeviceManufacturers__IntraElectronicsUsaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1229870162
	Icc4_DeviceManufacturer_DeviceManufacturers__IocommInternationalTechnologyCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1229931343
	Icc4_DeviceManufacturer_DeviceManufacturers__InfoprintSolutionsCompany Icc4_DeviceManufacturer_DeviceManufacturers = 1230000928
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd3 Icc4_DeviceManufacturer_DeviceManufacturers = 1230129491
	Icc4_DeviceManufacturer_DeviceManufacturers__IchikawaSoftLaboratory Icc4_DeviceManufacturer_DeviceManufacturers = 1230195744
	Icc4_DeviceManufacturer_DeviceManufacturers__Itnl Icc4_DeviceManufacturer_DeviceManufacturers = 1230261836
	Icc4_DeviceManufacturer_DeviceManufacturers__Ivm Icc4_DeviceManufacturer_DeviceManufacturers = 1230392608
	Icc4_DeviceManufacturer_DeviceManufacturers__IwatsuElectricCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1230455124
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd2 Icc4_DeviceManufacturer_DeviceManufacturers = 1231318644
	Icc4_DeviceManufacturer_DeviceManufacturers__IncaDigitalPrintersLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1231971169
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd4 Icc4_DeviceManufacturer_DeviceManufacturers = 1232234867
	Icc4_DeviceManufacturer_DeviceManufacturers__JetsoftDevelopment Icc4_DeviceManufacturer_DeviceManufacturers = 1246971476
	Icc4_DeviceManufacturer_DeviceManufacturers__JvcInformationProductsCo Icc4_DeviceManufacturer_DeviceManufacturers = 1247167264
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd6 Icc4_DeviceManufacturer_DeviceManufacturers = 1262572116
	Icc4_DeviceManufacturer_DeviceManufacturers__KfcComputekComponentsCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1262895904
	Icc4_DeviceManufacturer_DeviceManufacturers__KlhComputers Icc4_DeviceManufacturer_DeviceManufacturers = 1263290400
	Icc4_DeviceManufacturer_DeviceManufacturers__KonicaMinoltaHoldingsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1263355972
	Icc4_DeviceManufacturer_DeviceManufacturers__KonicaCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1263420225
	Icc4_DeviceManufacturer_DeviceManufacturers__Kodak Icc4_DeviceManufacturer_DeviceManufacturers = 1263486017
	Icc4_DeviceManufacturer_DeviceManufacturers__Kyocera Icc4_DeviceManufacturer_DeviceManufacturers = 1264144195
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd7 Icc4_DeviceManufacturer_DeviceManufacturers = 1264677492
	Icc4_DeviceManufacturer_DeviceManufacturers__LeicaCameraAg Icc4_DeviceManufacturer_DeviceManufacturers = 1279476039
	Icc4_DeviceManufacturer_DeviceManufacturers__LeedsColour Icc4_DeviceManufacturer_DeviceManufacturers = 1279476548
	Icc4_DeviceManufacturer_DeviceManufacturers__LeftDakota Icc4_DeviceManufacturer_DeviceManufacturers = 1279541579
	Icc4_DeviceManufacturer_DeviceManufacturers__LeadingTechnologyInc Icc4_DeviceManufacturer_DeviceManufacturers = 1279607108
	Icc4_DeviceManufacturer_DeviceManufacturers__LexmarkInternationalInc Icc4_DeviceManufacturer_DeviceManufacturers = 1279613005
	Icc4_DeviceManufacturer_DeviceManufacturers__LinkComputerInc Icc4_DeviceManufacturer_DeviceManufacturers = 1279872587
	Icc4_DeviceManufacturer_DeviceManufacturers__Linotronic Icc4_DeviceManufacturer_DeviceManufacturers = 1279872591
	Icc4_DeviceManufacturer_DeviceManufacturers__LiteOnInc Icc4_DeviceManufacturer_DeviceManufacturers = 1279874117
	Icc4_DeviceManufacturer_DeviceManufacturers__MagComputronicUsaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1296123715
	Icc4_DeviceManufacturer_DeviceManufacturers__MagInnovisionInc Icc4_DeviceManufacturer_DeviceManufacturers = 1296123721
	Icc4_DeviceManufacturer_DeviceManufacturers__Mannesmann Icc4_DeviceManufacturer_DeviceManufacturers = 1296125518
	Icc4_DeviceManufacturer_DeviceManufacturers__MicronTechnologyInc Icc4_DeviceManufacturer_DeviceManufacturers = 1296646990
	Icc4_DeviceManufacturer_DeviceManufacturers__Microtek Icc4_DeviceManufacturer_DeviceManufacturers = 1296646994
	Icc4_DeviceManufacturer_DeviceManufacturers__MicrovitecInc Icc4_DeviceManufacturer_DeviceManufacturers = 1296646998
	Icc4_DeviceManufacturer_DeviceManufacturers__Minolta Icc4_DeviceManufacturer_DeviceManufacturers = 1296649807
	Icc4_DeviceManufacturer_DeviceManufacturers__MitsubishiElectronicsAmericaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1296651347
	Icc4_DeviceManufacturer_DeviceManufacturers__MitsubaCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1296651379
	Icc4_DeviceManufacturer_DeviceManufacturers__Minolta2 Icc4_DeviceManufacturer_DeviceManufacturers = 1296976980
	Icc4_DeviceManufacturer_DeviceManufacturers__ModgraphInc Icc4_DeviceManufacturer_DeviceManufacturers = 1297040455
	Icc4_DeviceManufacturer_DeviceManufacturers__MonitronixInc Icc4_DeviceManufacturer_DeviceManufacturers = 1297043017
	Icc4_DeviceManufacturer_DeviceManufacturers__MonacoSystemsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1297043027
	Icc4_DeviceManufacturer_DeviceManufacturers__MorseTechnologyInc Icc4_DeviceManufacturer_DeviceManufacturers = 1297044051
	Icc4_DeviceManufacturer_DeviceManufacturers__MotiveSystems Icc4_DeviceManufacturer_DeviceManufacturers = 1297044553
	Icc4_DeviceManufacturer_DeviceManufacturers__MicrosoftCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1297303124
	Icc4_DeviceManufacturer_DeviceManufacturers__MutohIndustriesLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1297437775
	Icc4_DeviceManufacturer_DeviceManufacturers__MitsubishiElectricCorporationKyotoWorks Icc4_DeviceManufacturer_DeviceManufacturers = 1298756723
	Icc4_DeviceManufacturer_DeviceManufacturers__NanaoUsaCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1312902721
	Icc4_DeviceManufacturer_DeviceManufacturers__NecCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1313162016
	Icc4_DeviceManufacturer_DeviceManufacturers__NexpressSolutionsLlc Icc4_DeviceManufacturer_DeviceManufacturers = 1313167440
	Icc4_DeviceManufacturer_DeviceManufacturers__NisseiSangyoAmericaLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1313428307
	Icc4_DeviceManufacturer_DeviceManufacturers__NikonCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1313558350
	Icc4_DeviceManufacturer_DeviceManufacturers__OceTechnologiesBv Icc4_DeviceManufacturer_DeviceManufacturers = 1329808672
	Icc4_DeviceManufacturer_DeviceManufacturers__Ocecolor Icc4_DeviceManufacturer_DeviceManufacturers = 1329808707
	Icc4_DeviceManufacturer_DeviceManufacturers__Oki Icc4_DeviceManufacturer_DeviceManufacturers = 1330333984
	Icc4_DeviceManufacturer_DeviceManufacturers__Okidata Icc4_DeviceManufacturer_DeviceManufacturers = 1330334020
	Icc4_DeviceManufacturer_DeviceManufacturers__Okidata2 Icc4_DeviceManufacturer_DeviceManufacturers = 1330334032
	Icc4_DeviceManufacturer_DeviceManufacturers__Olivetti Icc4_DeviceManufacturer_DeviceManufacturers = 1330399574
	Icc4_DeviceManufacturer_DeviceManufacturers__OlympusOpticalCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1330403661
	Icc4_DeviceManufacturer_DeviceManufacturers__OnyxGraphics Icc4_DeviceManufacturer_DeviceManufacturers = 1330534744
	Icc4_DeviceManufacturer_DeviceManufacturers__Optiquest Icc4_DeviceManufacturer_DeviceManufacturers = 1330664521
	Icc4_DeviceManufacturer_DeviceManufacturers__PackardBell Icc4_DeviceManufacturer_DeviceManufacturers = 1346454347
	Icc4_DeviceManufacturer_DeviceManufacturers__MatsushitaElectricIndustrialCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1346457153
	Icc4_DeviceManufacturer_DeviceManufacturers__PantoneInc Icc4_DeviceManufacturer_DeviceManufacturers = 1346457172
	Icc4_DeviceManufacturer_DeviceManufacturers__PackardBell2 Icc4_DeviceManufacturer_DeviceManufacturers = 1346522656
	Icc4_DeviceManufacturer_DeviceManufacturers__PfuLimited Icc4_DeviceManufacturer_DeviceManufacturers = 1346786592
	Icc4_DeviceManufacturer_DeviceManufacturers__PhilipsConsumerElectronicsCo Icc4_DeviceManufacturer_DeviceManufacturers = 1346914636
	Icc4_DeviceManufacturer_DeviceManufacturers__HoyaCorporationPentaxImagingSystemsDivision Icc4_DeviceManufacturer_DeviceManufacturers = 1347310680
	Icc4_DeviceManufacturer_DeviceManufacturers__PhaseOneAS Icc4_DeviceManufacturer_DeviceManufacturers = 1347382885
	Icc4_DeviceManufacturer_DeviceManufacturers__PremierComputerInnovations Icc4_DeviceManufacturer_DeviceManufacturers = 1347568973
	Icc4_DeviceManufacturer_DeviceManufacturers__PrincetonGraphicSystems Icc4_DeviceManufacturer_DeviceManufacturers = 1347569998
	Icc4_DeviceManufacturer_DeviceManufacturers__PrincetonPublishingLabs Icc4_DeviceManufacturer_DeviceManufacturers = 1347570000
	Icc4_DeviceManufacturer_DeviceManufacturers__Qlux Icc4_DeviceManufacturer_DeviceManufacturers = 1363957080
	Icc4_DeviceManufacturer_DeviceManufacturers__QmsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1364022048
	Icc4_DeviceManufacturer_DeviceManufacturers__QpcardAb Icc4_DeviceManufacturer_DeviceManufacturers = 1364214596
	Icc4_DeviceManufacturer_DeviceManufacturers__Quadlaser Icc4_DeviceManufacturer_DeviceManufacturers = 1364541764
	Icc4_DeviceManufacturer_DeviceManufacturers__QumeCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1364544837
	Icc4_DeviceManufacturer_DeviceManufacturers__RadiusInc Icc4_DeviceManufacturer_DeviceManufacturers = 1380009033
	Icc4_DeviceManufacturer_DeviceManufacturers__IntegratedColorSolutionsInc2 Icc4_DeviceManufacturer_DeviceManufacturers = 1380205688
	Icc4_DeviceManufacturer_DeviceManufacturers__RolandDgCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1380206368
	Icc4_DeviceManufacturer_DeviceManufacturers__RedmsGroupInc Icc4_DeviceManufacturer_DeviceManufacturers = 1380271181
	Icc4_DeviceManufacturer_DeviceManufacturers__Relisys Icc4_DeviceManufacturer_DeviceManufacturers = 1380273225
	Icc4_DeviceManufacturer_DeviceManufacturers__RolfGierlingMultitools Icc4_DeviceManufacturer_DeviceManufacturers = 1380404563
	Icc4_DeviceManufacturer_DeviceManufacturers__RicohCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1380533071
	Icc4_DeviceManufacturer_DeviceManufacturers__EdmundRonald Icc4_DeviceManufacturer_DeviceManufacturers = 1380863044
	Icc4_DeviceManufacturer_DeviceManufacturers__Royal Icc4_DeviceManufacturer_DeviceManufacturers = 1380931905
	Icc4_DeviceManufacturer_DeviceManufacturers__RicohPrintingSystemsltd Icc4_DeviceManufacturer_DeviceManufacturers = 1380991776
	Icc4_DeviceManufacturer_DeviceManufacturers__RoyalInformationElectronicsCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1381256224
	Icc4_DeviceManufacturer_DeviceManufacturers__SampoCorporationOfAmerica Icc4_DeviceManufacturer_DeviceManufacturers = 1396788560
	Icc4_DeviceManufacturer_DeviceManufacturers__SamsungInc Icc4_DeviceManufacturer_DeviceManufacturers = 1396788563
	Icc4_DeviceManufacturer_DeviceManufacturers__JaimeSantanaPomares Icc4_DeviceManufacturer_DeviceManufacturers = 1396788820
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd9 Icc4_DeviceManufacturer_DeviceManufacturers = 1396918612
	Icc4_DeviceManufacturer_DeviceManufacturers__DainipponScreen3 Icc4_DeviceManufacturer_DeviceManufacturers = 1396920910
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd12 Icc4_DeviceManufacturer_DeviceManufacturers = 1396985888
	Icc4_DeviceManufacturer_DeviceManufacturers__SamsungElectronicsColtd Icc4_DeviceManufacturer_DeviceManufacturers = 1397048096
	Icc4_DeviceManufacturer_DeviceManufacturers__SeikoInstrumentsUsaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1397049675
	Icc4_DeviceManufacturer_DeviceManufacturers__Seikosha Icc4_DeviceManufacturer_DeviceManufacturers = 1397049707
	Icc4_DeviceManufacturer_DeviceManufacturers__Scanguycom Icc4_DeviceManufacturer_DeviceManufacturers = 1397183833
	Icc4_DeviceManufacturer_DeviceManufacturers__SharpLaboratories Icc4_DeviceManufacturer_DeviceManufacturers = 1397244242
	Icc4_DeviceManufacturer_DeviceManufacturers__InternationalColorConsortium Icc4_DeviceManufacturer_DeviceManufacturers = 1397310275
	Icc4_DeviceManufacturer_DeviceManufacturers__SonyCorporation2 Icc4_DeviceManufacturer_DeviceManufacturers = 1397706329
	Icc4_DeviceManufacturer_DeviceManufacturers__Spectracal Icc4_DeviceManufacturer_DeviceManufacturers = 1397769036
	Icc4_DeviceManufacturer_DeviceManufacturers__Star Icc4_DeviceManufacturer_DeviceManufacturers = 1398030674
	Icc4_DeviceManufacturer_DeviceManufacturers__SampoTechnologyCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1398031136
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd10 Icc4_DeviceManufacturer_DeviceManufacturers = 1399023988
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd13 Icc4_DeviceManufacturer_DeviceManufacturers = 1399091232
	Icc4_DeviceManufacturer_DeviceManufacturers__SonyCorporation3 Icc4_DeviceManufacturer_DeviceManufacturers = 1399811705
	Icc4_DeviceManufacturer_DeviceManufacturers__TalonTechnologyCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1413565519
	Icc4_DeviceManufacturer_DeviceManufacturers__Tandy Icc4_DeviceManufacturer_DeviceManufacturers = 1413566020
	Icc4_DeviceManufacturer_DeviceManufacturers__TatungCoOfAmericaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1413567573
	Icc4_DeviceManufacturer_DeviceManufacturers__TaxanAmericaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1413568577
	Icc4_DeviceManufacturer_DeviceManufacturers__TokyoDenshiSekeiKk Icc4_DeviceManufacturer_DeviceManufacturers = 1413763872
	Icc4_DeviceManufacturer_DeviceManufacturers__TecoInformationSystemsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1413825359
	Icc4_DeviceManufacturer_DeviceManufacturers__Tegra Icc4_DeviceManufacturer_DeviceManufacturers = 1413826386
	Icc4_DeviceManufacturer_DeviceManufacturers__TektronixInc Icc4_DeviceManufacturer_DeviceManufacturers = 1413827412
	Icc4_DeviceManufacturer_DeviceManufacturers__TexasInstruments Icc4_DeviceManufacturer_DeviceManufacturers = 1414078496
	Icc4_DeviceManufacturer_DeviceManufacturers__TypemakerLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1414351698
	Icc4_DeviceManufacturer_DeviceManufacturers__ToshibaCorp Icc4_DeviceManufacturer_DeviceManufacturers = 1414484802
	Icc4_DeviceManufacturer_DeviceManufacturers__ToshibaInc Icc4_DeviceManufacturer_DeviceManufacturers = 1414484808
	Icc4_DeviceManufacturer_DeviceManufacturers__TotokuElectricCoLtd Icc4_DeviceManufacturer_DeviceManufacturers = 1414485067
	Icc4_DeviceManufacturer_DeviceManufacturers__Triumph Icc4_DeviceManufacturer_DeviceManufacturers = 1414678869
	Icc4_DeviceManufacturer_DeviceManufacturers__ToshibaTecCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1414742612
	Icc4_DeviceManufacturer_DeviceManufacturers__TtxComputerProductsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1414813728
	Icc4_DeviceManufacturer_DeviceManufacturers__TvmProfessionalMonitorCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1414941984
	Icc4_DeviceManufacturer_DeviceManufacturers__TwCasperCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1414996000
	Icc4_DeviceManufacturer_DeviceManufacturers__UleadSystems Icc4_DeviceManufacturer_DeviceManufacturers = 1431065432
	Icc4_DeviceManufacturer_DeviceManufacturers__Unisys Icc4_DeviceManufacturer_DeviceManufacturers = 1431193939
	Icc4_DeviceManufacturer_DeviceManufacturers__UtzFehlauAndSohn Icc4_DeviceManufacturer_DeviceManufacturers = 1431591494
	Icc4_DeviceManufacturer_DeviceManufacturers__Varityper Icc4_DeviceManufacturer_DeviceManufacturers = 1447121481
	Icc4_DeviceManufacturer_DeviceManufacturers__Viewsonic Icc4_DeviceManufacturer_DeviceManufacturers = 1447642455
	Icc4_DeviceManufacturer_DeviceManufacturers__VisualCommunication Icc4_DeviceManufacturer_DeviceManufacturers = 1447646028
	Icc4_DeviceManufacturer_DeviceManufacturers__Wang Icc4_DeviceManufacturer_DeviceManufacturers = 1463897671
	Icc4_DeviceManufacturer_DeviceManufacturers__WilburImaging Icc4_DeviceManufacturer_DeviceManufacturers = 1464615506
	Icc4_DeviceManufacturer_DeviceManufacturers__WareToGo Icc4_DeviceManufacturer_DeviceManufacturers = 1465141042
	Icc4_DeviceManufacturer_DeviceManufacturers__WyseTechnology Icc4_DeviceManufacturer_DeviceManufacturers = 1465471813
	Icc4_DeviceManufacturer_DeviceManufacturers__XeroxCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1480938072
	Icc4_DeviceManufacturer_DeviceManufacturers__XRite Icc4_DeviceManufacturer_DeviceManufacturers = 1481787732
	Icc4_DeviceManufacturer_DeviceManufacturers__LavanyasTestCompany Icc4_DeviceManufacturer_DeviceManufacturers = 1513173555
	Icc4_DeviceManufacturer_DeviceManufacturers__ZoranCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1515340110
	Icc4_DeviceManufacturer_DeviceManufacturers__ZebraTechnologiesInc Icc4_DeviceManufacturer_DeviceManufacturers = 1516593778
	Icc4_DeviceManufacturer_DeviceManufacturers__BasiccolorGmbh Icc4_DeviceManufacturer_DeviceManufacturers = 1648968515
	Icc4_DeviceManufacturer_DeviceManufacturers__BergdesignIncorporated Icc4_DeviceManufacturer_DeviceManufacturers = 1650815591
	Icc4_DeviceManufacturer_DeviceManufacturers__IntegratedColorSolutionsInc Icc4_DeviceManufacturer_DeviceManufacturers = 1667594596
	Icc4_DeviceManufacturer_DeviceManufacturers__MacdermidColorspanInc Icc4_DeviceManufacturer_DeviceManufacturers = 1668051824
	Icc4_DeviceManufacturer_DeviceManufacturers__DainipponScreen2 Icc4_DeviceManufacturer_DeviceManufacturers = 1685266464
	Icc4_DeviceManufacturer_DeviceManufacturers__Dupont2 Icc4_DeviceManufacturer_DeviceManufacturers = 1685418094
	Icc4_DeviceManufacturer_DeviceManufacturers__FujifilmElectronicImagingLtd2 Icc4_DeviceManufacturer_DeviceManufacturers = 1717986665
	Icc4_DeviceManufacturer_DeviceManufacturers__FluxdataCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1718383992
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd5 Icc4_DeviceManufacturer_DeviceManufacturers = 1769105779
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd8 Icc4_DeviceManufacturer_DeviceManufacturers = 1801548404
	Icc4_DeviceManufacturer_DeviceManufacturers__ErdtSystemsGmbhAndCoKg2 Icc4_DeviceManufacturer_DeviceManufacturers = 1868706916
	Icc4_DeviceManufacturer_DeviceManufacturers__MedigraphGmbh Icc4_DeviceManufacturer_DeviceManufacturers = 1868720483
	Icc4_DeviceManufacturer_DeviceManufacturers__QubyxSarl Icc4_DeviceManufacturer_DeviceManufacturers = 1903518329
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd11 Icc4_DeviceManufacturer_DeviceManufacturers = 1935894900
	Icc4_DeviceManufacturer_DeviceManufacturers__DainipponScreen4 Icc4_DeviceManufacturer_DeviceManufacturers = 1935897198
	Icc4_DeviceManufacturer_DeviceManufacturers__ScitexCorporationLtd14 Icc4_DeviceManufacturer_DeviceManufacturers = 1935962144
	Icc4_DeviceManufacturer_DeviceManufacturers__SiwiGrafikaCorporation Icc4_DeviceManufacturer_DeviceManufacturers = 1936291689
	Icc4_DeviceManufacturer_DeviceManufacturers__YxymasterGmbh Icc4_DeviceManufacturer_DeviceManufacturers = 2037938541
)
var values_Icc4_DeviceManufacturer_DeviceManufacturers = map[Icc4_DeviceManufacturer_DeviceManufacturers]struct{}{878981744: {}, 1094798657: {}, 1094927698: {}, 1094929492: {}, 1094931529: {}, 1094992210: {}, 1094992453: {}, 1094994208: {}, 1095190081: {}, 1095519556: {}, 1095520339: {}, 1095522126: {}, 1095586889: {}, 1095713568: {}, 1095778631: {}, 1095782476: {}, 1095980064: {}, 1096033876: {}, 1111573836: {}, 1112687439: {}, 1112689488: {}, 1112690516: {}, 1112886348: {}, 1112888096: {}, 1127041364: {}, 1128353106: {}, 1128353359: {}, 1128354386: {}, 1128354633: {}, 1128420691: {}, 1128614944: {}, 1128615032: {}, 1128747808: {}, 1128811808: {}, 1128875852: {}, 1128879177: {}, 1129066544: {}, 1129072977: {}, 1129136975: {}, 1129146712: {}, 1129270351: {}, 1129270608: {}, 1129270640: {}, 1129270866: {}, 1129271876: {}, 1129337120: {}, 1129337423: {}, 1129467424: {}, 1129601056: {}, 1129728339: {}, 1129792288: {}, 1145131593: {}, 1145132097: {}, 1145262112: {}, 1145262659: {}, 1145392204: {}, 1145652000: {}, 1145652047: {}, 1145653065: {}, 1145841219: {}, 1146113095: {}, 1146298400: {}, 1146310476: {}, 1146441806: {}, 1162892111: {}, 1163086671: {}, 1163153993: {}, 1163281746: {}, 1163411779: {}, 1164540527: {}, 1178684483: {}, 1179000864: {}, 1179010377: {}, 1179537988: {}, 1179603521: {}, 1179603525: {}, 1179658794: {}, 1179664672: {}, 1179994697: {}, 1180180512: {}, 1195590432: {}, 1195856716: {}, 1196245536: {}, 1196246816: {}, 1196379204: {}, 1196446292: {}, 1196707138: {}, 1196835616: {}, 1196896843: {}, 1212369184: {}, 1212435744: {}, 1212502605: {}, 1212765249: {}, 1213210656: {}, 1213481760: {}, 1214862441: {}, 1229081888: {}, 1229213268: {}, 1229275936: {}, 1229543745: {}, 1229669703: {}, 1229799751: {}, 1229801760: {}, 1229870147: {}, 1229870156: {}, 1229870162: {}, 1229931343: {}, 1230000928: {}, 1230129491: {}, 1230195744: {}, 1230261836: {}, 1230392608: {}, 1230455124: {}, 1231318644: {}, 1231971169: {}, 1232234867: {}, 1246971476: {}, 1247167264: {}, 1262572116: {}, 1262895904: {}, 1263290400: {}, 1263355972: {}, 1263420225: {}, 1263486017: {}, 1264144195: {}, 1264677492: {}, 1279476039: {}, 1279476548: {}, 1279541579: {}, 1279607108: {}, 1279613005: {}, 1279872587: {}, 1279872591: {}, 1279874117: {}, 1296123715: {}, 1296123721: {}, 1296125518: {}, 1296646990: {}, 1296646994: {}, 1296646998: {}, 1296649807: {}, 1296651347: {}, 1296651379: {}, 1296976980: {}, 1297040455: {}, 1297043017: {}, 1297043027: {}, 1297044051: {}, 1297044553: {}, 1297303124: {}, 1297437775: {}, 1298756723: {}, 1312902721: {}, 1313162016: {}, 1313167440: {}, 1313428307: {}, 1313558350: {}, 1329808672: {}, 1329808707: {}, 1330333984: {}, 1330334020: {}, 1330334032: {}, 1330399574: {}, 1330403661: {}, 1330534744: {}, 1330664521: {}, 1346454347: {}, 1346457153: {}, 1346457172: {}, 1346522656: {}, 1346786592: {}, 1346914636: {}, 1347310680: {}, 1347382885: {}, 1347568973: {}, 1347569998: {}, 1347570000: {}, 1363957080: {}, 1364022048: {}, 1364214596: {}, 1364541764: {}, 1364544837: {}, 1380009033: {}, 1380205688: {}, 1380206368: {}, 1380271181: {}, 1380273225: {}, 1380404563: {}, 1380533071: {}, 1380863044: {}, 1380931905: {}, 1380991776: {}, 1381256224: {}, 1396788560: {}, 1396788563: {}, 1396788820: {}, 1396918612: {}, 1396920910: {}, 1396985888: {}, 1397048096: {}, 1397049675: {}, 1397049707: {}, 1397183833: {}, 1397244242: {}, 1397310275: {}, 1397706329: {}, 1397769036: {}, 1398030674: {}, 1398031136: {}, 1399023988: {}, 1399091232: {}, 1399811705: {}, 1413565519: {}, 1413566020: {}, 1413567573: {}, 1413568577: {}, 1413763872: {}, 1413825359: {}, 1413826386: {}, 1413827412: {}, 1414078496: {}, 1414351698: {}, 1414484802: {}, 1414484808: {}, 1414485067: {}, 1414678869: {}, 1414742612: {}, 1414813728: {}, 1414941984: {}, 1414996000: {}, 1431065432: {}, 1431193939: {}, 1431591494: {}, 1447121481: {}, 1447642455: {}, 1447646028: {}, 1463897671: {}, 1464615506: {}, 1465141042: {}, 1465471813: {}, 1480938072: {}, 1481787732: {}, 1513173555: {}, 1515340110: {}, 1516593778: {}, 1648968515: {}, 1650815591: {}, 1667594596: {}, 1668051824: {}, 1685266464: {}, 1685418094: {}, 1717986665: {}, 1718383992: {}, 1769105779: {}, 1801548404: {}, 1868706916: {}, 1868720483: {}, 1903518329: {}, 1935894900: {}, 1935897198: {}, 1935962144: {}, 1936291689: {}, 2037938541: {}}
func (v Icc4_DeviceManufacturer_DeviceManufacturers) isDefined() bool {
	_, ok := values_Icc4_DeviceManufacturer_DeviceManufacturers[v]
	return ok
}
type Icc4_DeviceManufacturer struct {
	DeviceManufacturer Icc4_DeviceManufacturer_DeviceManufacturers
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_DeviceManufacturer() *Icc4_DeviceManufacturer {
	return &Icc4_DeviceManufacturer{
	}
}

func (this Icc4_DeviceManufacturer) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_DeviceManufacturer) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp15, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.DeviceManufacturer = Icc4_DeviceManufacturer_DeviceManufacturers(tmp15)
	return err
}
type Icc4_PositionNumber struct {
	OffsetToDataElement uint32
	SizeOfDataElement uint32
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_PositionNumber() *Icc4_PositionNumber {
	return &Icc4_PositionNumber{
	}
}

func (this Icc4_PositionNumber) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_PositionNumber) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp16, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToDataElement = uint32(tmp16)
	tmp17, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.SizeOfDataElement = uint32(tmp17)
	return err
}

type Icc4_ProfileHeader_CmmSignatures int
const (
	Icc4_ProfileHeader_CmmSignatures__TheImagingFactoryCmm Icc4_ProfileHeader_CmmSignatures = 858931796
	Icc4_ProfileHeader_CmmSignatures__AgfaCmm Icc4_ProfileHeader_CmmSignatures = 1094929747
	Icc4_ProfileHeader_CmmSignatures__AdobeCmm Icc4_ProfileHeader_CmmSignatures = 1094992453
	Icc4_ProfileHeader_CmmSignatures__ColorGearCmm Icc4_ProfileHeader_CmmSignatures = 1128484179
	Icc4_ProfileHeader_CmmSignatures__DemoiccmaxCmm Icc4_ProfileHeader_CmmSignatures = 1145654616
	Icc4_ProfileHeader_CmmSignatures__LogosyncCmm Icc4_ProfileHeader_CmmSignatures = 1147629395
	Icc4_ProfileHeader_CmmSignatures__EfiCmm Icc4_ProfileHeader_CmmSignatures = 1162234144
	Icc4_ProfileHeader_CmmSignatures__ExactScanCmm Icc4_ProfileHeader_CmmSignatures = 1163411779
	Icc4_ProfileHeader_CmmSignatures__FujiFilmCmm Icc4_ProfileHeader_CmmSignatures = 1179000864
	Icc4_ProfileHeader_CmmSignatures__HarlequinRipCmm Icc4_ProfileHeader_CmmSignatures = 1212370253
	Icc4_ProfileHeader_CmmSignatures__HeidelbergCmm Icc4_ProfileHeader_CmmSignatures = 1212435744
	Icc4_ProfileHeader_CmmSignatures__KodakCmm Icc4_ProfileHeader_CmmSignatures = 1262701907
	Icc4_ProfileHeader_CmmSignatures__KonicaMinoltaCmm Icc4_ProfileHeader_CmmSignatures = 1296256324
	Icc4_ProfileHeader_CmmSignatures__OnyxGraphicsCmm Icc4_ProfileHeader_CmmSignatures = 1330534744
	Icc4_ProfileHeader_CmmSignatures__DeviceLinkCmm Icc4_ProfileHeader_CmmSignatures = 1380404563
	Icc4_ProfileHeader_CmmSignatures__ReficcmaxCmm Icc4_ProfileHeader_CmmSignatures = 1380535640
	Icc4_ProfileHeader_CmmSignatures__SampleIccCmm Icc4_ProfileHeader_CmmSignatures = 1397310275
	Icc4_ProfileHeader_CmmSignatures__MutohCmm Icc4_ProfileHeader_CmmSignatures = 1397311310
	Icc4_ProfileHeader_CmmSignatures__ToshibaCmm Icc4_ProfileHeader_CmmSignatures = 1413696845
	Icc4_ProfileHeader_CmmSignatures__ColorGearCmmLite Icc4_ProfileHeader_CmmSignatures = 1430471501
	Icc4_ProfileHeader_CmmSignatures__ColorGearCmmC Icc4_ProfileHeader_CmmSignatures = 1430474067
	Icc4_ProfileHeader_CmmSignatures__WindowsColorSystemCmm Icc4_ProfileHeader_CmmSignatures = 1464029984
	Icc4_ProfileHeader_CmmSignatures__WareToGoCmm Icc4_ProfileHeader_CmmSignatures = 1465141024
	Icc4_ProfileHeader_CmmSignatures__AppleCmm Icc4_ProfileHeader_CmmSignatures = 1634758764
	Icc4_ProfileHeader_CmmSignatures__ArgyllCmsCmm Icc4_ProfileHeader_CmmSignatures = 1634887532
	Icc4_ProfileHeader_CmmSignatures__LittleCmsCmm Icc4_ProfileHeader_CmmSignatures = 1818455411
	Icc4_ProfileHeader_CmmSignatures__VivoCmm Icc4_ProfileHeader_CmmSignatures = 1986623087
	Icc4_ProfileHeader_CmmSignatures__ZoranCmm Icc4_ProfileHeader_CmmSignatures = 2053320752
)
var values_Icc4_ProfileHeader_CmmSignatures = map[Icc4_ProfileHeader_CmmSignatures]struct{}{858931796: {}, 1094929747: {}, 1094992453: {}, 1128484179: {}, 1145654616: {}, 1147629395: {}, 1162234144: {}, 1163411779: {}, 1179000864: {}, 1212370253: {}, 1212435744: {}, 1262701907: {}, 1296256324: {}, 1330534744: {}, 1380404563: {}, 1380535640: {}, 1397310275: {}, 1397311310: {}, 1413696845: {}, 1430471501: {}, 1430474067: {}, 1464029984: {}, 1465141024: {}, 1634758764: {}, 1634887532: {}, 1818455411: {}, 1986623087: {}, 2053320752: {}}
func (v Icc4_ProfileHeader_CmmSignatures) isDefined() bool {
	_, ok := values_Icc4_ProfileHeader_CmmSignatures[v]
	return ok
}

type Icc4_ProfileHeader_DataColourSpaces int
const (
	Icc4_ProfileHeader_DataColourSpaces__TwoColour Icc4_ProfileHeader_DataColourSpaces = 843271250
	Icc4_ProfileHeader_DataColourSpaces__ThreeColour Icc4_ProfileHeader_DataColourSpaces = 860048466
	Icc4_ProfileHeader_DataColourSpaces__FourColour Icc4_ProfileHeader_DataColourSpaces = 876825682
	Icc4_ProfileHeader_DataColourSpaces__FiveColour Icc4_ProfileHeader_DataColourSpaces = 893602898
	Icc4_ProfileHeader_DataColourSpaces__SixColour Icc4_ProfileHeader_DataColourSpaces = 910380114
	Icc4_ProfileHeader_DataColourSpaces__SevenColour Icc4_ProfileHeader_DataColourSpaces = 927157330
	Icc4_ProfileHeader_DataColourSpaces__EightColour Icc4_ProfileHeader_DataColourSpaces = 943934546
	Icc4_ProfileHeader_DataColourSpaces__NineColour Icc4_ProfileHeader_DataColourSpaces = 960711762
	Icc4_ProfileHeader_DataColourSpaces__TenColour Icc4_ProfileHeader_DataColourSpaces = 1094929490
	Icc4_ProfileHeader_DataColourSpaces__ElevenColour Icc4_ProfileHeader_DataColourSpaces = 1111706706
	Icc4_ProfileHeader_DataColourSpaces__TwelveColour Icc4_ProfileHeader_DataColourSpaces = 1128483922
	Icc4_ProfileHeader_DataColourSpaces__Cmy Icc4_ProfileHeader_DataColourSpaces = 1129142560
	Icc4_ProfileHeader_DataColourSpaces__Cmyk Icc4_ProfileHeader_DataColourSpaces = 1129142603
	Icc4_ProfileHeader_DataColourSpaces__ThirteenColour Icc4_ProfileHeader_DataColourSpaces = 1145261138
	Icc4_ProfileHeader_DataColourSpaces__FourteenColour Icc4_ProfileHeader_DataColourSpaces = 1162038354
	Icc4_ProfileHeader_DataColourSpaces__FifteenColour Icc4_ProfileHeader_DataColourSpaces = 1178815570
	Icc4_ProfileHeader_DataColourSpaces__Gray Icc4_ProfileHeader_DataColourSpaces = 1196573017
	Icc4_ProfileHeader_DataColourSpaces__Hls Icc4_ProfileHeader_DataColourSpaces = 1212961568
	Icc4_ProfileHeader_DataColourSpaces__Hsv Icc4_ProfileHeader_DataColourSpaces = 1213421088
	Icc4_ProfileHeader_DataColourSpaces__CielabOrPcslab Icc4_ProfileHeader_DataColourSpaces = 1281450528
	Icc4_ProfileHeader_DataColourSpaces__Cieluv Icc4_ProfileHeader_DataColourSpaces = 1282766368
	Icc4_ProfileHeader_DataColourSpaces__Rgb Icc4_ProfileHeader_DataColourSpaces = 1380401696
	Icc4_ProfileHeader_DataColourSpaces__NciexyzOrPcsxyz Icc4_ProfileHeader_DataColourSpaces = 1482250784
	Icc4_ProfileHeader_DataColourSpaces__Ycbcr Icc4_ProfileHeader_DataColourSpaces = 1497588338
	Icc4_ProfileHeader_DataColourSpaces__Cieyxy Icc4_ProfileHeader_DataColourSpaces = 1501067552
)
var values_Icc4_ProfileHeader_DataColourSpaces = map[Icc4_ProfileHeader_DataColourSpaces]struct{}{843271250: {}, 860048466: {}, 876825682: {}, 893602898: {}, 910380114: {}, 927157330: {}, 943934546: {}, 960711762: {}, 1094929490: {}, 1111706706: {}, 1128483922: {}, 1129142560: {}, 1129142603: {}, 1145261138: {}, 1162038354: {}, 1178815570: {}, 1196573017: {}, 1212961568: {}, 1213421088: {}, 1281450528: {}, 1282766368: {}, 1380401696: {}, 1482250784: {}, 1497588338: {}, 1501067552: {}}
func (v Icc4_ProfileHeader_DataColourSpaces) isDefined() bool {
	_, ok := values_Icc4_ProfileHeader_DataColourSpaces[v]
	return ok
}

type Icc4_ProfileHeader_PrimaryPlatforms int
const (
	Icc4_ProfileHeader_PrimaryPlatforms__AppleComputerInc Icc4_ProfileHeader_PrimaryPlatforms = 1095782476
	Icc4_ProfileHeader_PrimaryPlatforms__MicrosoftCorporation Icc4_ProfileHeader_PrimaryPlatforms = 1297303124
	Icc4_ProfileHeader_PrimaryPlatforms__SiliconGraphicsInc Icc4_ProfileHeader_PrimaryPlatforms = 1397180704
	Icc4_ProfileHeader_PrimaryPlatforms__SunMicrosystems Icc4_ProfileHeader_PrimaryPlatforms = 1398099543
)
var values_Icc4_ProfileHeader_PrimaryPlatforms = map[Icc4_ProfileHeader_PrimaryPlatforms]struct{}{1095782476: {}, 1297303124: {}, 1397180704: {}, 1398099543: {}}
func (v Icc4_ProfileHeader_PrimaryPlatforms) isDefined() bool {
	_, ok := values_Icc4_ProfileHeader_PrimaryPlatforms[v]
	return ok
}

type Icc4_ProfileHeader_ProfileClasses int
const (
	Icc4_ProfileHeader_ProfileClasses__AbstractProfile Icc4_ProfileHeader_ProfileClasses = 1633842036
	Icc4_ProfileHeader_ProfileClasses__DeviceLinkProfile Icc4_ProfileHeader_ProfileClasses = 1818848875
	Icc4_ProfileHeader_ProfileClasses__DisplayDeviceProfile Icc4_ProfileHeader_ProfileClasses = 1835955314
	Icc4_ProfileHeader_ProfileClasses__NamedColorProfile Icc4_ProfileHeader_ProfileClasses = 1852662636
	Icc4_ProfileHeader_ProfileClasses__OutputDeviceProfile Icc4_ProfileHeader_ProfileClasses = 1886549106
	Icc4_ProfileHeader_ProfileClasses__InputDeviceProfile Icc4_ProfileHeader_ProfileClasses = 1935896178
	Icc4_ProfileHeader_ProfileClasses__ColorSpaceProfile Icc4_ProfileHeader_ProfileClasses = 1936744803
)
var values_Icc4_ProfileHeader_ProfileClasses = map[Icc4_ProfileHeader_ProfileClasses]struct{}{1633842036: {}, 1818848875: {}, 1835955314: {}, 1852662636: {}, 1886549106: {}, 1935896178: {}, 1936744803: {}}
func (v Icc4_ProfileHeader_ProfileClasses) isDefined() bool {
	_, ok := values_Icc4_ProfileHeader_ProfileClasses[v]
	return ok
}

type Icc4_ProfileHeader_RenderingIntents int
const (
	Icc4_ProfileHeader_RenderingIntents__Perceptual Icc4_ProfileHeader_RenderingIntents = 0
	Icc4_ProfileHeader_RenderingIntents__MediaRelativeColorimetric Icc4_ProfileHeader_RenderingIntents = 1
	Icc4_ProfileHeader_RenderingIntents__Saturation Icc4_ProfileHeader_RenderingIntents = 2
	Icc4_ProfileHeader_RenderingIntents__IccAbsoluteColorimetric Icc4_ProfileHeader_RenderingIntents = 3
)
var values_Icc4_ProfileHeader_RenderingIntents = map[Icc4_ProfileHeader_RenderingIntents]struct{}{0: {}, 1: {}, 2: {}, 3: {}}
func (v Icc4_ProfileHeader_RenderingIntents) isDefined() bool {
	_, ok := values_Icc4_ProfileHeader_RenderingIntents[v]
	return ok
}
type Icc4_ProfileHeader struct {
	Size uint32
	PreferredCmmType Icc4_ProfileHeader_CmmSignatures
	Version *Icc4_ProfileHeader_VersionField
	DeviceClass Icc4_ProfileHeader_ProfileClasses
	ColorSpace Icc4_ProfileHeader_DataColourSpaces
	Pcs string
	CreationDateTime *Icc4_DateTimeNumber
	FileSignature []byte
	PrimaryPlatform Icc4_ProfileHeader_PrimaryPlatforms
	ProfileFlags *Icc4_ProfileHeader_ProfileFlags
	DeviceManufacturer *Icc4_DeviceManufacturer
	DeviceModel string
	DeviceAttributes *Icc4_DeviceAttributes
	RenderingIntent Icc4_ProfileHeader_RenderingIntents
	NciexyzValuesOfIlluminantOfPcs *Icc4_XyzNumber
	Creator *Icc4_DeviceManufacturer
	Identifier []byte
	ReservedData []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4
}
func NewIcc4_ProfileHeader() *Icc4_ProfileHeader {
	return &Icc4_ProfileHeader{
	}
}

func (this Icc4_ProfileHeader) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_ProfileHeader) Read(io *kaitai.Stream, parent *Icc4, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp18, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.Size = uint32(tmp18)
	tmp19, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.PreferredCmmType = Icc4_ProfileHeader_CmmSignatures(tmp19)
	tmp20 := NewIcc4_ProfileHeader_VersionField()
	err = tmp20.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Version = tmp20
	tmp21, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.DeviceClass = Icc4_ProfileHeader_ProfileClasses(tmp21)
	tmp22, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.ColorSpace = Icc4_ProfileHeader_DataColourSpaces(tmp22)
	tmp23, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp23 = tmp23
	this.Pcs = string(tmp23)
	tmp24 := NewIcc4_DateTimeNumber()
	err = tmp24.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.CreationDateTime = tmp24
	tmp25, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp25 = tmp25
	this.FileSignature = tmp25
	if !(bytes.Equal(this.FileSignature, []uint8{97, 99, 115, 112})) {
		return kaitai.NewValidationNotEqualError([]uint8{97, 99, 115, 112}, this.FileSignature, this._io, "/types/profile_header/seq/7")
	}
	tmp26, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.PrimaryPlatform = Icc4_ProfileHeader_PrimaryPlatforms(tmp26)
	tmp27 := NewIcc4_ProfileHeader_ProfileFlags()
	err = tmp27.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.ProfileFlags = tmp27
	tmp28 := NewIcc4_DeviceManufacturer()
	err = tmp28.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DeviceManufacturer = tmp28
	tmp29, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp29 = tmp29
	this.DeviceModel = string(tmp29)
	tmp30 := NewIcc4_DeviceAttributes()
	err = tmp30.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DeviceAttributes = tmp30
	tmp31, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.RenderingIntent = Icc4_ProfileHeader_RenderingIntents(tmp31)
	tmp32 := NewIcc4_XyzNumber()
	err = tmp32.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.NciexyzValuesOfIlluminantOfPcs = tmp32
	tmp33 := NewIcc4_DeviceManufacturer()
	err = tmp33.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.Creator = tmp33
	tmp34, err := this._io.ReadBytes(int(16))
	if err != nil {
		return err
	}
	tmp34 = tmp34
	this.Identifier = tmp34
	tmp35, err := this._io.ReadBytes(int(28))
	if err != nil {
		return err
	}
	tmp35 = tmp35
	this.ReservedData = tmp35
	return err
}
type Icc4_ProfileHeader_ProfileFlags struct {
	EmbeddedProfile bool
	ProfileCanBeUsedIndependentlyOfEmbeddedColourData bool
	OtherFlags uint64
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_ProfileHeader
}
func NewIcc4_ProfileHeader_ProfileFlags() *Icc4_ProfileHeader_ProfileFlags {
	return &Icc4_ProfileHeader_ProfileFlags{
	}
}

func (this Icc4_ProfileHeader_ProfileFlags) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_ProfileHeader_ProfileFlags) Read(io *kaitai.Stream, parent *Icc4_ProfileHeader, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp36, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.EmbeddedProfile = tmp36 != 0
	tmp37, err := this._io.ReadBitsIntBe(1)
	if err != nil {
		return err
	}
	this.ProfileCanBeUsedIndependentlyOfEmbeddedColourData = tmp37 != 0
	tmp38, err := this._io.ReadBitsIntBe(30)
	if err != nil {
		return err
	}
	this.OtherFlags = tmp38
	return err
}
type Icc4_ProfileHeader_VersionField struct {
	Major []byte
	Minor uint64
	BugFixLevel uint64
	Reserved []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_ProfileHeader
}
func NewIcc4_ProfileHeader_VersionField() *Icc4_ProfileHeader_VersionField {
	return &Icc4_ProfileHeader_VersionField{
	}
}

func (this Icc4_ProfileHeader_VersionField) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_ProfileHeader_VersionField) Read(io *kaitai.Stream, parent *Icc4_ProfileHeader, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp39, err := this._io.ReadBytes(int(1))
	if err != nil {
		return err
	}
	tmp39 = tmp39
	this.Major = tmp39
	if !(bytes.Equal(this.Major, []uint8{4})) {
		return kaitai.NewValidationNotEqualError([]uint8{4}, this.Major, this._io, "/types/profile_header/types/version_field/seq/0")
	}
	tmp40, err := this._io.ReadBitsIntBe(4)
	if err != nil {
		return err
	}
	this.Minor = tmp40
	tmp41, err := this._io.ReadBitsIntBe(4)
	if err != nil {
		return err
	}
	this.BugFixLevel = tmp41
	this._io.AlignToByte()
	tmp42, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp42 = tmp42
	this.Reserved = tmp42
	if !(bytes.Equal(this.Reserved, []uint8{0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0}, this.Reserved, this._io, "/types/profile_header/types/version_field/seq/3")
	}
	return err
}
type Icc4_Response16Number struct {
	Number uint32
	Reserved []byte
	MeasurementValue *Icc4_S15Fixed16Number
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_Response16Number() *Icc4_Response16Number {
	return &Icc4_Response16Number{
	}
}

func (this Icc4_Response16Number) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_Response16Number) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp43, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.Number = uint32(tmp43)
	tmp44, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp44 = tmp44
	this.Reserved = tmp44
	if !(bytes.Equal(this.Reserved, []uint8{0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0}, this.Reserved, this._io, "/types/response_16_number/seq/1")
	}
	tmp45 := NewIcc4_S15Fixed16Number()
	err = tmp45.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.MeasurementValue = tmp45
	return err
}
type Icc4_S15Fixed16Number struct {
	Number []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_S15Fixed16Number() *Icc4_S15Fixed16Number {
	return &Icc4_S15Fixed16Number{
	}
}

func (this Icc4_S15Fixed16Number) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_S15Fixed16Number) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp46, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp46 = tmp46
	this.Number = tmp46
	return err
}

type Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings int
const (
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__Unknown Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 0
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__D50 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 1
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__D65 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 2
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__D93 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 3
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__F2 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 4
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__D55 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 5
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__A Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 6
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__EquiPower Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 7
	Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings__F8 Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = 8
)
var values_Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings = map[Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings]struct{}{0: {}, 1: {}, 2: {}, 3: {}, 4: {}, 5: {}, 6: {}, 7: {}, 8: {}}
func (v Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings) isDefined() bool {
	_, ok := values_Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings[v]
	return ok
}
type Icc4_StandardIlluminantEncoding struct {
	StandardIlluminantEncoding Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_StandardIlluminantEncoding() *Icc4_StandardIlluminantEncoding {
	return &Icc4_StandardIlluminantEncoding{
	}
}

func (this Icc4_StandardIlluminantEncoding) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_StandardIlluminantEncoding) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp47, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.StandardIlluminantEncoding = Icc4_StandardIlluminantEncoding_StandardIlluminantEncodings(tmp47)
	return err
}
type Icc4_TagTable struct {
	TagCount uint32
	Tags []*Icc4_TagTable_TagDefinition
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4
}
func NewIcc4_TagTable() *Icc4_TagTable {
	return &Icc4_TagTable{
	}
}

func (this Icc4_TagTable) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable) Read(io *kaitai.Stream, parent *Icc4, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp48, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagCount = uint32(tmp48)
	for i := 0; i < int(this.TagCount); i++ {
		_ = i
		tmp49 := NewIcc4_TagTable_TagDefinition()
		err = tmp49.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Tags = append(this.Tags, tmp49)
	}
	return err
}

type Icc4_TagTable_TagDefinition_MultiProcessElementsTypes int
const (
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__BacsElementType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1648444243
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__ClutElementType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1668052340
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__OneDimensionalCurvesType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1668641382
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__EacsElementType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1698775891
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__MatrixElementType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1835103334
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__CurveSetElementTableType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1835428980
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__FormulaCurveSegmentsType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1885434470
	Icc4_TagTable_TagDefinition_MultiProcessElementsTypes__SampledCurveSegmentType Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = 1935764838
)
var values_Icc4_TagTable_TagDefinition_MultiProcessElementsTypes = map[Icc4_TagTable_TagDefinition_MultiProcessElementsTypes]struct{}{1648444243: {}, 1668052340: {}, 1668641382: {}, 1698775891: {}, 1835103334: {}, 1835428980: {}, 1885434470: {}, 1935764838: {}}
func (v Icc4_TagTable_TagDefinition_MultiProcessElementsTypes) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_MultiProcessElementsTypes[v]
	return ok
}

type Icc4_TagTable_TagDefinition_TagSignatures int
const (
	Icc4_TagTable_TagDefinition_TagSignatures__AToB0 Icc4_TagTable_TagDefinition_TagSignatures = 1093812784
	Icc4_TagTable_TagDefinition_TagSignatures__AToB1 Icc4_TagTable_TagDefinition_TagSignatures = 1093812785
	Icc4_TagTable_TagDefinition_TagSignatures__AToB2 Icc4_TagTable_TagDefinition_TagSignatures = 1093812786
	Icc4_TagTable_TagDefinition_TagSignatures__BToA0 Icc4_TagTable_TagDefinition_TagSignatures = 1110589744
	Icc4_TagTable_TagDefinition_TagSignatures__BToA1 Icc4_TagTable_TagDefinition_TagSignatures = 1110589745
	Icc4_TagTable_TagDefinition_TagSignatures__BToA2 Icc4_TagTable_TagDefinition_TagSignatures = 1110589746
	Icc4_TagTable_TagDefinition_TagSignatures__BToD0 Icc4_TagTable_TagDefinition_TagSignatures = 1110590512
	Icc4_TagTable_TagDefinition_TagSignatures__BToD1 Icc4_TagTable_TagDefinition_TagSignatures = 1110590513
	Icc4_TagTable_TagDefinition_TagSignatures__BToD2 Icc4_TagTable_TagDefinition_TagSignatures = 1110590514
	Icc4_TagTable_TagDefinition_TagSignatures__BToD3 Icc4_TagTable_TagDefinition_TagSignatures = 1110590515
	Icc4_TagTable_TagDefinition_TagSignatures__DToB0 Icc4_TagTable_TagDefinition_TagSignatures = 1144144432
	Icc4_TagTable_TagDefinition_TagSignatures__DToB1 Icc4_TagTable_TagDefinition_TagSignatures = 1144144433
	Icc4_TagTable_TagDefinition_TagSignatures__DToB2 Icc4_TagTable_TagDefinition_TagSignatures = 1144144434
	Icc4_TagTable_TagDefinition_TagSignatures__DToB3 Icc4_TagTable_TagDefinition_TagSignatures = 1144144435
	Icc4_TagTable_TagDefinition_TagSignatures__BlueTrc Icc4_TagTable_TagDefinition_TagSignatures = 1649693251
	Icc4_TagTable_TagDefinition_TagSignatures__BlueMatrixColumn Icc4_TagTable_TagDefinition_TagSignatures = 1649957210
	Icc4_TagTable_TagDefinition_TagSignatures__CalibrationDateTime Icc4_TagTable_TagDefinition_TagSignatures = 1667329140
	Icc4_TagTable_TagDefinition_TagSignatures__ChromaticAdaptation Icc4_TagTable_TagDefinition_TagSignatures = 1667785060
	Icc4_TagTable_TagDefinition_TagSignatures__Chromaticity Icc4_TagTable_TagDefinition_TagSignatures = 1667789421
	Icc4_TagTable_TagDefinition_TagSignatures__ColorimetricIntentImageState Icc4_TagTable_TagDefinition_TagSignatures = 1667852659
	Icc4_TagTable_TagDefinition_TagSignatures__ColorantTableOut Icc4_TagTable_TagDefinition_TagSignatures = 1668050804
	Icc4_TagTable_TagDefinition_TagSignatures__ColorantOrder Icc4_TagTable_TagDefinition_TagSignatures = 1668051567
	Icc4_TagTable_TagDefinition_TagSignatures__ColorantTable Icc4_TagTable_TagDefinition_TagSignatures = 1668051572
	Icc4_TagTable_TagDefinition_TagSignatures__Copyright Icc4_TagTable_TagDefinition_TagSignatures = 1668313716
	Icc4_TagTable_TagDefinition_TagSignatures__ProfileDescription Icc4_TagTable_TagDefinition_TagSignatures = 1684370275
	Icc4_TagTable_TagDefinition_TagSignatures__DeviceModelDesc Icc4_TagTable_TagDefinition_TagSignatures = 1684890724
	Icc4_TagTable_TagDefinition_TagSignatures__DeviceMfgDesc Icc4_TagTable_TagDefinition_TagSignatures = 1684893284
	Icc4_TagTable_TagDefinition_TagSignatures__GreenTrc Icc4_TagTable_TagDefinition_TagSignatures = 1733579331
	Icc4_TagTable_TagDefinition_TagSignatures__GreenMatrixColumn Icc4_TagTable_TagDefinition_TagSignatures = 1733843290
	Icc4_TagTable_TagDefinition_TagSignatures__Gamut Icc4_TagTable_TagDefinition_TagSignatures = 1734438260
	Icc4_TagTable_TagDefinition_TagSignatures__GrayTrc Icc4_TagTable_TagDefinition_TagSignatures = 1800688195
	Icc4_TagTable_TagDefinition_TagSignatures__Luminance Icc4_TagTable_TagDefinition_TagSignatures = 1819635049
	Icc4_TagTable_TagDefinition_TagSignatures__Measurement Icc4_TagTable_TagDefinition_TagSignatures = 1835360627
	Icc4_TagTable_TagDefinition_TagSignatures__NamedColor2 Icc4_TagTable_TagDefinition_TagSignatures = 1852009522
	Icc4_TagTable_TagDefinition_TagSignatures__Preview0 Icc4_TagTable_TagDefinition_TagSignatures = 1886545200
	Icc4_TagTable_TagDefinition_TagSignatures__Preview1 Icc4_TagTable_TagDefinition_TagSignatures = 1886545201
	Icc4_TagTable_TagDefinition_TagSignatures__Preview2 Icc4_TagTable_TagDefinition_TagSignatures = 1886545202
	Icc4_TagTable_TagDefinition_TagSignatures__ProfileSequence Icc4_TagTable_TagDefinition_TagSignatures = 1886610801
	Icc4_TagTable_TagDefinition_TagSignatures__ProfileSequenceIdentifier Icc4_TagTable_TagDefinition_TagSignatures = 1886611812
	Icc4_TagTable_TagDefinition_TagSignatures__RedTrc Icc4_TagTable_TagDefinition_TagSignatures = 1918128707
	Icc4_TagTable_TagDefinition_TagSignatures__RedMatrixColumn Icc4_TagTable_TagDefinition_TagSignatures = 1918392666
	Icc4_TagTable_TagDefinition_TagSignatures__OutputResponse Icc4_TagTable_TagDefinition_TagSignatures = 1919251312
	Icc4_TagTable_TagDefinition_TagSignatures__PerceptualRenderingIntentGamut Icc4_TagTable_TagDefinition_TagSignatures = 1919510320
	Icc4_TagTable_TagDefinition_TagSignatures__SaturationRenderingIntentGamut Icc4_TagTable_TagDefinition_TagSignatures = 1919510322
	Icc4_TagTable_TagDefinition_TagSignatures__CharTarget Icc4_TagTable_TagDefinition_TagSignatures = 1952543335
	Icc4_TagTable_TagDefinition_TagSignatures__Technology Icc4_TagTable_TagDefinition_TagSignatures = 1952801640
	Icc4_TagTable_TagDefinition_TagSignatures__ViewingConditions Icc4_TagTable_TagDefinition_TagSignatures = 1986618743
	Icc4_TagTable_TagDefinition_TagSignatures__ViewingCondDesc Icc4_TagTable_TagDefinition_TagSignatures = 1987405156
	Icc4_TagTable_TagDefinition_TagSignatures__MediaWhitePoint Icc4_TagTable_TagDefinition_TagSignatures = 2004119668
)
var values_Icc4_TagTable_TagDefinition_TagSignatures = map[Icc4_TagTable_TagDefinition_TagSignatures]struct{}{1093812784: {}, 1093812785: {}, 1093812786: {}, 1110589744: {}, 1110589745: {}, 1110589746: {}, 1110590512: {}, 1110590513: {}, 1110590514: {}, 1110590515: {}, 1144144432: {}, 1144144433: {}, 1144144434: {}, 1144144435: {}, 1649693251: {}, 1649957210: {}, 1667329140: {}, 1667785060: {}, 1667789421: {}, 1667852659: {}, 1668050804: {}, 1668051567: {}, 1668051572: {}, 1668313716: {}, 1684370275: {}, 1684890724: {}, 1684893284: {}, 1733579331: {}, 1733843290: {}, 1734438260: {}, 1800688195: {}, 1819635049: {}, 1835360627: {}, 1852009522: {}, 1886545200: {}, 1886545201: {}, 1886545202: {}, 1886610801: {}, 1886611812: {}, 1918128707: {}, 1918392666: {}, 1919251312: {}, 1919510320: {}, 1919510322: {}, 1952543335: {}, 1952801640: {}, 1986618743: {}, 1987405156: {}, 2004119668: {}}
func (v Icc4_TagTable_TagDefinition_TagSignatures) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_TagSignatures[v]
	return ok
}

type Icc4_TagTable_TagDefinition_TagTypeSignatures int
const (
	Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1482250784
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ChromaticityType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1667789421
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ColorantOrderType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1668051567
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ColorantTableType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1668051572
	Icc4_TagTable_TagDefinition_TagTypeSignatures__CurveType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1668641398
	Icc4_TagTable_TagDefinition_TagTypeSignatures__DataType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1684108385
	Icc4_TagTable_TagDefinition_TagTypeSignatures__DateTimeType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1685350765
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionAToBTableType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1832993312
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1833058592
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MeasurementType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1835360627
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1835430961
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1835430962
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1835824483
	Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1836082548
	Icc4_TagTable_TagDefinition_TagTypeSignatures__NamedColor2Type Icc4_TagTable_TagDefinition_TagTypeSignatures = 1852009522
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ParametricCurveType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1885434465
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ProfileSequenceDescType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1886610801
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ProfileSequenceIdentifierType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1886611812
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ResponseCurveSet16Type Icc4_TagTable_TagDefinition_TagTypeSignatures = 1919120178
	Icc4_TagTable_TagDefinition_TagTypeSignatures__S15Fixed16ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1936077618
	Icc4_TagTable_TagDefinition_TagTypeSignatures__SignatureType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1936287520
	Icc4_TagTable_TagDefinition_TagTypeSignatures__TextType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1952807028
	Icc4_TagTable_TagDefinition_TagTypeSignatures__U16Fixed16ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1969632050
	Icc4_TagTable_TagDefinition_TagTypeSignatures__UInt8ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1969827896
	Icc4_TagTable_TagDefinition_TagTypeSignatures__UInt16ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1969828150
	Icc4_TagTable_TagDefinition_TagTypeSignatures__UInt32ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1969828658
	Icc4_TagTable_TagDefinition_TagTypeSignatures__UInt64ArrayType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1969829428
	Icc4_TagTable_TagDefinition_TagTypeSignatures__ViewingConditionsType Icc4_TagTable_TagDefinition_TagTypeSignatures = 1986618743
)
var values_Icc4_TagTable_TagDefinition_TagTypeSignatures = map[Icc4_TagTable_TagDefinition_TagTypeSignatures]struct{}{1482250784: {}, 1667789421: {}, 1668051567: {}, 1668051572: {}, 1668641398: {}, 1684108385: {}, 1685350765: {}, 1832993312: {}, 1833058592: {}, 1835360627: {}, 1835430961: {}, 1835430962: {}, 1835824483: {}, 1836082548: {}, 1852009522: {}, 1885434465: {}, 1886610801: {}, 1886611812: {}, 1919120178: {}, 1936077618: {}, 1936287520: {}, 1952807028: {}, 1969632050: {}, 1969827896: {}, 1969828150: {}, 1969828658: {}, 1969829428: {}, 1986618743: {}}
func (v Icc4_TagTable_TagDefinition_TagTypeSignatures) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_TagTypeSignatures[v]
	return ok
}
type Icc4_TagTable_TagDefinition struct {
	TagSignature Icc4_TagTable_TagDefinition_TagSignatures
	OffsetToDataElement uint32
	SizeOfDataElement uint32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable
	_raw_tagDataElement []byte
	_f_tagDataElement bool
	tagDataElement interface{}
}
func NewIcc4_TagTable_TagDefinition() *Icc4_TagTable_TagDefinition {
	return &Icc4_TagTable_TagDefinition{
	}
}

func (this Icc4_TagTable_TagDefinition) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition) Read(io *kaitai.Stream, parent *Icc4_TagTable, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp50, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagSignature = Icc4_TagTable_TagDefinition_TagSignatures(tmp50)
	tmp51, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToDataElement = uint32(tmp51)
	tmp52, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.SizeOfDataElement = uint32(tmp52)
	return err
}
func (this *Icc4_TagTable_TagDefinition) TagDataElement() (v interface{}, err error) {
	if (this._f_tagDataElement) {
		return this.tagDataElement, nil
	}
	this._f_tagDataElement = true
	_pos, err := this._io.Pos()
	if err != nil {
		return nil, err
	}
	_, err = this._io.Seek(int64(this.OffsetToDataElement), io.SeekStart)
	if err != nil {
		return nil, err
	}
	switch (this.TagSignature) {
	case Icc4_TagTable_TagDefinition_TagSignatures__AToB0:
		tmp53, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp53 = tmp53
		this._raw_tagDataElement = tmp53
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp54 := NewIcc4_TagTable_TagDefinition_AToB0Tag()
		err = tmp54.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp54
	case Icc4_TagTable_TagDefinition_TagSignatures__AToB1:
		tmp55, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp55 = tmp55
		this._raw_tagDataElement = tmp55
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp56 := NewIcc4_TagTable_TagDefinition_AToB1Tag()
		err = tmp56.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp56
	case Icc4_TagTable_TagDefinition_TagSignatures__AToB2:
		tmp57, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp57 = tmp57
		this._raw_tagDataElement = tmp57
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp58 := NewIcc4_TagTable_TagDefinition_AToB2Tag()
		err = tmp58.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp58
	case Icc4_TagTable_TagDefinition_TagSignatures__BToA0:
		tmp59, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp59 = tmp59
		this._raw_tagDataElement = tmp59
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp60 := NewIcc4_TagTable_TagDefinition_BToA0Tag()
		err = tmp60.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp60
	case Icc4_TagTable_TagDefinition_TagSignatures__BToA1:
		tmp61, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp61 = tmp61
		this._raw_tagDataElement = tmp61
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp62 := NewIcc4_TagTable_TagDefinition_BToA1Tag()
		err = tmp62.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp62
	case Icc4_TagTable_TagDefinition_TagSignatures__BToA2:
		tmp63, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp63 = tmp63
		this._raw_tagDataElement = tmp63
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp64 := NewIcc4_TagTable_TagDefinition_BToA2Tag()
		err = tmp64.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp64
	case Icc4_TagTable_TagDefinition_TagSignatures__BToD0:
		tmp65, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp65 = tmp65
		this._raw_tagDataElement = tmp65
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp66 := NewIcc4_TagTable_TagDefinition_BToD0Tag()
		err = tmp66.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp66
	case Icc4_TagTable_TagDefinition_TagSignatures__BToD1:
		tmp67, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp67 = tmp67
		this._raw_tagDataElement = tmp67
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp68 := NewIcc4_TagTable_TagDefinition_BToD1Tag()
		err = tmp68.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp68
	case Icc4_TagTable_TagDefinition_TagSignatures__BToD2:
		tmp69, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp69 = tmp69
		this._raw_tagDataElement = tmp69
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp70 := NewIcc4_TagTable_TagDefinition_BToD2Tag()
		err = tmp70.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp70
	case Icc4_TagTable_TagDefinition_TagSignatures__BToD3:
		tmp71, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp71 = tmp71
		this._raw_tagDataElement = tmp71
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp72 := NewIcc4_TagTable_TagDefinition_BToD3Tag()
		err = tmp72.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp72
	case Icc4_TagTable_TagDefinition_TagSignatures__BlueMatrixColumn:
		tmp73, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp73 = tmp73
		this._raw_tagDataElement = tmp73
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp74 := NewIcc4_TagTable_TagDefinition_BlueMatrixColumnTag()
		err = tmp74.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp74
	case Icc4_TagTable_TagDefinition_TagSignatures__BlueTrc:
		tmp75, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp75 = tmp75
		this._raw_tagDataElement = tmp75
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp76 := NewIcc4_TagTable_TagDefinition_BlueTrcTag()
		err = tmp76.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp76
	case Icc4_TagTable_TagDefinition_TagSignatures__CalibrationDateTime:
		tmp77, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp77 = tmp77
		this._raw_tagDataElement = tmp77
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp78 := NewIcc4_TagTable_TagDefinition_CalibrationDateTimeTag()
		err = tmp78.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp78
	case Icc4_TagTable_TagDefinition_TagSignatures__CharTarget:
		tmp79, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp79 = tmp79
		this._raw_tagDataElement = tmp79
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp80 := NewIcc4_TagTable_TagDefinition_CharTargetTag()
		err = tmp80.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp80
	case Icc4_TagTable_TagDefinition_TagSignatures__ChromaticAdaptation:
		tmp81, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp81 = tmp81
		this._raw_tagDataElement = tmp81
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp82 := NewIcc4_TagTable_TagDefinition_ChromaticAdaptationTag()
		err = tmp82.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp82
	case Icc4_TagTable_TagDefinition_TagSignatures__Chromaticity:
		tmp83, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp83 = tmp83
		this._raw_tagDataElement = tmp83
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp84 := NewIcc4_TagTable_TagDefinition_ChromaticityTag()
		err = tmp84.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp84
	case Icc4_TagTable_TagDefinition_TagSignatures__ColorantOrder:
		tmp85, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp85 = tmp85
		this._raw_tagDataElement = tmp85
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp86 := NewIcc4_TagTable_TagDefinition_ColorantOrderTag()
		err = tmp86.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp86
	case Icc4_TagTable_TagDefinition_TagSignatures__ColorantTable:
		tmp87, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp87 = tmp87
		this._raw_tagDataElement = tmp87
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp88 := NewIcc4_TagTable_TagDefinition_ColorantTableTag()
		err = tmp88.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp88
	case Icc4_TagTable_TagDefinition_TagSignatures__ColorantTableOut:
		tmp89, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp89 = tmp89
		this._raw_tagDataElement = tmp89
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp90 := NewIcc4_TagTable_TagDefinition_ColorantTableOutTag()
		err = tmp90.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp90
	case Icc4_TagTable_TagDefinition_TagSignatures__ColorimetricIntentImageState:
		tmp91, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp91 = tmp91
		this._raw_tagDataElement = tmp91
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp92 := NewIcc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag()
		err = tmp92.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp92
	case Icc4_TagTable_TagDefinition_TagSignatures__Copyright:
		tmp93, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp93 = tmp93
		this._raw_tagDataElement = tmp93
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp94 := NewIcc4_TagTable_TagDefinition_CopyrightTag()
		err = tmp94.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp94
	case Icc4_TagTable_TagDefinition_TagSignatures__DToB0:
		tmp95, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp95 = tmp95
		this._raw_tagDataElement = tmp95
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp96 := NewIcc4_TagTable_TagDefinition_DToB0Tag()
		err = tmp96.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp96
	case Icc4_TagTable_TagDefinition_TagSignatures__DToB1:
		tmp97, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp97 = tmp97
		this._raw_tagDataElement = tmp97
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp98 := NewIcc4_TagTable_TagDefinition_DToB1Tag()
		err = tmp98.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp98
	case Icc4_TagTable_TagDefinition_TagSignatures__DToB2:
		tmp99, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp99 = tmp99
		this._raw_tagDataElement = tmp99
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp100 := NewIcc4_TagTable_TagDefinition_DToB2Tag()
		err = tmp100.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp100
	case Icc4_TagTable_TagDefinition_TagSignatures__DToB3:
		tmp101, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp101 = tmp101
		this._raw_tagDataElement = tmp101
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp102 := NewIcc4_TagTable_TagDefinition_DToB3Tag()
		err = tmp102.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp102
	case Icc4_TagTable_TagDefinition_TagSignatures__DeviceMfgDesc:
		tmp103, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp103 = tmp103
		this._raw_tagDataElement = tmp103
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp104 := NewIcc4_TagTable_TagDefinition_DeviceMfgDescTag()
		err = tmp104.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp104
	case Icc4_TagTable_TagDefinition_TagSignatures__DeviceModelDesc:
		tmp105, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp105 = tmp105
		this._raw_tagDataElement = tmp105
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp106 := NewIcc4_TagTable_TagDefinition_DeviceModelDescTag()
		err = tmp106.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp106
	case Icc4_TagTable_TagDefinition_TagSignatures__Gamut:
		tmp107, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp107 = tmp107
		this._raw_tagDataElement = tmp107
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp108 := NewIcc4_TagTable_TagDefinition_GamutTag()
		err = tmp108.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp108
	case Icc4_TagTable_TagDefinition_TagSignatures__GrayTrc:
		tmp109, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp109 = tmp109
		this._raw_tagDataElement = tmp109
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp110 := NewIcc4_TagTable_TagDefinition_GrayTrcTag()
		err = tmp110.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp110
	case Icc4_TagTable_TagDefinition_TagSignatures__GreenMatrixColumn:
		tmp111, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp111 = tmp111
		this._raw_tagDataElement = tmp111
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp112 := NewIcc4_TagTable_TagDefinition_GreenMatrixColumnTag()
		err = tmp112.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp112
	case Icc4_TagTable_TagDefinition_TagSignatures__GreenTrc:
		tmp113, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp113 = tmp113
		this._raw_tagDataElement = tmp113
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp114 := NewIcc4_TagTable_TagDefinition_GreenTrcTag()
		err = tmp114.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp114
	case Icc4_TagTable_TagDefinition_TagSignatures__Luminance:
		tmp115, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp115 = tmp115
		this._raw_tagDataElement = tmp115
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp116 := NewIcc4_TagTable_TagDefinition_LuminanceTag()
		err = tmp116.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp116
	case Icc4_TagTable_TagDefinition_TagSignatures__Measurement:
		tmp117, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp117 = tmp117
		this._raw_tagDataElement = tmp117
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp118 := NewIcc4_TagTable_TagDefinition_MeasurementTag()
		err = tmp118.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp118
	case Icc4_TagTable_TagDefinition_TagSignatures__MediaWhitePoint:
		tmp119, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp119 = tmp119
		this._raw_tagDataElement = tmp119
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp120 := NewIcc4_TagTable_TagDefinition_MediaWhitePointTag()
		err = tmp120.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp120
	case Icc4_TagTable_TagDefinition_TagSignatures__NamedColor2:
		tmp121, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp121 = tmp121
		this._raw_tagDataElement = tmp121
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp122 := NewIcc4_TagTable_TagDefinition_NamedColor2Tag()
		err = tmp122.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp122
	case Icc4_TagTable_TagDefinition_TagSignatures__OutputResponse:
		tmp123, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp123 = tmp123
		this._raw_tagDataElement = tmp123
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp124 := NewIcc4_TagTable_TagDefinition_OutputResponseTag()
		err = tmp124.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp124
	case Icc4_TagTable_TagDefinition_TagSignatures__PerceptualRenderingIntentGamut:
		tmp125, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp125 = tmp125
		this._raw_tagDataElement = tmp125
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp126 := NewIcc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag()
		err = tmp126.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp126
	case Icc4_TagTable_TagDefinition_TagSignatures__Preview0:
		tmp127, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp127 = tmp127
		this._raw_tagDataElement = tmp127
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp128 := NewIcc4_TagTable_TagDefinition_Preview0Tag()
		err = tmp128.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp128
	case Icc4_TagTable_TagDefinition_TagSignatures__Preview1:
		tmp129, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp129 = tmp129
		this._raw_tagDataElement = tmp129
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp130 := NewIcc4_TagTable_TagDefinition_Preview1Tag()
		err = tmp130.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp130
	case Icc4_TagTable_TagDefinition_TagSignatures__Preview2:
		tmp131, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp131 = tmp131
		this._raw_tagDataElement = tmp131
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp132 := NewIcc4_TagTable_TagDefinition_Preview2Tag()
		err = tmp132.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp132
	case Icc4_TagTable_TagDefinition_TagSignatures__ProfileDescription:
		tmp133, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp133 = tmp133
		this._raw_tagDataElement = tmp133
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp134 := NewIcc4_TagTable_TagDefinition_ProfileDescriptionTag()
		err = tmp134.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp134
	case Icc4_TagTable_TagDefinition_TagSignatures__ProfileSequence:
		tmp135, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp135 = tmp135
		this._raw_tagDataElement = tmp135
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp136 := NewIcc4_TagTable_TagDefinition_ProfileSequenceTag()
		err = tmp136.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp136
	case Icc4_TagTable_TagDefinition_TagSignatures__ProfileSequenceIdentifier:
		tmp137, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp137 = tmp137
		this._raw_tagDataElement = tmp137
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp138 := NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag()
		err = tmp138.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp138
	case Icc4_TagTable_TagDefinition_TagSignatures__RedMatrixColumn:
		tmp139, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp139 = tmp139
		this._raw_tagDataElement = tmp139
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp140 := NewIcc4_TagTable_TagDefinition_RedMatrixColumnTag()
		err = tmp140.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp140
	case Icc4_TagTable_TagDefinition_TagSignatures__RedTrc:
		tmp141, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp141 = tmp141
		this._raw_tagDataElement = tmp141
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp142 := NewIcc4_TagTable_TagDefinition_RedTrcTag()
		err = tmp142.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp142
	case Icc4_TagTable_TagDefinition_TagSignatures__SaturationRenderingIntentGamut:
		tmp143, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp143 = tmp143
		this._raw_tagDataElement = tmp143
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp144 := NewIcc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag()
		err = tmp144.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp144
	case Icc4_TagTable_TagDefinition_TagSignatures__Technology:
		tmp145, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp145 = tmp145
		this._raw_tagDataElement = tmp145
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp146 := NewIcc4_TagTable_TagDefinition_TechnologyTag()
		err = tmp146.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp146
	case Icc4_TagTable_TagDefinition_TagSignatures__ViewingCondDesc:
		tmp147, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp147 = tmp147
		this._raw_tagDataElement = tmp147
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp148 := NewIcc4_TagTable_TagDefinition_ViewingCondDescTag()
		err = tmp148.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp148
	case Icc4_TagTable_TagDefinition_TagSignatures__ViewingConditions:
		tmp149, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp149 = tmp149
		this._raw_tagDataElement = tmp149
		_io__raw_tagDataElement := kaitai.NewStream(bytes.NewReader(this._raw_tagDataElement))
		tmp150 := NewIcc4_TagTable_TagDefinition_ViewingConditionsTag()
		err = tmp150.Read(_io__raw_tagDataElement, this, this._root)
		if err != nil {
			return nil, err
		}
		this.tagDataElement = tmp150
	default:
		tmp151, err := this._io.ReadBytes(int(this.SizeOfDataElement))
		if err != nil {
			return nil, err
		}
		tmp151 = tmp151
		this._raw_tagDataElement = tmp151
	}
	_, err = this._io.Seek(_pos, io.SeekStart)
	if err != nil {
		return nil, err
	}
	return this.tagDataElement, nil
}
type Icc4_TagTable_TagDefinition_AToB0Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_AToB0Tag() *Icc4_TagTable_TagDefinition_AToB0Tag {
	return &Icc4_TagTable_TagDefinition_AToB0Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_AToB0Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_AToB0Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp152, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp152)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionAToBTableType:
		tmp153 := NewIcc4_TagTable_TagDefinition_LutAToBType()
		err = tmp153.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp153
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp154 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp154.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp154
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp155 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp155.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp155
	}
	return err
}
type Icc4_TagTable_TagDefinition_AToB1Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_AToB1Tag() *Icc4_TagTable_TagDefinition_AToB1Tag {
	return &Icc4_TagTable_TagDefinition_AToB1Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_AToB1Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_AToB1Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp156, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp156)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionAToBTableType:
		tmp157 := NewIcc4_TagTable_TagDefinition_LutAToBType()
		err = tmp157.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp157
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp158 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp158.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp158
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp159 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp159.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp159
	}
	return err
}
type Icc4_TagTable_TagDefinition_AToB2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_AToB2Tag() *Icc4_TagTable_TagDefinition_AToB2Tag {
	return &Icc4_TagTable_TagDefinition_AToB2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_AToB2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_AToB2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp160, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp160)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionAToBTableType:
		tmp161 := NewIcc4_TagTable_TagDefinition_LutAToBType()
		err = tmp161.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp161
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp162 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp162.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp162
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp163 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp163.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp163
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToA0Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToA0Tag() *Icc4_TagTable_TagDefinition_BToA0Tag {
	return &Icc4_TagTable_TagDefinition_BToA0Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToA0Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToA0Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp164, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp164)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp165 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp165.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp165
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp166 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp166.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp166
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp167 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp167.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp167
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToA1Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToA1Tag() *Icc4_TagTable_TagDefinition_BToA1Tag {
	return &Icc4_TagTable_TagDefinition_BToA1Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToA1Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToA1Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp168, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp168)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp169 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp169.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp169
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp170 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp170.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp170
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp171 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp171.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp171
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToA2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToA2Tag() *Icc4_TagTable_TagDefinition_BToA2Tag {
	return &Icc4_TagTable_TagDefinition_BToA2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToA2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToA2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp172, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp172)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp173 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp173.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp173
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp174 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp174.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp174
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp175 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp175.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp175
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToD0Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToD0Tag() *Icc4_TagTable_TagDefinition_BToD0Tag {
	return &Icc4_TagTable_TagDefinition_BToD0Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToD0Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToD0Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp176, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp176)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp177 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp177.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp177
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToD1Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToD1Tag() *Icc4_TagTable_TagDefinition_BToD1Tag {
	return &Icc4_TagTable_TagDefinition_BToD1Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToD1Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToD1Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp178, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp178)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp179 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp179.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp179
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToD2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToD2Tag() *Icc4_TagTable_TagDefinition_BToD2Tag {
	return &Icc4_TagTable_TagDefinition_BToD2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToD2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToD2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp180, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp180)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp181 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp181.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp181
	}
	return err
}
type Icc4_TagTable_TagDefinition_BToD3Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BToD3Tag() *Icc4_TagTable_TagDefinition_BToD3Tag {
	return &Icc4_TagTable_TagDefinition_BToD3Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_BToD3Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BToD3Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp182, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp182)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp183 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp183.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp183
	}
	return err
}
type Icc4_TagTable_TagDefinition_BlueMatrixColumnTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_XyzType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BlueMatrixColumnTag() *Icc4_TagTable_TagDefinition_BlueMatrixColumnTag {
	return &Icc4_TagTable_TagDefinition_BlueMatrixColumnTag{
	}
}

func (this Icc4_TagTable_TagDefinition_BlueMatrixColumnTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BlueMatrixColumnTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp184, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp184)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType:
		tmp185 := NewIcc4_TagTable_TagDefinition_XyzType()
		err = tmp185.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp185
	}
	return err
}
type Icc4_TagTable_TagDefinition_BlueTrcTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_BlueTrcTag() *Icc4_TagTable_TagDefinition_BlueTrcTag {
	return &Icc4_TagTable_TagDefinition_BlueTrcTag{
	}
}

func (this Icc4_TagTable_TagDefinition_BlueTrcTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_BlueTrcTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp186, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp186)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__CurveType:
		tmp187 := NewIcc4_TagTable_TagDefinition_CurveType()
		err = tmp187.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp187
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ParametricCurveType:
		tmp188 := NewIcc4_TagTable_TagDefinition_ParametricCurveType()
		err = tmp188.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp188
	}
	return err
}
type Icc4_TagTable_TagDefinition_CalibrationDateTimeTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_DateTimeType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_CalibrationDateTimeTag() *Icc4_TagTable_TagDefinition_CalibrationDateTimeTag {
	return &Icc4_TagTable_TagDefinition_CalibrationDateTimeTag{
	}
}

func (this Icc4_TagTable_TagDefinition_CalibrationDateTimeTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_CalibrationDateTimeTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp189, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp189)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__DateTimeType:
		tmp190 := NewIcc4_TagTable_TagDefinition_DateTimeType()
		err = tmp190.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp190
	}
	return err
}
type Icc4_TagTable_TagDefinition_CharTargetTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_TextType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_CharTargetTag() *Icc4_TagTable_TagDefinition_CharTargetTag {
	return &Icc4_TagTable_TagDefinition_CharTargetTag{
	}
}

func (this Icc4_TagTable_TagDefinition_CharTargetTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_CharTargetTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp191, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp191)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__TextType:
		tmp192 := NewIcc4_TagTable_TagDefinition_TextType()
		err = tmp192.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp192
	}
	return err
}
type Icc4_TagTable_TagDefinition_ChromaticAdaptationTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_S15Fixed16ArrayType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ChromaticAdaptationTag() *Icc4_TagTable_TagDefinition_ChromaticAdaptationTag {
	return &Icc4_TagTable_TagDefinition_ChromaticAdaptationTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ChromaticAdaptationTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ChromaticAdaptationTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp193, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp193)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__S15Fixed16ArrayType:
		tmp194 := NewIcc4_TagTable_TagDefinition_S15Fixed16ArrayType()
		err = tmp194.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp194
	}
	return err
}
type Icc4_TagTable_TagDefinition_ChromaticityTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ChromaticityType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ChromaticityTag() *Icc4_TagTable_TagDefinition_ChromaticityTag {
	return &Icc4_TagTable_TagDefinition_ChromaticityTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ChromaticityTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ChromaticityTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp195, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp195)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ChromaticityType:
		tmp196 := NewIcc4_TagTable_TagDefinition_ChromaticityType()
		err = tmp196.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp196
	}
	return err
}

type Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings int
const (
	Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings__Unknown Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = 0
	Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings__ItuRBt7092 Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = 1
	Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings__SmpteRp145 Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = 2
	Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings__EbuTech3213E Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = 3
	Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings__P22 Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = 4
)
var values_Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings = map[Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings]struct{}{0: {}, 1: {}, 2: {}, 3: {}, 4: {}}
func (v Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings[v]
	return ok
}
type Icc4_TagTable_TagDefinition_ChromaticityType struct {
	Reserved []byte
	NumberOfDeviceChannels uint16
	ColorantAndPhosphorEncoding Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings
	CiexyCoordinatesPerChannel []*Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ChromaticityTag
}
func NewIcc4_TagTable_TagDefinition_ChromaticityType() *Icc4_TagTable_TagDefinition_ChromaticityType {
	return &Icc4_TagTable_TagDefinition_ChromaticityType{
	}
}

func (this Icc4_TagTable_TagDefinition_ChromaticityType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ChromaticityType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ChromaticityTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp197, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp197 = tmp197
	this.Reserved = tmp197
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/chromaticity_type/seq/0")
	}
	tmp198, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfDeviceChannels = uint16(tmp198)
	tmp199, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.ColorantAndPhosphorEncoding = Icc4_TagTable_TagDefinition_ChromaticityType_ColorantAndPhosphorEncodings(tmp199)
	for i := 0; i < int(this.NumberOfDeviceChannels); i++ {
		_ = i
		tmp200 := NewIcc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues()
		err = tmp200.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.CiexyCoordinatesPerChannel = append(this.CiexyCoordinatesPerChannel, tmp200)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues struct {
	XCoordinate uint16
	YCoordinate uint16
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ChromaticityType
}
func NewIcc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues() *Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues {
	return &Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues{
	}
}

func (this Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ChromaticityType_CiexyCoordinateValues) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ChromaticityType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp201, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.XCoordinate = uint16(tmp201)
	tmp202, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.YCoordinate = uint16(tmp202)
	return err
}
type Icc4_TagTable_TagDefinition_ColorantOrderTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ColorantOrderType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ColorantOrderTag() *Icc4_TagTable_TagDefinition_ColorantOrderTag {
	return &Icc4_TagTable_TagDefinition_ColorantOrderTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantOrderTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantOrderTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp203, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp203)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ColorantOrderType:
		tmp204 := NewIcc4_TagTable_TagDefinition_ColorantOrderType()
		err = tmp204.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp204
	}
	return err
}
type Icc4_TagTable_TagDefinition_ColorantOrderType struct {
	Reserved []byte
	CountOfColorants uint32
	NumbersOfColorantsInOrderOfPrinting []uint8
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ColorantOrderTag
}
func NewIcc4_TagTable_TagDefinition_ColorantOrderType() *Icc4_TagTable_TagDefinition_ColorantOrderType {
	return &Icc4_TagTable_TagDefinition_ColorantOrderType{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantOrderType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantOrderType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ColorantOrderTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp205, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp205 = tmp205
	this.Reserved = tmp205
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/colorant_order_type/seq/0")
	}
	tmp206, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CountOfColorants = uint32(tmp206)
	for i := 0; i < int(this.CountOfColorants); i++ {
		_ = i
		tmp207, err := this._io.ReadU1()
		if err != nil {
			return err
		}
		this.NumbersOfColorantsInOrderOfPrinting = append(this.NumbersOfColorantsInOrderOfPrinting, tmp207)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ColorantTableOutTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ColorantTableType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ColorantTableOutTag() *Icc4_TagTable_TagDefinition_ColorantTableOutTag {
	return &Icc4_TagTable_TagDefinition_ColorantTableOutTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantTableOutTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantTableOutTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp208, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp208)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ColorantTableType:
		tmp209 := NewIcc4_TagTable_TagDefinition_ColorantTableType()
		err = tmp209.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp209
	}
	return err
}
type Icc4_TagTable_TagDefinition_ColorantTableTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ColorantTableType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ColorantTableTag() *Icc4_TagTable_TagDefinition_ColorantTableTag {
	return &Icc4_TagTable_TagDefinition_ColorantTableTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantTableTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantTableTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp210, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp210)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ColorantTableType:
		tmp211 := NewIcc4_TagTable_TagDefinition_ColorantTableType()
		err = tmp211.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp211
	}
	return err
}
type Icc4_TagTable_TagDefinition_ColorantTableType struct {
	Reserved []byte
	CountOfColorants uint32
	Colorants []*Icc4_TagTable_TagDefinition_ColorantTableType_Colorant
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_ColorantTableType() *Icc4_TagTable_TagDefinition_ColorantTableType {
	return &Icc4_TagTable_TagDefinition_ColorantTableType{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantTableType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantTableType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp212, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp212 = tmp212
	this.Reserved = tmp212
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/colorant_table_type/seq/0")
	}
	tmp213, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CountOfColorants = uint32(tmp213)
	for i := 0; i < int(this.CountOfColorants); i++ {
		_ = i
		tmp214 := NewIcc4_TagTable_TagDefinition_ColorantTableType_Colorant()
		err = tmp214.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Colorants = append(this.Colorants, tmp214)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ColorantTableType_Colorant struct {
	Name string
	Padding [][]byte
	PcsValues []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ColorantTableType
}
func NewIcc4_TagTable_TagDefinition_ColorantTableType_Colorant() *Icc4_TagTable_TagDefinition_ColorantTableType_Colorant {
	return &Icc4_TagTable_TagDefinition_ColorantTableType_Colorant{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorantTableType_Colorant) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorantTableType_Colorant) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ColorantTableType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp215, err := this._io.ReadBytesTerm(0, false, true, true)
	if err != nil {
		return err
	}
	this.Name = string(tmp215)
	for i := 0; i < int(32 - utf8.RuneCountInString(this.Name)); i++ {
		_ = i
		tmp216, err := this._io.ReadBytes(int(1))
		if err != nil {
			return err
		}
		tmp216 = tmp216
		this.Padding = append(this.Padding, tmp216)
		if !(bytes.Equal(this.Padding[i], []uint8{0})) {
			return kaitai.NewValidationNotEqualError([]uint8{0}, this.Padding[i], this._io, "/types/tag_table/types/tag_definition/types/colorant_table_type/types/colorant/seq/1")
		}
	}
	tmp217, err := this._io.ReadBytes(int(6))
	if err != nil {
		return err
	}
	tmp217 = tmp217
	this.PcsValues = tmp217
	return err
}
type Icc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_SignatureType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag() *Icc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag {
	return &Icc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ColorimetricIntentImageStateTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp218, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp218)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__SignatureType:
		tmp219 := NewIcc4_TagTable_TagDefinition_SignatureType()
		err = tmp219.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp219
	}
	return err
}
type Icc4_TagTable_TagDefinition_CopyrightTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_CopyrightTag() *Icc4_TagTable_TagDefinition_CopyrightTag {
	return &Icc4_TagTable_TagDefinition_CopyrightTag{
	}
}

func (this Icc4_TagTable_TagDefinition_CopyrightTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_CopyrightTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp220, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp220)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType:
		tmp221 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
		err = tmp221.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp221
	}
	return err
}
type Icc4_TagTable_TagDefinition_CurveType struct {
	Reserved []byte
	NumberOfEntries uint32
	CurveValues []uint16
	CurveValue uint8
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_CurveType() *Icc4_TagTable_TagDefinition_CurveType {
	return &Icc4_TagTable_TagDefinition_CurveType{
	}
}

func (this Icc4_TagTable_TagDefinition_CurveType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_CurveType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp222, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp222 = tmp222
	this.Reserved = tmp222
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/curve_type/seq/0")
	}
	tmp223, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfEntries = uint32(tmp223)
	if (this.NumberOfEntries > 1) {
		for i := 0; i < int(this.NumberOfEntries); i++ {
			_ = i
			tmp224, err := this._io.ReadU2be()
			if err != nil {
				return err
			}
			this.CurveValues = append(this.CurveValues, tmp224)
		}
	}
	if (this.NumberOfEntries == 1) {
		tmp225, err := this._io.ReadU1()
		if err != nil {
			return err
		}
		this.CurveValue = tmp225
	}
	return err
}
type Icc4_TagTable_TagDefinition_DToB0Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_DToB0Tag() *Icc4_TagTable_TagDefinition_DToB0Tag {
	return &Icc4_TagTable_TagDefinition_DToB0Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_DToB0Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DToB0Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp226, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp226)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp227 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp227.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp227
	}
	return err
}
type Icc4_TagTable_TagDefinition_DToB1Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_DToB1Tag() *Icc4_TagTable_TagDefinition_DToB1Tag {
	return &Icc4_TagTable_TagDefinition_DToB1Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_DToB1Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DToB1Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp228, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp228)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp229 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp229.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp229
	}
	return err
}
type Icc4_TagTable_TagDefinition_DToB2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_DToB2Tag() *Icc4_TagTable_TagDefinition_DToB2Tag {
	return &Icc4_TagTable_TagDefinition_DToB2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_DToB2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DToB2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp230, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp230)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp231 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp231.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp231
	}
	return err
}
type Icc4_TagTable_TagDefinition_DToB3Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiProcessElementsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_DToB3Tag() *Icc4_TagTable_TagDefinition_DToB3Tag {
	return &Icc4_TagTable_TagDefinition_DToB3Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_DToB3Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DToB3Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp232, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp232)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiProcessElementsType:
		tmp233 := NewIcc4_TagTable_TagDefinition_MultiProcessElementsType()
		err = tmp233.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp233
	}
	return err
}

type Icc4_TagTable_TagDefinition_DataType_DataTypes int
const (
	Icc4_TagTable_TagDefinition_DataType_DataTypes__AsciiData Icc4_TagTable_TagDefinition_DataType_DataTypes = 0
	Icc4_TagTable_TagDefinition_DataType_DataTypes__BinaryData Icc4_TagTable_TagDefinition_DataType_DataTypes = 1
)
var values_Icc4_TagTable_TagDefinition_DataType_DataTypes = map[Icc4_TagTable_TagDefinition_DataType_DataTypes]struct{}{0: {}, 1: {}}
func (v Icc4_TagTable_TagDefinition_DataType_DataTypes) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_DataType_DataTypes[v]
	return ok
}
type Icc4_TagTable_TagDefinition_DataType struct {
	DataFlag Icc4_TagTable_TagDefinition_DataType_DataTypes
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_DataType() *Icc4_TagTable_TagDefinition_DataType {
	return &Icc4_TagTable_TagDefinition_DataType{
	}
}

func (this Icc4_TagTable_TagDefinition_DataType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DataType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp234, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.DataFlag = Icc4_TagTable_TagDefinition_DataType_DataTypes(tmp234)
	return err
}
type Icc4_TagTable_TagDefinition_DateTimeType struct {
	Reserved []byte
	DateAndTime *Icc4_DateTimeNumber
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_CalibrationDateTimeTag
}
func NewIcc4_TagTable_TagDefinition_DateTimeType() *Icc4_TagTable_TagDefinition_DateTimeType {
	return &Icc4_TagTable_TagDefinition_DateTimeType{
	}
}

func (this Icc4_TagTable_TagDefinition_DateTimeType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DateTimeType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_CalibrationDateTimeTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp235, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp235 = tmp235
	this.Reserved = tmp235
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/date_time_type/seq/0")
	}
	tmp236 := NewIcc4_DateTimeNumber()
	err = tmp236.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DateAndTime = tmp236
	return err
}
type Icc4_TagTable_TagDefinition_DeviceMfgDescTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_DeviceMfgDescTag() *Icc4_TagTable_TagDefinition_DeviceMfgDescTag {
	return &Icc4_TagTable_TagDefinition_DeviceMfgDescTag{
	}
}

func (this Icc4_TagTable_TagDefinition_DeviceMfgDescTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DeviceMfgDescTag) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp237, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp237)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType:
		tmp238 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
		err = tmp238.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp238
	}
	return err
}
type Icc4_TagTable_TagDefinition_DeviceModelDescTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_DeviceModelDescTag() *Icc4_TagTable_TagDefinition_DeviceModelDescTag {
	return &Icc4_TagTable_TagDefinition_DeviceModelDescTag{
	}
}

func (this Icc4_TagTable_TagDefinition_DeviceModelDescTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_DeviceModelDescTag) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp239, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp239)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType:
		tmp240 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
		err = tmp240.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp240
	}
	return err
}
type Icc4_TagTable_TagDefinition_GamutTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_GamutTag() *Icc4_TagTable_TagDefinition_GamutTag {
	return &Icc4_TagTable_TagDefinition_GamutTag{
	}
}

func (this Icc4_TagTable_TagDefinition_GamutTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_GamutTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp241, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp241)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp242 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp242.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp242
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp243 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp243.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp243
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp244 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp244.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp244
	}
	return err
}
type Icc4_TagTable_TagDefinition_GrayTrcTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_GrayTrcTag() *Icc4_TagTable_TagDefinition_GrayTrcTag {
	return &Icc4_TagTable_TagDefinition_GrayTrcTag{
	}
}

func (this Icc4_TagTable_TagDefinition_GrayTrcTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_GrayTrcTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp245, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp245)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__CurveType:
		tmp246 := NewIcc4_TagTable_TagDefinition_CurveType()
		err = tmp246.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp246
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ParametricCurveType:
		tmp247 := NewIcc4_TagTable_TagDefinition_ParametricCurveType()
		err = tmp247.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp247
	}
	return err
}
type Icc4_TagTable_TagDefinition_GreenMatrixColumnTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_XyzType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_GreenMatrixColumnTag() *Icc4_TagTable_TagDefinition_GreenMatrixColumnTag {
	return &Icc4_TagTable_TagDefinition_GreenMatrixColumnTag{
	}
}

func (this Icc4_TagTable_TagDefinition_GreenMatrixColumnTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_GreenMatrixColumnTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp248, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp248)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType:
		tmp249 := NewIcc4_TagTable_TagDefinition_XyzType()
		err = tmp249.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp249
	}
	return err
}
type Icc4_TagTable_TagDefinition_GreenTrcTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_GreenTrcTag() *Icc4_TagTable_TagDefinition_GreenTrcTag {
	return &Icc4_TagTable_TagDefinition_GreenTrcTag{
	}
}

func (this Icc4_TagTable_TagDefinition_GreenTrcTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_GreenTrcTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp250, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp250)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__CurveType:
		tmp251 := NewIcc4_TagTable_TagDefinition_CurveType()
		err = tmp251.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp251
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ParametricCurveType:
		tmp252 := NewIcc4_TagTable_TagDefinition_ParametricCurveType()
		err = tmp252.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp252
	}
	return err
}
type Icc4_TagTable_TagDefinition_LuminanceTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_XyzType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_LuminanceTag() *Icc4_TagTable_TagDefinition_LuminanceTag {
	return &Icc4_TagTable_TagDefinition_LuminanceTag{
	}
}

func (this Icc4_TagTable_TagDefinition_LuminanceTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_LuminanceTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp253, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp253)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType:
		tmp254 := NewIcc4_TagTable_TagDefinition_XyzType()
		err = tmp254.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp254
	}
	return err
}
type Icc4_TagTable_TagDefinition_Lut16Type struct {
	Reserved []byte
	NumberOfInputChannels uint8
	NumberOfOutputChannels uint8
	NumberOfClutGridPoints uint8
	Padding []byte
	EncodedEParameters []int32
	NumberOfInputTableEntries uint16
	NumberOfOutputTableEntries uint16
	InputTables []byte
	ClutValues []byte
	OutputTables []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_Lut16Type() *Icc4_TagTable_TagDefinition_Lut16Type {
	return &Icc4_TagTable_TagDefinition_Lut16Type{
	}
}

func (this Icc4_TagTable_TagDefinition_Lut16Type) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_Lut16Type) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp255, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp255 = tmp255
	this.Reserved = tmp255
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/lut_16_type/seq/0")
	}
	tmp256, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfInputChannels = tmp256
	tmp257, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfOutputChannels = tmp257
	tmp258, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfClutGridPoints = tmp258
	tmp259, err := this._io.ReadBytes(int(1))
	if err != nil {
		return err
	}
	tmp259 = tmp259
	this.Padding = tmp259
	if !(bytes.Equal(this.Padding, []uint8{0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0}, this.Padding, this._io, "/types/tag_table/types/tag_definition/types/lut_16_type/seq/4")
	}
	for i := 0; i < int(9); i++ {
		_ = i
		tmp260, err := this._io.ReadS4be()
		if err != nil {
			return err
		}
		this.EncodedEParameters = append(this.EncodedEParameters, tmp260)
	}
	tmp261, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfInputTableEntries = uint16(tmp261)
	tmp262, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfOutputTableEntries = uint16(tmp262)
	tmp263, err := this._io.ReadBytes(int((2 * this.NumberOfInputChannels) * this.NumberOfInputTableEntries))
	if err != nil {
		return err
	}
	tmp263 = tmp263
	this.InputTables = tmp263
	tmp264, err := this._io.ReadBytes(int((2 * (this.NumberOfClutGridPoints ^ this.NumberOfInputChannels)) * this.NumberOfOutputChannels))
	if err != nil {
		return err
	}
	tmp264 = tmp264
	this.ClutValues = tmp264
	tmp265, err := this._io.ReadBytes(int((2 * this.NumberOfOutputChannels) * this.NumberOfOutputTableEntries))
	if err != nil {
		return err
	}
	tmp265 = tmp265
	this.OutputTables = tmp265
	return err
}
type Icc4_TagTable_TagDefinition_Lut8Type struct {
	Reserved []byte
	NumberOfInputChannels uint8
	NumberOfOutputChannels uint8
	NumberOfClutGridPoints uint8
	Padding []byte
	EncodedEParameters []int32
	NumberOfInputTableEntries uint32
	NumberOfOutputTableEntries uint32
	InputTables []byte
	ClutValues []byte
	OutputTables []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_Lut8Type() *Icc4_TagTable_TagDefinition_Lut8Type {
	return &Icc4_TagTable_TagDefinition_Lut8Type{
	}
}

func (this Icc4_TagTable_TagDefinition_Lut8Type) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_Lut8Type) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp266, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp266 = tmp266
	this.Reserved = tmp266
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/lut_8_type/seq/0")
	}
	tmp267, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfInputChannels = tmp267
	tmp268, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfOutputChannels = tmp268
	tmp269, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfClutGridPoints = tmp269
	tmp270, err := this._io.ReadBytes(int(1))
	if err != nil {
		return err
	}
	tmp270 = tmp270
	this.Padding = tmp270
	if !(bytes.Equal(this.Padding, []uint8{0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0}, this.Padding, this._io, "/types/tag_table/types/tag_definition/types/lut_8_type/seq/4")
	}
	for i := 0; i < int(9); i++ {
		_ = i
		tmp271, err := this._io.ReadS4be()
		if err != nil {
			return err
		}
		this.EncodedEParameters = append(this.EncodedEParameters, tmp271)
	}
	tmp272, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfInputTableEntries = uint32(tmp272)
	tmp273, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfOutputTableEntries = uint32(tmp273)
	tmp274, err := this._io.ReadBytes(int(256 * this.NumberOfInputChannels))
	if err != nil {
		return err
	}
	tmp274 = tmp274
	this.InputTables = tmp274
	tmp275, err := this._io.ReadBytes(int((this.NumberOfClutGridPoints ^ this.NumberOfInputChannels) * this.NumberOfOutputChannels))
	if err != nil {
		return err
	}
	tmp275 = tmp275
	this.ClutValues = tmp275
	tmp276, err := this._io.ReadBytes(int(256 * this.NumberOfOutputChannels))
	if err != nil {
		return err
	}
	tmp276 = tmp276
	this.OutputTables = tmp276
	return err
}
type Icc4_TagTable_TagDefinition_LutAToBType struct {
	Reserved []byte
	NumberOfInputChannels uint8
	NumberOfOutputChannels uint8
	Padding []byte
	OffsetToFirstBCurve uint32
	OffsetToMatrix uint32
	OffsetToFirstMCurve uint32
	OffsetToClut uint32
	OffsetToFirstACurve uint32
	Data []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_LutAToBType() *Icc4_TagTable_TagDefinition_LutAToBType {
	return &Icc4_TagTable_TagDefinition_LutAToBType{
	}
}

func (this Icc4_TagTable_TagDefinition_LutAToBType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_LutAToBType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp277, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp277 = tmp277
	this.Reserved = tmp277
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/lut_a_to_b_type/seq/0")
	}
	tmp278, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfInputChannels = tmp278
	tmp279, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfOutputChannels = tmp279
	tmp280, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp280 = tmp280
	this.Padding = tmp280
	if !(bytes.Equal(this.Padding, []uint8{0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0}, this.Padding, this._io, "/types/tag_table/types/tag_definition/types/lut_a_to_b_type/seq/3")
	}
	tmp281, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstBCurve = uint32(tmp281)
	tmp282, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToMatrix = uint32(tmp282)
	tmp283, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstMCurve = uint32(tmp283)
	tmp284, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToClut = uint32(tmp284)
	tmp285, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstACurve = uint32(tmp285)
	tmp286, err := this._io.ReadBytesFull()
	if err != nil {
		return err
	}
	tmp286 = tmp286
	this.Data = tmp286
	return err
}
type Icc4_TagTable_TagDefinition_LutBToAType struct {
	Reserved []byte
	NumberOfInputChannels uint8
	NumberOfOutputChannels uint8
	Padding []byte
	OffsetToFirstBCurve uint32
	OffsetToMatrix uint32
	OffsetToFirstMCurve uint32
	OffsetToClut uint32
	OffsetToFirstACurve uint32
	Data []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_LutBToAType() *Icc4_TagTable_TagDefinition_LutBToAType {
	return &Icc4_TagTable_TagDefinition_LutBToAType{
	}
}

func (this Icc4_TagTable_TagDefinition_LutBToAType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_LutBToAType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp287, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp287 = tmp287
	this.Reserved = tmp287
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/lut_b_to_a_type/seq/0")
	}
	tmp288, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfInputChannels = tmp288
	tmp289, err := this._io.ReadU1()
	if err != nil {
		return err
	}
	this.NumberOfOutputChannels = tmp289
	tmp290, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp290 = tmp290
	this.Padding = tmp290
	if !(bytes.Equal(this.Padding, []uint8{0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0}, this.Padding, this._io, "/types/tag_table/types/tag_definition/types/lut_b_to_a_type/seq/3")
	}
	tmp291, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstBCurve = uint32(tmp291)
	tmp292, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToMatrix = uint32(tmp292)
	tmp293, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstMCurve = uint32(tmp293)
	tmp294, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToClut = uint32(tmp294)
	tmp295, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.OffsetToFirstACurve = uint32(tmp295)
	tmp296, err := this._io.ReadBytesFull()
	if err != nil {
		return err
	}
	tmp296 = tmp296
	this.Data = tmp296
	return err
}
type Icc4_TagTable_TagDefinition_MeasurementTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MeasurementType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_MeasurementTag() *Icc4_TagTable_TagDefinition_MeasurementTag {
	return &Icc4_TagTable_TagDefinition_MeasurementTag{
	}
}

func (this Icc4_TagTable_TagDefinition_MeasurementTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MeasurementTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp297, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp297)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MeasurementType:
		tmp298 := NewIcc4_TagTable_TagDefinition_MeasurementType()
		err = tmp298.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp298
	}
	return err
}

type Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings int
const (
	Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings__ZeroPercent Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings = 0
	Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings__OneHundredPercent Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings = 65536
)
var values_Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings = map[Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings]struct{}{0: {}, 65536: {}}
func (v Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings[v]
	return ok
}

type Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings int
const (
	Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings__Unknown Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings = 0
	Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings__ZeroDegreesTo45DegreesOr45DegreesToZeroDegrees Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings = 1
	Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings__ZeroDegreesToDDegreesOrDDegreesToZeroDegrees Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings = 2
)
var values_Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings = map[Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings]struct{}{0: {}, 1: {}, 2: {}}
func (v Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings[v]
	return ok
}

type Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings int
const (
	Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings__Unknown Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings = 0
	Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings__Cie1931StandardColorimetricObserver Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings = 1
	Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings__Cie1964StandardColorimetricObserver Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings = 2
)
var values_Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings = map[Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings]struct{}{0: {}, 1: {}, 2: {}}
func (v Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings[v]
	return ok
}
type Icc4_TagTable_TagDefinition_MeasurementType struct {
	Reserved []byte
	StandardObserverEncoding Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings
	NciexyzTristimulusValuesForMeasurementBacking *Icc4_XyzNumber
	MeasurementGeometryEncoding Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings
	MeasurementFlareEncoding Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings
	StandardIlluminantEncoding *Icc4_StandardIlluminantEncoding
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_MeasurementTag
}
func NewIcc4_TagTable_TagDefinition_MeasurementType() *Icc4_TagTable_TagDefinition_MeasurementType {
	return &Icc4_TagTable_TagDefinition_MeasurementType{
	}
}

func (this Icc4_TagTable_TagDefinition_MeasurementType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MeasurementType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_MeasurementTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp299, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp299 = tmp299
	this.Reserved = tmp299
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/measurement_type/seq/0")
	}
	tmp300, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.StandardObserverEncoding = Icc4_TagTable_TagDefinition_MeasurementType_StandardObserverEncodings(tmp300)
	tmp301 := NewIcc4_XyzNumber()
	err = tmp301.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.NciexyzTristimulusValuesForMeasurementBacking = tmp301
	tmp302, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.MeasurementGeometryEncoding = Icc4_TagTable_TagDefinition_MeasurementType_MeasurementGeometryEncodings(tmp302)
	tmp303, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.MeasurementFlareEncoding = Icc4_TagTable_TagDefinition_MeasurementType_MeasurementFlareEncodings(tmp303)
	tmp304 := NewIcc4_StandardIlluminantEncoding()
	err = tmp304.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.StandardIlluminantEncoding = tmp304
	return err
}
type Icc4_TagTable_TagDefinition_MediaWhitePointTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_XyzType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_MediaWhitePointTag() *Icc4_TagTable_TagDefinition_MediaWhitePointTag {
	return &Icc4_TagTable_TagDefinition_MediaWhitePointTag{
	}
}

func (this Icc4_TagTable_TagDefinition_MediaWhitePointTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MediaWhitePointTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp305, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp305)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType:
		tmp306 := NewIcc4_TagTable_TagDefinition_XyzType()
		err = tmp306.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp306
	}
	return err
}
type Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType struct {
	Reserved []byte
	NumberOfRecords uint32
	RecordSize uint32
	Records []*Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType() *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType {
	return &Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType{
	}
}

func (this Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp307, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp307 = tmp307
	this.Reserved = tmp307
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/multi_localized_unicode_type/seq/0")
	}
	tmp308, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfRecords = uint32(tmp308)
	tmp309, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.RecordSize = uint32(tmp309)
	for i := 0; i < int(this.NumberOfRecords); i++ {
		_ = i
		tmp310 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record()
		err = tmp310.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Records = append(this.Records, tmp310)
	}
	return err
}
type Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record struct {
	LanguageCode uint16
	CountryCode uint16
	StringLength uint32
	StringOffset uint32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_f_stringData bool
	stringData string
}
func NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record() *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record {
	return &Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record{
	}
}

func (this Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp311, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.LanguageCode = uint16(tmp311)
	tmp312, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.CountryCode = uint16(tmp312)
	tmp313, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.StringLength = uint32(tmp313)
	tmp314, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.StringOffset = uint32(tmp314)
	return err
}
func (this *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType_Record) StringData() (v string, err error) {
	if (this._f_stringData) {
		return this.stringData, nil
	}
	this._f_stringData = true
	_pos, err := this._io.Pos()
	if err != nil {
		return "", err
	}
	_, err = this._io.Seek(int64(this.StringOffset), io.SeekStart)
	if err != nil {
		return "", err
	}
	tmp315, err := this._io.ReadBytes(int(this.StringLength))
	if err != nil {
		return "", err
	}
	tmp315 = tmp315
	tmp316, err := kaitai.BytesToStr(tmp315, unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM).NewDecoder())
	if err != nil {
		return "", err
	}
	this.stringData = tmp316
	_, err = this._io.Seek(_pos, io.SeekStart)
	if err != nil {
		return "", err
	}
	return this.stringData, nil
}
type Icc4_TagTable_TagDefinition_MultiProcessElementsType struct {
	Reserved []byte
	NumberOfInputChannels uint16
	NumberOfOutputChannels uint16
	NumberOfProcessingElements uint32
	ProcessElementPositionsTable []*Icc4_PositionNumber
	Data []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_MultiProcessElementsType() *Icc4_TagTable_TagDefinition_MultiProcessElementsType {
	return &Icc4_TagTable_TagDefinition_MultiProcessElementsType{
	}
}

func (this Icc4_TagTable_TagDefinition_MultiProcessElementsType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_MultiProcessElementsType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp317, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp317 = tmp317
	this.Reserved = tmp317
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/multi_process_elements_type/seq/0")
	}
	tmp318, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfInputChannels = uint16(tmp318)
	tmp319, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfOutputChannels = uint16(tmp319)
	tmp320, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfProcessingElements = uint32(tmp320)
	for i := 0; i < int(this.NumberOfProcessingElements); i++ {
		_ = i
		tmp321 := NewIcc4_PositionNumber()
		err = tmp321.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.ProcessElementPositionsTable = append(this.ProcessElementPositionsTable, tmp321)
	}
	tmp322, err := this._io.ReadBytesFull()
	if err != nil {
		return err
	}
	tmp322 = tmp322
	this.Data = tmp322
	return err
}
type Icc4_TagTable_TagDefinition_NamedColor2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_NamedColor2Type
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_NamedColor2Tag() *Icc4_TagTable_TagDefinition_NamedColor2Tag {
	return &Icc4_TagTable_TagDefinition_NamedColor2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_NamedColor2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_NamedColor2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp323, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp323)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__NamedColor2Type:
		tmp324 := NewIcc4_TagTable_TagDefinition_NamedColor2Type()
		err = tmp324.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp324
	}
	return err
}
type Icc4_TagTable_TagDefinition_NamedColor2Type struct {
	Reserved []byte
	VendorSpecificFlag uint32
	CountOfNamedColours uint32
	NumberOfDeviceCoordinatesForEachNamedColour uint32
	PrefixForEachColourName string
	PrefixForEachColourNamePadding [][]byte
	SuffixForEachColourName string
	SuffixForEachColourNamePadding [][]byte
	NamedColourDefinitions []*Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_NamedColor2Tag
}
func NewIcc4_TagTable_TagDefinition_NamedColor2Type() *Icc4_TagTable_TagDefinition_NamedColor2Type {
	return &Icc4_TagTable_TagDefinition_NamedColor2Type{
	}
}

func (this Icc4_TagTable_TagDefinition_NamedColor2Type) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_NamedColor2Type) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_NamedColor2Tag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp325, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp325 = tmp325
	this.Reserved = tmp325
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/named_color_2_type/seq/0")
	}
	tmp326, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.VendorSpecificFlag = uint32(tmp326)
	tmp327, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.CountOfNamedColours = uint32(tmp327)
	tmp328, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfDeviceCoordinatesForEachNamedColour = uint32(tmp328)
	tmp329, err := this._io.ReadBytesTerm(0, false, true, true)
	if err != nil {
		return err
	}
	this.PrefixForEachColourName = string(tmp329)
	for i := 0; i < int(32 - utf8.RuneCountInString(this.PrefixForEachColourName)); i++ {
		_ = i
		tmp330, err := this._io.ReadBytes(int(1))
		if err != nil {
			return err
		}
		tmp330 = tmp330
		this.PrefixForEachColourNamePadding = append(this.PrefixForEachColourNamePadding, tmp330)
		if !(bytes.Equal(this.PrefixForEachColourNamePadding[i], []uint8{0})) {
			return kaitai.NewValidationNotEqualError([]uint8{0}, this.PrefixForEachColourNamePadding[i], this._io, "/types/tag_table/types/tag_definition/types/named_color_2_type/seq/5")
		}
	}
	tmp331, err := this._io.ReadBytesTerm(0, false, true, true)
	if err != nil {
		return err
	}
	this.SuffixForEachColourName = string(tmp331)
	for i := 0; i < int(32 - utf8.RuneCountInString(this.SuffixForEachColourName)); i++ {
		_ = i
		tmp332, err := this._io.ReadBytes(int(1))
		if err != nil {
			return err
		}
		tmp332 = tmp332
		this.SuffixForEachColourNamePadding = append(this.SuffixForEachColourNamePadding, tmp332)
		if !(bytes.Equal(this.SuffixForEachColourNamePadding[i], []uint8{0})) {
			return kaitai.NewValidationNotEqualError([]uint8{0}, this.SuffixForEachColourNamePadding[i], this._io, "/types/tag_table/types/tag_definition/types/named_color_2_type/seq/7")
		}
	}
	for i := 0; i < int(this.CountOfNamedColours); i++ {
		_ = i
		tmp333 := NewIcc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition()
		err = tmp333.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.NamedColourDefinitions = append(this.NamedColourDefinitions, tmp333)
	}
	return err
}
type Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition struct {
	RootName string
	RootNamePadding [][]byte
	PcsCoordinates []byte
	DeviceCoordinates []uint16
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_NamedColor2Type
}
func NewIcc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition() *Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition {
	return &Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition{
	}
}

func (this Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_NamedColor2Type_NamedColourDefinition) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_NamedColor2Type, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp334, err := this._io.ReadBytesTerm(0, false, true, true)
	if err != nil {
		return err
	}
	this.RootName = string(tmp334)
	for i := 0; i < int(32 - utf8.RuneCountInString(this.RootName)); i++ {
		_ = i
		tmp335, err := this._io.ReadBytes(int(1))
		if err != nil {
			return err
		}
		tmp335 = tmp335
		this.RootNamePadding = append(this.RootNamePadding, tmp335)
		if !(bytes.Equal(this.RootNamePadding[i], []uint8{0})) {
			return kaitai.NewValidationNotEqualError([]uint8{0}, this.RootNamePadding[i], this._io, "/types/tag_table/types/tag_definition/types/named_color_2_type/types/named_colour_definition/seq/1")
		}
	}
	tmp336, err := this._io.ReadBytes(int(6))
	if err != nil {
		return err
	}
	tmp336 = tmp336
	this.PcsCoordinates = tmp336
	if (this._parent.NumberOfDeviceCoordinatesForEachNamedColour > 0) {
		for i := 0; i < int(this._parent.NumberOfDeviceCoordinatesForEachNamedColour); i++ {
			_ = i
			tmp337, err := this._io.ReadU2be()
			if err != nil {
				return err
			}
			this.DeviceCoordinates = append(this.DeviceCoordinates, tmp337)
		}
	}
	return err
}
type Icc4_TagTable_TagDefinition_OutputResponseTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ResponseCurveSet16Type
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_OutputResponseTag() *Icc4_TagTable_TagDefinition_OutputResponseTag {
	return &Icc4_TagTable_TagDefinition_OutputResponseTag{
	}
}

func (this Icc4_TagTable_TagDefinition_OutputResponseTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_OutputResponseTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp338, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp338)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ResponseCurveSet16Type:
		tmp339 := NewIcc4_TagTable_TagDefinition_ResponseCurveSet16Type()
		err = tmp339.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp339
	}
	return err
}

type Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions int
const (
	Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__YEqualsXToPowerOfG Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = 0
	Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Cie1221996 Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = 1
	Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Iec619663 Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = 2
	Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Iec6196621 Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = 3
	Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__YEqualsObAxPlusBCbToPowerOfGPlusC Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = 4
)
var values_Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions = map[Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions]struct{}{0: {}, 1: {}, 2: {}, 3: {}, 4: {}}
func (v Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions) isDefined() bool {
	_, ok := values_Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions[v]
	return ok
}
type Icc4_TagTable_TagDefinition_ParametricCurveType struct {
	Reserved []byte
	FunctionType Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions
	Reserved2 []byte
	Parameters kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType() *Icc4_TagTable_TagDefinition_ParametricCurveType {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp340, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp340 = tmp340
	this.Reserved = tmp340
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/parametric_curve_type/seq/0")
	}
	tmp341, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.FunctionType = Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions(tmp341)
	tmp342, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp342 = tmp342
	this.Reserved2 = tmp342
	if !(bytes.Equal(this.Reserved2, []uint8{0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0}, this.Reserved2, this._io, "/types/tag_table/types/tag_definition/types/parametric_curve_type/seq/2")
	}
	switch (this.FunctionType) {
	case Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Cie1221996:
		tmp343 := NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996()
		err = tmp343.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Parameters = tmp343
	case Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Iec6196621:
		tmp344 := NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621()
		err = tmp344.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Parameters = tmp344
	case Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__Iec619663:
		tmp345 := NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663()
		err = tmp345.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Parameters = tmp345
	case Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__YEqualsObAxPlusBCbToPowerOfGPlusC:
		tmp346 := NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC()
		err = tmp346.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Parameters = tmp346
	case Icc4_TagTable_TagDefinition_ParametricCurveType_ParametricCurveTypeFunctions__YEqualsXToPowerOfG:
		tmp347 := NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG()
		err = tmp347.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Parameters = tmp347
	}
	return err
}
type Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996 struct {
	G int32
	A int32
	B int32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ParametricCurveType
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996() *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996 {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsCie1221996) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ParametricCurveType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp348, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.G = int32(tmp348)
	tmp349, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.A = int32(tmp349)
	tmp350, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.B = int32(tmp350)
	return err
}
type Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621 struct {
	G int32
	A int32
	B int32
	C int32
	D int32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ParametricCurveType
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621() *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621 {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec6196621) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ParametricCurveType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp351, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.G = int32(tmp351)
	tmp352, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.A = int32(tmp352)
	tmp353, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.B = int32(tmp353)
	tmp354, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.C = int32(tmp354)
	tmp355, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.D = int32(tmp355)
	return err
}
type Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663 struct {
	G int32
	A int32
	B int32
	C int32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ParametricCurveType
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663() *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663 {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsIec619663) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ParametricCurveType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp356, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.G = int32(tmp356)
	tmp357, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.A = int32(tmp357)
	tmp358, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.B = int32(tmp358)
	tmp359, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.C = int32(tmp359)
	return err
}
type Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC struct {
	G int32
	A int32
	B int32
	C int32
	D int32
	E int32
	F int32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ParametricCurveType
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC() *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsObAxPlusBCbToPowerOfGPlusC) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ParametricCurveType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp360, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.G = int32(tmp360)
	tmp361, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.A = int32(tmp361)
	tmp362, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.B = int32(tmp362)
	tmp363, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.C = int32(tmp363)
	tmp364, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.D = int32(tmp364)
	tmp365, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.E = int32(tmp365)
	tmp366, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.F = int32(tmp366)
	return err
}
type Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG struct {
	G int32
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ParametricCurveType
}
func NewIcc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG() *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG {
	return &Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG{
	}
}

func (this Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ParametricCurveType_ParamsYEqualsXToPowerOfG) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ParametricCurveType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp367, err := this._io.ReadS4be()
	if err != nil {
		return err
	}
	this.G = int32(tmp367)
	return err
}
type Icc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_SignatureType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag() *Icc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag {
	return &Icc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag{
	}
}

func (this Icc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_PerceptualRenderingIntentGamutTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp368, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp368)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__SignatureType:
		tmp369 := NewIcc4_TagTable_TagDefinition_SignatureType()
		err = tmp369.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp369
	}
	return err
}
type Icc4_TagTable_TagDefinition_Preview0Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_Preview0Tag() *Icc4_TagTable_TagDefinition_Preview0Tag {
	return &Icc4_TagTable_TagDefinition_Preview0Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_Preview0Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_Preview0Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp370, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp370)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionAToBTableType:
		tmp371 := NewIcc4_TagTable_TagDefinition_LutAToBType()
		err = tmp371.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp371
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp372 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp372.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp372
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp373 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp373.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp373
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp374 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp374.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp374
	}
	return err
}
type Icc4_TagTable_TagDefinition_Preview1Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_Preview1Tag() *Icc4_TagTable_TagDefinition_Preview1Tag {
	return &Icc4_TagTable_TagDefinition_Preview1Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_Preview1Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_Preview1Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp375, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp375)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp376 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp376.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp376
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp377 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp377.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp377
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp378 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp378.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp378
	}
	return err
}
type Icc4_TagTable_TagDefinition_Preview2Tag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_Preview2Tag() *Icc4_TagTable_TagDefinition_Preview2Tag {
	return &Icc4_TagTable_TagDefinition_Preview2Tag{
	}
}

func (this Icc4_TagTable_TagDefinition_Preview2Tag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_Preview2Tag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp379, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp379)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionBToATableType:
		tmp380 := NewIcc4_TagTable_TagDefinition_LutBToAType()
		err = tmp380.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp380
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithOneBytePrecisionType:
		tmp381 := NewIcc4_TagTable_TagDefinition_Lut8Type()
		err = tmp381.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp381
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiFunctionTableWithTwoBytePrecisionType:
		tmp382 := NewIcc4_TagTable_TagDefinition_Lut16Type()
		err = tmp382.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp382
	}
	return err
}
type Icc4_TagTable_TagDefinition_ProfileDescriptionTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ProfileDescriptionTag() *Icc4_TagTable_TagDefinition_ProfileDescriptionTag {
	return &Icc4_TagTable_TagDefinition_ProfileDescriptionTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileDescriptionTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileDescriptionTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp383, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp383)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType:
		tmp384 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
		err = tmp384.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp384
	}
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceDescType struct {
	Reserved []byte
	NumberOfDescriptionStructures uint32
	ProfileDescriptions []*Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ProfileSequenceTag
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceDescType() *Icc4_TagTable_TagDefinition_ProfileSequenceDescType {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceDescType{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceDescType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceDescType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ProfileSequenceTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp385, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp385 = tmp385
	this.Reserved = tmp385
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/profile_sequence_desc_type/seq/0")
	}
	tmp386, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfDescriptionStructures = uint32(tmp386)
	for i := 0; i < int(this.NumberOfDescriptionStructures); i++ {
		_ = i
		tmp387 := NewIcc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription()
		err = tmp387.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.ProfileDescriptions = append(this.ProfileDescriptions, tmp387)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription struct {
	DeviceManufacturer *Icc4_DeviceManufacturer
	DeviceModel string
	DeviceAttributes *Icc4_DeviceAttributes
	DeviceTechnology *Icc4_TagTable_TagDefinition_TechnologyTag
	DescriptionOfDeviceManufacturer *Icc4_TagTable_TagDefinition_DeviceMfgDescTag
	DescriptionOfDeviceModel *Icc4_TagTable_TagDefinition_DeviceModelDescTag
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ProfileSequenceDescType
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription() *Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceDescType_ProfileDescription) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ProfileSequenceDescType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp388 := NewIcc4_DeviceManufacturer()
	err = tmp388.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DeviceManufacturer = tmp388
	tmp389, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp389 = tmp389
	this.DeviceModel = string(tmp389)
	tmp390 := NewIcc4_DeviceAttributes()
	err = tmp390.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DeviceAttributes = tmp390
	tmp391 := NewIcc4_TagTable_TagDefinition_TechnologyTag()
	err = tmp391.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DeviceTechnology = tmp391
	tmp392 := NewIcc4_TagTable_TagDefinition_DeviceMfgDescTag()
	err = tmp392.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DescriptionOfDeviceManufacturer = tmp392
	tmp393 := NewIcc4_TagTable_TagDefinition_DeviceModelDescTag()
	err = tmp393.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.DescriptionOfDeviceModel = tmp393
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag() *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp394, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp394)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ProfileSequenceIdentifierType:
		tmp395 := NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierType()
		err = tmp395.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp395
	}
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType struct {
	Reserved []byte
	NumberOfStructures uint32
	PositionsTable []*Icc4_PositionNumber
	ProfileIdentifiers []*Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierType() *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp396, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp396 = tmp396
	this.Reserved = tmp396
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/profile_sequence_identifier_type/seq/0")
	}
	tmp397, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.NumberOfStructures = uint32(tmp397)
	for i := 0; i < int(this.NumberOfStructures); i++ {
		_ = i
		tmp398 := NewIcc4_PositionNumber()
		err = tmp398.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.PositionsTable = append(this.PositionsTable, tmp398)
	}
	for i := 0; i < int(this.NumberOfStructures); i++ {
		_ = i
		tmp399 := NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier()
		err = tmp399.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.ProfileIdentifiers = append(this.ProfileIdentifiers, tmp399)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier struct {
	ProfileId []byte
	ProfileDescription *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier() *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType_ProfileIdentifier) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ProfileSequenceIdentifierType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp400, err := this._io.ReadBytes(int(16))
	if err != nil {
		return err
	}
	tmp400 = tmp400
	this.ProfileId = tmp400
	tmp401 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
	err = tmp401.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.ProfileDescription = tmp401
	return err
}
type Icc4_TagTable_TagDefinition_ProfileSequenceTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ProfileSequenceDescType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ProfileSequenceTag() *Icc4_TagTable_TagDefinition_ProfileSequenceTag {
	return &Icc4_TagTable_TagDefinition_ProfileSequenceTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ProfileSequenceTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ProfileSequenceTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp402, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp402)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ProfileSequenceDescType:
		tmp403 := NewIcc4_TagTable_TagDefinition_ProfileSequenceDescType()
		err = tmp403.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp403
	}
	return err
}
type Icc4_TagTable_TagDefinition_RedMatrixColumnTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_XyzType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_RedMatrixColumnTag() *Icc4_TagTable_TagDefinition_RedMatrixColumnTag {
	return &Icc4_TagTable_TagDefinition_RedMatrixColumnTag{
	}
}

func (this Icc4_TagTable_TagDefinition_RedMatrixColumnTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_RedMatrixColumnTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp404, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp404)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__XyzType:
		tmp405 := NewIcc4_TagTable_TagDefinition_XyzType()
		err = tmp405.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp405
	}
	return err
}
type Icc4_TagTable_TagDefinition_RedTrcTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData kaitai.Struct
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_RedTrcTag() *Icc4_TagTable_TagDefinition_RedTrcTag {
	return &Icc4_TagTable_TagDefinition_RedTrcTag{
	}
}

func (this Icc4_TagTable_TagDefinition_RedTrcTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_RedTrcTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp406, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp406)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__CurveType:
		tmp407 := NewIcc4_TagTable_TagDefinition_CurveType()
		err = tmp407.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp407
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ParametricCurveType:
		tmp408 := NewIcc4_TagTable_TagDefinition_ParametricCurveType()
		err = tmp408.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp408
	}
	return err
}
type Icc4_TagTable_TagDefinition_ResponseCurveSet16Type struct {
	Reserved []byte
	NumberOfChannels uint16
	CountOfMeasurementTypes uint16
	ResponseCurveStructureOffsets []uint32
	ResponseCurveStructures []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_OutputResponseTag
}
func NewIcc4_TagTable_TagDefinition_ResponseCurveSet16Type() *Icc4_TagTable_TagDefinition_ResponseCurveSet16Type {
	return &Icc4_TagTable_TagDefinition_ResponseCurveSet16Type{
	}
}

func (this Icc4_TagTable_TagDefinition_ResponseCurveSet16Type) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ResponseCurveSet16Type) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_OutputResponseTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp409, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp409 = tmp409
	this.Reserved = tmp409
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/response_curve_set_16_type/seq/0")
	}
	tmp410, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.NumberOfChannels = uint16(tmp410)
	tmp411, err := this._io.ReadU2be()
	if err != nil {
		return err
	}
	this.CountOfMeasurementTypes = uint16(tmp411)
	for i := 0; i < int(this.CountOfMeasurementTypes); i++ {
		_ = i
		tmp412, err := this._io.ReadU4be()
		if err != nil {
			return err
		}
		this.ResponseCurveStructureOffsets = append(this.ResponseCurveStructureOffsets, tmp412)
	}
	tmp413, err := this._io.ReadBytesFull()
	if err != nil {
		return err
	}
	tmp413 = tmp413
	this.ResponseCurveStructures = tmp413
	return err
}
type Icc4_TagTable_TagDefinition_S15Fixed16ArrayType struct {
	Reserved []byte
	Values []*Icc4_S15Fixed16Number
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ChromaticAdaptationTag
}
func NewIcc4_TagTable_TagDefinition_S15Fixed16ArrayType() *Icc4_TagTable_TagDefinition_S15Fixed16ArrayType {
	return &Icc4_TagTable_TagDefinition_S15Fixed16ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_S15Fixed16ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_S15Fixed16ArrayType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ChromaticAdaptationTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp414, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp414 = tmp414
	this.Reserved = tmp414
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/s_15_fixed_16_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp415, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp415 {
			break
		}
		tmp416 := NewIcc4_S15Fixed16Number()
		err = tmp416.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp416)
	}
	return err
}
type Icc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_SignatureType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag() *Icc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag {
	return &Icc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag{
	}
}

func (this Icc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_SaturationRenderingIntentGamutTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp417, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp417)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__SignatureType:
		tmp418 := NewIcc4_TagTable_TagDefinition_SignatureType()
		err = tmp418.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp418
	}
	return err
}
type Icc4_TagTable_TagDefinition_SignatureType struct {
	Reserved []byte
	Signature string
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_SignatureType() *Icc4_TagTable_TagDefinition_SignatureType {
	return &Icc4_TagTable_TagDefinition_SignatureType{
	}
}

func (this Icc4_TagTable_TagDefinition_SignatureType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_SignatureType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp419, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp419 = tmp419
	this.Reserved = tmp419
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/signature_type/seq/0")
	}
	tmp420, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp420 = tmp420
	this.Signature = string(tmp420)
	return err
}
type Icc4_TagTable_TagDefinition_TechnologyTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_SignatureType
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_TechnologyTag() *Icc4_TagTable_TagDefinition_TechnologyTag {
	return &Icc4_TagTable_TagDefinition_TechnologyTag{
	}
}

func (this Icc4_TagTable_TagDefinition_TechnologyTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_TechnologyTag) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp421, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp421)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__SignatureType:
		tmp422 := NewIcc4_TagTable_TagDefinition_SignatureType()
		err = tmp422.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp422
	}
	return err
}
type Icc4_TagTable_TagDefinition_TextType struct {
	Reserved []byte
	Value string
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_CharTargetTag
}
func NewIcc4_TagTable_TagDefinition_TextType() *Icc4_TagTable_TagDefinition_TextType {
	return &Icc4_TagTable_TagDefinition_TextType{
	}
}

func (this Icc4_TagTable_TagDefinition_TextType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_TextType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_CharTargetTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp423, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp423 = tmp423
	this.Reserved = tmp423
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/text_type/seq/0")
	}
	tmp424, err := this._io.ReadBytesFull()
	if err != nil {
		return err
	}
	tmp424 = kaitai.BytesTerminate(tmp424, 0, false)
	this.Value = string(tmp424)
	return err
}
type Icc4_TagTable_TagDefinition_U16Fixed16ArrayType struct {
	Reserved []byte
	Values []*Icc4_U16Fixed16Number
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_U16Fixed16ArrayType() *Icc4_TagTable_TagDefinition_U16Fixed16ArrayType {
	return &Icc4_TagTable_TagDefinition_U16Fixed16ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_U16Fixed16ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_U16Fixed16ArrayType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp425, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp425 = tmp425
	this.Reserved = tmp425
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/u_16_fixed_16_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp426, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp426 {
			break
		}
		tmp427 := NewIcc4_U16Fixed16Number()
		err = tmp427.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp427)
	}
	return err
}
type Icc4_TagTable_TagDefinition_UInt16ArrayType struct {
	Reserved []byte
	Values []uint16
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_UInt16ArrayType() *Icc4_TagTable_TagDefinition_UInt16ArrayType {
	return &Icc4_TagTable_TagDefinition_UInt16ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_UInt16ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_UInt16ArrayType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp428, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp428 = tmp428
	this.Reserved = tmp428
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/u_int_16_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp429, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp429 {
			break
		}
		tmp430, err := this._io.ReadU2be()
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp430)
	}
	return err
}
type Icc4_TagTable_TagDefinition_UInt32ArrayType struct {
	Reserved []byte
	Values []uint32
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_UInt32ArrayType() *Icc4_TagTable_TagDefinition_UInt32ArrayType {
	return &Icc4_TagTable_TagDefinition_UInt32ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_UInt32ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_UInt32ArrayType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp431, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp431 = tmp431
	this.Reserved = tmp431
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/u_int_32_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp432, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp432 {
			break
		}
		tmp433, err := this._io.ReadU4be()
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp433)
	}
	return err
}
type Icc4_TagTable_TagDefinition_UInt64ArrayType struct {
	Reserved []byte
	Values []uint64
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_UInt64ArrayType() *Icc4_TagTable_TagDefinition_UInt64ArrayType {
	return &Icc4_TagTable_TagDefinition_UInt64ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_UInt64ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_UInt64ArrayType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp434, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp434 = tmp434
	this.Reserved = tmp434
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/u_int_64_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp435, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp435 {
			break
		}
		tmp436, err := this._io.ReadU8be()
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp436)
	}
	return err
}
type Icc4_TagTable_TagDefinition_UInt8ArrayType struct {
	Reserved []byte
	Values []uint8
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_UInt8ArrayType() *Icc4_TagTable_TagDefinition_UInt8ArrayType {
	return &Icc4_TagTable_TagDefinition_UInt8ArrayType{
	}
}

func (this Icc4_TagTable_TagDefinition_UInt8ArrayType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_UInt8ArrayType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp437, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp437 = tmp437
	this.Reserved = tmp437
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/u_int_8_array_type/seq/0")
	}
	for i := 0;; i++ {
		tmp438, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp438 {
			break
		}
		tmp439, err := this._io.ReadU1()
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp439)
	}
	return err
}
type Icc4_TagTable_TagDefinition_ViewingCondDescTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_MultiLocalizedUnicodeType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ViewingCondDescTag() *Icc4_TagTable_TagDefinition_ViewingCondDescTag {
	return &Icc4_TagTable_TagDefinition_ViewingCondDescTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ViewingCondDescTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ViewingCondDescTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp440, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp440)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__MultiLocalizedUnicodeType:
		tmp441 := NewIcc4_TagTable_TagDefinition_MultiLocalizedUnicodeType()
		err = tmp441.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp441
	}
	return err
}
type Icc4_TagTable_TagDefinition_ViewingConditionsTag struct {
	TagType Icc4_TagTable_TagDefinition_TagTypeSignatures
	TagData *Icc4_TagTable_TagDefinition_ViewingConditionsType
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition
}
func NewIcc4_TagTable_TagDefinition_ViewingConditionsTag() *Icc4_TagTable_TagDefinition_ViewingConditionsTag {
	return &Icc4_TagTable_TagDefinition_ViewingConditionsTag{
	}
}

func (this Icc4_TagTable_TagDefinition_ViewingConditionsTag) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ViewingConditionsTag) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp442, err := this._io.ReadU4be()
	if err != nil {
		return err
	}
	this.TagType = Icc4_TagTable_TagDefinition_TagTypeSignatures(tmp442)
	switch (this.TagType) {
	case Icc4_TagTable_TagDefinition_TagTypeSignatures__ViewingConditionsType:
		tmp443 := NewIcc4_TagTable_TagDefinition_ViewingConditionsType()
		err = tmp443.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.TagData = tmp443
	}
	return err
}
type Icc4_TagTable_TagDefinition_ViewingConditionsType struct {
	Reserved []byte
	UnNormalizedCiexyzValuesForIlluminant *Icc4_XyzNumber
	UnNormalizedCiexyzValuesForSurround *Icc4_XyzNumber
	IlluminantType *Icc4_StandardIlluminantEncoding
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_ViewingConditionsTag
}
func NewIcc4_TagTable_TagDefinition_ViewingConditionsType() *Icc4_TagTable_TagDefinition_ViewingConditionsType {
	return &Icc4_TagTable_TagDefinition_ViewingConditionsType{
	}
}

func (this Icc4_TagTable_TagDefinition_ViewingConditionsType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_ViewingConditionsType) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_ViewingConditionsTag, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp444, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp444 = tmp444
	this.Reserved = tmp444
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/viewing_conditions_type/seq/0")
	}
	tmp445 := NewIcc4_XyzNumber()
	err = tmp445.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.UnNormalizedCiexyzValuesForIlluminant = tmp445
	tmp446 := NewIcc4_XyzNumber()
	err = tmp446.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.UnNormalizedCiexyzValuesForSurround = tmp446
	tmp447 := NewIcc4_StandardIlluminantEncoding()
	err = tmp447.Read(this._io, this, this._root)
	if err != nil {
		return err
	}
	this.IlluminantType = tmp447
	return err
}
type Icc4_TagTable_TagDefinition_XyzType struct {
	Reserved []byte
	Values []*Icc4_XyzNumber
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_TagTable_TagDefinition_XyzType() *Icc4_TagTable_TagDefinition_XyzType {
	return &Icc4_TagTable_TagDefinition_XyzType{
	}
}

func (this Icc4_TagTable_TagDefinition_XyzType) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_TagTable_TagDefinition_XyzType) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp448, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp448 = tmp448
	this.Reserved = tmp448
	if !(bytes.Equal(this.Reserved, []uint8{0, 0, 0, 0})) {
		return kaitai.NewValidationNotEqualError([]uint8{0, 0, 0, 0}, this.Reserved, this._io, "/types/tag_table/types/tag_definition/types/xyz_type/seq/0")
	}
	for i := 0;; i++ {
		tmp449, err := this._io.EOF()
		if err != nil {
			return err
		}
		if tmp449 {
			break
		}
		tmp450 := NewIcc4_XyzNumber()
		err = tmp450.Read(this._io, this, this._root)
		if err != nil {
			return err
		}
		this.Values = append(this.Values, tmp450)
	}
	return err
}
type Icc4_U16Fixed16Number struct {
	Number []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent *Icc4_TagTable_TagDefinition_U16Fixed16ArrayType
}
func NewIcc4_U16Fixed16Number() *Icc4_U16Fixed16Number {
	return &Icc4_U16Fixed16Number{
	}
}

func (this Icc4_U16Fixed16Number) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_U16Fixed16Number) Read(io *kaitai.Stream, parent *Icc4_TagTable_TagDefinition_U16Fixed16ArrayType, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp451, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp451 = tmp451
	this.Number = tmp451
	return err
}
type Icc4_U1Fixed15Number struct {
	Number []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_U1Fixed15Number() *Icc4_U1Fixed15Number {
	return &Icc4_U1Fixed15Number{
	}
}

func (this Icc4_U1Fixed15Number) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_U1Fixed15Number) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp452, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp452 = tmp452
	this.Number = tmp452
	return err
}
type Icc4_U8Fixed8Number struct {
	Number []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_U8Fixed8Number() *Icc4_U8Fixed8Number {
	return &Icc4_U8Fixed8Number{
	}
}

func (this Icc4_U8Fixed8Number) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_U8Fixed8Number) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp453, err := this._io.ReadBytes(int(2))
	if err != nil {
		return err
	}
	tmp453 = tmp453
	this.Number = tmp453
	return err
}
type Icc4_XyzNumber struct {
	X []byte
	Y []byte
	Z []byte
	_io *kaitai.Stream
	_root *Icc4
	_parent kaitai.Struct
}
func NewIcc4_XyzNumber() *Icc4_XyzNumber {
	return &Icc4_XyzNumber{
	}
}

func (this Icc4_XyzNumber) IO_() *kaitai.Stream {
	return this._io
}

func (this *Icc4_XyzNumber) Read(io *kaitai.Stream, parent kaitai.Struct, root *Icc4) (err error) {
	this._io = io
	this._parent = parent
	this._root = root

	tmp454, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp454 = tmp454
	this.X = tmp454
	tmp455, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp455 = tmp455
	this.Y = tmp455
	tmp456, err := this._io.ReadBytes(int(4))
	if err != nil {
		return err
	}
	tmp456 = tmp456
	this.Z = tmp456
	return err
}