diff --git a/go.mod b/go.mod index 7c0041d91d..4824708a35 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/openshift/operator-framework-olm -go 1.24.3 +go 1.24.4 require ( github.com/blang/semver/v4 v4.0.0 @@ -9,11 +9,11 @@ require ( github.com/golang/mock v1.6.0 github.com/googleapis/gnostic v0.5.5 github.com/grpc-ecosystem/grpc-health-probe v0.4.39 - github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2 + github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 github.com/mikefarah/yq/v3 v3.0.0-20201202084205-8846255d1c37 github.com/onsi/ginkgo/v2 v2.23.4 github.com/openshift/api v3.9.0+incompatible - github.com/operator-framework/api v0.32.0 + github.com/operator-framework/api v0.33.0 github.com/operator-framework/operator-lifecycle-manager v0.0.0-00010101000000-000000000000 github.com/operator-framework/operator-registry v1.56.0 github.com/sirupsen/logrus v1.9.3 @@ -51,7 +51,6 @@ require ( github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect github.com/akrylysov/pogreb v0.10.2 // indirect github.com/antlr4-go/antlr/v4 v4.13.1 // indirect - github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v5 v5.0.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -66,16 +65,16 @@ require ( github.com/containerd/ttrpc v1.2.7 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/common v0.63.1 // indirect - github.com/containers/image/v5 v5.35.0 // indirect + github.com/containers/image/v5 v5.36.1 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.2.1 // indirect - github.com/containers/storage v1.58.0 // indirect + github.com/containers/storage v1.59.1 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/cyberphone/json-canonicalization v0.0.0-20241213102144-19d51d7fe467 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v28.3.1+incompatible // indirect + github.com/docker/cli v28.3.2+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker v28.3.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.3 // indirect @@ -95,16 +94,9 @@ require ( github.com/go-jose/go-jose/v4 v4.1.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-logr/zapr v1.3.0 // indirect - github.com/go-openapi/analysis v0.23.0 // indirect - github.com/go-openapi/errors v0.22.1 // indirect github.com/go-openapi/jsonpointer v0.21.1 // indirect github.com/go-openapi/jsonreference v0.21.0 // indirect - github.com/go-openapi/loads v0.22.0 // indirect - github.com/go-openapi/runtime v0.28.0 // indirect - github.com/go-openapi/spec v0.21.0 // indirect - github.com/go-openapi/strfmt v0.23.0 // indirect github.com/go-openapi/swag v0.23.1 // indirect - github.com/go-openapi/validate v0.24.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gobuffalo/flect v1.0.3 // indirect github.com/goccy/go-yaml v1.11.0 // indirect @@ -113,7 +105,7 @@ require ( github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/cel-go v0.25.0 // indirect + github.com/google/cel-go v0.26.0 // indirect github.com/google/gnostic-models v0.6.9 // indirect github.com/google/go-cmp v0.7.0 // indirect github.com/google/go-containerregistry v0.20.6 // indirect @@ -160,7 +152,6 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect - github.com/oklog/ulid v1.3.1 // indirect github.com/onsi/gomega v1.38.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect @@ -171,7 +162,7 @@ require ( github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/proglottis/gpgme v0.1.4 // indirect - github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_golang v1.23.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.65.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect @@ -180,7 +171,6 @@ require ( github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect github.com/sigstore/fulcio v1.7.1 // indirect github.com/sigstore/protobuf-specs v0.4.3 // indirect - github.com/sigstore/rekor v1.3.10 // indirect github.com/sigstore/sigstore v1.9.5 // indirect github.com/smallstep/pkcs7 v0.2.1 // indirect github.com/spf13/pflag v1.0.7 // indirect @@ -198,7 +188,6 @@ require ( go.etcd.io/etcd/api/v3 v3.5.21 // indirect go.etcd.io/etcd/client/pkg/v3 v3.5.21 // indirect go.etcd.io/etcd/client/v3 v3.5.21 // indirect - go.mongodb.org/mongo-driver v1.17.4 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect @@ -214,18 +203,19 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.40.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/lint v0.0.0-20241112194109-818c5a804067 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.42.0 // indirect + golang.org/x/mod v0.26.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect - golang.org/x/text v0.27.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/tools v0.35.0 // indirect + golang.org/x/tools/go/expect v0.1.1-deprecated // indirect golang.org/x/xerrors v0.0.0-20240716161551-93cc26a95ae9 // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect diff --git a/go.sum b/go.sum index fbc4ae622f..29d7db2fe1 100644 --- a/go.sum +++ b/go.sum @@ -1307,8 +1307,8 @@ cloud.google.com/go/workflows v1.12.1/go.mod h1:5A95OhD/edtOhQd/O741NSfIMezNTbCw cloud.google.com/go/workflows v1.12.2/go.mod h1:+OmBIgNqYJPVggnMo9nqmizW0qEXHhmnAzK/CnBqsHc= cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= cloud.google.com/go/workflows v1.12.4/go.mod h1:yQ7HUqOkdJK4duVtMeBCAOPiN1ZF1E9pAMX51vpwB/w= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= @@ -1375,8 +1375,6 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -1435,14 +1433,14 @@ github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++ github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containers/common v0.63.1 h1:6g02gbW34PaRVH4Heb2Pk11x0SdbQ+8AfeKKeQGqYBE= github.com/containers/common v0.63.1/go.mod h1:+3GCotSqNdIqM3sPs152VvW7m5+Mg8Kk+PExT3G9hZw= -github.com/containers/image/v5 v5.35.0 h1:T1OeyWp3GjObt47bchwD9cqiaAm/u4O4R9hIWdrdrP8= -github.com/containers/image/v5 v5.35.0/go.mod h1:8vTsgb+1gKcBL7cnjyNOInhJQfTUQjJoO2WWkKDoebM= +github.com/containers/image/v5 v5.36.1 h1:6zpXBqR59UcAzoKpa/By5XekeqFV+htWYfr65+Cgjqo= +github.com/containers/image/v5 v5.36.1/go.mod h1:b4GMKH2z/5t6/09utbse2ZiLK/c72GuGLFdp7K69eA4= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM= github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ= -github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc= -github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo= +github.com/containers/storage v1.59.1 h1:11Zu68MXsEQGBBd+GadPrHPpWeqjKS8hJDGiAHgIqDs= +github.com/containers/storage v1.59.1/go.mod h1:KoAYHnAjP3/cTsRS+mmWZGkufSY2GACiKQ4V3ZLQnR0= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -1471,8 +1469,8 @@ github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN github.com/distribution/distribution/v3 v3.0.0/go.mod h1:tRNuFoZsUdyRVegq8xGNeds4KLjwLCRin/tTo6i1DhU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.3.1+incompatible h1:ZUdwOLDEBoE3TE5rdC9IXGY5HPHksJK3M+hJEWhh2mc= -github.com/docker/cli v28.3.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.3.2+incompatible h1:mOt9fcLE7zaACbxW1GeS65RI67wIJrTnqS3hP2huFsY= +github.com/docker/cli v28.3.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= @@ -1575,10 +1573,6 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= -github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU= -github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= @@ -1589,24 +1583,14 @@ github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwoh github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= -github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= -github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= -github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= -github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= -github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= -github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -1938,8 +1922,8 @@ github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2 h1:yVCLo4+ACVroOEr4iFU1iH46Ldlzz2rTuu18Ra7M8sU= -github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2/go.mod h1:VzB2VoMh1Y32/QqDfg9ZJYHj99oM4LiGtqPZydTiQSQ= +github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 h1:Eaq36EIyJNp7b3qDhjV7jmDVq/yPeW2v4pTqzGbOGB4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3/go.mod h1:6KKUoQBZBW6PDXJtNfqeEjPXMj/ITTk+cWK9t9uS5+E= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mikefarah/yq/v3 v3.0.0-20201202084205-8846255d1c37 h1:lPmsut5Sk7eK2BmDXuvNEvMbT7MkAJBu64Yxr7iJ6nk= @@ -1987,7 +1971,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+ github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -2039,8 +2022,8 @@ github.com/proglottis/gpgme v0.1.4/go.mod h1:5LoXMgpE4bttgwwdv9bLs/vwqv3qV7F4glE github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -2085,8 +2068,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= -github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8= github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM= github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc= @@ -2096,8 +2079,6 @@ github.com/sigstore/fulcio v1.7.1 h1:RcoW20Nz49IGeZyu3y9QYhyyV3ZKQ85T+FXPKkvE+aQ github.com/sigstore/fulcio v1.7.1/go.mod h1:7lYY+hsd8Dt+IvKQRC+KEhWpCZ/GlmNvwIa5JhypMS8= github.com/sigstore/protobuf-specs v0.4.3 h1:kRgJ+ciznipH9xhrkAbAEHuuxD3GhYnGC873gZpjJT4= github.com/sigstore/protobuf-specs v0.4.3/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= -github.com/sigstore/rekor v1.3.10 h1:/mSvRo4MZ/59ECIlARhyykAlQlkmeAQpvBPlmJtZOCU= -github.com/sigstore/rekor v1.3.10/go.mod h1:JvryKJ40O0XA48MdzYUPu0y4fyvqt0C4iSY7ri9iu3A= github.com/sigstore/sigstore v1.9.5 h1:Wm1LT9yF4LhQdEMy5A2JeGRHTrAWGjT3ubE5JUSrGVU= github.com/sigstore/sigstore v1.9.5/go.mod h1:VtxgvGqCmEZN9X2zhFSOkfXxvKUjpy8RpUW39oCtoII= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -2207,8 +2188,6 @@ go.etcd.io/etcd/raft/v3 v3.5.21 h1:dOmE0mT55dIUsX77TKBLq+RgyumsQuYeiRQnW/ylugk= go.etcd.io/etcd/raft/v3 v3.5.21/go.mod h1:fmcuY5R2SNkklU4+fKVBQi2biVp5vafMrWUEj4TJ4Cs= go.etcd.io/etcd/server/v3 v3.5.21 h1:9w0/k12majtgarGmlMVuhwXRI2ob3/d1Ik3X5TKo0yU= go.etcd.io/etcd/server/v3 v3.5.21/go.mod h1:G1mOzdwuzKT1VRL7SqRchli/qcFrtLBTAQ4lV20sXXo= -go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= -go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -2336,8 +2315,8 @@ golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2409,8 +2388,8 @@ golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2490,8 +2469,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2658,8 +2637,8 @@ golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -2682,8 +2661,8 @@ golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2708,8 +2687,8 @@ golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2795,8 +2774,12 @@ golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58 golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= +golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml b/manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml index a9ee8f4a51..dcecc07ea4 100644 --- a/manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml +++ b/manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml @@ -36,6 +36,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: olm-operator securityContext: @@ -49,6 +51,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/olm args: diff --git a/manifests/0000_50_olm_07-olm-operator.deployment.yaml b/manifests/0000_50_olm_07-olm-operator.deployment.yaml index 05bd24878d..eda39adc5f 100644 --- a/manifests/0000_50_olm_07-olm-operator.deployment.yaml +++ b/manifests/0000_50_olm_07-olm-operator.deployment.yaml @@ -35,6 +35,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: olm-operator securityContext: @@ -48,6 +50,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/olm args: diff --git a/manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml b/manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml index e646ea96cb..612fe28196 100644 --- a/manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml +++ b/manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml @@ -36,6 +36,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: catalog-operator securityContext: @@ -49,6 +51,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/catalog args: diff --git a/manifests/0000_50_olm_08-catalog-operator.deployment.yaml b/manifests/0000_50_olm_08-catalog-operator.deployment.yaml index e923733d8a..e883727237 100644 --- a/manifests/0000_50_olm_08-catalog-operator.deployment.yaml +++ b/manifests/0000_50_olm_08-catalog-operator.deployment.yaml @@ -35,6 +35,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: catalog-operator securityContext: @@ -48,6 +50,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/catalog args: diff --git a/microshift-manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml b/microshift-manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml index a9ee8f4a51..dcecc07ea4 100644 --- a/microshift-manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml +++ b/microshift-manifests/0000_50_olm_07-olm-operator.deployment.ibm-cloud-managed.yaml @@ -36,6 +36,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: olm-operator securityContext: @@ -49,6 +51,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/olm args: diff --git a/microshift-manifests/0000_50_olm_07-olm-operator.deployment.yaml b/microshift-manifests/0000_50_olm_07-olm-operator.deployment.yaml index 2e9c360d9d..e9a76baba5 100644 --- a/microshift-manifests/0000_50_olm_07-olm-operator.deployment.yaml +++ b/microshift-manifests/0000_50_olm_07-olm-operator.deployment.yaml @@ -35,6 +35,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: olm-operator securityContext: @@ -48,6 +50,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/olm args: diff --git a/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml b/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml index e646ea96cb..612fe28196 100644 --- a/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml +++ b/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.ibm-cloud-managed.yaml @@ -36,6 +36,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: catalog-operator securityContext: @@ -49,6 +51,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/catalog args: diff --git a/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.yaml b/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.yaml index e923733d8a..e883727237 100644 --- a/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.yaml +++ b/microshift-manifests/0000_50_olm_08-catalog-operator.deployment.yaml @@ -35,6 +35,8 @@ spec: - name: profile-collector-cert secret: secretName: pprof-cert + - name: tmpfs + emptyDir: {} containers: - name: catalog-operator securityContext: @@ -48,6 +50,8 @@ spec: - name: profile-collector-cert mountPath: "/profile-collector-cert" readOnly: true + - name: tmpfs + mountPath: /tmp command: - /bin/catalog args: diff --git a/staging/api/Makefile b/staging/api/Makefile index 53e606069b..400f8ef165 100644 --- a/staging/api/Makefile +++ b/staging/api/Makefile @@ -12,6 +12,8 @@ endif REPO = github.com/operator-framework/api BUILD_PATH = $(REPO)/cmd/operator-verify PKGS = $(shell go list ./... | grep -v /vendor/) +SPECIFIC_UNIT_TEST := $(if $(TEST),-run $(TEST),) +SPECIFIC_SKIP_UNIT_TEST := $(if $(SKIP),-skip $(SKIP),) .PHONY: help help: ## Show this help screen @@ -76,13 +78,15 @@ manifests: yq controller-gen ## Generate manifests e.g. CRD, RBAC etc $(Q)go generate ./crds/... # Static tests. -.PHONY: test test-unit verify +.PHONY: test test-unit verify unit test: test-unit ## Run the tests +unit: test-unit ## Run the tests + TEST_PKGS:=$(shell go list ./...) test-unit: ## Run the unit tests - $(Q)go test -count=1 -short ${TEST_PKGS} + $(Q)go test -coverprofile=coverage.out -count=1 ${SPECIFIC_UNIT_TEST} ${SPECIFIC_SKIP_UNIT_TEST} ${TEST_PKGS} verify: manifests generate format tidy git diff --exit-code @@ -104,7 +108,7 @@ YQ ?= $(LOCALBIN)/yq KIND ?= $(LOCALBIN)/kind ## Tool Versions -CONTROLLER_TOOLS_VERSION ?= v0.17.2 +CONTROLLER_TOOLS_VERSION ?= v0.18.0 YQ_VERSION ?= v4.45.1 # Not guaranteed to have patch releases available and node image tags are full versions (i.e v1.28.0 - no v1.28, v1.29, etc.) @@ -132,4 +136,4 @@ $(KIND): $(LOCALBIN) .PHONY: kind-cluster kind-cluster: kind ## Create a kind cluster $(KIND) create cluster --name olmv0 --image $(KIND_CLUSTER_IMAGE) - $(KIND) export kubeconfig --name olmv0 \ No newline at end of file + $(KIND) export kubeconfig --name olmv0 diff --git a/staging/api/crds/operators.coreos.com_catalogsources.yaml b/staging/api/crds/operators.coreos.com_catalogsources.yaml index b9128e41a7..f8924f9af4 100644 --- a/staging/api/crds/operators.coreos.com_catalogsources.yaml +++ b/staging/api/crds/operators.coreos.com_catalogsources.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: catalogsources.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml b/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml index 45a901bb65..20bb1a0394 100644 --- a/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml +++ b/staging/api/crds/operators.coreos.com_clusterserviceversions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: clusterserviceversions.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_installplans.yaml b/staging/api/crds/operators.coreos.com_installplans.yaml index 7367311e7a..f1a2a93126 100644 --- a/staging/api/crds/operators.coreos.com_installplans.yaml +++ b/staging/api/crds/operators.coreos.com_installplans.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: installplans.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_olmconfigs.yaml b/staging/api/crds/operators.coreos.com_olmconfigs.yaml index 904ac077d5..bbc232b2db 100644 --- a/staging/api/crds/operators.coreos.com_olmconfigs.yaml +++ b/staging/api/crds/operators.coreos.com_olmconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: olmconfigs.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_operatorconditions.yaml b/staging/api/crds/operators.coreos.com_operatorconditions.yaml index 50f87cf29b..9f5bee1690 100644 --- a/staging/api/crds/operators.coreos.com_operatorconditions.yaml +++ b/staging/api/crds/operators.coreos.com_operatorconditions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: operatorconditions.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_operatorgroups.yaml b/staging/api/crds/operators.coreos.com_operatorgroups.yaml index 7d865b059c..f19b3f8b23 100644 --- a/staging/api/crds/operators.coreos.com_operatorgroups.yaml +++ b/staging/api/crds/operators.coreos.com_operatorgroups.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: operatorgroups.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_operators.yaml b/staging/api/crds/operators.coreos.com_operators.yaml index 63571b9b1b..b869b63681 100644 --- a/staging/api/crds/operators.coreos.com_operators.yaml +++ b/staging/api/crds/operators.coreos.com_operators.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: operators.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/operators.coreos.com_subscriptions.yaml b/staging/api/crds/operators.coreos.com_subscriptions.yaml index 296b506861..c388b9181e 100644 --- a/staging/api/crds/operators.coreos.com_subscriptions.yaml +++ b/staging/api/crds/operators.coreos.com_subscriptions.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.17.2 + controller-gen.kubebuilder.io/version: v0.18.0 name: subscriptions.operators.coreos.com spec: group: operators.coreos.com diff --git a/staging/api/crds/zz_defs.go b/staging/api/crds/zz_defs.go index b92b3b6e27..50b1b0352a 100644 --- a/staging/api/crds/zz_defs.go +++ b/staging/api/crds/zz_defs.go @@ -85,7 +85,7 @@ func (fi bindataFileInfo) Sys() interface{} { return nil } -var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1c\xb7\xb1\xe8\x77\xfd\x0a\x94\xee\xa9\x12\xa9\xec\x2e\x25\xe7\x94\x93\x30\x8e\x5d\x0c\x25\xeb\xb2\xac\x07\x4b\xa4\x9d\xba\x51\x74\xaf\xb0\x33\xbd\xbb\x30\x67\x80\x31\x80\x21\xb9\x8e\xf3\xdf\x6f\xa1\x01\xcc\x63\x77\xe7\xc9\x97\xe4\x03\x7c\xb0\xc5\x9d\x19\x3c\x1a\xdd\x8d\x7e\x83\x66\xec\x27\x90\x8a\x09\x7e\x48\x68\xc6\xe0\x5a\x03\x37\x7f\xa9\xd9\xc5\x9f\xd5\x8c\x89\x83\xcb\xe7\x8f\x2e\x18\x8f\x0f\xc9\x71\xae\xb4\x48\xdf\x83\x12\xb9\x8c\xe0\x05\x2c\x18\x67\x9a\x09\xfe\x28\x05\x4d\x63\xaa\xe9\xe1\x23\x42\x28\xe7\x42\x53\xf3\xb3\x32\x7f\x12\x12\x09\xae\xa5\x48\x12\x90\xd3\x25\xf0\xd9\x45\x3e\x87\x79\xce\x92\x18\x24\x76\xee\x87\xbe\x7c\x36\x7b\xfe\xa7\xd9\x57\x8f\x08\xe1\x34\x85\x43\x12\x51\x4d\x13\xb1\xb4\x63\xa9\x99\xc8\x40\x52\x2d\xa4\x9a\x45\x42\x82\x30\xff\x4b\x1f\xa9\x0c\x22\x33\xc8\x52\x8a\x3c\x3b\x24\x3b\xdf\xb1\xfd\xf9\xb9\x50\x0d\x4b\x21\x99\xff\x9b\x90\x29\x11\x49\x8a\xff\x76\x6b\xb4\xc3\x9e\xe1\xb0\xf8\x7b\xc2\x94\xfe\x61\xfb\xd9\x6b\xa6\x34\x3e\xcf\x92\x5c\xd2\x64\x73\xc2\xf8\x48\xad\x84\xd4\x6f\xcb\xe1\xcd\x70\x11\xd5\x4a\x46\xf6\x31\xe3\xcb\x3c\xa1\x72\xe3\xdb\x47\x84\xa8\x48\x64\x70\x48\xf0\xd3\x8c\x46\x10\x3f\x22\xc4\x41\xca\x75\x35\x25\x34\x8e\x11\xfa\x34\x39\x95\x8c\x6b\x90\xc7\x22\xc9\x53\x5e\x0c\x65\xde\x89\x41\x45\x92\x65\x1a\x21\x7c\xbe\x02\x92\x49\xd0\x7a\x8d\x20\x21\x62\x41\xf4\x0a\xfc\xd8\xc5\x57\x84\xfc\xac\x04\x3f\xa5\x7a\x75\x48\x66\x06\xc2\xb3\x98\xa9\x2c\xa1\x6b\x33\x9b\xca\x5b\x76\x9b\x5e\xd8\x67\x95\xdf\xf5\xda\x4c\x5d\x69\xc9\xf8\xb2\x6d\x2a\xe6\xbd\xfe\x73\xb0\xa0\x39\x5f\x67\xdb\x53\xd8\xf8\xb1\xef\xf8\x59\x3e\x4f\x98\x5a\x81\xec\x3f\x89\xe2\x93\xad\x39\x9c\xee\x78\xd2\x30\x91\x4a\xa7\x9e\x6e\x66\x91\x04\x24\x99\x73\x96\x82\xd2\x34\xcd\xb6\x06\x38\x5a\x6e\xaf\x31\xa6\xda\xff\x68\x5f\xba\x7c\x4e\x93\x6c\x45\x9f\xbb\x1f\x55\xb4\x82\x94\x96\xf8\x20\x32\xe0\x47\xa7\x27\x3f\xfd\xf1\x6c\xe3\x01\xa9\x43\xa7\x86\xe7\x84\x29\x42\x89\x84\x4c\x28\xa6\x85\x5c\x1b\x68\x1d\x9f\xfd\xa4\x26\xe4\xf8\xfd\x0b\x35\x21\x94\xc7\x05\xe1\x91\x8c\x46\x17\x74\x09\x6a\xb6\x35\x57\x31\xff\x19\x22\x5d\xf9\x59\xc2\x2f\x39\x93\x10\x57\x67\x61\xc0\xe3\x61\xb2\xf1\xb3\x81\x7f\xe5\xa7\x4c\x9a\x31\x75\x85\x90\x6d\xab\x30\xb3\xda\xef\x1b\x2b\xfc\x6d\xba\xf1\x94\x10\x03\x18\xfb\x25\x89\x0d\x67\x03\x85\x48\xe1\xa8\x0e\x62\x07\x4d\x8b\x2c\x4c\x19\x88\x48\x50\xc0\x2d\xaf\x33\x3f\x53\xee\x56\x39\xdb\xea\xfc\x0c\xa4\xe9\xc8\x30\x84\x3c\x89\x0d\x4b\xbc\x04\xa9\x89\x84\x48\x2c\x39\xfb\xb5\xe8\x5d\x11\x2d\x70\xd8\x84\x6a\x50\x9a\x20\x5d\x73\x9a\x90\x4b\x9a\xe4\x80\xc0\xde\xea\x3b\xa5\x6b\x22\xc1\x8c\x4b\x72\x5e\xe9\x11\x3f\x51\xdb\x73\x79\x23\x24\x10\xc6\x17\xe2\x90\xac\xb4\xce\xd4\xe1\xc1\xc1\x92\x69\xcf\xec\x23\x91\xa6\x39\x67\x7a\x7d\x80\x7c\x9b\xcd\x73\xc3\x50\x0f\x62\xb8\x84\xe4\x40\xb1\xe5\x94\xca\x68\xc5\x34\x44\x3a\x97\x70\x40\x33\x36\xc5\xc5\x70\x64\xf8\xb3\x34\xfe\x5f\x12\xaa\x1c\x70\x13\x0d\x36\xa8\x81\x78\xbe\x3b\x70\xb3\x0c\x3f\xb6\x88\x69\x3b\xb4\x8b\x2d\xf7\xc4\xfc\x64\xc0\xf8\xfe\xe5\xd9\x39\xf1\x33\xb2\xfb\x66\xb7\xa8\x7c\x75\x07\x84\xfc\x6e\x19\xc8\x32\xbe\x00\x69\xbf\x5c\x48\x91\x62\xaf\xc0\xe3\x4c\x30\xae\x2d\xd7\x48\x18\x70\x4d\x54\x3e\x4f\x99\x56\x88\xd6\xa0\xb4\xd9\xc8\xed\x8e\x8f\xf1\x70\x24\x73\x20\x79\x66\x88\x37\xde\x7e\xe5\x84\x93\x63\x9a\x42\x72\x4c\x15\xdc\xfb\xde\x99\x3d\x52\x53\xb3\x21\xbd\x77\xaf\x7a\xf4\x6f\x7f\xb0\x45\xf5\x84\xf8\x33\xbb\xd7\xcb\x4d\x6c\x82\x58\x9e\xb0\xeb\x4c\x20\x2d\xdc\xc1\x34\x1a\xc7\x12\xd4\x8e\x07\xdd\x58\x67\xda\x91\xfd\xdc\x22\xdf\x4a\x28\x83\x04\x54\x93\x77\xaf\xdf\x90\x88\x72\x92\x2b\x30\x24\x1c\x09\xce\x0d\x96\x69\x41\xa8\x39\x73\xa7\x70\xcd\x14\x62\xa5\x84\x25\x53\x5a\xae\xb7\xf7\xd6\xb4\xef\x85\x4c\xa9\x3e\x24\xdf\xf8\xd7\xa6\x38\x84\x90\x84\x65\xdf\x1e\x7e\x93\x09\xa9\xbf\xdd\xf9\xe1\x3b\x9e\xac\xcd\xe0\x31\xb9\x5a\x01\x27\x67\x05\x64\xc8\xdf\x2a\x7f\xbc\x92\x59\xb4\x7b\xe0\x93\x25\x17\xd2\x7f\x6d\xd0\xfa\x24\xa5\x4b\x20\x0b\x06\x09\x12\x9a\x82\x1d\x5c\xad\x05\x2d\x88\x15\xfc\x16\x6c\xf9\x86\x66\x63\x61\x7d\xec\x3b\x30\x33\x30\x93\xaa\x8a\x2d\xe5\x43\x2d\x90\xa2\xcc\xe2\xcd\x3f\x69\x74\x41\xa8\x1b\x3c\xa5\xd9\x54\x21\x35\x77\x00\xbe\x1f\xfc\x8e\x7d\xa7\x66\x47\xca\x9f\x4f\x1c\x97\x1e\x0c\xa1\x2a\x10\x06\x7f\x5b\x0a\x65\x9d\xf0\x7d\xb3\xeb\x4c\xed\x31\xc6\x52\x66\xd1\xa9\x88\xed\xb2\xc7\xee\xe2\xab\x6a\x27\x04\xae\x33\xa1\x40\x91\x98\x2d\x16\x20\x0d\xe7\x14\x97\x20\x25\x8b\x41\x91\x85\x90\xb8\xb5\x99\x88\x91\x4d\x14\x5b\x5d\x93\x47\x4e\xc5\x0e\xb6\x49\x06\xd1\x00\x0a\x2d\x16\xc3\xbb\x70\x7b\x27\x53\x22\x1d\x3c\xc6\x34\xba\x40\xf5\x68\xbd\xfb\xe9\x06\xe8\x8e\xdc\xcb\x1e\xd1\x9d\x28\xea\x38\xdc\x13\x65\x40\xf2\x44\x15\x7d\xee\x5e\x7f\xe7\x94\xfb\x4c\xdb\x34\x2e\x62\x38\xea\x98\xfe\xd6\x12\x5e\xe0\x1f\x73\x50\xf8\x79\x31\x55\x14\x6c\xe2\x3c\x41\xde\x97\x27\xf5\x5d\x6e\x5a\x47\xcf\xb5\xf4\x5d\x8f\x7d\x0f\x16\x20\x25\xc4\x2f\x72\x83\xea\x67\xc5\xac\x1c\xe7\xb3\x3f\xbf\xbc\x86\x28\x6f\x22\xc7\xc6\xa5\x37\x20\x7e\xb5\x19\x85\xc3\x41\x02\x24\xb9\x62\x49\xe2\x66\x64\x58\x96\x7f\x60\x40\x82\x12\xa0\x81\xa0\xb2\x07\x8b\xa2\x9a\xa9\xc5\xba\x73\x00\x03\xd1\x02\xe6\x70\x6d\x84\x1b\xd4\x16\x91\x90\xd8\x82\x41\x4c\xe6\x6b\x27\xc7\x18\xa6\x3e\x21\xf3\x5c\x13\xa6\x51\xc8\x89\x56\x42\xa8\xcd\x43\x74\xbb\x51\xbb\xb5\x38\xaf\x4b\x26\x50\x46\x25\x82\x83\xe1\x86\xa9\x91\x4c\x1c\xbd\x56\x86\x9f\xe1\xca\xcb\xcf\xd8\xa6\x60\xb1\xdd\x52\x73\xe2\x15\xdb\xe5\x29\xc2\x0c\x73\xc5\xf4\x0a\xff\x58\x1a\x75\xc9\xc8\xc7\x2a\x4f\xcd\xa0\x57\xc0\x96\x2b\xad\x26\x84\xcd\x76\x08\x4d\x9b\xcd\x20\x20\xd0\x68\x55\x99\x56\x0a\xa0\x15\xa1\x49\xe2\x97\x50\xc5\x5a\x2b\x81\xa4\x46\x56\x24\x7b\x5e\x98\xec\x1c\xc5\x09\x82\x93\x42\x82\xd9\x44\xbc\x9d\xdb\x35\x21\xa0\xa3\xd9\xfe\xa4\xb3\xfb\x48\xa4\x59\xae\xc1\x48\xc0\x79\x6a\xb6\x96\x69\xa3\x83\x59\xc1\x57\x8a\x7c\x69\x21\x05\x89\x9b\xb8\x57\x5b\xec\x89\x6e\xf8\x1f\x8d\xe3\x5d\x3c\x7f\xb3\x3d\xb6\xc0\x7d\xec\x35\x13\x33\x1c\xb3\x40\x42\xf8\xa5\x54\x47\x2b\xa7\x2c\x45\x42\x4a\x50\x99\xe0\xa6\x67\xfb\xe4\x65\xb9\xb6\xbf\x9a\x77\x3a\xc7\x33\x9d\xee\xa9\xfd\x72\xb3\x57\x6c\xb9\xf2\x7b\x4d\x25\xe0\x6f\x75\x1c\xe9\xda\x72\xcb\x4a\xa8\x94\xb4\x8b\x8e\x98\x86\xb4\x83\x91\x90\x11\xd4\x4f\xc8\x11\x27\x90\x66\x7a\x5d\x41\xec\x0a\x8a\x69\x90\x69\x01\x48\xc4\x42\x64\x7b\xca\x02\x81\xa5\x59\xc2\x22\xa6\x1d\x9a\x93\x67\x3d\xc6\xdb\x33\x94\x40\x98\x36\x87\x06\xe1\x62\x2a\xb2\xfd\x19\x39\x22\x3c\x2f\x18\x4f\xdb\x14\xb8\x28\x66\xe0\x3a\x32\xd3\x52\xa2\xec\xab\x9b\x1f\xf5\x63\xdf\xb6\x35\x0b\xf9\xdb\x6d\xea\xe6\x0f\xbc\x07\x11\x9a\xd7\x2d\xd4\x3a\x5f\xed\x7b\x90\xf8\xb7\xfd\x1c\xfa\xbc\xbd\x79\xda\x5b\xca\x51\x90\x40\xa4\xcd\x69\x08\x32\x9d\x10\xaa\x94\x88\x98\xd1\x0a\x4b\xdc\xaf\x13\x94\x5d\x49\x37\xec\xc9\x50\xf8\x93\xc1\xeb\x27\x68\x78\xa8\xd3\x77\xdf\xef\xb6\xa0\x91\x30\xa3\xe3\x2c\x36\xa0\x52\xe3\xbb\xf3\x35\x3e\x7d\xa2\x48\x42\xe7\x90\xec\x50\xda\x9b\x5a\x7f\xe2\x2f\x5b\x4f\x36\xd0\xb0\xa0\x5e\x0c\xa1\x6c\x9b\xd8\x50\x59\xb7\x33\x71\x14\x78\x62\x8e\x2a\xa3\xda\x53\xc6\x95\xb3\xef\x4c\x08\x25\x17\xb0\xb6\x76\x38\xca\x0b\x53\xdc\xa0\x29\x60\xc7\x12\xec\x81\x6e\xf0\xee\x02\xd6\xd8\x61\x93\x0d\xa9\xa5\xab\xa1\x78\x67\xdb\x10\x0e\x50\xb6\xa9\x99\xe8\xc0\x2f\x46\x00\x68\x38\x69\xd8\x76\x01\xad\xe2\xf3\xae\xb6\x65\xa5\x46\x74\xc7\xfd\xc0\x4d\xc2\x13\xd8\xe3\x03\xcd\xb2\x84\xc1\x6e\x53\x53\x7b\x6b\xd5\xfa\xda\x9a\x87\xde\x8d\xd6\x35\x90\x40\x4c\x7b\x5f\x98\xeb\x2c\xbe\x3f\x51\x16\x5f\x0d\xdf\x59\xb1\xcc\x1a\x5a\x14\x20\x1b\x19\x8e\xb4\xb6\xfd\x44\x13\x56\xda\xb2\x15\x0a\x1b\x27\x7c\x42\xde\x0a\x6d\xfe\xf7\xf2\x9a\x29\x23\x63\xbe\x10\xa0\xde\x0a\x8d\x7f\xce\xc8\x2b\x6d\x49\xef\x75\x4f\xbe\x5c\xb6\xd1\x7b\x60\xd7\x77\xdf\x3b\x70\xc4\x2d\x13\x35\x10\xae\x1a\x5d\xd5\x8c\x9c\x58\x71\xb0\xf0\x02\x30\x45\x4e\xb8\x51\x0a\x2c\xe4\x06\x0f\x85\x76\x77\xec\xdb\x0d\x99\xe6\x0a\xad\xa6\x5c\xf0\x29\x8a\x51\x3b\xc7\xb4\x1b\x64\xc6\xad\x6e\xd1\x2d\x0e\xdf\x3c\xf4\x2b\xb4\xd1\xbd\xd6\x93\xca\xc7\x83\xc7\xad\x0c\xb6\xa2\x97\x28\xda\x33\xbe\x4c\x0a\x21\x7e\x42\xae\x56\x2c\x5a\x59\xed\x71\x0e\xd6\x39\x90\x49\x30\x12\x03\x55\x86\xf9\x9b\x5f\x96\x20\x87\xa3\xfe\xb9\x51\x0d\xec\xf8\xd6\xb5\x91\xd0\x08\x62\x12\xa3\xca\x62\xad\xec\x54\xc3\x92\x45\x24\x05\xb9\x04\x92\x99\xa3\x7f\x1c\xc2\x0f\x3b\x89\x6d\x1b\x7c\x1e\x57\x07\x1c\x41\x61\x84\x5c\x4f\x2f\xf2\x39\x48\x0e\x1a\xd4\xd4\xc8\x27\x53\x37\x7b\x2d\x52\x16\xf5\xee\xec\x56\xba\x41\x39\xeb\x7b\xa3\xb7\xdd\x93\x88\x85\x3a\x62\x10\xb1\x82\x88\x15\x44\xac\x20\x62\x05\x11\xab\x77\x0b\x22\xd6\x8d\x87\x0f\x22\x56\x10\xb1\xee\x5d\xc4\xaa\x75\x91\xd2\x6c\x68\x0f\xd6\x2e\x37\xc2\x10\xf8\x0f\x6b\xd0\xdd\xb4\xfc\xa1\xc0\xe7\x43\x58\xea\x26\x40\x23\xc7\x9c\xb9\xc3\xe9\x1c\xcd\x86\xcc\xfa\xeb\x25\xe5\x4b\x20\xcf\xa7\xcf\x9f\x3d\x1b\x62\x20\x74\xe8\xdc\xeb\x8b\x85\x0b\x4e\x60\x5c\xff\xf1\xab\x8e\x2f\x6e\xb0\x2b\x4d\xfe\x92\xfb\x71\xd4\x39\xce\x53\xf8\x66\x6a\x22\x72\x83\x2f\x0d\x8f\x31\x2e\x34\x49\x41\x13\xda\x2d\x93\x55\xcd\xee\x2c\x85\x49\xe1\xf4\x46\xb6\xe3\x22\x84\xbc\x53\x30\x26\x82\x3b\xd7\x8b\xd9\xfc\xee\xcd\x1d\xb5\x82\x08\xa8\x8d\x5c\x99\x83\x59\x45\xb7\x2b\x50\x13\x25\x52\x33\x6b\xc6\xb5\x67\x62\x66\x09\xe0\x37\x86\xec\xc1\x6c\x39\x23\x71\x8e\xdd\x52\xee\x42\x9e\xf6\xed\x6a\xd5\x5a\x69\x48\xbb\x7d\x81\xe6\x30\x94\xf8\x3f\x03\x16\x2d\xd7\xa6\x33\xb8\x04\xae\x73\x9a\x24\x6b\x02\x97\x2c\xd2\x05\xfc\x30\x42\x8b\x69\xd5\x0b\x52\x03\xc4\xe8\xfe\xa2\xf3\x74\x8b\x42\xbb\x0e\xa9\x21\x92\xef\x56\xdf\x7d\x78\x4e\x8d\x02\xde\xbb\x95\xcc\x1a\x75\x42\x6d\xfa\xb5\x6e\x5b\xfc\x27\x22\xf7\xbb\xf7\xdd\x5e\x36\x32\xf8\xfc\x19\x70\xe6\x8c\x13\xad\x9c\xc3\x4b\x48\xe7\x7c\xdb\x5e\xe9\x0e\x97\x97\x5d\x7b\x8d\x6a\xc4\xa2\xe7\x80\x7a\x05\xd6\x49\x79\xf4\xf6\x45\x3f\x88\x11\x17\x1c\x70\x2e\x32\x91\x88\xe5\xba\xba\xbd\x36\x44\x9a\xa5\x99\x77\xe2\x52\xa2\xf2\xb9\x13\xc1\x0d\xce\xbf\xdd\xc0\x87\xe0\x1a\x0a\xae\xa1\x60\xb7\xc0\x16\xec\x16\xc1\x6e\x11\xec\x16\xfd\x5a\xb0\x5b\xdc\x78\xf8\x60\xb7\x08\x76\x8b\xe0\x1a\xda\x6e\x41\xc4\xea\x6e\x41\xc4\x6a\x6d\x41\xc4\x2a\x5a\x10\xb1\x82\x88\x15\x44\xac\x20\x62\x05\x11\xeb\xbe\xba\xb9\xa9\x6b\xe8\x46\x53\x18\x37\x78\x26\xe2\x1b\x24\x6f\x65\x22\x6e\xc9\xdd\xb2\x36\xfd\x48\x4c\x13\x11\x51\xed\x32\xaa\xcd\x27\xce\x0b\xa5\x68\x6a\xdd\x14\x13\xf2\xab\xe0\x60\xb3\x59\x0c\x79\xa0\xb3\x40\xe8\x15\x48\xf3\xfa\x9e\xda\x6f\x4d\x21\x08\xb9\x5f\x21\xf7\x2b\xe4\x7e\x35\xb6\xcf\x26\xf7\x6b\x45\x95\xc5\x5b\x7b\x34\x36\xa7\x82\x55\x78\xd2\x39\xc8\xf4\x77\x9a\x09\x66\xd0\xdd\xa1\x23\xd6\x03\x29\x51\xca\x42\x26\x76\x0e\x7f\x88\x4f\xeb\xf0\x70\x6a\x35\x2e\x8a\xc6\x31\xc4\x24\x03\x39\xb5\x28\x2a\xc8\x82\xf1\x78\xc7\x5a\x3d\x7c\xba\xd9\xc3\x1d\xa6\x62\xd5\xd7\xd1\xeb\x9b\xbb\xc9\xc7\xaa\x4f\x64\x84\x53\xb1\xea\x19\xad\x1d\x82\x9f\x45\x76\xd6\x50\x0d\x7d\x4a\xb4\x73\x28\xfe\xd0\x53\x47\x1f\xae\x66\xa3\x72\xec\xdd\x8f\x23\xcd\x4f\x83\x54\xa1\x23\xa7\x8f\xff\x92\x83\x5c\x63\xdd\x80\x52\xed\x2c\xca\xce\xb8\x88\x18\xa6\x48\x44\x95\x3d\x56\x87\x88\xca\x27\x0b\x9b\x35\xc9\xf3\x24\x99\xd8\x7e\x36\x89\xd5\xb3\x39\xc4\x03\x2e\xcc\xf3\xc1\x16\xb1\x81\x26\x9a\x71\x36\x90\xf1\x5e\x58\xb2\xb9\x4f\x9b\x5d\x59\xdb\x98\x37\x1d\xda\x6d\xd9\x69\x3b\xdc\xe1\x4d\x1f\xec\x1f\xb7\x6d\xac\x02\x33\x4a\x7d\xb9\xb1\xbe\xde\x02\x93\x1b\xd8\x15\xf1\xe5\xc1\x93\xb9\x1d\xdb\x22\x19\x6f\x5f\x24\xa3\x6d\x8c\x64\x94\x9d\x91\x8c\xb5\x35\x92\x1b\xd8\x1b\xc9\x38\x9b\x23\xd9\xc4\x36\xb3\x43\x4e\xf0\xbd\x1b\xf3\x23\xb9\x99\x72\x3e\xde\x0c\x49\x6e\x81\xb0\xaa\xe3\x57\x8a\x78\xdd\x9d\x5d\x92\xf4\xb5\x4d\x22\x59\xd5\xcc\x93\xf7\xbd\x2f\xe3\x4c\x93\xe4\x96\x76\xc5\x19\xed\x18\xda\xc2\xee\xcb\x58\x49\x1e\xde\x60\xd9\x3a\x05\x37\x7c\x6f\x0b\xdf\xa8\xd1\x6f\x60\x15\x24\x37\xb2\x0c\x92\xf1\xd6\x41\x72\x53\x64\xbf\x35\x2b\xe1\xad\x76\x85\x72\xd2\x6b\x8c\x43\xbb\x81\xb4\x35\x98\x02\x2b\xc3\x5a\xe9\x02\x6b\x94\x2d\xc8\xbf\x8d\x10\x81\x88\xf9\x1f\x92\x51\x26\x95\xd1\x6e\x9c\x5d\xbb\xfa\xcc\x99\xef\x2a\xdd\x0c\x9e\x00\x16\x69\x33\x67\xfc\x25\x4d\x8c\x90\x63\x83\x7e\x9d\x0d\xc2\xcc\x65\x53\x84\x9c\x90\xab\x95\x50\x56\x22\x29\xea\xcc\x3d\xbe\x80\xf5\xe3\x49\x2f\xf3\x40\xbd\x55\x29\xfb\xf1\x09\x7f\x6c\x45\xa7\x2d\xba\x2c\xe4\x2c\xc1\x93\x35\x79\x8c\xcf\x1e\xdf\xb6\x8c\x3a\x42\x3e\xaa\x16\xf3\x1d\x2b\x7e\x8c\x22\xa7\x9b\x1a\xb8\x49\x0d\xfb\x7e\x80\xf5\xd8\x40\x84\x41\x38\xff\xa6\x36\xa2\x17\xa8\x11\xcd\x8c\xee\x5e\xc8\x4d\x68\x51\xb5\x22\x93\xb3\x51\x59\x73\x15\x4b\x92\x01\xa3\xcd\x81\x68\x7a\x01\xe8\xe1\xc1\xda\x8e\x8a\xc5\x68\x70\x13\xdc\xa2\x0e\x8e\x64\x50\xc6\x17\x21\x4c\x84\xb8\xc8\x33\x8f\x7a\xbe\x70\xe8\x80\x21\x19\x8f\x44\xea\x63\xea\x6d\x5c\xab\xa1\x0a\x47\x2f\x53\x5b\xee\xd4\xfe\x8e\x03\xe3\x11\xe0\x4c\x13\x9f\x6a\x8a\xf9\x27\x42\x15\xf9\x84\x42\x25\x27\x7b\xf8\xe1\xfe\xa7\x21\x21\x05\x05\x00\xad\xf5\x55\xe4\xc8\x59\x8a\x82\x96\x15\xfb\x5f\x01\xdb\x36\x88\x0d\x18\xda\x57\x8a\xab\x02\xc3\xd6\xc2\x23\x7b\x94\x6b\xb6\x5f\x16\xc4\x23\x88\x07\x28\x25\xc7\x82\x3f\xd1\x76\x7e\x9e\xaf\xf9\x0e\x86\x44\x1d\x14\x70\x2f\x3d\x7e\xd6\x5b\x60\xb7\x3c\x86\x05\xcd\x13\xed\x0a\xcf\x1a\xd6\x87\x27\xfd\x80\x11\xce\xbd\xbf\xc4\x09\xfc\x0b\x21\xe7\x2c\x8e\x81\x63\x8a\x83\x9f\xfe\x5c\xf8\x84\xa0\x12\xdd\x0d\x67\xab\xed\xf1\x90\x61\x8f\x12\x25\x26\x9b\x3d\x46\x45\x61\x5a\x43\x45\x58\x3e\xb1\x36\x00\x61\xca\x00\xb5\xa1\x52\xe2\xee\x76\x2f\xa1\x3f\x37\xe7\x79\xa3\x43\xaf\x98\x7a\x00\xbe\xb7\x39\x68\x60\x7d\xbd\x58\x1f\x17\x3a\x70\xbf\x2f\x96\xfb\x6d\x21\xfd\x6d\x30\xc0\xad\x4e\x03\x0f\x1c\xcc\x03\xb9\xbf\x9f\xe2\x81\xbd\x00\xd6\x30\x66\xa3\x58\xfd\x94\x54\x69\x33\xc3\x44\xaf\x71\xf6\x32\x9f\x06\x87\x7c\x16\x7b\x88\xbd\x33\x34\xe7\xae\xee\xbf\xaf\x4c\xed\x86\xb5\xfc\x62\xd3\xe7\x3e\x60\x4c\xaf\xb8\x08\x0e\x0a\x4d\xec\x50\xc4\x57\x54\x86\xc1\x5e\x87\x2c\x05\x53\xe1\x4a\xf3\x21\x8f\x37\x93\xe3\xca\xbe\xd1\xae\x9f\x02\xe5\x8a\x3c\xf6\x21\x1e\x4f\x54\xf9\xc6\xe3\x41\xf4\xe6\x4b\x5f\x16\x63\xef\xfd\xfb\x3f\xfb\xb5\x72\x97\xe5\xd0\xc1\x8f\x12\xfc\x28\xd5\x16\xfc\x28\xdb\x93\x08\x7e\x94\xa6\x16\xfc\x28\xa3\xc6\x0f\x7e\x94\x7a\x0b\x7e\x94\xe0\x47\x09\x7e\x94\xe0\x47\x09\x7e\x94\xe0\x47\xe9\xfb\xd1\x6d\xf8\x51\x4a\x35\xe8\x3e\xf4\xe8\xaa\xca\xea\xe2\xc4\xed\x85\x6a\x54\xb3\xa8\xcc\x0a\xf5\x6f\xd9\x7f\x3d\x94\x52\x5d\x55\x83\x6f\xaa\x52\x57\x15\xf4\x2d\x0b\xc6\x60\x8d\xba\x51\x7f\x2e\x34\xec\xad\x31\x6e\x49\xb5\xfe\x9d\x1b\x97\x2a\x01\xac\xf7\x41\x0e\xe7\x3e\x95\xc5\xdd\xd1\x38\x87\x32\xcf\x25\x26\x7b\xde\xd6\xba\x6f\x36\x9c\x0b\x5d\x7f\xc8\x35\x9b\x96\x6f\x14\x01\xc2\x68\x12\xf6\xd5\xdc\x86\x00\xdd\xeb\x2c\xa5\xed\xd1\xe5\xd7\x14\x09\x1d\x25\xb6\x19\xfe\x0f\xb2\x36\x5b\xa6\xdc\x1d\x96\x98\x9a\x26\x73\xce\x8d\x78\x24\xb8\xcb\xe2\x18\x30\x13\x7b\xb4\x58\x33\xaf\xa3\x4a\xab\x4c\xe1\x1a\x51\xa3\x2a\xb7\xa9\x92\x00\x40\xb5\xbd\x11\xd3\xd5\x5c\x12\xdc\x19\xc9\xcd\x2f\xb6\x9f\x01\x93\x28\x08\x16\xe1\xc9\x8a\x15\x0d\xa1\xd5\x97\x48\xa3\xd5\xc9\x32\x85\xfb\x48\x93\x44\x5c\x0d\x39\x9f\x06\x52\xc4\xe8\xe2\x80\xbd\xb1\xf7\x6a\x70\x15\xc1\x8d\x68\xf9\xbe\xb2\x7a\x28\x35\xd8\xda\x42\xa9\xc1\xcf\xa3\xd4\x60\xc5\x0f\x5a\xad\x39\xd8\x0d\x2b\xac\x49\x78\xa7\x35\x07\x09\xf9\x87\xbb\x60\x53\x82\x75\x5e\xe6\x89\x66\x59\x99\x65\xac\xec\x0e\x25\x56\xa5\x5e\xb8\x6c\xc0\x3a\xf5\x9a\xd9\xd0\x68\xd5\x39\xd4\x06\x95\xe3\x78\x98\xb5\xac\x90\x9b\xda\x8c\x39\xb4\xbf\xdb\x42\x7f\x5e\xd7\xb6\x69\x87\xec\xa1\xb3\xa9\x7a\xf1\xbf\x17\xee\xaa\xe6\xaa\x0f\x5c\x91\x3d\x73\x3a\x26\x6b\xe7\x35\xae\x31\xc2\xda\xb1\xda\x63\x00\x6b\x07\xbb\x04\x2f\xa0\x2e\xd9\x25\xf0\xf2\xf4\xdd\x53\xfb\xfb\x5e\x26\xde\x94\x1f\x7a\xf4\x7e\x13\x09\xa3\x0f\xd7\x1e\x2a\x19\x6c\x9c\xf7\x3d\x46\xd8\x21\x11\x7c\x53\x39\x65\xbf\xed\x96\x09\x7a\x0c\x62\x49\xda\xa7\x67\x56\x36\xba\x94\x05\x3a\x7b\xb9\xc3\x2c\xb8\x21\xa9\x56\xc3\xac\xe2\x23\x52\xac\xc6\x56\xca\xbc\xdb\xd4\xaa\x3b\x4d\xab\xfa\x72\x0a\x5a\x3e\xb0\xfb\xef\x0b\xa8\xc6\xf4\x99\xb8\xfb\x42\x39\xa6\xa6\xf6\x50\xe5\x98\xee\xdc\x9d\xf7\xc5\x55\x65\xba\x57\xf7\xdd\xfd\xb8\xee\xbe\xb0\xaa\x4c\x0f\xe2\xaa\xfb\xcc\xeb\x33\xdd\x9d\x8b\x2e\x14\x3f\x7a\x98\xfa\x92\x43\xdd\x70\xe3\xa9\xea\x41\xdd\x6f\x0f\xea\x7a\x7b\x78\xb7\xdb\x28\x59\xe5\xa6\xee\xb6\xc1\x64\x72\x53\x37\xdb\x98\x90\xfd\x71\xf8\x7c\x7f\x29\x4a\xf7\x1c\xa3\xff\x79\xa4\x26\x3d\x50\x60\xfe\x43\x05\xe5\xdf\x6d\x40\xfe\x03\xa4\x22\xdd\x4b\x1a\xd2\xd0\x63\x7f\xd0\x61\x7f\x33\xde\x35\xe6\x44\x1e\x99\x72\x34\x92\x7f\xdd\x67\xaa\xd1\xef\x80\x85\x8d\x4a\x31\x0a\x5c\xec\x81\xb8\xd8\xed\xa5\x14\xdd\x57\x3a\xd1\xef\x8c\x97\x8d\x4c\x1d\xba\x35\xeb\xf6\xdd\xa4\x0c\xdd\x77\xba\xd0\x1d\xa4\x0a\x3d\x44\x9a\xd0\x1d\xa4\x08\x05\x9f\x40\xcf\x16\x7c\x02\x7d\x5b\xf0\x09\x34\xb5\xe0\x13\xd8\x6c\xc1\x27\x10\x7c\x02\xc1\x27\x10\x7c\x02\xdb\x03\x06\x9f\x40\xf0\x09\xf4\x6b\xc1\x27\x70\x3f\x3e\x81\xa1\x69\x37\xe3\x70\xf9\x61\xd2\x6d\xee\x37\xd5\xe6\xf6\xd3\x6c\x1e\x30\xc5\xe6\x77\x66\x70\x19\x9c\x4e\x33\x0e\xcd\x3f\x97\x34\x9a\xcf\x23\x85\xe6\xc1\xd3\x67\x6e\x9a\x3a\x73\x3b\x69\x33\x03\xb0\x7d\x24\x9e\x67\x22\x3e\xe2\x9a\xdd\xf4\xe2\xa3\x2a\x02\x36\xdd\x7e\x44\x2f\x05\x8b\x49\x96\x6b\x77\xe1\x4a\xb8\x01\xa9\x13\x07\xee\xe7\x06\xa4\xda\xe6\x85\x6b\x90\xda\xda\x67\x73\x0d\x52\xd3\x9e\x85\xbb\x90\xea\x2d\xdc\x85\x14\xee\x42\x0a\x77\x21\xd9\x16\xee\x42\x0a\x77\x21\x85\x1a\x7e\xa1\x86\x5f\xa8\xe1\xd7\xff\xab\x50\xc3\xaf\xb9\x85\x1a\x7e\x43\x5a\xa8\xe1\xd7\x7b\xf4\x50\xc3\x2f\xd4\xf0\x1b\x36\x70\xa8\xe1\x47\x42\x0d\xbf\x50\xc3\xef\x0b\xae\xe1\x17\xee\x42\xfa\x22\x2e\x04\x09\xb7\x81\x0c\x18\xfb\xf3\xba\x0d\x24\xdc\x85\xd4\x3a\x48\xb8\x0b\x29\xb0\xbe\x70\x17\xd2\xef\x96\xfb\x85\xbb\x90\x7a\x0c\x12\xee\x42\x0a\x77\x21\xb5\xb6\x70\x17\x52\xf0\xa3\x90\xe0\x47\x09\x7e\x94\xa1\x5f\x05\x3f\x4a\x73\x0b\x7e\x94\x21\x2d\xf8\x51\x7a\x8f\x1e\xfc\x28\xc1\x8f\x32\x6c\xe0\xe0\x47\x21\xc1\x8f\x12\xfc\x28\x5f\xb0\x1f\x25\xdc\x85\x14\xee\x42\x0a\x77\x21\x15\x23\x87\xbb\x90\xc2\x5d\x48\xd8\xc2\x5d\x48\x3d\x46\x08\x77\x21\x7d\xa9\x77\x21\xd5\xf2\x81\xbe\xdc\x0b\x91\x86\x2f\x23\xdc\x8a\x14\x6e\x45\x6a\x68\xe1\x56\xa4\x70\x2b\xd2\xae\x16\x6e\x45\x0a\xb7\x22\xb5\xb4\x50\x01\xb1\x67\x0b\x15\x10\xfb\xb6\x50\x01\xb1\xa9\x85\x0a\x88\x9b\x2d\x54\x40\x0c\x15\x10\x43\x05\xc4\x50\x01\x71\x7b\xc0\x50\x01\x31\x54\x40\xec\xd7\x1e\xde\x01\xf7\x3f\xa3\x02\x62\xb8\x15\xe9\xb3\xbc\x52\x24\xdc\x27\xd2\xd1\x3e\x9f\xfb\x44\xc2\xad\x48\xb5\xce\xc3\xad\x48\x81\x85\x85\x5b\x91\xbe\x38\x2e\x16\x6e\x45\xda\xd1\x79\xb8\x15\x29\xdc\x8a\x14\x6e\x45\x0a\x3e\x81\xce\x16\x7c\x02\xc1\x27\x50\x6d\xc1\x27\xb0\xd9\x82\x4f\x20\xf8\x04\x82\x4f\x20\xf8\x04\xb6\x07\x0c\x3e\x81\xe0\x13\xe8\xd7\x82\x4f\x20\xdc\x8a\x14\x6e\x45\x0a\xb7\x22\x61\x0b\xb7\x22\x85\x5b\x91\xc2\xad\x48\x3b\x3f\x86\x6b\x2d\x69\xa4\x8f\x05\xd7\xc0\x1b\x73\x6e\xfa\xa2\xf3\xcb\x5a\x6f\xe6\x74\x5d\xb0\x65\x2e\x9d\xde\xbf\x7c\x7f\x7a\x4c\x22\xaa\x69\x22\x96\xe4\x54\xc4\xd6\xb4\x8c\x5f\x14\x3f\xa7\xa0\x69\x4c\x35\x2d\xbc\x12\x46\x3f\xbe\x64\x31\x32\xd5\x18\xae\x09\x4b\xe9\x12\x0c\xf3\x6a\x9c\x44\xae\x80\x50\x72\x05\x49\x32\xbd\xe0\xe2\x8a\x93\x4b\x90\xaa\xc2\xae\x3f\x89\x2c\xfd\x44\x14\xc8\x4b\x7b\xb3\x10\x5c\x67\x06\xd1\x98\xb6\xe7\xbe\x9f\x49\x75\xb8\x32\x48\xfd\xd8\x3e\x3d\xc3\xa0\xde\xb6\x4b\x7a\x8a\xb5\xe3\x32\xcd\x9c\x9e\x1a\xc1\xfe\xa9\x21\xea\x5c\xf9\x88\xfa\x05\x4b\x60\x3a\xa7\x0a\x62\x3f\xae\x32\xb4\x26\x64\x6c\xe7\x96\x6b\x96\xb0\x5f\xc1\x9d\x26\x40\x75\x2e\x1b\xf3\x24\x7a\x08\x1c\xdd\x86\x90\xa9\x9f\xc7\x0b\xd6\x64\xc4\xe8\x63\xb0\x88\x68\xb4\x82\x17\xac\x55\x85\xaf\x21\xd5\xb1\xfb\xc0\x9b\x24\xf6\x44\x66\xe5\xa0\x7d\x12\x33\x89\x4c\x68\x4d\x94\x16\xd2\x43\x2e\x93\x30\x8d\x68\x12\xe5\x09\xb2\x9c\xa3\xd3\x13\x3b\x68\xf7\x75\x59\x1d\xa4\x54\xae\x7f\xc0\xe4\xfd\x27\x7e\xfa\xbb\xe7\xbc\xbd\xdb\x28\x80\xa2\x3d\xf2\x26\xd3\x4e\x21\x15\x72\x7d\x4e\xe5\x12\x6e\x4c\xc2\x6f\x2a\x7d\x6d\x12\xf0\x7f\xbd\x7a\xf7\xe6\xe5\x9b\xd7\x27\x6f\x4e\xce\x1d\x5f\xf6\xce\xb0\x4d\xd2\x76\x6a\xab\xb5\x30\x8a\x85\x76\x53\x24\x09\x4b\x99\x2e\xbe\xb2\x34\xd8\xac\x32\x5b\xbe\x8d\x09\x74\x39\xd7\x2c\x05\xeb\xf9\xa2\x5a\x1b\x91\xc6\xd0\x47\x0a\xa0\xf1\x7e\xae\x94\x5e\x80\x61\xae\x64\x99\x53\x49\xb9\x06\x7f\x14\x30\x6d\x3f\x8a\x05\x51\xc2\x29\xf2\x4c\x95\x5e\x32\x05\xda\xa6\x0d\x9d\x8a\x66\x96\x82\x3d\xac\xe8\xa5\xbd\x40\x69\x21\x0c\xff\x36\x9b\x9a\x8a\x98\x2d\x58\x64\x2d\x43\x24\xa5\x71\x91\xea\xe2\x14\x0b\x90\xc5\xf1\x57\x2e\xb8\x8d\xfa\x36\xc1\x0c\xfc\x92\x49\xc1\x51\x61\xba\xa4\x92\xd1\x79\x02\x85\xff\x4f\x81\xb6\xe3\x95\x0b\xe2\x64\xbe\xd6\xd0\xcc\x96\xec\x08\x6e\x37\xdc\xcd\x5b\xcd\xfd\x3d\x6a\xec\xe7\xbc\xcc\x49\x2b\x85\x15\xf3\x3d\x73\xc9\x0a\x31\x28\xe6\x98\x9f\x84\x38\x8f\x3c\xe8\x84\xce\x24\xb3\xda\x1f\x2d\x30\xc6\x31\x63\xaa\x48\x9a\x9b\x93\xda\x48\x41\x4a\xb1\x79\x02\x13\x23\xeb\xb0\xe6\x64\x9a\xb2\x8f\x39\x18\x28\x63\x4f\x28\x81\x5c\x82\xc1\x37\x83\xc7\x56\xd4\x05\x30\x82\x90\xc0\x4b\xb0\xa8\x15\x67\xbc\xcb\xd4\x9c\xc7\x91\x73\x98\x9f\x2c\xc8\x5a\xe4\xb2\xc6\xfe\x57\xd4\xe0\x31\x52\x6f\xe3\x44\x5c\x02\x1c\xf2\xa0\x09\x89\xc1\x28\x0e\x8c\x9b\x93\x68\x29\x44\x6c\xf4\x07\x29\xae\x59\x8a\xa3\x38\x02\x28\x76\x6d\xbe\x26\xb1\xc8\xe7\x49\x81\x26\x86\xe5\xbb\xd3\x2a\xa3\xd1\x85\x99\x03\x76\xdc\x96\xba\x78\xa0\xd3\xec\x00\xdf\x72\xff\x75\x5f\xaa\xd9\xcf\x4a\xf0\xd2\xe9\x5c\x2c\x6b\xd6\x6b\x77\x99\x22\x73\x50\x7a\x0a\x8b\x85\x90\xfa\xaf\x66\x7f\x73\x8e\x44\xc3\x45\x01\x40\x8f\x40\x18\x60\x80\xd0\xc6\x14\x94\x3a\xd5\x0b\xb9\x83\x81\x54\x50\xaf\x89\x05\x66\x86\xde\x25\x3f\x24\xff\x77\xef\x5f\x7f\xf8\x6d\xba\xff\xdd\xde\xde\x87\x67\xd3\xbf\x7c\xfc\xc3\xde\xbf\x66\xf8\x8f\xa7\xfb\xdf\xed\xff\xe6\xff\xf8\xc3\xfe\xfe\xde\xde\x87\x1f\xde\xbc\x3a\x3f\x7d\xf9\x91\xed\xff\xf6\x81\xe7\xe9\x85\xfd\xeb\xb7\xbd\x0f\xf0\xf2\x63\xcf\x4e\xf6\xf7\xbf\xfb\xaf\x86\x09\x51\xbe\x7e\xb7\x68\x25\xe2\x5e\xd9\xbb\xd3\x3e\xe7\x51\x4d\xa4\x63\x5c\x4f\x85\x9c\xda\x0f\x0e\x89\x96\xf9\x6e\x51\xd6\xc8\xbd\x5d\xae\xe1\xbe\xe7\xc1\xdb\x4a\x5f\x1b\x1e\x23\x77\x85\x9d\x33\x57\x9a\xd9\x14\x9c\x3d\xb3\xd2\xdd\xc2\x6c\xbb\x17\xfb\x9b\x8f\xb8\xb3\x1d\x3d\xa2\x3c\xef\xbe\x7c\xa2\x7c\xe4\xc3\x46\xff\x1b\x49\xb8\x96\xe3\xb7\x8d\xd5\x43\x46\x1a\x66\x82\xe9\xdc\xc2\x4c\x32\x21\x99\x5e\x1f\x27\x54\xa9\xb7\x34\x85\x9b\x6e\xc8\xc9\xa2\x54\xc3\x26\x86\x9e\xcd\xf9\xe3\x0e\x68\x17\x8a\xe2\x86\x6c\x06\xf8\xc9\x02\xf5\x90\x4a\x3f\x1e\xa8\xfe\xdb\x82\x30\x3d\x89\x0b\x49\x7e\x05\x29\xdc\x65\x86\x12\xac\x2e\xd3\x38\x82\xfb\xac\x7d\x1f\x5a\xc0\xa6\x20\xca\x11\x6c\x46\x3e\xba\x36\x1a\xc5\x82\x2d\x6f\x0a\xba\xb3\x5d\x9d\x92\x88\x72\xb3\x50\xbc\x9e\x73\x41\x3e\x25\xb0\xa4\xd1\xfa\x93\x59\xf0\x27\x09\x66\x8a\x46\x07\xfc\x64\x95\x83\x9a\xf8\xef\xa2\x7e\x98\x22\xc0\xf0\xc6\x56\xc6\x7f\xb6\x0a\xa3\xd7\xbe\x1b\x67\x22\xb1\xfe\x40\x26\xe2\x99\xd9\x83\xd9\xc6\x6a\x91\x85\x16\x0f\x0b\x51\xe2\xc3\xd3\x8f\x5b\x6f\x3a\x6b\xa6\x16\x56\xa9\xac\x12\x87\xcc\x91\xeb\xb7\xc9\x35\x1e\x20\xe4\x28\x4e\x19\x9a\x60\xc9\xde\xe9\xd9\xd1\x7e\x6d\xe5\x46\xca\xb1\xe7\x70\x2c\xc0\xc7\xdd\x98\x81\x54\x69\x4c\xc5\x33\x14\x53\x1c\x2d\x09\x63\x8e\xa3\x9f\x8b\x01\x30\xda\x57\x5b\xd2\x7a\xfd\x64\xcf\x8e\xc8\x27\x23\x21\x27\x8c\x83\xdd\x83\x4c\xb2\x4b\x96\xc0\xd2\xcc\xa4\x12\xc8\xe0\x5d\x32\xbb\xf7\x94\x29\x73\x4a\xd5\xd1\x3b\xc5\x1c\x5d\x8b\xd6\x2d\x78\xeb\x0e\x6e\x17\x53\x52\xb1\xee\x3d\x51\x38\x3d\x2f\x13\x97\xf2\x42\xed\x2d\x44\x07\xbe\x10\x32\x32\xa7\xf9\x0e\x38\x6a\x97\xc4\x6e\x40\xd3\x2e\x70\xa2\xf9\xa7\xd0\x22\xa9\x32\xb4\x57\xeb\xf0\x8a\x56\x2a\x05\xcc\xc8\x3b\x83\x84\x57\x4c\xc1\xa4\x90\x7a\x77\x76\xe1\x31\xfc\x8a\x36\xcb\x89\x95\x6e\xcf\xf0\x9f\x6b\xeb\x6d\x72\xe6\x18\x44\x77\x94\xa3\x9a\xe8\x85\x48\x50\x86\x6f\x30\x6e\xbf\x62\xb1\x15\x7d\x40\x4a\x21\x67\x36\x95\xdf\xea\xc1\x22\x89\x5b\x4e\xc9\x42\x1d\x37\x22\x0b\x1a\x9b\x2c\x7e\x71\xe4\x60\x0e\x6d\x76\x83\xb9\x01\x37\xea\xf2\xaa\x16\xc5\x12\x5a\x04\xa2\x37\x02\xf3\xff\x6d\x91\x0d\xb3\x0c\x3a\x17\xb9\xb6\xf8\x60\xd9\xc7\x42\xe4\x3c\x26\x86\x33\x1e\x92\x95\xd6\x99\x3a\x3c\x38\x28\x8f\xee\x19\x13\x07\xb1\x88\xd4\x41\x24\x78\x04\x99\x56\x07\x9e\x90\x0f\x32\x11\x4f\xfd\x1f\x53\xea\xe9\xf0\x60\x2c\xe3\x24\x04\x78\xde\x72\x9b\xe7\x94\xd8\xd5\xb6\xbc\x50\x02\x73\xe7\x4b\x5a\x24\x2e\x62\xb2\xf1\x5c\xac\xdf\xf1\x5a\xbe\x5f\xdc\x41\x5b\x08\xfe\x15\x46\xfa\x44\x55\xbb\x6e\x3f\x39\xda\x2c\xcb\x1d\xb6\xe4\xfe\xa6\xd9\x73\xcf\x4b\x8d\x34\x5c\xae\x02\xa5\x20\xad\x29\x5e\x4f\x6b\xd4\x25\xfb\xc4\xb0\x41\xbe\x26\x86\x55\x6b\x77\x57\xb2\x35\x49\xb6\x69\xf6\x2b\x23\x37\x61\x0d\x8b\x6f\x0a\xb7\xdb\x04\x16\x0b\x88\xf4\xb7\x15\x33\x51\x51\x85\xa1\x70\x6b\x7d\xe3\xff\xf5\x6d\xf3\x29\xdf\xcb\x03\xd5\x2f\xfc\xc4\x4e\xa9\xdd\xf6\x3d\xcc\xe6\xfd\x12\x7b\xdc\x90\x5f\x2c\xf0\xec\x60\xa8\xde\xa3\x6f\xda\x19\x52\xad\x57\xc2\xc9\x85\x49\x52\x7b\xb9\x33\x00\x03\xf9\x4d\xe5\x40\x70\x26\xd8\xd2\x1b\x08\xe4\xad\x70\xe5\x6c\x60\x42\x4e\xf1\xca\xe0\xf2\x17\x3c\x91\xdf\x0a\x5b\xd8\xa6\xa3\x52\x49\x4f\x83\x6d\x67\xfc\xce\x30\x78\xfe\x50\x86\xf3\x58\xc0\xd4\xc2\x79\x4a\xc2\xaa\xfa\xc1\x5a\x01\x7b\x01\xeb\x4e\xa8\xba\xc3\xcf\x85\x12\xa1\x9f\x69\x52\xe2\xa8\xd7\x0c\x6c\xa4\xc4\x5f\x5d\xf5\x03\x91\xce\x19\xb7\x53\xb1\x03\xfb\x7d\xc6\xb1\xfd\x7e\xf0\x18\xff\xec\x9e\x44\x4f\x68\xf7\x8b\x29\x1a\x06\xf2\x77\x03\xe2\x85\x0a\xcf\x73\x17\x48\x77\xc5\x05\x55\x82\x81\x5e\xfe\x92\xd3\x64\x46\x5e\x58\xf1\x1a\x81\x67\x7f\xea\x22\x37\xdb\xc5\x96\x3f\xfe\x8a\x25\x71\x44\x65\x8c\x9a\x95\x65\x3f\x44\x09\x8b\x38\xd4\x4b\x6f\x1d\x7d\x7b\x06\x58\x22\x8f\xbd\xcc\x9b\x64\x54\x6a\x16\xe5\x09\x95\x86\xe1\xc3\x52\xc8\x8e\x78\xf4\x9e\x9b\x59\x62\xf3\x19\x44\x82\xc7\x1d\x9e\xc3\x61\xbb\x7a\xbe\xd9\x79\x75\x7b\x51\x6e\x03\xc9\x5c\x45\x15\x96\xc2\x26\x79\xed\xd5\xb4\xe2\x8e\xb1\xc4\xc2\x33\xbb\x82\xb7\x4c\xac\x70\x65\xc4\xb8\x6a\xe1\x27\xa6\x7c\xb4\xff\x7e\xe5\xc0\x29\xa8\x7d\x46\xfe\xbe\xf6\x3a\x57\x57\x08\x12\xd3\xde\x0f\x85\x66\x1c\x37\x5f\x47\x8a\x6e\x27\x4b\x36\xb2\x10\x12\x2e\x41\x92\xbd\x58\xe0\x37\x58\xc0\x69\x7f\x46\xfe\x69\x94\xc1\x36\x37\x8c\x6d\x1c\x96\xb6\x04\x90\x23\xec\x22\x09\x43\x02\xda\xed\xa9\x22\xcf\xc8\x9e\xad\x0a\xc5\xd2\x14\x62\x46\x35\x24\xeb\x7d\x2f\x7d\x5b\xb3\x5a\x1f\xac\xe9\x53\x2c\xad\x52\x24\xed\xeb\xff\x6e\x79\x13\x27\x7b\x9b\x48\xf5\x93\x37\x37\x97\x80\xb5\x92\xf4\x06\xf6\x14\x5e\xcc\xce\x20\x85\xc6\x88\xb4\x49\xc9\x6b\x2a\xa2\xae\xe7\xcd\x05\x6e\xfd\x6c\x10\x94\x12\x09\x4b\xa4\x4f\x4b\x73\x37\xa0\x4e\x16\xed\x2e\xf7\xd6\x21\x84\xb4\x7b\xa4\xa6\xc4\xe8\x82\x5f\xff\x77\x4c\x35\x6d\x78\xc1\xa2\xcc\x3a\xdb\x45\x6a\x5d\xb2\x4d\xd9\x79\xd3\x5e\xf7\x70\xbd\xb8\xe1\x47\xf5\x80\x4a\xcd\xae\x2f\xfb\x60\xd7\x09\xda\xa6\x6d\xac\xa4\x47\x83\xa9\x84\x25\x53\x5a\xae\x2b\x0e\x08\xe7\xc2\x14\x84\x71\xa5\x29\xd7\x0c\x59\x35\xf1\x6f\x4e\x9d\xf1\xfd\x8a\xe9\x86\x30\xc0\x77\x46\x77\x47\xd3\x2e\x66\xe2\x58\xe3\xc7\xf9\x3a\x03\xf2\xb7\xca\x1f\xaf\x64\x16\xed\xfe\xfe\x64\x41\x1c\x03\xb5\xb8\x49\xe3\x58\x82\xda\xe6\x6c\xbb\xbe\x6e\x05\x9f\x37\x56\x8d\x85\xe0\xa9\x37\x76\xb9\x1a\x81\x4a\xb1\xa5\x51\x52\x7c\x7d\x48\xef\xcb\xa9\x29\x2b\xe6\x57\x37\xb0\xf5\xcc\x42\x5a\x9c\x98\x4c\x7b\x75\x30\x12\x5c\xe5\x69\x69\x45\x88\x21\x03\x1e\x03\x8f\xd6\x58\x12\x2a\xb9\x84\x86\x30\x9e\x1f\x55\x03\x4a\x10\xf2\xbf\xd9\xd2\xa8\xdd\x6e\x72\x55\xc9\xd9\x7b\xa7\x37\x66\xca\x94\x01\xfc\x02\xa4\x51\xfe\x31\x73\xc7\x08\xbd\xbe\x87\x8a\x17\xd2\xd5\xa8\xf2\x41\xa5\x9b\x93\xc5\x42\x81\xbb\xa7\x7b\x5e\x54\xb7\xf4\xfe\x0a\x0f\x53\xcb\x81\x0c\x38\x96\xc2\x7a\xf3\x33\xa1\x98\x2f\x07\x57\x9c\x0b\xb5\x0a\x99\x62\x61\xeb\x57\x36\x8f\x55\xcf\x72\xc3\x40\xec\x8d\x45\xa3\xed\x2d\xe7\x76\x33\xa1\x6a\xd1\xf4\xbc\xb0\xa1\x06\xe7\xf9\xf6\x56\x17\x51\x34\x98\x1a\x57\x5f\x5a\x79\x96\x49\xca\x2f\x20\x26\x09\x5c\xb3\x48\x2c\x25\xcd\x56\x2c\xc2\x62\x87\xd6\xd5\x6b\x34\x46\x6d\x43\xa8\x9a\x31\xbc\xe9\xf4\xca\xf2\x79\xc2\xd4\x6a\xb7\xd3\xb0\x95\x38\x14\x44\x12\xf4\x4e\xce\xd7\x87\x36\xce\xec\xe7\xa5\xf0\xe3\x03\xde\x5d\xbf\x2e\x5f\xc4\x62\xbb\x4f\x2c\xa5\x51\x64\x08\xdb\x3b\x40\xc1\x49\x82\x15\x22\x6a\xe0\x10\xda\xfb\x99\x4c\x2f\x17\x00\x99\xc5\x67\x0c\x54\x53\x29\xda\x16\x15\xe3\x11\x60\xf1\x46\x57\x84\x13\xc0\xfb\x00\xb4\x64\x60\x25\x58\x40\xaf\x9f\xdf\x45\xe0\x7a\xb7\xc4\xd9\x6e\x44\x68\x31\x20\xb4\x43\xbc\xe0\x85\x9d\x40\xaf\xf0\x50\x2f\x14\x98\x7f\x1b\xf0\xe2\x93\xa1\x9b\x6d\x6b\x75\x9e\xd9\x50\xf0\xd1\xfc\xf0\xc7\x5a\x2f\x2e\x86\x4b\x91\x95\xb8\x72\x03\x6c\x72\x0c\x67\x95\xf3\x68\x10\x33\x15\x19\x36\xd3\x60\x38\x3a\x16\x5c\xf9\xda\x9c\x94\xdb\x72\x9a\x97\x34\x71\x09\xb2\x6e\xb0\x4c\x24\xe8\x07\x8d\x73\xaf\xaf\xda\xd4\x23\x48\xe7\x10\xc7\x10\xfb\x78\xf7\x35\x69\x38\xf4\x3b\x04\x8e\x2e\x99\xc0\x1f\x8b\xa7\x22\x49\xda\xcf\xf4\x56\xc3\x4a\x1f\xb3\x8a\x07\x40\xef\x38\x93\x0e\x31\xf3\xc4\x03\x94\xa9\x82\x22\x4b\x47\x34\x22\x99\x51\x58\x0a\xb8\xcf\x41\x5f\x01\x70\x12\xad\x20\xba\x50\x65\x8c\x9d\x36\x74\xb8\xb1\xd1\x2e\x86\xaa\x5d\x40\xac\x72\xd0\x42\x30\x35\x1b\xea\x92\xdc\x81\x30\xa3\x16\x72\xb8\xda\x8c\xc9\xda\x3e\xb8\xe8\x25\x65\x09\x9d\x27\x1d\x0a\xf3\xc9\xa2\x7c\x73\x52\x9d\x3f\xf3\xd2\x51\x96\x27\x89\xf3\x4a\x63\x94\x8a\x96\x74\xb1\x60\x11\x06\x29\x62\x94\x4e\x19\xd5\xbb\x73\xe9\xa3\x22\x73\x94\xa6\x3a\xdf\xda\xfa\x16\xbc\x69\xc3\x17\xa3\x85\xb2\x46\x7b\x6b\x1f\x0c\x79\x5f\xd7\x60\xcd\xec\xc0\xaa\xe8\x35\x87\xd6\x8c\xbc\x15\xda\x45\xbb\xbd\x01\xa5\x5c\xa4\x1d\x79\x0f\x54\x09\x5e\x39\x0a\x50\xf3\x90\x6c\xc9\x38\xdd\x5d\xa5\xc0\xae\xbf\x6a\x31\x2f\x14\x4d\xba\xc6\xe2\xc5\x6c\x29\xa9\x2e\x38\x78\xb9\x44\x77\x68\x3a\xb1\x60\x91\x63\xc4\x1b\x39\xe2\x6b\x44\x1b\x17\x02\xb7\xdb\xa6\xca\xb8\x96\x22\xce\x23\x70\x65\x9a\x73\x55\xed\xf8\x56\xcf\x81\x7a\xf8\x97\x1f\xa3\x4c\x27\x88\x41\x53\xe6\xfc\xd5\x82\x03\xa1\x2a\x33\x5a\xbe\xc7\xf6\x5c\x4a\x3c\x51\xfd\x3e\xe0\x61\x77\x74\x7a\x42\xde\x43\x1b\xd2\x75\xf2\x9d\xae\xf8\xbe\x29\x49\xa8\xd2\xe7\x92\x72\x85\x13\x3e\x67\x69\x93\x89\xc2\x68\x56\x88\x01\x8d\xcf\x25\x62\x45\xe3\x63\x8b\x02\x8d\x8f\x1b\xb8\x77\x1f\xce\xb9\xbd\x86\xdb\xb0\xf6\x6f\xf7\x5a\xa6\x47\x1a\xb9\xc4\xdb\x7a\x0a\x8c\x32\x9c\xc4\xbd\x0d\xae\x94\xb5\xd9\x6a\x87\xfa\x98\xeb\x82\xea\x76\x1b\x03\xc1\x40\x9b\x52\x4b\xbf\xf2\xbe\xc1\x9c\xc7\x20\x13\xf4\xb9\x95\xe3\x45\x2b\x23\x24\xc7\x33\xa7\xfc\xd3\xc2\x8e\x83\x61\xae\xce\xb3\x58\x3a\x0d\x6c\xc0\x9c\xef\xd1\x60\x97\xab\x21\x6e\xbb\x41\x26\x1b\x45\x90\xe9\x76\x2e\xdb\xcb\x26\xe7\x0d\x2b\x46\x48\x98\xea\x66\xac\x72\x38\x75\x1b\xfb\xe5\xba\xb2\x31\x29\xab\x3c\xa5\x86\x41\xd1\x18\x03\xe4\x8a\x67\x56\x47\xb2\x3a\x8d\xa5\x48\xeb\xb8\xb3\x8e\x17\xbf\x7d\x9d\x3b\xe4\x98\x16\x2d\x52\xed\x3b\xac\x25\xbd\x60\x96\xd2\xeb\xd7\xc0\x97\x7a\x75\x48\xfe\xf8\xd5\x9f\xbe\xfe\x73\xc3\x8b\x62\x6e\x63\xda\x5e\x01\x77\x56\xa2\xdb\x80\xde\x76\xaf\x9b\x66\xce\x99\x0f\xc5\x9e\x2d\xcb\x77\x0a\x87\x42\x89\x95\xe8\x84\x06\xed\xf8\x76\x9e\xb5\x83\xf3\x7b\x4c\x26\x50\x9a\xf2\x08\x26\x46\x1c\xd8\x39\x8c\x51\x65\x2d\x8f\x4c\xd6\xe4\xf9\x57\x13\x0c\xf1\xc4\x49\x59\xea\x9a\x95\x6c\xfd\xc3\xf5\xc7\xd9\x8e\xc5\x30\x45\xfe\x32\xd9\x98\x29\x53\xc4\xec\xbd\x58\x20\x9a\xb6\x4c\x12\xd5\x3e\x09\x96\x67\x7b\x23\xc0\x36\xcf\x86\x62\x25\x5d\x98\xd0\x65\x9b\xec\x67\x97\x4c\x19\x67\x69\x9e\x1e\x92\x67\x0d\xaf\x58\x8e\x7c\x1b\xe8\x61\x7b\x2a\xcf\x33\x6a\xd8\xf2\x52\xd2\x34\xc5\x8c\x2b\x16\x03\xd7\x6c\xc1\x30\xe6\xa5\x20\x31\xd4\xe3\xed\x87\x3e\x4e\xab\x00\x3e\x86\x70\x19\x36\xda\x8b\xe8\x4e\xed\x39\x2e\x51\x28\x75\x5e\xbb\xa8\xca\x79\xd7\x19\x58\xaa\xb4\x6a\x03\x81\xeb\xcc\x4a\x72\x15\xff\x51\x0a\x94\x33\xbe\x54\x65\xb4\x25\xf2\xbf\x36\xf3\xb8\xf9\xec\x6a\x05\x2e\xba\x01\xaa\xde\x41\x5f\x2a\xc8\x88\x92\x65\x90\x31\x06\x9e\xb7\xb3\x8f\x6d\x5b\xac\x91\xba\x52\x48\x8e\xa9\x82\x1e\x76\xd7\x4a\x2c\xa6\xbf\x56\xa1\x48\x0e\xbe\x35\x06\xf4\xfc\xd9\x57\xad\x78\x57\xbc\xd7\xf8\x52\x19\xa5\xf9\xe1\x68\xfa\x4f\x3a\xfd\xf5\xe3\x9e\xfb\xc7\xb3\xe9\x5f\xfe\xdf\xe4\xf0\xe3\xd3\xca\x9f\x1f\x9b\x83\x2b\x77\x4b\xce\x65\xab\xe1\xb0\x3b\x6b\xbd\x58\xe5\xf1\x63\xe2\x83\xb9\xce\x65\x0e\x13\xf2\x3d\x4d\x14\x4c\xc8\x8f\x1c\xcf\xc9\x1b\x02\xad\x3d\xba\xc2\x48\x36\x8f\xcd\xa8\x8f\xdb\x5f\xc1\x29\xb5\xbf\xe3\xa6\xdb\xa6\x82\xf6\x03\x92\xb7\x2c\x54\x18\x21\xaf\x60\xa0\xcd\xee\x5a\x08\x31\x83\x6b\x9a\x66\x09\xcc\x22\x91\x1e\x14\xcf\x6f\xf1\x90\x7b\xfe\x75\x0f\xec\xd9\xfb\x60\x71\xe4\xe3\xde\x87\xa9\xfb\xd7\x53\xff\xd3\xfe\x77\x7b\xff\x9a\xb5\x3e\xdf\x7f\x7a\x80\xa1\xbd\x05\xaa\x7d\xfc\x30\x2d\xd1\x6e\xf6\xf1\xe9\xfe\x77\x95\x67\xfb\xbb\x90\x70\x3b\x89\x2a\xa5\xd9\xf4\xa2\xb1\x62\x5c\xa3\x28\xdb\x94\x8d\x95\xd2\x6c\x97\x8a\xb7\x60\xcb\x37\x34\x7b\x0f\x0b\x90\xc0\xa3\x6e\x13\xd2\xf1\xd6\x27\x64\x2f\x36\x47\x38\xe6\xe0\xed\x7b\xe1\x55\x16\x4f\xdd\x41\x56\x7c\xe7\xb9\x7b\x71\xe1\xd1\x66\x4c\x4e\x2d\xd2\x6d\x52\x8a\x92\x3b\x94\xf5\xb2\xd7\xdb\x77\x01\x71\xda\x20\x4e\x4e\xcb\xa8\xbb\x11\x86\x1e\x73\x1c\x59\x83\x57\x9b\x06\xd1\x03\xc9\xfb\xc9\xbe\xbc\x25\xf4\xb7\x73\x90\x62\x9d\xa3\x7b\xf0\xf7\x50\xfc\x64\xed\x2e\xa3\xfb\xc9\x59\xa3\x72\xd9\x57\xba\xf8\xf1\xe4\x85\xc5\x19\x64\x4c\x28\x51\xae\x44\x12\x2b\x92\x73\xf6\x4b\x0e\xe4\xe4\x45\x51\x7d\x88\xf1\x28\xc9\xf1\xde\x9e\x1f\x7f\x3c\x79\xa1\x66\x84\xfc\x1d\x22\x6a\xf4\xfa\xab\x96\x10\x4e\x2c\xb5\xf7\xee\xed\xeb\xff\x83\x16\x00\xfc\xd2\x5d\x9b\xe1\x0a\x8b\x24\x8c\x5a\x8b\x94\x3d\x7c\x4d\xaf\x36\xba\x11\x67\x14\xd1\xac\xd9\xc6\x40\x9c\xdd\x8e\xdb\x20\xdd\x15\x24\x99\xc2\xe4\x23\xa2\x72\xe9\x56\x63\x06\xb4\x59\x10\x98\x86\xee\x1c\xe7\x3e\x9f\x0a\xf3\xd5\x46\xc5\x45\x47\x82\x73\x88\x30\x32\xc1\x08\xa1\x7d\x38\x44\xf5\xfd\x4d\x01\x7f\xa7\x44\xbb\x19\xe0\x5c\x8e\xe9\xf9\x87\x37\x90\xde\x3e\xa1\x1b\x8a\x7c\xe7\x44\x79\x9c\xf1\x08\xaa\x76\xbe\xc5\xd1\xf8\x6d\xe6\xe0\xe0\x76\xe7\x2c\x61\x6b\xbd\xa3\x46\xb4\x46\x4b\x74\x06\xbf\xef\xb0\x5d\xd7\xc3\x32\xb7\x2c\x1b\x1b\xb9\xad\x68\x40\x2d\xfc\xc9\x2b\xaa\xc8\x1c\x80\xa3\x3d\xd7\xda\xed\x80\x3b\x9c\x87\xd2\xda\x9a\x67\x53\x2d\xa6\x0d\xfa\x55\x07\xe4\xba\xa1\xd6\x62\x3e\xa8\xad\xed\x68\xb0\x41\xe0\x6a\xb5\xde\x05\x03\x55\xde\xda\xe3\xa5\xa7\xc1\x5e\xea\x66\xad\xac\x36\x67\x67\x64\x2d\x8e\x6d\xfc\x6b\x7b\x4a\x46\xdd\xae\x19\x9e\xb4\x40\xf7\x62\x8d\x9a\x47\xcc\xd1\x6e\xf3\x19\xc8\x4b\xd6\x43\xf8\x78\x5f\x7f\xbf\x17\x6b\x79\xf5\xfe\xf4\x18\xf3\xf3\xcc\x07\xde\x3f\x81\xd8\x5f\x95\x2a\x6e\xdf\xa3\x13\xd9\x50\xa3\xa3\xbb\x27\xe8\x4c\xc8\xf1\x83\x64\x52\x68\x11\x89\x0e\xa7\x53\x6b\xca\x0c\x82\xb6\x2d\xc7\x68\x48\x1f\x43\xe5\x0d\xcb\xc7\x6a\x59\x69\x4a\x0b\x69\xc8\xb5\xf6\x5b\x3e\x2f\xee\xc4\x2a\x7b\x77\x5a\x1f\xf9\xf7\x7f\x1e\xfd\xff\x00\x00\x00\xff\xff\xca\x25\x0c\xa7\x69\x56\x01\x00") +var _operatorsCoreosCom_catalogsourcesYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x7d\x6b\x73\x1c\xb7\x11\xe0\x77\xfd\x0a\x94\x2e\x55\x22\x95\xdd\xa5\xe4\xa4\x7c\x09\xe3\xd8\xc5\x50\xb2\x8e\x65\x3d\x58\x22\xed\xd4\x45\xd1\x9d\xb0\x33\xbd\xbb\x30\x67\x80\x31\x80\x21\xb9\x8e\xf3\xdf\xaf\xd0\x00\xe6\xb1\xbb\xf3\xe4\x4b\xf2\x01\x1f\x6c\x71\x67\x06\x8f\x46\x77\xa3\xdf\xa0\x19\xfb\x09\xa4\x62\x82\x1f\x12\x9a\x31\xb8\xd6\xc0\xcd\x5f\x6a\x76\xf1\x17\x35\x63\xe2\xe0\xf2\xf9\xa3\x0b\xc6\xe3\x43\x72\x9c\x2b\x2d\xd2\xf7\xa0\x44\x2e\x23\x78\x01\x0b\xc6\x99\x66\x82\x3f\x4a\x41\xd3\x98\x6a\x7a\xf8\x88\x10\xca\xb9\xd0\xd4\xfc\xac\xcc\x9f\x84\x44\x82\x6b\x29\x92\x04\xe4\x74\x09\x7c\x76\x91\xcf\x61\x9e\xb3\x24\x06\x89\x9d\xfb\xa1\x2f\x9f\xcd\x9e\xff\x65\xf6\xec\x11\x21\x9c\xa6\x70\x48\x22\xaa\x69\x22\x96\x76\x2c\x35\x13\x19\x48\xaa\x85\x54\xb3\x48\x48\x10\xe6\x7f\xe9\x23\x95\x41\x64\x06\x59\x4a\x91\x67\x87\x64\xe7\x3b\xb6\x3f\x3f\x17\xaa\x61\x29\x24\xf3\x7f\x13\x32\x25\x22\x49\xf1\xdf\x6e\x8d\x76\xd8\x33\x1c\x16\x7f\x4f\x98\xd2\x3f\x6c\x3f\x7b\xcd\x94\xc6\xe7\x59\x92\x4b\x9a\x6c\x4e\x18\x1f\xa9\x95\x90\xfa\x6d\x39\xbc\x19\x2e\xa2\x5a\xc9\xc8\x3e\x66\x7c\x99\x27\x54\x6e\x7c\xfb\x88\x10\x15\x89\x0c\x0e\x09\x7e\x9a\xd1\x08\xe2\x47\x84\x38\x48\xb9\xae\xa6\x84\xc6\x31\x42\x9f\x26\xa7\x92\x71\x0d\xf2\x58\x24\x79\xca\x8b\xa1\xcc\x3b\x31\xa8\x48\xb2\x4c\x23\x84\xcf\x57\x40\x32\x09\x5a\xaf\x11\x24\x44\x2c\x88\x5e\x81\x1f\xbb\xf8\x8a\x90\x9f\x95\xe0\xa7\x54\xaf\x0e\xc9\xcc\x40\x78\x16\x33\x95\x25\x74\x6d\x66\x53\x79\xcb\x6e\xd3\x0b\xfb\xac\xf2\xbb\x5e\x9b\xa9\x2b\x2d\x19\x5f\xb6\x4d\xc5\xbc\xd7\x7f\x0e\x16\x34\xe7\xeb\x6c\x7b\x0a\x1b\x3f\xf6\x1d\x3f\xcb\xe7\x09\x53\x2b\x90\xfd\x27\x51\x7c\xb2\x35\x87\xd3\x1d\x4f\x1a\x26\x52\xe9\xd4\xd3\xcd\x2c\x92\x80\x24\x73\xce\x52\x50\x9a\xa6\xd9\xd6\x00\x47\xcb\xed\x35\xc6\x54\xfb\x1f\xed\x4b\x97\xcf\x69\x92\xad\xe8\x73\xf7\xa3\x8a\x56\x90\xd2\x12\x1f\x44\x06\xfc\xe8\xf4\xe4\xa7\x3f\x9d\x6d\x3c\x20\x75\xe8\xd4\xf0\x9c\x30\x45\x28\x91\x90\x09\xc5\xb4\x90\x6b\x03\xad\xe3\xb3\x9f\xd4\x84\x1c\xbf\x7f\xa1\x26\x84\xf2\xb8\x20\x3c\x92\xd1\xe8\x82\x2e\x41\xcd\xb6\xe6\x2a\xe6\x3f\x43\xa4\x2b\x3f\x4b\xf8\x25\x67\x12\xe2\xea\x2c\x0c\x78\x3c\x4c\x36\x7e\x36\xf0\xaf\xfc\x94\x49\x33\xa6\xae\x10\xb2\x6d\x15\x66\x56\xfb\x7d\x63\x85\xbf\x4d\x37\x9e\x12\x62\x00\x63\xbf\x24\xb1\xe1\x6c\xa0\x10\x29\x1c\xd5\x41\xec\xa0\x69\x91\x85\x29\x03\x11\x09\x0a\xb8\xe5\x75\xe6\x67\xca\xdd\x2a\x67\x5b\x9d\x9f\x81\x34\x1d\x19\x86\x90\x27\xb1\x61\x89\x97\x20\x35\x91\x10\x89\x25\x67\xbf\x16\xbd\x2b\xa2\x05\x0e\x9b\x50\x0d\x4a\x13\xa4\x6b\x4e\x13\x72\x49\x93\x1c\x10\xd8\x5b\x7d\xa7\x74\x4d\x24\x98\x71\x49\xce\x2b\x3d\xe2\x27\x6a\x7b\x2e\x6f\x84\x04\xc2\xf8\x42\x1c\x92\x95\xd6\x99\x3a\x3c\x38\x58\x32\xed\x99\x7d\x24\xd2\x34\xe7\x4c\xaf\x0f\x90\x6f\xb3\x79\x6e\x18\xea\x41\x0c\x97\x90\x1c\x28\xb6\x9c\x52\x19\xad\x98\x86\x48\xe7\x12\x0e\x68\xc6\xa6\xb8\x18\x8e\x0c\x7f\x96\xc6\xff\x43\x42\x95\x03\x6e\xa2\xc1\x06\x35\x10\xcf\x77\x07\x6e\x96\xe1\xc7\x16\x31\x6d\x87\x76\xb1\xe5\x9e\x98\x9f\x0c\x18\xdf\xbf\x3c\x3b\x27\x7e\x46\x76\xdf\xec\x16\x95\xaf\xee\x80\x90\xdf\x2d\x03\x59\xc6\x17\x20\xed\x97\x0b\x29\x52\xec\x15\x78\x9c\x09\xc6\xb5\xe5\x1a\x09\x03\xae\x89\xca\xe7\x29\xd3\x0a\xd1\x1a\x94\x36\x1b\xb9\xdd\xf1\x31\x1e\x8e\x64\x0e\x24\xcf\x0c\xf1\xc6\xdb\xaf\x9c\x70\x72\x4c\x53\x48\x8e\xa9\x82\x7b\xdf\x3b\xb3\x47\x6a\x6a\x36\xa4\xf7\xee\x55\x8f\xfe\xed\x0f\xb6\xa8\x9e\x10\x7f\x66\xf7\x7a\xb9\x89\x4d\x10\xcb\x13\x76\x9d\x09\xa4\x85\x3b\x98\x46\xe3\x58\x82\xda\xf1\xa0\x1b\xeb\x4c\x3b\xb2\x9f\x5b\xe4\x5b\x09\x65\x90\x80\x6a\xf2\xee\xf5\x1b\x12\x51\x4e\x72\x05\x86\x84\x23\xc1\xb9\xc1\x32\x2d\x08\x35\x67\xee\x14\xae\x99\x42\xac\x94\xb0\x64\x4a\xcb\xf5\xf6\xde\x9a\xf6\xbd\x90\x29\xd5\x87\xe4\x1b\xff\xda\x14\x87\x10\x92\xb0\xec\xdb\xc3\x6f\x32\x21\xf5\xb7\x3b\x3f\x7c\xc7\x93\xb5\x19\x3c\x26\x57\x2b\xe0\xe4\xac\x80\x0c\xf9\x7b\xe5\x8f\x57\x32\x8b\x76\x0f\x7c\xb2\xe4\x42\xfa\xaf\x0d\x5a\x9f\xa4\x74\x09\x64\xc1\x20\x41\x42\x53\xb0\x83\xab\xb5\xa0\x05\xb1\x82\xdf\x82\x2d\xdf\xd0\x6c\x2c\xac\x8f\x7d\x07\x66\x06\x66\x52\x55\xb1\xa5\x7c\xa8\x05\x52\x94\x59\xbc\xf9\x27\x8d\x2e\x08\x75\x83\xa7\x34\x9b\x2a\xa4\xe6\x0e\xc0\xf7\x83\xdf\xb1\xef\xd4\xec\x48\xf9\xf3\x89\xe3\xd2\x83\x21\x54\x05\xc2\xe0\x6f\x4b\xa1\xac\x13\xbe\x6f\x76\x9d\xa9\x3d\xc6\x58\xca\x2c\x3a\x15\xb1\x5d\xf6\xd8\x5d\x7c\x55\xed\x84\xc0\x75\x26\x14\x28\x12\xb3\xc5\x02\xa4\xe1\x9c\xe2\x12\xa4\x64\x31\x28\xb2\x10\x12\xb7\x36\x13\x31\xb2\x89\x62\xab\x6b\xf2\xc8\xa9\xd8\xc1\x36\xc9\x20\x1a\x40\xa1\xc5\x62\x78\x17\x6e\xef\x64\x4a\xa4\x83\xc7\x98\x46\x17\xa8\x1e\xad\x77\x3f\xdd\x00\xdd\x91\x7b\xd9\x23\xba\x13\x45\x1d\x87\x7b\xa2\x0c\x48\x9e\xa8\xa2\xcf\xdd\xeb\xef\x9c\x72\x9f\x69\x9b\xc6\x45\x0c\x47\x1d\xd3\xdf\x5a\xc2\x0b\xfc\x63\x0e\x0a\x3f\x2f\xa6\x8a\x82\x4d\x9c\x27\xc8\xfb\xf2\xa4\xbe\xcb\x4d\xeb\xe8\xb9\x96\xbe\xeb\xb1\xef\xc1\x02\xa4\x84\xf8\x45\x6e\x50\xfd\xac\x98\x95\xe3\x7c\xf6\xe7\x97\xd7\x10\xe5\x4d\xe4\xd8\xb8\xf4\x06\xc4\xaf\x36\xa3\x70\x38\x48\x80\x24\x57\x2c\x49\xdc\x8c\x0c\xcb\xf2\x0f\x0c\x48\x50\x02\x34\x10\x54\xf6\x60\x51\x54\x33\xb5\x58\x77\x0e\x60\x20\x5a\xc0\x1c\xae\x8d\x70\x83\xda\x22\x12\x12\x5b\x30\x88\xc9\x7c\xed\xe4\x18\xc3\xd4\x27\x64\x9e\x6b\xc2\x34\x0a\x39\xd1\x4a\x08\xb5\x79\x88\x6e\x37\x6a\xb7\x16\xe7\x75\xc9\x04\xca\xa8\x44\x70\x30\xdc\x30\x35\x92\x89\xa3\xd7\xca\xf0\x33\x5c\x79\xf9\x19\xdb\x14\x2c\xb6\x5b\x6a\x4e\xbc\x62\xbb\x3c\x45\x98\x61\xae\x98\x5e\xe1\x1f\x4b\xa3\x2e\x19\xf9\x58\xe5\xa9\x19\xf4\x0a\xd8\x72\xa5\xd5\x84\xb0\xd9\x0e\xa1\x69\xb3\x19\x04\x04\x1a\xad\x2a\xd3\x4a\x01\xb4\x22\x34\x49\xfc\x12\xaa\x58\x6b\x25\x90\xd4\xc8\x8a\x64\xcf\x0b\x93\x9d\xa3\x38\x41\x70\x52\x48\x30\x9b\x88\xb7\x73\xbb\x26\x04\x74\x34\xdb\x9f\x74\x76\x1f\x89\x34\xcb\x35\x18\x09\x38\x4f\xcd\xd6\x32\x6d\x74\x30\x2b\xf8\x4a\x91\x2f\x2d\xa4\x20\x71\x13\xf7\x6a\x8b\x3d\xd1\x0d\xff\xa3\x71\xbc\x8b\xe7\x6f\xb6\xc7\x16\xb8\x8f\xbd\x66\x62\x86\x63\x16\x48\x08\xbf\x94\xea\x68\xe5\x94\xa5\x48\x48\x09\x2a\x13\xdc\xf4\x6c\x9f\xbc\x2c\xd7\xf6\x37\xf3\x4e\xe7\x78\xa6\xd3\x3d\xb5\x5f\x6e\xf6\x8a\x2d\x57\x7e\xaf\xa9\x04\xfc\xad\x8e\x23\x5d\x5b\x6e\x59\x09\x95\x92\x76\xd1\x11\xd3\x90\x76\x30\x12\x32\x82\xfa\x09\x39\xe2\x04\xd2\x4c\xaf\x2b\x88\x5d\x41\x31\x0d\x32\x2d\x00\x89\x58\x88\x6c\x4f\x59\x20\xb0\x34\x4b\x58\xc4\xb4\x43\x73\xf2\xac\xc7\x78\x7b\x86\x12\x08\xd3\xe6\xd0\x20\x5c\x4c\x45\xb6\x3f\x23\x47\x84\xe7\x05\xe3\x69\x9b\x02\x17\xc5\x0c\x5c\x47\x66\x5a\x4a\x94\x7d\x75\xf3\xa3\x7e\xec\xdb\xb6\x66\x21\x7f\xbb\x4d\xdd\xfc\x81\xf7\x20\x42\xf3\xba\x85\x5a\xe7\xab\x7d\x0f\x12\xff\xb6\x9f\x43\x9f\xb7\x37\x4f\x7b\x4b\x39\x0a\x12\x88\xb4\x39\x0d\x41\xa6\x13\x42\x95\x12\x11\x33\x5a\x61\x89\xfb\x75\x82\xb2\x2b\xe9\x86\x3d\x19\x0a\x7f\x32\x78\xfd\x04\x0d\x0f\x75\xfa\xee\xfb\xdd\x16\x34\x12\x66\x74\x9c\xc5\x06\x54\x6a\x7c\x77\xbe\xc6\xa7\x4f\x14\x49\xe8\x1c\x92\x1d\x4a\x7b\x53\xeb\x4f\xfc\x65\xeb\xc9\x06\x1a\x16\xd4\x8b\x21\x94\x6d\x13\x1b\x2a\xeb\x76\x26\x8e\x02\x4f\xcc\x51\x65\x54\x7b\xca\xb8\x72\xf6\x9d\x09\xa1\xe4\x02\xd6\xd6\x0e\x47\x79\x61\x8a\x1b\x34\x05\xec\x58\x82\x3d\xd0\x0d\xde\x5d\xc0\x1a\x3b\x6c\xb2\x21\xb5\x74\x35\x14\xef\x6c\x1b\xc2\x01\xca\x36\x35\x13\x1d\xf8\xc5\x08\x00\x0d\x27\x0d\xdb\x2e\xa0\x55\x7c\xde\xd5\xb6\xac\xd4\x88\xee\xb8\x1f\xb8\x49\x78\x02\x7b\x7c\xa0\x59\x96\x30\xd8\x6d\x6a\x6a\x6f\xad\x5a\x5f\x5b\xf3\xd0\xbb\xd1\xba\x06\x12\x88\x69\xef\x0b\x73\x9d\xc5\xf7\x27\xca\xe2\xab\xe1\x3b\x2b\x96\x59\x43\x8b\x02\x64\x23\xc3\x91\xd6\xb6\x9f\x68\xc2\x4a\x5b\xb6\x42\x61\xe3\x84\x4f\xc8\x5b\xa1\xcd\xff\x5e\x5e\x33\x65\x64\xcc\x17\x02\xd4\x5b\xa1\xf1\xcf\x19\x79\xa5\x2d\xe9\xbd\xee\xc9\x97\xcb\x36\x7a\x0f\xec\xfa\xee\x7b\x07\x8e\xb8\x65\xa2\x06\xc2\x55\xa3\xab\x9a\x91\x13\x2b\x0e\x16\x5e\x00\xa6\xc8\x09\x37\x4a\x81\x85\xdc\xe0\xa1\xd0\xee\x8e\x7d\xbb\x21\xd3\x5c\xa1\xd5\x94\x0b\x3e\x45\x31\x6a\xe7\x98\x76\x83\xcc\xb8\xd5\x2d\xba\xc5\xe1\x9b\x87\x7e\x85\x36\xba\xd7\x7a\x52\xf9\x78\xf0\xb8\x95\xc1\x56\xf4\x12\x45\x7b\xc6\x97\x49\x21\xc4\x4f\xc8\xd5\x8a\x45\x2b\xab\x3d\xce\xc1\x3a\x07\x32\x09\x46\x62\xa0\xca\x30\x7f\xf3\xcb\x12\xe4\x70\xd4\x3f\x37\xaa\x81\x1d\xdf\xba\x36\x12\x1a\x41\x4c\x62\x54\x59\xac\x95\x9d\x6a\x58\xb2\x88\xa4\x20\x97\x40\x32\x73\xf4\x8f\x43\xf8\x61\x27\xb1\x6d\x83\xcf\xe3\xea\x80\x23\x28\x8c\x90\xeb\xe9\x45\x3e\x07\xc9\x41\x83\x9a\x1a\xf9\x64\xea\x66\xaf\x45\xca\xa2\xde\x9d\xdd\x4a\x37\x28\x67\x7d\x6f\xf4\xb6\x7b\x12\xb1\x50\x47\x0c\x22\x56\x10\xb1\x82\x88\x15\x44\xac\x20\x62\xf5\x6e\x41\xc4\xba\xf1\xf0\x41\xc4\x0a\x22\xd6\xbd\x8b\x58\xb5\x2e\x52\x9a\x0d\xed\xc1\xda\xe5\x46\x18\x02\xff\x69\x0d\xba\x9b\x96\x3f\x14\xf8\x7c\x08\x4b\xdd\x04\x68\xe4\x98\x33\x77\x38\x9d\xa3\xd9\x90\x59\x7f\xbd\xa4\x7c\x09\xe4\xf9\xf4\xf9\xb3\x67\x43\x0c\x84\x0e\x9d\x7b\x7d\xb1\x70\xc1\x09\x8c\xeb\x3f\x7d\xd5\xf1\xc5\x0d\x76\xa5\xc9\x5f\x72\x3f\x8e\x3a\xc7\x79\x0a\xdf\x4c\x4d\x44\x6e\xf0\xa5\xe1\x31\xc6\x85\x26\x29\x68\x42\xbb\x65\xb2\xaa\xd9\x9d\xa5\x30\x29\x9c\xde\xc8\x76\x5c\x84\x90\x77\x0a\xc6\x44\x70\xe7\x7a\x31\x9b\xdf\xbd\xb9\xa3\x56\x10\x01\xb5\x91\x2b\x73\x30\xab\xe8\x76\x05\x6a\xa2\x44\x6a\x66\xcd\xb8\xf6\x4c\xcc\x2c\x01\xfc\xc6\x90\x3d\x98\x2d\x67\x24\xce\xb1\x5b\xca\x5d\xc8\xd3\xbe\x5d\xad\x5a\x2b\x0d\x69\xb7\x2f\xd0\x1c\x86\x12\xff\x67\xc0\xa2\xe5\xda\x74\x06\x97\xc0\x75\x4e\x93\x64\x4d\xe0\x92\x45\xba\x80\x1f\x46\x68\x31\xad\x7a\x41\x6a\x80\x18\xdd\x5f\x74\x9e\x6e\x51\x68\xd7\x21\x35\x44\xf2\xdd\xea\xbb\x0f\xcf\xa9\x51\xc0\x7b\xb7\x92\x59\xa3\x4e\xa8\x4d\xbf\xd6\x6d\x8b\xff\x44\xe4\x7e\xf7\xbe\xdb\xcb\x46\x06\x9f\x3f\x03\xce\x9c\x71\xa2\x95\x73\x78\x09\xe9\x9c\x6f\xdb\x2b\xdd\xe1\xf2\xb2\x6b\xaf\x51\x8d\x58\xf4\x1c\x50\xaf\xc0\x3a\x29\x8f\xde\xbe\xe8\x07\x31\xe2\x82\x03\xce\x45\x26\x12\xb1\x5c\x57\xb7\xd7\x86\x48\xb3\x34\xf3\x4e\x5c\x4a\x54\x3e\x77\x22\xb8\xc1\xf9\xb7\x1b\xf8\x10\x5c\x43\xc1\x35\x14\xec\x16\xd8\x82\xdd\x22\xd8\x2d\x82\xdd\xa2\x5f\x0b\x76\x8b\x1b\x0f\x1f\xec\x16\xc1\x6e\x11\x5c\x43\xdb\x2d\x88\x58\xdd\x2d\x88\x58\xad\x2d\x88\x58\x45\x0b\x22\x56\x10\xb1\x82\x88\x15\x44\xac\x20\x62\xdd\x57\x37\x37\x75\x0d\xdd\x68\x0a\xe3\x06\xcf\x44\x7c\x83\xe4\xad\x4c\xc4\x2d\xb9\x5b\xd6\xa6\x1f\x89\x69\x22\x22\xaa\x5d\x46\xb5\xf9\xc4\x79\xa1\x14\x4d\xad\x9b\x62\x42\x7e\x15\x1c\x6c\x36\x8b\x21\x0f\x74\x16\x08\xbd\x02\x69\x5e\xdf\x53\xfb\xad\x29\x04\x21\xf7\x2b\xe4\x7e\x85\xdc\xaf\xc6\xf6\xd9\xe4\x7e\xad\xa8\xb2\x78\x6b\x8f\xc6\xe6\x54\xb0\x0a\x4f\x3a\x07\x99\xfe\x4e\x33\xc1\x0c\xba\x3b\x74\xc4\x7a\x20\x25\x4a\x59\xc8\xc4\xce\xe1\x0f\xf1\x69\x1d\x1e\x4e\xad\xc6\x45\xd1\x38\x86\x98\x64\x20\xa7\x16\x45\x05\x59\x30\x1e\xef\x58\xab\x87\x4f\x37\x7b\xb8\xc3\x54\xac\xfa\x3a\x7a\x7d\x73\x37\xf9\x58\xf5\x89\x8c\x70\x2a\x56\x3d\xa3\xb5\x43\xf0\xb3\xc8\xce\x1a\xaa\xa1\x4f\x89\x76\x0e\xc5\x1f\x7a\xea\xe8\xc3\xd5\x6c\x54\x8e\xbd\xfb\x71\xa4\xf9\x69\x90\x2a\x74\xe4\xf4\xf1\x5f\x72\x90\x6b\xac\x1b\x50\xaa\x9d\x45\xd9\x19\x17\x11\xc3\x14\x89\xa8\xb2\xc7\xea\x10\x51\xf9\x64\x61\xb3\x26\x79\x9e\x24\x13\xdb\xcf\x26\xb1\x7a\x36\x87\x78\xc0\x85\x79\x3e\xd8\x22\x36\xd0\x44\x33\xce\x06\x32\xde\x0b\x4b\x36\xf7\x69\xb3\x2b\x6b\x1b\xf3\xa6\x43\xbb\x2d\x3b\x6d\x87\x3b\xbc\xe9\x83\xfd\xe3\xb6\x8d\x55\x60\x46\xa9\x2f\x37\xd6\xd7\x5b\x60\x72\x03\xbb\x22\xbe\x3c\x78\x32\xb7\x63\x5b\x24\xe3\xed\x8b\x64\xb4\x8d\x91\x8c\xb2\x33\x92\xb1\xb6\x46\x72\x03\x7b\x23\x19\x67\x73\x24\x9b\xd8\x66\x76\xc8\x09\xbe\x77\x63\x7e\x24\x37\x53\xce\xc7\x9b\x21\xc9\x2d\x10\x56\x75\xfc\x4a\x11\xaf\xbb\xb3\x4b\x92\xbe\xb6\x49\x24\xab\x9a\x79\xf2\xbe\xf7\x65\x9c\x69\x92\xdc\xd2\xae\x38\xa3\x1d\x43\x5b\xd8\x7d\x19\x2b\xc9\xc3\x1b\x2c\x5b\xa7\xe0\x86\xef\x6d\xe1\x1b\x35\xfa\x0d\xac\x82\xe4\x46\x96\x41\x32\xde\x3a\x48\x6e\x8a\xec\xb7\x66\x25\xbc\xd5\xae\x50\x4e\x7a\x8d\x71\x68\x37\x90\xb6\x06\x53\x60\x65\x58\x2b\x5d\x60\x8d\xb2\x05\xf9\x8f\x11\x22\x10\x31\xff\x4b\x32\xca\xa4\x32\xda\x8d\xb3\x6b\x57\x9f\x39\xf3\x5d\xa5\x9b\xc1\x13\xc0\x22\x6d\xe6\x8c\xbf\xa4\x89\x11\x72\x6c\xd0\xaf\xb3\x41\x98\xb9\x6c\x8a\x90\x13\x72\xb5\x12\xca\x4a\x24\x45\x9d\xb9\xc7\x17\xb0\x7e\x3c\xe9\x65\x1e\xa8\xb7\x2a\x65\x3f\x3e\xe1\x8f\xad\xe8\xb4\x45\x97\x85\x9c\x25\x78\xb2\x26\x8f\xf1\xd9\xe3\xdb\x96\x51\x47\xc8\x47\xd5\x62\xbe\x63\xc5\x8f\x51\xe4\x74\x53\x03\x37\xa9\x61\xdf\x0f\xb0\x1e\x1b\x88\x30\x08\xe7\xdf\xd4\x46\xf4\x02\x35\xa2\x99\xd1\xdd\x0b\xb9\x09\x2d\xaa\x56\x64\x72\x36\x2a\x6b\xae\x62\x49\x32\x60\xb4\x39\x10\x4d\x2f\x00\x3d\x3c\x58\xdb\x51\xb1\x18\x0d\x6e\x82\x5b\xd4\xc1\x91\x0c\xca\xf8\x22\x84\x89\x10\x17\x79\xe6\x51\xcf\x17\x0e\x1d\x30\x24\xe3\x91\x48\x7d\x4c\xbd\x8d\x6b\x35\x54\xe1\xe8\x65\x6a\xcb\x9d\xda\xdf\x71\x60\x3c\x02\x9c\x69\xe2\x53\x4d\x31\xff\x44\xa8\x22\x9f\x50\xa8\xe4\x64\x0f\x3f\xdc\xff\x34\x24\xa4\xa0\x00\xa0\xb5\xbe\x8a\x1c\x39\x4b\x51\xd0\xb2\x62\xff\x2b\x60\xdb\x06\xb1\x01\x43\xfb\x4a\x71\x55\x60\xd8\x5a\x78\x64\x8f\x72\xcd\xf6\xcb\x82\x78\x04\xf1\x00\xa5\xe4\x58\xf0\x27\xda\xce\xcf\xf3\x35\xdf\xc1\x90\xa8\x83\x02\xee\xa5\xc7\xcf\x7a\x0b\xec\x96\xc7\xb0\xa0\x79\xa2\x5d\xe1\x59\xc3\xfa\xf0\xa4\x1f\x30\xc2\xb9\xf7\x97\x38\x81\x7f\x21\xe4\x9c\xc5\x31\x70\x4c\x71\xf0\xd3\x9f\x0b\x9f\x10\x54\xa2\xbb\xe1\x6c\xb5\x3d\x1e\x32\xec\x51\xa2\xc4\x64\xb3\xc7\xa8\x28\x4c\x6b\xa8\x08\xcb\x27\xd6\x06\x20\x4c\x19\xa0\x36\x54\x4a\xdc\xdd\xee\x25\xf4\xe7\xe6\x3c\x6f\x74\xe8\x15\x53\x0f\xc0\xf7\x36\x07\x0d\xac\xaf\x17\xeb\xe3\x42\x07\xee\xf7\xc5\x72\xbf\x2d\xa4\xbf\x0d\x06\xb8\xd5\x69\xe0\x81\x83\x79\x20\xf7\xf7\x53\x3c\xb0\x17\xc0\x1a\xc6\x6c\x14\xab\x9f\x92\x2a\x6d\x66\x98\xe8\x35\xce\x5e\xe6\xd3\xe0\x90\xcf\x62\x0f\xb1\x77\x86\xe6\xdc\xd5\xfd\xf7\x95\xa9\xdd\xb0\x96\x5f\x6c\xfa\xdc\x07\x8c\xe9\x15\x17\xc1\x41\xa1\x89\x1d\x8a\xf8\x8a\xca\x30\xd8\xeb\x90\xa5\x60\x2a\x5c\x69\x3e\xe4\xf1\x66\x72\x5c\xd9\x37\xda\xf5\x53\xa0\x5c\x91\xc7\x3e\xc4\xe3\x89\x2a\xdf\x78\x3c\x88\xde\x7c\xe9\xcb\x62\xec\xbd\xff\xfc\x77\xbf\x56\xee\xb2\x1c\x3a\xf8\x51\x82\x1f\xa5\xda\x82\x1f\x65\x7b\x12\xc1\x8f\xd2\xd4\x82\x1f\x65\xd4\xf8\xc1\x8f\x52\x6f\xc1\x8f\x12\xfc\x28\xc1\x8f\x12\xfc\x28\xc1\x8f\x12\xfc\x28\x7d\x3f\xba\x0d\x3f\x4a\xa9\x06\xdd\x87\x1e\x5d\x55\x59\x5d\x9c\xb8\xbd\x50\x8d\x6a\x16\x95\x59\xa1\xfe\x2d\xfb\xaf\x87\x52\xaa\xab\x6a\xf0\x4d\x55\xea\xaa\x82\xbe\x65\xc1\x18\xac\x51\x37\xea\xcf\x85\x86\xbd\x35\xc6\x2d\xa9\xd6\xbf\x73\xe3\x52\x25\x80\xf5\x3e\xc8\xe1\xdc\xa7\xb2\xb8\x3b\x1a\xe7\x50\xe6\xb9\xc4\x64\xcf\xdb\x5a\xf7\xcd\x86\x73\xa1\xeb\x0f\xb9\x66\xd3\xf2\x8d\x22\x40\x18\x4d\xc2\xbe\x9a\xdb\x10\xa0\x7b\x9d\xa5\xb4\x3d\xba\xfc\x9a\x22\xa1\xa3\xc4\x36\xc3\xff\x41\xd6\x66\xcb\x94\xbb\xc3\x12\x53\xd3\x64\xce\xb9\x11\x8f\x04\x77\x59\x1c\x03\x66\x62\x8f\x16\x6b\xe6\x75\x54\x69\x95\x29\x5c\x23\x6a\x54\xe5\x36\x55\x12\x00\xa8\xb6\x37\x62\xba\x9a\x4b\x82\x3b\x23\xb9\xf9\xc5\xf6\x33\x60\x12\x05\xc1\x22\x3c\x59\xb1\xa2\x21\xb4\xfa\x12\x69\xb4\x3a\x59\xa6\x70\x1f\x69\x92\x88\xab\x21\xe7\xd3\x40\x8a\x18\x5d\x1c\xb0\x37\xf6\x5e\x0d\xae\x22\xb8\x11\x2d\xdf\x57\x56\x0f\xa5\x06\x5b\x5b\x28\x35\xf8\x79\x94\x1a\xac\xf8\x41\xab\x35\x07\xbb\x61\x85\x35\x09\xef\xb4\xe6\x20\x21\xff\x74\x17\x6c\x4a\xb0\xce\xcb\x3c\xd1\x2c\x2b\xb3\x8c\x95\xdd\xa1\xc4\xaa\xd4\x0b\x97\x0d\x58\xa7\x5e\x33\x1b\x1a\xad\x3a\x87\xda\xa0\x72\x1c\x0f\xb3\x96\x15\x72\x53\x9b\x31\x87\xf6\x77\x5b\xe8\xcf\xeb\xda\x36\xed\x90\x3d\x74\x36\x55\x2f\xfe\xf7\xc2\x5d\xd5\x5c\xf5\x81\x2b\xb2\x67\x4e\xc7\x64\xed\xbc\xc6\x35\x46\x58\x3b\x56\x7b\x0c\x60\xed\x60\x97\xe0\x05\xd4\x25\xbb\x04\x5e\x9e\xbe\x7b\x6a\x7f\xdf\xcb\xc4\x9b\xf2\x43\x8f\xde\x6f\x22\x61\xf4\xe1\xda\x43\x25\x83\x8d\xf3\xbe\xc7\x08\x3b\x24\x82\x6f\x2a\xa7\xec\xb7\xdd\x32\x41\x8f\x41\x2c\x49\xfb\xf4\xcc\xca\x46\x97\xb2\x40\x67\x2f\x77\x98\x05\x37\x24\xd5\x6a\x98\x55\x7c\x44\x8a\xd5\xd8\x4a\x99\x77\x9b\x5a\x75\xa7\x69\x55\x5f\x4e\x41\xcb\x07\x76\xff\x7d\x01\xd5\x98\x3e\x13\x77\x5f\x28\xc7\xd4\xd4\x1e\xaa\x1c\xd3\x9d\xbb\xf3\xbe\xb8\xaa\x4c\xf7\xea\xbe\xbb\x1f\xd7\xdd\x17\x56\x95\xe9\x41\x5c\x75\x9f\x79\x7d\xa6\xbb\x73\xd1\x85\xe2\x47\x0f\x53\x5f\x72\xa8\x1b\x6e\x3c\x55\x3d\xa8\xfb\xed\x41\x5d\x6f\x0f\xef\x76\x1b\x25\xab\xdc\xd4\xdd\x36\x98\x4c\x6e\xea\x66\x1b\x13\xb2\x3f\x0e\x9f\xef\x2f\x45\xe9\x9e\x63\xf4\x3f\x8f\xd4\xa4\x07\x0a\xcc\x7f\xa8\xa0\xfc\xbb\x0d\xc8\x7f\x80\x54\xa4\x7b\x49\x43\x1a\x7a\xec\x0f\x3a\xec\x6f\xc6\xbb\xc6\x9c\xc8\x23\x53\x8e\x46\xf2\xaf\xfb\x4c\x35\xfa\x1d\xb0\xb0\x51\x29\x46\x81\x8b\x3d\x10\x17\xbb\xbd\x94\xa2\xfb\x4a\x27\xfa\x9d\xf1\xb2\x91\xa9\x43\xb7\x66\xdd\xbe\x9b\x94\xa1\xfb\x4e\x17\xba\x83\x54\xa1\x87\x48\x13\xba\x83\x14\xa1\xe0\x13\xe8\xd9\x82\x4f\xa0\x6f\x0b\x3e\x81\xa6\x16\x7c\x02\x9b\x2d\xf8\x04\x82\x4f\x20\xf8\x04\x82\x4f\x60\x7b\xc0\xe0\x13\x08\x3e\x81\x7e\x2d\xf8\x04\xee\xc7\x27\x30\x34\xed\x66\x1c\x2e\x3f\x4c\xba\xcd\xfd\xa6\xda\xdc\x7e\x9a\xcd\x03\xa6\xd8\xfc\xce\x0c\x2e\x83\xd3\x69\xc6\xa1\xf9\xe7\x92\x46\xf3\x79\xa4\xd0\x3c\x78\xfa\xcc\x4d\x53\x67\x6e\x27\x6d\x66\x00\xb6\x8f\xc4\xf3\x4c\xc4\x47\x5c\xb3\x9b\x5e\x7c\x54\x45\xc0\xa6\xdb\x8f\xe8\xa5\x60\x31\xc9\x72\xed\x2e\x5c\x09\x37\x20\x75\xe2\xc0\xfd\xdc\x80\x54\xdb\xbc\x70\x0d\x52\x5b\xfb\x6c\xae\x41\x6a\xda\xb3\x70\x17\x52\xbd\x85\xbb\x90\xc2\x5d\x48\xe1\x2e\x24\xdb\xc2\x5d\x48\xe1\x2e\xa4\x50\xc3\x2f\xd4\xf0\x0b\x35\xfc\xfa\x7f\x15\x6a\xf8\x35\xb7\x50\xc3\x6f\x48\x0b\x35\xfc\x7a\x8f\x1e\x6a\xf8\x85\x1a\x7e\xc3\x06\x0e\x35\xfc\x48\xa8\xe1\x17\x6a\xf8\x7d\xc1\x35\xfc\xc2\x5d\x48\x5f\xc4\x85\x20\xe1\x36\x90\x01\x63\x7f\x5e\xb7\x81\x84\xbb\x90\x5a\x07\x09\x77\x21\x05\xd6\x17\xee\x42\xfa\xdd\x72\xbf\x70\x17\x52\x8f\x41\xc2\x5d\x48\xe1\x2e\xa4\xd6\x16\xee\x42\x0a\x7e\x14\x12\xfc\x28\xc1\x8f\x32\xf4\xab\xe0\x47\x69\x6e\xc1\x8f\x32\xa4\x05\x3f\x4a\xef\xd1\x83\x1f\x25\xf8\x51\x86\x0d\x1c\xfc\x28\x24\xf8\x51\x82\x1f\xe5\x0b\xf6\xa3\x84\xbb\x90\xc2\x5d\x48\xe1\x2e\xa4\x62\xe4\x70\x17\x52\xb8\x0b\x09\x5b\xb8\x0b\xa9\xc7\x08\xe1\x2e\xa4\x2f\xf5\x2e\xa4\x5a\x3e\xd0\x97\x7b\x21\xd2\xf0\x65\x84\x5b\x91\xc2\xad\x48\x0d\x2d\xdc\x8a\x14\x6e\x45\xda\xd5\xc2\xad\x48\xe1\x56\xa4\x96\x16\x2a\x20\xf6\x6c\xa1\x02\x62\xdf\x16\x2a\x20\x36\xb5\x50\x01\x71\xb3\x85\x0a\x88\xa1\x02\x62\xa8\x80\x18\x2a\x20\x6e\x0f\x18\x2a\x20\x86\x0a\x88\xfd\xda\xc3\x3b\xe0\xfe\xff\xa8\x80\x18\x6e\x45\xfa\x2c\xaf\x14\x09\xf7\x89\x74\xb4\xcf\xe7\x3e\x91\x70\x2b\x52\xad\xf3\x70\x2b\x52\x60\x61\xe1\x56\xa4\x2f\x8e\x8b\x85\x5b\x91\x76\x74\x1e\x6e\x45\x0a\xb7\x22\x85\x5b\x91\x82\x4f\xa0\xb3\x05\x9f\x40\xf0\x09\x54\x5b\xf0\x09\x6c\xb6\xe0\x13\x08\x3e\x81\xe0\x13\x08\x3e\x81\xed\x01\x83\x4f\x20\xf8\x04\xfa\xb5\xe0\x13\x08\xb7\x22\x85\x5b\x91\xc2\xad\x48\xd8\xc2\xad\x48\xe1\x56\xa4\x70\x2b\xd2\xce\x8f\xe1\x5a\x4b\x1a\xe9\x63\xc1\x35\xf0\xc6\x9c\x9b\xbe\xe8\xfc\xb2\xd6\x9b\x39\x5d\x17\x6c\x99\x4b\xa7\xf7\x2f\xdf\x9f\x1e\x93\x88\x6a\x9a\x88\x25\x39\x15\xb1\x35\x2d\xe3\x17\xc5\xcf\x29\x68\x1a\x53\x4d\x0b\xaf\x84\xd1\x8f\x2f\x59\x8c\x4c\x35\x86\x6b\xc2\x52\xba\x04\xc3\xbc\x1a\x27\x91\x2b\x20\x94\x5c\x41\x92\x4c\x2f\xb8\xb8\xe2\xe4\x12\xa4\xaa\xb0\xeb\x4f\x22\x4b\x3f\x11\x05\xf2\xd2\xde\x2c\x04\xd7\x99\x41\x34\xa6\xed\xb9\xef\x67\x52\x1d\xae\x0c\x52\x3f\xb6\x4f\xcf\x30\xa8\xb7\xed\x92\x9e\x62\xed\xb8\x4c\x33\xa7\xa7\x46\xb0\x7f\x6a\x88\x3a\x57\x3e\xa2\x7e\xc1\x12\x98\xce\xa9\x82\xd8\x8f\xab\x0c\xad\x09\x19\xdb\xb9\xe5\x9a\x25\xec\x57\x70\xa7\x09\x50\x9d\xcb\xc6\x3c\x89\x1e\x02\x47\xb7\x21\x64\xea\xe7\xf1\x82\x35\x19\x31\xfa\x18\x2c\x22\x1a\xad\xe0\x05\x6b\x55\xe1\x6b\x48\x75\xec\x3e\xf0\x26\x89\x3d\x91\x59\x39\x68\x9f\xc4\x4c\x22\x13\x5a\x13\xa5\x85\xf4\x90\xcb\x24\x4c\x23\x9a\x44\x79\x82\x2c\xe7\xe8\xf4\xc4\x0e\xda\x7d\x5d\x56\x07\x29\x95\xeb\x1f\x30\x79\xff\x89\x9f\xfe\xee\x39\x6f\xef\x36\x0a\xa0\x68\x8f\xbc\xc9\xb4\x53\x48\x85\x5c\x9f\x53\xb9\x84\x1b\x93\xf0\x9b\x4a\x5f\x9b\x04\xfc\x87\x57\xef\xde\xbc\x7c\xf3\xfa\xe4\xcd\xc9\xb9\xe3\xcb\xde\x19\xb6\x49\xda\x4e\x6d\xb5\x16\x46\xb1\xd0\x6e\x8a\x24\x61\x29\xd3\xc5\x57\x96\x06\x9b\x55\x66\xcb\xb7\x31\x81\x2e\xe7\x9a\xa5\x60\x3d\x5f\x54\x6b\x23\xd2\x18\xfa\x48\x01\x34\xde\xcf\x95\xd2\x0b\x30\xcc\x95\x2c\x73\x2a\x29\xd7\xe0\x8f\x02\xa6\xed\x47\xb1\x20\x4a\x38\x45\x9e\xa9\xd2\x4b\xa6\x40\xdb\xb4\xa1\x53\xd1\xcc\x52\xb0\x87\x15\xbd\xb4\x17\x28\x2d\x84\xe1\xdf\x66\x53\x53\x11\xb3\x05\x8b\xac\x65\x88\xa4\x34\x2e\x52\x5d\x9c\x62\x01\xb2\x38\xfe\xca\x05\xb7\x51\xdf\x26\x98\x81\x5f\x32\x29\x38\x2a\x4c\x97\x54\x32\x3a\x4f\xa0\xf0\xff\x29\xd0\x76\xbc\x72\x41\x9c\xcc\xd7\x1a\x9a\xd9\x92\x1d\xc1\xed\x86\xbb\x79\xab\xb9\xbf\x47\x8d\xfd\x9c\x97\x39\x69\xa5\xb0\x62\xbe\x67\x2e\x59\x21\x06\xc5\x1c\xf3\x93\x10\xe7\x91\x07\x9d\xd0\x99\x64\x56\xfb\xa3\x05\xc6\x38\x66\x4c\x15\x49\x73\x73\x52\x1b\x29\x48\x29\x36\x4f\x60\x62\x64\x1d\xd6\x9c\x4c\x53\xf6\x31\x07\x03\x65\xec\x09\x25\x90\x4b\x30\xf8\x66\xf0\xd8\x8a\xba\x00\x46\x10\x12\x78\x09\x16\xb5\xe2\x8c\x77\x99\x9a\xf3\x38\x72\x0e\xf3\x93\x05\x59\x8b\x5c\xd6\xd8\xff\x8a\x1a\x3c\x46\xea\x6d\x9c\x88\x4b\x80\x43\x1e\x34\x21\x31\x18\xc5\x81\x71\x73\x12\x2d\x85\x88\x8d\xfe\x20\xc5\x35\x4b\x71\x14\x47\x00\xc5\xae\xcd\xd7\x24\x16\xf9\x3c\x29\xd0\xc4\xb0\x7c\x77\x5a\x65\x34\xba\x30\x73\xc0\x8e\xdb\x52\x17\x0f\x74\x9a\x1d\xe0\x5b\xee\xbf\xee\x4b\x35\xfb\x59\x09\x5e\x3a\x9d\x8b\x65\xcd\x7a\xed\x2e\x53\x64\x0e\x4a\x4f\x61\xb1\x10\x52\xff\xcd\xec\x6f\xce\x91\x68\xb8\x28\x00\xe8\x11\x08\x03\x0c\x10\xda\x98\x82\x52\xa7\x7a\x21\x77\x30\x90\x0a\xea\x35\xb1\xc0\xcc\xd0\xbb\xe4\x87\xe4\xff\xec\xfd\xfb\x8f\xbf\x4d\xf7\xbf\xdb\xdb\xfb\xf0\x6c\xfa\xd7\x8f\x7f\xdc\xfb\xf7\x0c\xff\xf1\x74\xff\xbb\xfd\xdf\xfc\x1f\x7f\xdc\xdf\xdf\xdb\xfb\xf0\xc3\x9b\x57\xe7\xa7\x2f\x3f\xb2\xfd\xdf\x3e\xf0\x3c\xbd\xb0\x7f\xfd\xb6\xf7\x01\x5e\x7e\xec\xd9\xc9\xfe\xfe\x77\x7f\x68\x98\x10\xe5\xeb\x77\x8b\x56\x22\xee\x95\xbd\x3b\xed\x73\x1e\xd5\x44\x3a\xc6\xf5\x54\xc8\xa9\xfd\xe0\x90\x68\x99\xef\x16\x65\x8d\xdc\xdb\xe5\x1a\xee\x7b\x1e\xbc\xad\xf4\xb5\xe1\x31\x72\x57\xd8\x39\x73\xa5\x99\x4d\xc1\xd9\x33\x2b\xdd\x2d\xcc\xb6\x7b\xb1\xbf\xf9\x88\x3b\xdb\xd1\x23\xca\xf3\xee\xcb\x27\xca\x47\x3e\x6c\xf4\xbf\x91\x84\x6b\x39\x7e\xdb\x58\x3d\x64\xa4\x61\x26\x98\xce\x2d\xcc\x24\x13\x92\xe9\xf5\x71\x42\x95\x7a\x4b\x53\xb8\xe9\x86\x9c\x2c\x4a\x35\x6c\x62\xe8\xd9\x9c\x3f\xee\x80\x76\xa1\x28\x6e\xc8\x66\x80\x9f\x2c\x50\x0f\xa9\xf4\xe3\x81\xea\xbf\x2d\x08\xd3\x93\xb8\x90\xe4\x57\x90\xc2\x5d\x66\x28\xc1\xea\x32\x8d\x23\xb8\xcf\xda\xf7\xa1\x05\x6c\x0a\xa2\x1c\xc1\x66\xe4\xa3\x6b\xa3\x51\x2c\xd8\xf2\xa6\xa0\x3b\xdb\xd5\x29\x89\x28\x37\x0b\xc5\xeb\x39\x17\xe4\x53\x02\x4b\x1a\xad\x3f\x99\x05\x7f\x92\x60\xa6\x68\x74\xc0\x4f\x56\x39\xa8\x89\xff\x2e\xea\x87\x29\x02\x0c\x6f\x6c\x65\xfc\x67\xab\x30\x7a\xed\xbb\x71\x26\x12\xeb\x0f\x64\x22\x9e\x99\x3d\x98\x6d\xac\x16\x59\x68\xf1\xb0\x10\x25\x3e\x3c\xfd\xb8\xf5\xa6\xb3\x66\x6a\x61\x95\xca\x2a\x71\xc8\x1c\xb9\x7e\x9b\x5c\xe3\x01\x42\x8e\xe2\x94\xa1\x09\x96\xec\x9d\x9e\x1d\xed\xd7\x56\x6e\xa4\x1c\x7b\x0e\xc7\x02\x7c\xdc\x8d\x19\x48\x95\xc6\x54\x3c\x43\x31\xc5\xd1\x92\x30\xe6\x38\xfa\xb9\x18\x00\xa3\x7d\xb5\x25\xad\xd7\x4f\xf6\xec\x88\x7c\x32\x12\x72\xc2\x38\xd8\x3d\xc8\x24\xbb\x64\x09\x2c\xcd\x4c\x2a\x81\x0c\xde\x25\xb3\x7b\x4f\x99\x32\xa7\x54\x1d\xbd\x53\xcc\xd1\xb5\x68\xdd\x82\xb7\xee\xe0\x76\x31\x25\x15\xeb\xde\x13\x85\xd3\xf3\x32\x71\x29\x2f\xd4\xde\x42\x74\xe0\x0b\x21\x23\x73\x9a\xef\x80\xa3\x76\x49\xec\x06\x34\xed\x02\x27\x9a\x7f\x0a\x2d\x92\x2a\x43\x7b\xb5\x0e\xaf\x68\xa5\x52\xc0\x8c\xbc\x33\x48\x78\xc5\x14\x4c\x0a\xa9\x77\x67\x17\x1e\xc3\xaf\x68\xb3\x9c\x58\xe9\xf6\x0c\xff\xb9\xb6\xde\x26\x67\x8e\x41\x74\x47\x39\xaa\x89\x5e\x88\x04\x65\xf8\x06\xe3\xf6\x2b\x16\x5b\xd1\x07\xa4\x14\x72\x66\x53\xf9\xad\x1e\x2c\x92\xb8\xe5\x94\x2c\xd4\x71\x23\xb2\xa0\xb1\xc9\xe2\x17\x47\x0e\xe6\xd0\x66\x37\x98\x1b\x70\xa3\x2e\xaf\x6a\x51\x2c\xa1\x45\x20\x7a\x23\x30\xff\xdf\x16\xd9\x30\xcb\xa0\x73\x91\x6b\x8b\x0f\x96\x7d\x2c\x44\xce\x63\x62\x38\xe3\x21\x59\x69\x9d\xa9\xc3\x83\x83\xf2\xe8\x9e\x31\x71\x10\x8b\x48\x1d\x44\x82\x47\x90\x69\x75\xe0\x09\xf9\x20\x13\xf1\xd4\xff\x31\xa5\x9e\x0e\x0f\xc6\x32\x4e\x42\x80\xe7\x2d\xb7\x79\x4e\x89\x5d\x6d\xcb\x0b\x25\x30\x77\xbe\xa4\x45\xe2\x22\x26\x1b\xcf\xc5\xfa\x1d\xaf\xe5\xfb\xc5\x1d\xb4\x85\xe0\x5f\x61\xa4\x4f\x54\xb5\xeb\xf6\x93\xa3\xcd\xb2\xdc\x61\x4b\xee\x6f\x9a\x3d\xf7\xbc\xd4\x48\xc3\xe5\x2a\x50\x0a\xd2\x9a\xe2\xf5\xb4\x46\x5d\xb2\x4f\x0c\x1b\xe4\x6b\x62\x58\xb5\x76\x77\x25\x5b\x93\x64\x9b\x66\xbf\x32\x72\x13\xd6\xb0\xf8\xa6\x70\xbb\x4d\x60\xb1\x80\x48\x7f\x5b\x31\x13\x15\x55\x18\x0a\xb7\xd6\x37\xfe\x5f\xdf\x36\x9f\xf2\xbd\x3c\x50\xfd\xc2\x4f\xec\x94\xda\x6d\xdf\xc3\x6c\xde\x2f\xb1\xc7\x0d\xf9\xc5\x02\xcf\x0e\x86\xea\x3d\xfa\xa6\x9d\x21\xd5\x7a\x25\x9c\x5c\x98\x24\xb5\x97\x3b\x03\x30\x90\xdf\x54\x0e\x04\x67\x82\x2d\xbd\x81\x40\xde\x0a\x57\xce\x06\x26\xe4\x14\xaf\x0c\x2e\x7f\xc1\x13\xf9\xad\xb0\x85\x6d\x3a\x2a\x95\xf4\x34\xd8\x76\xc6\xef\x0c\x83\xe7\x0f\x65\x38\x8f\x05\x4c\x2d\x9c\xa7\x24\xac\xaa\x1f\xac\x15\xb0\x17\xb0\xee\x84\xaa\x3b\xfc\x5c\x28\x11\xfa\x99\x26\x25\x8e\x7a\xcd\xc0\x46\x4a\xfc\xcd\x55\x3f\x10\xe9\x9c\x71\x3b\x15\x3b\xb0\xdf\x67\x1c\xdb\xef\x07\x8f\xf1\xcf\xee\x49\xf4\x84\x76\xbf\x98\xa2\x61\x20\x7f\x37\x20\x5e\xa8\xf0\x3c\x77\x81\x74\x57\x5c\x50\x25\x18\xe8\xe5\x2f\x39\x4d\x66\xe4\x85\x15\xaf\x11\x78\xf6\xa7\x2e\x72\xb3\x5d\x6c\xf9\xe3\xaf\x58\x12\x47\x54\xc6\xa8\x59\x59\xf6\x43\x94\xb0\x88\x43\xbd\xf4\xd6\xd1\xb7\x67\x80\x25\xf2\xd8\xcb\xbc\x49\x46\xa5\x66\x51\x9e\x50\x69\x18\x3e\x2c\x85\xec\x88\x47\xef\xb9\x99\x25\x36\x9f\x41\x24\x78\xdc\xe1\x39\x1c\xb6\xab\xe7\x9b\x9d\x57\xb7\x17\xe5\x36\x90\xcc\x55\x54\x61\x29\x6c\x92\xd7\x5e\x4d\x2b\xee\x18\x4b\x2c\x3c\xb3\x2b\x78\xcb\xc4\x0a\x57\x46\x8c\xab\x16\x7e\x62\xca\x47\xfb\xef\x57\x0e\x9c\x82\xda\x67\xe4\x1f\x6b\xaf\x73\x75\x85\x20\x31\xed\xfd\x50\x68\xc6\x71\xf3\x75\xa4\xe8\x76\xb2\x64\x23\x0b\x21\xe1\x12\x24\xd9\x8b\x05\x7e\x83\x05\x9c\xf6\x67\xe4\x5f\x46\x19\x6c\x73\xc3\xd8\xc6\x61\x69\x4b\x00\x39\xc2\x2e\x92\x30\x24\xa0\xdd\x9e\x2a\xf2\x8c\xec\xd9\xaa\x50\x2c\x4d\x21\x66\x54\x43\xb2\xde\xf7\xd2\xb7\x35\xab\xf5\xc1\x9a\x3e\xc5\xd2\x2a\x45\xd2\xbe\xfe\x73\xcb\x9b\x38\xd9\xdb\x44\xaa\x9f\xbc\xb9\xb9\x04\xac\x95\xa4\x37\xb0\xa7\xf0\x62\x76\x06\x29\x34\x46\xa4\x4d\x4a\x5e\x53\x11\x75\x3d\x6f\x2e\x70\xeb\x67\x83\xa0\x94\x48\x58\x22\x7d\x5a\x9a\xbb\x01\x75\xb2\x68\x77\xb9\xb7\x0e\x21\xa4\xdd\x23\x35\x25\x46\x17\xfc\xfa\xcf\x31\xd5\xb4\xe1\x05\x8b\x32\xeb\x6c\x17\xa9\x75\xc9\x36\x65\xe7\x4d\x7b\xdd\xc3\xf5\xe2\x86\x1f\xd5\x03\x2a\x35\xbb\xbe\xec\x83\x5d\x27\x68\x9b\xb6\xb1\x92\x1e\x0d\xa6\x12\x96\x4c\x69\xb9\xae\x38\x20\x9c\x0b\x53\x10\xc6\x95\xa6\x5c\x33\x64\xd5\xc4\xbf\x39\x75\xc6\xf7\x2b\xa6\x1b\xc2\x00\xdf\x19\xdd\x1d\x4d\xbb\x98\x89\x63\x8d\x1f\xe7\xeb\x0c\xc8\xdf\x2b\x7f\xbc\x92\x59\xb4\xfb\xfb\x93\x05\x71\x0c\xd4\xe2\x26\x8d\x63\x09\x6a\x9b\xb3\xed\xfa\xba\x15\x7c\xde\x58\x35\x16\x82\xa7\xde\xd8\xe5\x6a\x04\x2a\xc5\x96\x46\x49\xf1\xf5\x21\xbd\x2f\xa7\xa6\xac\x98\x5f\xdd\xc0\xd6\x33\x0b\x69\x71\x62\x32\xed\xd5\xc1\x48\x70\x95\xa7\xa5\x15\x21\x86\x0c\x78\x0c\x3c\x5a\x63\x49\xa8\xe4\x12\x1a\xc2\x78\x7e\x54\x0d\x28\x41\xc8\xff\x62\x4b\xa3\x76\xbb\xc9\x55\x25\x67\xef\x9d\xde\x98\x29\x53\x06\xf0\x0b\x90\x46\xf9\xc7\xcc\x1d\x23\xf4\xfa\x1e\x2a\x5e\x48\x57\xa3\xca\x07\x95\x6e\x4e\x16\x0b\x05\xee\x9e\xee\x79\x51\xdd\xd2\xfb\x2b\x3c\x4c\x2d\x07\x32\xe0\x58\x0a\xeb\xcd\xcf\x84\x62\xbe\x1c\x5c\x71\x2e\xd4\x2a\x64\x8a\x85\xad\x5f\xd9\x3c\x56\x3d\xcb\x0d\x03\xb1\x37\x16\x8d\xb6\xb7\x9c\xdb\xcd\x84\xaa\x45\xd3\xf3\xc2\x86\x1a\x9c\xe7\xdb\x5b\x5d\x44\xd1\x60\x6a\x5c\x7d\x69\xe5\x59\x26\x29\xbf\x80\x98\x24\x70\xcd\x22\xb1\x94\x34\x5b\xb1\x08\x8b\x1d\x5a\x57\xaf\xd1\x18\xb5\x0d\xa1\x6a\xc6\xf0\xa6\xd3\x2b\xcb\xe7\x09\x53\xab\xdd\x4e\xc3\x56\xe2\x50\x10\x49\xd0\x3b\x39\x5f\x1f\xda\x38\xb3\x9f\x97\xc2\x8f\x0f\x78\x77\xfd\xba\x7c\x11\x8b\xed\x3e\xb1\x94\x46\x91\x21\x6c\xef\x00\x05\x27\x09\x56\x88\xa8\x81\x43\x68\xef\x67\x32\xbd\x5c\x00\x64\x16\x9f\x31\x50\x4d\xa5\x68\x5b\x54\x8c\x47\x80\xc5\x1b\x5d\x11\x4e\x00\xef\x03\xd0\x92\x81\x95\x60\x01\xbd\x7e\x7e\x17\x81\xeb\xdd\x12\x67\xbb\x11\xa1\xc5\x80\xd0\x0e\xf1\x82\x17\x76\x02\xbd\xc2\x43\xbd\x50\x60\xfe\x6d\xc0\x8b\x4f\x86\x6e\xb6\xad\xd5\x79\x66\x43\xc1\x47\xf3\xc3\x1f\x6b\xbd\xb8\x18\x2e\x45\x56\xe2\xca\x0d\xb0\xc9\x31\x9c\x55\xce\xa3\x41\xcc\x54\x64\xd8\x4c\x83\xe1\xe8\x58\x70\xe5\x6b\x73\x52\x6e\xcb\x69\x5e\xd2\xc4\x25\xc8\xba\xc1\x32\x91\xa0\x1f\x34\xce\xbd\xbe\x6a\x53\x8f\x20\x9d\x43\x1c\x43\xec\xe3\xdd\xd7\xa4\xe1\xd0\xef\x10\x38\xba\x64\x02\x7f\x2c\x9e\x8a\x24\x69\x3f\xd3\x5b\x0d\x2b\x7d\xcc\x2a\x1e\x00\xbd\xe3\x4c\x3a\xc4\xcc\x13\x0f\x50\xa6\x0a\x8a\x2c\x1d\xd1\x88\x64\x46\x61\x29\xe0\x3e\x07\x7d\x05\xc0\x49\xb4\x82\xe8\x42\x95\x31\x76\xda\xd0\xe1\xc6\x46\xbb\x18\xaa\x76\x01\xb1\xca\x41\x0b\xc1\xd4\x6c\xa8\x4b\x72\x07\xc2\x8c\x5a\xc8\xe1\x6a\x33\x26\x6b\xfb\xe0\xa2\x97\x94\x25\x74\x9e\x74\x28\xcc\x27\x8b\xf2\xcd\x49\x75\xfe\xcc\x4b\x47\x59\x9e\x24\xce\x2b\x8d\x51\x2a\x5a\xd2\xc5\x82\x45\x18\xa4\x88\x51\x3a\x65\x54\xef\xce\xa5\x8f\x8a\xcc\x51\x9a\xea\x7c\x6b\xeb\x5b\xf0\xa6\x0d\x5f\x8c\x16\xca\x1a\xed\xad\x7d\x30\xe4\x7d\x5d\x83\x35\xb3\x03\xab\xa2\xd7\x1c\x5a\x33\xf2\x56\x68\x17\xed\xf6\x06\x94\x72\x91\x76\xe4\x3d\x50\x25\x78\xe5\x28\x40\xcd\x43\xb2\x25\xe3\x74\x77\x95\x02\xbb\xfe\xaa\xc5\xbc\x50\x34\xe9\x1a\x8b\x17\xb3\xa5\xa4\xba\xe0\xe0\xe5\x12\xdd\xa1\xe9\xc4\x82\x45\x8e\x11\x6f\xe4\x88\xaf\x11\x6d\x5c\x08\xdc\x6e\x9b\x2a\xe3\x5a\x8a\x38\x8f\xc0\x95\x69\xce\x55\xb5\xe3\x5b\x3d\x07\xea\xe1\x5f\x7e\x8c\x32\x9d\x20\x06\x4d\x99\xf3\x57\x0b\x0e\x84\xaa\xcc\x68\xf9\x1e\xdb\x73\x29\xf1\x44\xf5\xfb\x80\x87\xdd\xd1\xe9\x09\x79\x0f\x6d\x48\xd7\xc9\x77\xba\xe2\xfb\xa6\x24\xa1\x4a\x9f\x4b\xca\x15\x4e\xf8\x9c\xa5\x4d\x26\x0a\xa3\x59\x21\x06\x34\x3e\x97\x88\x15\x8d\x8f\x2d\x0a\x34\x3e\x6e\xe0\xde\x7d\x38\xe7\xf6\x1a\x6e\xc3\xda\xbf\xdd\x6b\x99\x1e\x69\xe4\x12\x6f\xeb\x29\x30\xca\x70\x12\xf7\x36\xb8\x52\xd6\x66\xab\x1d\xea\x63\xae\x0b\xaa\xdb\x6d\x0c\x04\x03\x6d\x4a\x2d\xfd\xca\xfb\x06\x73\x1e\x83\x4c\xd0\xe7\x56\x8e\x17\xad\x8c\x90\x1c\xcf\x9c\xf2\x4f\x0b\x3b\x0e\x86\xb9\x3a\xcf\x62\xe9\x34\xb0\x01\x73\xbe\x47\x83\x5d\xae\x86\xb8\xed\x06\x99\x6c\x14\x41\xa6\xdb\xb9\x6c\x2f\x9b\x9c\x37\xac\x18\x21\x61\xaa\x9b\xb1\xca\xe1\xd4\x6d\xec\x97\xeb\xca\xc6\xa4\xac\xf2\x94\x1a\x06\x45\x63\x0c\x90\x2b\x9e\x59\x1d\xc9\xea\x34\x96\x22\xad\xe3\xce\x3a\x5e\xfc\xf6\x75\xee\x90\x63\x5a\xb4\x48\xb5\xef\xb0\x96\xf4\x82\x59\x4a\xaf\x5f\x03\x5f\xea\xd5\x21\xf9\xd3\x57\xff\xf3\xeb\xbf\x34\xbc\x28\xe6\x36\xa6\xed\x15\x70\x67\x25\xba\x0d\xe8\x6d\xf7\xba\x69\xe6\x9c\xf9\x50\xec\xd9\xb2\x7c\xa7\x70\x28\x94\x58\x89\x4e\x68\xd0\x8e\x6f\xe7\x59\x3b\x38\xbf\xc7\x64\x02\xa5\x29\x8f\x60\x62\xc4\x81\x9d\xc3\x18\x55\xd6\xf2\xc8\x64\x4d\x9e\x7f\x35\xc1\x10\x4f\x9c\x94\xa5\xae\x59\xc9\xd6\x3f\x5c\x7f\x9c\xed\x58\x0c\x53\xe4\xaf\x93\x8d\x99\x32\x45\xcc\xde\x8b\x05\xa2\x69\xcb\x24\x51\xed\x93\x60\x79\xb6\x37\x02\x6c\xf3\x6c\x28\x56\xd2\x85\x09\x5d\xb6\xc9\x7e\x76\xc9\x94\x71\x96\xe6\xe9\x21\x79\xd6\xf0\x8a\xe5\xc8\xb7\x81\x1e\xb6\xa7\xf2\x3c\xa3\x86\x2d\x2f\x25\x4d\x53\xcc\xb8\x62\x31\x70\xcd\x16\x0c\x63\x5e\x0a\x12\x43\x3d\xde\x7e\xe8\xe3\xb4\x0a\xe0\x63\x08\x97\x61\xa3\xbd\x88\xee\xd4\x9e\xe3\x12\x85\x52\xe7\xb5\x8b\xaa\x9c\x77\x9d\x81\xa5\x4a\xab\x36\x10\xb8\xce\xac\x24\x57\xf1\x1f\xa5\x40\x39\xe3\x4b\x55\x46\x5b\x22\xff\x6b\x33\x8f\x9b\xcf\xae\x56\xe0\xa2\x1b\xa0\xea\x1d\xf4\xa5\x82\x8c\x28\x59\x06\x19\x63\xe0\x79\x3b\xfb\xd8\xb6\xc5\x1a\xa9\x2b\x85\xe4\x98\x2a\xe8\x61\x77\xad\xc4\x62\xfa\x6b\x15\x8a\xe4\xe0\x5b\x63\x40\xcf\x9f\x7d\xd5\x8a\x77\xc5\x7b\x8d\x2f\x95\x51\x9a\x1f\x8e\xa6\xff\xa2\xd3\x5f\x3f\xee\xb9\x7f\x3c\x9b\xfe\xf5\xff\x4e\x0e\x3f\x3e\xad\xfc\xf9\xb1\x39\xb8\x72\xb7\xe4\x5c\xb6\x1a\x0e\xbb\xb3\xd6\x8b\x55\x1e\x3f\x26\x3e\x98\xeb\x5c\xe6\x30\x21\xdf\xd3\x44\xc1\x84\xfc\xc8\xf1\x9c\xbc\x21\xd0\xda\xa3\x2b\x8c\x64\xf3\xd8\x8c\xfa\xb8\xfd\x15\x9c\x52\xfb\x3b\x6e\xba\x6d\x2a\x68\x3f\x20\x79\xcb\x42\x85\x11\xf2\x0a\x06\xda\xec\xae\x85\x10\x33\xb8\xa6\x69\x96\xc0\x2c\x12\xe9\x41\xf1\xfc\x16\x0f\xb9\xe7\x5f\xf7\xc0\x9e\xbd\x0f\x16\x47\x3e\xee\x7d\x98\xba\x7f\x3d\xf5\x3f\xed\x7f\xb7\xf7\xef\x59\xeb\xf3\xfd\xa7\x07\x18\xda\x5b\xa0\xda\xc7\x0f\xd3\x12\xed\x66\x1f\x9f\xee\x7f\x57\x79\xb6\xbf\x0b\x09\xb7\x93\xa8\x52\x9a\x4d\x2f\x1a\x2b\xc6\x35\x8a\xb2\x4d\xd9\x58\x29\xcd\x76\xa9\x78\x0b\xb6\x7c\x43\xb3\xf7\xb0\x00\x09\x3c\xea\x36\x21\x1d\x6f\x7d\x42\xf6\x62\x73\x84\x63\x0e\xde\xbe\x17\x5e\x65\xf1\xd4\x1d\x64\xc5\x77\x9e\xbb\x17\x17\x1e\x6d\xc6\xe4\xd4\x22\xdd\x26\xa5\x28\xb9\x43\x59\x2f\x7b\xbd\x7d\x17\x10\xa7\x0d\xe2\xe4\xb4\x8c\xba\x1b\x61\xe8\x31\xc7\x91\x35\x78\xb5\x69\x10\x3d\x90\xbc\x9f\xec\xcb\x5b\x42\x7f\x3b\x07\x29\xd6\x39\xba\x07\x7f\x0f\xc5\x4f\xd6\xee\x32\xba\x9f\x9c\x35\x2a\x97\x7d\xa5\x8b\x1f\x4f\x5e\x58\x9c\x41\xc6\x84\x12\xe5\x4a\x24\xb1\x22\x39\x67\xbf\xe4\x40\x4e\x5e\x14\xd5\x87\x18\x8f\x92\x1c\xef\xed\xf9\xf1\xc7\x93\x17\x6a\x46\xc8\x3f\x20\xa2\x46\xaf\xbf\x6a\x09\xe1\xc4\x52\x7b\xef\xde\xbe\xfe\xdf\x68\x01\xc0\x2f\xdd\xb5\x19\xae\xb0\x48\xc2\xa8\xb5\x48\xd9\xc3\xd7\xf4\x6a\xa3\x1b\x71\x46\x11\xcd\x9a\x6d\x0c\xc4\xd9\xed\xb8\x0d\xd2\x5d\x41\x92\x29\x4c\x3e\x22\x2a\x97\x6e\x35\x66\x40\x9b\x05\x81\x69\xe8\xce\x71\xee\xf3\xa9\x30\x5f\x6d\x54\x5c\x74\x24\x38\x87\x08\x23\x13\x8c\x10\xda\x87\x43\x54\xdf\xdf\x14\xf0\x77\x4a\xb4\x9b\x01\xce\xe5\x98\x9e\x7f\x78\x03\xe9\xed\x13\xba\xa1\xc8\x77\x4e\x94\xc7\x19\x8f\xa0\x6a\xe7\x5b\x1c\x8d\xdf\x66\x0e\x0e\x6e\x77\xce\x12\xb6\xd6\x3b\x6a\x44\x6b\xb4\x44\x67\xf0\xfb\x0e\xdb\x75\x3d\x2c\x73\xcb\xb2\xb1\x91\xdb\x8a\x06\xd4\xc2\x9f\xbc\xa2\x8a\xcc\x01\x38\xda\x73\xad\xdd\x0e\xb8\xc3\x79\x28\xad\xad\x79\x36\xd5\x62\xda\xa0\x5f\x75\x40\xae\x1b\x6a\x2d\xe6\x83\xda\xda\x8e\x06\x1b\x04\xae\x56\xeb\x5d\x30\x50\xe5\xad\x3d\x5e\x7a\x1a\xec\xa5\x6e\xd6\xca\x6a\x73\x76\x46\xd6\xe2\xd8\xc6\xbf\xb6\xa7\x64\xd4\xed\x9a\xe1\x49\x0b\x74\x2f\xd6\xa8\x79\xc4\x1c\xed\x36\x9f\x81\xbc\x64\x3d\x84\x8f\xf7\xf5\xf7\x7b\xb1\x96\x57\xef\x4f\x8f\x31\x3f\xcf\x7c\xe0\xfd\x13\x88\xfd\x55\xa9\xe2\xf6\x3d\x3a\x91\x0d\x35\x3a\xba\x7b\x82\xce\x84\x1c\x3f\x48\x26\x85\x16\x91\xe8\x70\x3a\xb5\xa6\xcc\x20\x68\xdb\x72\x8c\x86\xf4\x31\x54\xde\xb0\x7c\xac\x96\x95\xa6\xb4\x90\x86\x5c\x6b\xbf\xe5\xf3\xe2\x4e\xac\xb2\x77\xa7\xf5\x91\xff\xfc\xf7\xd1\xff\x0b\x00\x00\xff\xff\xbd\xa3\xb8\x4f\x69\x56\x01\x00") func operatorsCoreosCom_catalogsourcesYamlBytes() ([]byte, error) { return bindataRead( @@ -105,7 +105,7 @@ func operatorsCoreosCom_catalogsourcesYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xfd\x7b\x73\x23\xb9\x95\x27\x0c\xff\xef\x4f\x81\x90\x3d\xaf\xa4\x31\x49\x55\xd9\x63\xef\x4c\xed\xbc\xe3\xd0\xaa\xd4\xdd\x7a\xba\x4b\xa5\x90\xe4\xf2\xe3\xe8\xe9\xb5\xc1\xcc\x43\x12\xa3\x4c\x20\x07\x40\x52\x45\x6f\xef\x77\x7f\x02\x07\x40\x5e\x78\x91\xc8\x04\x24\xb2\xaa\x13\x8e\x70\x97\xc8\x24\x70\x12\x97\x83\x73\xfd\x1d\x5a\xb0\x4f\x20\x15\x13\xfc\x1d\xa1\x05\x83\xcf\x1a\xb8\xf9\x4b\x8d\x1e\xfe\x55\x8d\x98\x38\x9b\xbf\xfd\xd5\x03\xe3\xe9\x3b\x72\x51\x2a\x2d\xf2\x5b\x50\xa2\x94\x09\xbc\x87\x09\xe3\x4c\x33\xc1\x7f\x95\x83\xa6\x29\xd5\xf4\xdd\xaf\x08\xa1\x9c\x0b\x4d\xcd\xc7\xca\xfc\x49\x48\x22\xb8\x96\x22\xcb\x40\x0e\xa7\xc0\x47\x0f\xe5\x18\xc6\x25\xcb\x52\x90\xd8\xb9\x1f\x7a\xfe\x66\xf4\xf6\x7f\x8c\x7e\xf7\x2b\x42\x38\xcd\xe1\x1d\x49\xb2\x52\x69\x90\x0a\xe4\x9c\x25\xe0\x1e\x53\x23\x51\x80\xa4\x5a\x48\x35\x4a\x84\x04\x61\xfe\x93\xff\x4a\x15\x90\x98\xc1\xa6\x52\x94\xc5\x3b\xb2\xf6\x19\xdb\xaf\xa7\x89\x6a\x98\x0a\xc9\xfc\xdf\x84\x0c\x89\xc8\x72\xfc\xb7\x7b\x57\x3b\xfc\x9d\x1d\xde\x4d\x10\x7e\x9f\x31\xa5\xbf\xdf\xfc\xcc\x0f\x4c\x69\x7c\xae\xc8\x4a\x49\xb3\x4d\x2f\x82\x8f\xa8\x99\x90\xfa\xba\x26\xcb\x90\x91\xa8\x79\xf3\xdf\xee\x41\xc6\xa7\x65\x46\xe5\x86\xde\x7e\x45\x88\x4a\x44\x01\xef\x08\x76\x56\xd0\x04\xd2\x5f\x11\xe2\xc7\xb2\x9d\x0f\x09\x4d\x53\x5c\x2f\x9a\xdd\x48\xc6\x35\xc8\x0b\x91\x95\x39\xaf\x06\x37\xcf\xa4\xa0\x12\xc9\x0a\x8d\x6b\x72\x3f\x03\x9c\x35\x22\x26\x44\xcf\x80\x5c\xdc\x7d\xaa\x1e\x25\xe4\xbf\x94\xe0\x37\x54\xcf\xde\x91\x91\x59\x80\x51\xca\x54\x91\xd1\x85\x21\xa1\xf1\x94\x5d\xcd\xf7\xf6\xbb\xc6\xe7\x7a\x61\xe8\x55\x5a\x32\x3e\x7d\x6a\x7c\xf7\x12\xdb\x91\x30\x6f\xac\x53\x73\xf8\x4f\x2b\x9f\x6f\x3b\xbc\x7f\x7d\x6a\x46\x26\x7a\x46\x35\xd1\x33\xa6\x88\xe0\x40\x24\x14\x19\x4d\x40\x3d\x41\xd0\x9a\x47\x2c\x45\xb7\xab\x5f\x6c\x20\xa9\xd9\xa5\xa6\xba\x54\xa3\x62\x46\xd5\xea\x14\xdf\x2c\x7d\xba\xa6\x3b\xfb\xe0\xfc\x2d\xcd\x8a\x19\x7d\xeb\x3e\x54\xc9\x0c\x72\x5a\xef\x01\x51\x00\x3f\xbf\xb9\xfa\xf4\xfb\xbb\xa5\x2f\x48\x7b\x76\xd6\xee\x7e\xc2\x94\x99\x2a\x64\x14\xc4\x73\x0a\x5c\xbb\x45\x01\xe4\xef\x6b\x7f\x73\x57\x40\xf2\xf7\xd1\x0a\xe5\x62\xfc\x5f\x90\xe8\xc6\xc7\x12\xfe\xbb\x64\x12\xd2\x26\x45\x66\x82\x3c\xf7\x59\xfa\xd8\xcc\x7f\xe3\xa3\x42\x1a\xb6\xa0\x1b\x47\xde\xb6\x06\xfb\x6b\x7d\xbe\xf4\xb6\x3f\x0f\x97\xbe\x25\xc4\x4c\x92\x7b\xeb\xd4\xf0\x42\x50\xb8\x43\xdd\x1e\x84\xd4\xcd\xac\xdd\xb9\x4c\x99\xed\x22\x41\x01\xb7\xdc\x11\x37\x15\x77\x6f\x39\x5a\xe9\xdc\x4c\x11\x48\x65\x58\x44\x99\xa5\x86\x89\xce\x41\x6a\x22\x21\x11\x53\xce\xfe\x51\xf5\xae\x88\x16\x38\x6c\x46\x35\x28\x4d\xf0\x5c\x73\x9a\x91\x39\xcd\x4a\x18\x10\xca\xd3\x95\xbe\x73\xba\x20\x12\xcc\xb8\xa4\xe4\x8d\x1e\xf1\x27\x6a\x95\x96\x0f\x42\x02\x61\x7c\x22\xde\x91\x99\xd6\x85\x7a\x77\x76\x36\x65\xda\x5f\x0f\x89\xc8\xf3\x92\x33\xbd\x38\x43\x4e\xcf\xc6\xa5\x61\xbd\x67\x29\xcc\x21\x3b\x53\x6c\x3a\xa4\x32\x99\x31\x0d\x89\x2e\x25\x9c\xd1\x82\x0d\xf1\x65\x38\x5e\x11\xa3\x3c\xfd\xb5\x74\xdb\x44\x2d\x0d\xbc\xf6\x3c\x10\xcf\xa1\x77\x5c\x2c\xc3\xb1\xed\xe6\xb4\x1d\xda\x97\xad\xd7\xc4\x7c\x64\xa6\xf1\xf6\xf2\xee\x9e\x78\x8a\xdc\x51\xc7\x25\xaa\x1f\x5d\x33\x43\x7e\xb5\xcc\xcc\x32\x3e\x01\x69\x7f\x39\x91\x22\xc7\x5e\x81\xa7\x85\x60\x5c\xe3\x1f\x49\xc6\x80\x6b\xa2\xca\x71\xce\xb4\xc2\x6d\x0d\x4a\x9b\x85\x5c\xed\xf8\x02\xaf\x53\x32\x06\x52\x16\x29\xd5\x90\xae\x3e\x72\xc5\xc9\x05\xcd\x21\xbb\xa0\x0a\x5e\x7d\xed\xcc\x1a\xa9\xa1\x59\x90\xad\x57\xaf\x29\x2c\xac\xfe\x60\xe5\xd4\x13\xe2\x6f\xf7\x5d\x96\x7b\x23\xa3\x21\x29\x24\x19\x95\x56\x40\x21\x1a\xb2\x8c\x7c\xfc\xe1\x03\x99\x89\x47\x73\x90\x18\x57\x9a\x66\x19\x1e\x4c\x27\x44\xac\x74\x8d\x77\x40\x42\x39\xc9\x29\xa7\x53\x20\xb4\x28\x14\x99\x08\x49\x28\x99\xb2\x39\x70\xcf\x00\x96\xd7\x62\xe3\xfb\x6d\xe2\x6c\xc4\xde\x48\x6b\x6f\x55\xff\xad\x23\x78\xe9\x9b\x4d\xbc\xce\xb4\x15\xf9\x6c\xb7\x89\x35\xed\xbc\xee\x02\x8f\x14\x27\x25\x57\x5a\x96\xb8\x4b\x52\xf2\x00\x0b\x77\xba\x72\x5a\x10\xa5\x85\xf9\xf0\x91\xe9\x19\xa1\xcd\x93\x45\x35\x1e\x97\xf1\xea\x6b\x99\xa6\x40\x93\xf1\x82\x18\x69\x14\xd9\x99\x16\x22\x43\x5e\x87\xfd\x19\xb6\x46\x24\x68\xc9\x60\x0e\x84\xca\x31\xd3\x92\xca\x45\xb5\xb7\x56\xcf\xc1\x93\xf3\x8f\xf3\xd2\x10\x8e\x36\xcf\x1e\x79\x6a\x67\x13\x7b\x9d\x38\xd9\x2c\xad\xe4\xe3\xee\x13\x7d\x73\xe5\x76\x70\x2d\x6c\x2b\xb7\x83\x41\x11\xb3\x53\x9d\x58\x54\x49\xed\x48\x80\xdb\x9a\x29\x11\xb2\xda\x5b\x64\xbc\x58\x3b\x46\x63\xab\x93\x31\x18\x36\x28\x29\x37\x53\xbf\xf6\x08\x75\x98\xd8\xa7\x36\xa3\x69\xe2\x91\xaf\xdb\xf9\xcd\xbe\xa9\x94\x74\x3d\xf5\x84\x30\x0d\xf9\x86\x9e\xc9\xf2\x34\x37\xe7\xb3\xfa\xd8\x10\x38\x67\x29\x98\x89\xd5\x94\xd9\x5d\x66\x78\x02\x1d\x8b\x52\xdb\xf9\x74\x8f\xa4\x64\xce\x28\xa1\xd3\xa9\x84\x29\xee\xff\x8d\xc3\x3e\x33\x27\xb6\x6d\x3e\xf6\x75\x1b\x5a\xa5\xe6\xc9\x27\x0c\xfb\x7d\xf2\x01\xbe\x8e\x79\x34\x1f\x58\x95\x9b\xdb\xed\xb9\x35\xb4\x8d\x26\x66\x4e\xfc\xd4\x0a\xf9\xe4\xc3\xdb\xac\xad\x6d\xcf\xac\xb0\x6d\xed\x75\x5e\x22\xc4\x7d\x3b\x36\x67\xa6\xbe\x00\x0c\xe7\xc0\x07\x6b\x96\x3e\x06\x52\x80\x9c\x08\x99\x9b\xc3\xc3\x09\x25\x89\x15\x65\x2b\xbe\x85\x0c\x97\x27\x4f\x4d\x27\xd9\x76\xfd\x6d\xdb\x66\x17\xd8\x36\x24\x05\xd5\xb3\x67\x1e\xdb\x6e\xa9\x6c\x6b\x4e\xda\xb3\x0f\x3f\xc3\xf8\x56\xfa\xae\xef\xad\xe8\x7d\x9b\x69\x88\xde\x29\x5e\x59\xdb\xf4\xba\x0d\xe7\x5e\x6e\xb7\xf4\xf1\x03\x28\x65\xe4\x05\x14\x42\x25\x7d\x24\xc0\x13\x61\x78\xca\xff\x73\xf7\xf1\xda\x8e\xbe\x8e\xbb\xae\xb6\x2b\x4d\x58\x5e\x64\x90\x1b\x59\x94\xfc\xf8\x81\x4a\x35\xa3\x19\xc8\x9f\xf0\x56\xfc\xf1\xcf\x3c\x6f\x7f\x92\xd0\xcd\x07\xbb\xd9\x8c\x90\xa9\x20\x35\xec\x2f\x85\x8c\x2e\x2c\x61\x29\x24\x22\x35\xd7\x82\x90\xa4\x30\xca\x42\x5e\x94\x1a\x08\xb5\xdf\xe2\x3b\x30\x3e\xdd\x86\xf2\x9d\x56\x83\x18\x91\x2a\xa7\xfa\x1d\x19\x2f\xf4\x73\xa7\x8d\x90\xcf\xc3\x74\x5b\xb6\xd3\x24\xe6\x79\xe6\x63\xdb\x56\x2c\xa8\xd9\xf1\xb3\x6f\x69\xe4\x6d\xca\x38\xc8\x1b\x21\xf5\x36\x7c\xd2\x28\x76\x53\x58\x15\x47\x9b\xcd\x4f\x19\xe3\xfa\xf7\xbf\x7b\xe2\xc9\x14\x8a\x4c\x2c\xcc\xfe\x79\xfe\x78\x6e\xf9\x3e\x5b\xb3\x92\x6d\xfb\xdb\x96\x7d\x6c\xd9\x9f\x35\x0d\xc6\xe8\x69\x9d\xf6\xd9\xa9\x23\x1e\xeb\xdd\x2a\x05\x7a\x6f\xf7\xed\xcd\x95\xb7\xf5\xdc\xc2\x04\x24\xf0\xc4\xf3\xb9\xea\x4f\x2d\x08\x25\xdf\x97\x63\x90\x1c\x34\xa8\x86\x26\xb0\x28\xc0\x1b\xd6\xc0\xfe\x40\x82\x24\xa5\x66\x19\xfb\xc7\x3a\x73\xc4\xba\xb7\x8a\x7e\xd3\x3e\x23\x53\xf9\xc7\x9e\x91\xac\xfc\x63\xcf\xc9\x57\xb6\xed\x72\x75\x3f\xbf\x0b\x6d\x6b\xad\x13\x1a\x41\x9c\xc6\x50\xad\x4c\xda\x5e\x8a\xe8\x9c\xfc\xf9\x6d\xbe\x86\xd2\x1b\x34\x9e\xb7\x8c\xcf\x9b\x08\x26\x27\x9b\xfc\x12\x23\xa3\xf0\x8f\xd0\x24\xfe\xe3\x4f\x23\xdb\xe5\xe9\x88\x5c\xe6\x85\x5e\x78\x33\x10\x7b\xa6\x73\xa6\x08\x17\x7a\x55\x10\x8c\x3e\x4d\xf3\xf5\x46\xc8\x67\x67\xea\xfc\xe6\xca\x9b\xb7\x5f\x71\x69\x55\x01\xc9\x01\x08\xfa\x77\x2d\x32\x5a\x62\xfe\x84\x41\x96\x12\x66\x64\x78\x43\x2c\x19\x67\x22\x79\x70\x96\xfc\xdb\xf7\x44\x09\xcb\x73\x8c\xa2\x67\x24\xff\x44\x70\x55\xe6\x40\xd8\x73\x4c\xa4\x97\xec\x7b\xc9\xbe\xd9\x7a\xc9\xbe\x97\xec\x5b\xcd\x3a\xe9\x0e\x81\x39\x2e\x11\xb2\x91\x3d\xe2\x73\x3d\x83\x7c\xaa\xf5\x0c\x12\x5b\xcf\x20\x7b\x06\xf9\x5c\xc7\xcf\xbe\xe5\x56\x92\xee\xb3\x7d\x3d\xc7\x3b\x7a\xcf\x41\xef\x39\xe8\x3d\x07\xae\xf5\xd7\xa7\x6b\xfd\xf5\xd9\x5f\x9f\xed\xf6\xc5\x5d\x9f\xbd\xe7\xa0\xf7\x1c\xf4\x9e\x83\xde\x73\xd0\x6c\xbd\xe7\xa0\xf7\x1c\xf4\x9e\x83\xde\x73\xb0\xa1\xf5\x92\x7d\xc7\x4e\x7b\xc9\xbe\x97\xec\x37\xb5\xde\x73\xd0\x7b\x0e\x7a\x06\xd9\x33\xc8\x9e\x41\x6e\x68\x87\xe8\x39\x48\x32\xa0\x7c\xbd\x3a\xbf\x94\xdc\x88\xcf\xa1\x00\xc8\x26\xcc\xa5\xf6\xb9\x5f\x93\x31\xcc\xe8\x9c\x89\x52\x92\xc7\x19\x70\x9f\x97\x4a\xa6\xa0\x95\xd9\x05\xa0\x61\x9d\x06\xf8\x0c\x7b\x7b\x9a\xa5\x0d\x09\x70\x3a\xce\xd6\x76\xfc\x1c\xf7\x72\xbf\x7c\xda\x53\x32\x16\xc2\xbc\xdd\xea\x8c\xa1\xf6\xe2\xb5\x81\x08\x49\x2d\x9b\x74\xae\xf5\x89\x2d\x17\xb7\xef\x5f\x34\x9d\x65\x6d\x27\x57\xd5\xd8\x04\x5d\x38\x98\xf6\x67\xae\x3c\xf3\xe9\xc7\x47\x0e\x29\x66\x81\x0f\x08\xd3\xe6\x01\xc3\x58\x58\xc2\x74\xb6\xa8\xc8\xfb\xb2\xf3\x64\x2e\x6e\xdf\x6f\xef\xe6\xf2\xab\xb4\xb1\xeb\x88\x1e\xad\xde\x5f\xd5\xfb\xab\xaa\xd6\x0b\x6d\x1d\x3b\xed\x85\xb6\x5e\x68\xdb\xd4\xe2\x0b\x6d\x87\xee\xdf\xe9\xbd\x32\xa4\xf7\xca\xf8\xc7\x7a\xaf\xcc\xb3\x8f\xf7\x5e\x99\xde\x2b\xd3\x7b\x65\x9e\x6e\xbd\xfc\xea\x5a\x2f\xbf\xf6\xf2\x6b\xbb\x7d\x71\xf2\x6b\xef\x95\xe9\x19\x64\xcf\x20\xeb\xd6\x33\xc8\x9e\x41\xb6\xda\x97\x98\xcf\xd1\x5b\xb8\x7b\x0b\x77\x6f\xe1\xee\x2f\xc0\xfe\x02\xec\x2f\xc0\xe7\x3a\xee\x2d\xdc\xbe\xf5\x16\xee\xde\xc2\xdd\x6a\xbd\x85\xbb\xb7\x70\xf7\x16\xee\xde\xc2\xbd\xa1\xf5\xf2\x6b\xc7\x4e\x7b\xf9\xb5\x97\x5f\x37\xb5\xde\xc2\xdd\x5b\xb8\x7b\x06\xd9\x33\xc8\x9e\x41\x6e\x68\x87\x68\xe1\x7e\xe6\xf0\x6e\xb3\x4b\x9b\xf6\x6a\x27\x36\xfb\x48\xf7\x11\xb9\xa0\x9c\x30\x9e\x64\x65\x0a\xf8\xcd\x04\xa8\x2e\x25\xa8\x01\xc9\x58\xce\x7c\xb1\x0e\x21\xcd\xa6\x19\x26\x54\x81\x72\x7d\xac\x1d\xaa\xea\x77\xcd\xb7\x4f\xbf\xe6\xd3\x7c\xe4\xc9\xe2\x62\x55\xd8\x3e\xe3\xbe\x1f\xb7\xad\x76\x26\x83\x25\x5b\x4c\xb3\x19\xdf\x3c\x88\xb5\x5b\x6c\xa1\x9f\x67\x5f\x7b\xd3\x16\x7c\x62\xcb\x3d\x7b\xb9\x3c\x77\xa5\x0c\xc9\x98\x2a\xf8\xe3\xbf\xac\x94\xb8\x6a\x3e\x92\x43\xca\xa8\x19\x6a\xed\x13\xcf\x5f\x33\xf5\x10\x9b\x37\xf9\x16\x87\xa5\x22\xa3\x63\x2f\xae\x9c\x4d\xd7\x23\x62\xf6\x5d\x7a\x65\xfb\xb8\xd3\x92\x6a\x98\x2e\x1a\x75\x9b\x70\x9b\xd5\x42\x03\xdf\x50\xc2\xcc\x6b\xa0\x6b\x87\x78\x9c\x81\xb4\x47\xcc\xd7\x0a\x52\x7e\x20\xa6\xaa\x74\xa1\x2e\xf9\x1f\xcf\xe5\xff\xf8\x71\xd6\x7c\xfd\xdc\xfa\xae\xab\xa0\xe4\xdb\xb6\x17\xa4\x9f\xcf\xf7\xd6\x43\xf6\xbe\x02\x82\x59\x9e\xe0\x82\x4a\x73\x31\x79\x4f\x1a\x8a\x67\xf5\xd3\x1b\xfb\x5f\x5a\xb6\x4d\x77\xd4\x16\xb2\xda\xf3\x32\xda\xb0\x81\x63\xb3\xc9\xab\xb7\x8d\x68\xe6\x8a\x31\xde\x80\xcc\x99\x52\x9b\x92\xa2\xda\xa4\x3f\x77\x8b\x6d\x71\x7b\x2d\xc9\xcc\x7e\x5d\xfc\x1b\x35\xc8\xa9\x04\x68\x6b\x65\x19\xd3\x84\xc8\x32\x33\xe2\x34\x4f\x89\xab\x53\x44\x68\x92\x88\x92\x6b\xc2\x01\x52\x4c\xac\x5a\xbb\xbd\xb7\xb8\xfb\xb6\x90\xa0\xb7\x95\x9f\x87\x96\xce\x67\x9f\x72\xef\x70\x6e\x5f\x61\x6d\x91\xac\x66\xdb\x5e\xde\xc6\xe1\x9f\x17\x22\x76\x91\x4c\xb6\x96\x4b\xba\xc8\xac\x37\x22\x63\xc9\xe2\xb6\xcc\x80\xcc\x44\x96\x2a\xac\xf9\x66\x2e\xcf\xca\x27\xda\xd4\xa5\x0a\x7c\x1a\x5f\x72\x40\xc6\xa5\x26\xa9\x00\x6b\x36\x74\xe8\x52\xcd\x9f\x6f\x35\xbe\xf5\x94\x3f\xce\x6c\x31\x42\xd3\x31\xa1\x45\x91\x61\xe6\xa4\x30\x82\xc7\xe3\x8c\x25\x33\x5b\x83\xb5\xa0\x09\xac\x7b\x6c\x7b\xb9\x74\x2b\x5d\x8d\xec\xa4\xaf\x11\x6f\xf6\x1e\x3f\xb7\xeb\xc8\x8e\x8a\x1b\xb1\x65\xc1\xbe\x95\xa2\x2c\xb6\x7c\xbc\xdb\x1e\x20\xb6\x64\x98\x1d\xc8\x5c\x47\x7a\x49\xc4\xf2\x5f\x3a\x27\xb9\x5d\x6a\xe5\x2c\xb0\xce\x23\x33\xc2\xf4\xc7\xbc\xcc\x34\x2b\x32\xfc\x89\x45\xc0\x52\x84\x4a\xa8\x2f\xb8\x01\xa1\x7c\xe1\x7d\xee\xae\x84\x21\xa4\x84\x4e\x4d\x8f\x1a\xcb\xa3\x8a\xc9\xd6\x54\xdb\x1a\x89\x65\x6e\xe4\xaf\x86\x0d\x58\xa1\xba\xcf\x17\x35\x15\xe4\x91\x65\x99\x51\x7e\x68\x96\x89\x47\x48\x47\xe4\xe8\x68\xf9\x02\x4a\x84\x6c\xd0\x8d\xac\xee\xe8\x9f\x5b\x4f\x19\xbe\x56\xbf\xd8\x76\x8a\xdc\xae\x5a\x08\xd9\x4d\x13\x21\xbb\xeb\x5c\x04\x55\xa9\x87\xca\x41\x35\xcc\x98\xd2\x43\x47\xa5\x16\x39\x4b\xb6\xea\x84\x0b\xee\x1d\x11\x7f\xbe\xfd\xe1\xc5\x37\xe8\x75\x7b\x38\x57\x93\x13\xb4\xd9\xa3\x05\x95\x9a\xd1\x8c\x94\x32\x53\x76\x8f\x52\xa3\xb0\x48\x5f\x05\x75\x46\x31\xce\x23\x01\x85\xec\x82\x90\x7f\xb6\xbb\xd2\x6d\x06\xcb\xca\x04\xcf\x16\x84\xda\xad\x30\x29\xb3\x6c\x40\x26\x8c\x53\x73\x91\x41\xe1\x73\x78\xb7\x30\xcd\xd4\xed\x8e\xf1\x04\xcc\x34\x0d\x2b\xdf\x04\x52\x6e\x46\x36\x2c\xb3\xe2\x69\xe9\xc0\x95\xfd\xb4\x96\x2a\xe5\x48\x31\xfc\x2d\xa1\xe3\x0c\x50\xd3\x70\x32\xe7\xad\xc8\xd0\xa5\x58\xf9\x3d\xb0\x56\x28\x6d\x7e\xfd\xbf\x18\xdf\x56\x5b\xb7\xed\x16\xaf\xf6\x84\x72\x02\x4c\xcf\x40\xe2\xd0\x0b\xc3\x7f\xcd\x66\xaf\x0f\xd5\x89\x2a\x93\x99\x99\xa2\xa3\x42\xa4\xea\xc8\x70\xe7\x23\x05\x89\x04\xad\x8e\x4e\xcd\x5f\xcb\xef\x8a\xf3\xd5\xfc\xdd\x19\x2d\xd8\xd1\xe9\x80\xe0\x84\x63\x81\x52\xa1\x67\xbf\xf0\x73\xe4\x27\xac\x55\xcf\xfb\xb9\xd6\x3a\x45\xb7\xcd\x1e\x5c\x65\x4d\x51\xd8\xa2\x94\xe6\xfe\xd4\x80\x69\xe7\xe6\xa4\xe0\x9e\x6b\xf8\xa0\x97\x2e\x52\x42\xce\x39\x01\xeb\x35\x04\x4d\x72\xa0\xdc\x3d\x0d\x73\x90\x0b\x3d\x43\x47\xa2\xaa\xb8\x68\xbf\x72\x5b\x44\x23\xd4\x6d\xed\xaa\x39\x56\xe6\x57\xa8\x3e\x6e\xb6\xf8\xf3\xf2\x0a\x1d\xff\xf3\xf1\xf2\x95\x54\xdf\xc1\xbf\xec\xf5\x40\x21\xac\xd3\x5a\x7c\x32\xbf\x6c\xaf\x83\xfd\xc8\x5e\x26\x15\x3b\xfc\xe1\x07\x5b\xec\xd9\x4d\xf8\xf7\x8c\xa7\xaa\x02\x56\x4d\xed\x2d\xe1\x16\x6d\xed\x4a\x21\x85\xbf\xd8\x55\x5a\x55\xba\xb6\x55\x94\x9e\xa1\xb1\xa1\x95\x1f\x82\x22\x8d\xf5\xa2\x5b\x52\xb2\x61\xbb\x03\xeb\x9d\x37\x62\x65\x46\xc7\x90\x29\x67\x40\x84\x06\xf9\xe4\xfc\x87\x0f\x55\xe9\x76\x09\xf4\x19\xa3\xf8\x0b\xa8\xcf\x5b\x84\xf9\xac\x94\xc8\x5f\x6d\xdb\xab\x39\x38\x15\xbb\x39\xb1\xc8\x1d\x68\x7b\x56\x73\x5a\x98\xa3\x6a\xfb\xb0\xce\x95\x25\xc7\xc9\x0f\x38\xd3\xcf\x9f\xb8\x9d\xd4\xc3\xed\x4b\x3e\xaf\x1b\x64\xab\xf3\xb6\x5d\x28\xd1\x0e\x1d\x3e\x65\xca\xab\x5b\x6b\x9a\x97\x36\xb4\xd3\x0b\x9d\x26\x97\xd0\xa6\x43\x21\x05\x65\xc1\x75\x2c\xc0\x91\xf4\x9f\xd7\x5d\x44\x5e\x82\x5d\xf4\xf3\x21\x51\x90\x41\xb2\xae\x26\xfb\xba\x87\x35\xe4\x45\xf6\xdc\xc9\x23\x3b\xeb\xf2\x39\xe3\xb7\x40\xd3\xc5\x1d\x24\x82\xa7\x5b\x72\xe9\x6e\xca\xd2\x07\xc6\x59\x5e\xe6\x84\x97\xf9\x18\x70\x2d\x94\x1d\x14\x39\x8e\x35\xa8\x50\xc2\xe1\x31\x5b\x38\x2e\x93\x92\x42\xa4\x9e\xf1\x8c\x8d\x56\x4f\xd3\x6d\x2f\x9d\x47\xa6\x67\x58\xb6\x82\x2f\xcc\x50\x4c\xd7\x37\xa2\x24\x89\xa4\xca\x08\x8d\x03\x1c\x9a\x69\x73\x8b\x8e\x01\x5d\xec\x2c\x05\xb3\x65\xe8\x9c\xb2\xcc\x68\x39\xdb\x5e\x8b\xef\x61\x42\xcb\x4c\xa3\x7d\xe8\x0d\x39\x31\x84\x7b\xe5\x7e\x5d\xb7\x46\xef\x50\x42\x70\xf3\x5f\x0b\xbb\x84\x2f\x77\xba\x83\x9f\x6f\x1b\x20\x74\xdf\xb6\x05\x44\xf7\xad\xa0\xa5\xda\xd6\xcc\xd4\xda\x0d\x57\x3c\x35\x87\xb0\x29\xcd\x37\xee\x11\xa6\x5c\xcf\xdb\xcd\xea\xd3\x50\x5e\x6b\xa8\x96\x62\x2a\x41\xa9\xf7\x40\xd3\x8c\x71\x78\x85\x4d\x7d\x3f\x03\x92\xd3\xcf\xb8\xb1\x35\xcb\xc1\x08\x5b\xcd\x6d\x4d\x9b\xaf\xaf\x05\xc9\xe9\x03\x54\x74\x92\x31\x4c\x84\xdc\x22\xa4\xc3\x37\xa6\x9a\x9b\xc9\x6e\xda\x09\x65\x19\xa4\x23\xa4\xa4\x31\x96\xd9\xec\x52\x64\x19\x48\xbb\x0f\xcd\xdf\x8c\x97\x40\xb4\xd8\x72\xb0\x42\x0a\x34\x4d\xd8\x01\x9a\xd2\x0c\x4a\x0b\xd4\x74\x69\x6f\x1c\x3c\x6c\x84\x92\x9b\xa5\xf9\xbf\xfc\x9c\xa0\x11\x7e\xcb\x01\x25\x50\x85\x9d\xd9\x63\xa3\x4a\x39\xa1\x89\x97\x5f\x5b\x2f\x67\x23\x66\x46\xe4\x5a\x68\x17\xba\x5c\x4d\xa9\xf9\xf5\x96\xe3\xa1\xa6\x0f\x04\x94\x66\x39\x72\x9b\xb4\xc4\x90\x54\x33\x18\xae\x25\x5d\xbf\x77\x5b\x67\xfd\x8f\x6f\xde\x6c\x29\x3a\xbf\xfc\xa9\x95\x80\xb6\x99\x17\xdd\xf0\xd7\x15\xf7\xf6\xb7\x6b\x21\x52\x65\xb6\x1f\x73\xaa\x4a\x21\xcc\x3b\x4a\x8c\xe5\x60\x4a\x33\x3e\x2d\x99\x9a\x91\x31\xe8\x47\x00\x4e\xe0\xb3\x85\x97\xdb\x72\xbc\x7f\x80\x14\xb8\xdf\xcc\x6a\xd5\x0e\xc9\xd6\x1a\xbc\x3d\x9c\x05\x98\x33\xc5\x04\xff\x8e\x29\x2d\xe4\xe2\x07\x96\xb3\x67\x6a\x5a\xf8\xd6\x9d\xfb\xd4\xd7\xa9\xc8\x52\x72\x6b\xb7\xc0\x1d\xd8\x99\x91\x80\xee\x0f\x2d\xac\x6d\x84\x18\x8e\x30\xa6\xc9\xc3\xb6\xb7\xda\xce\xab\xba\x69\xbd\x3a\xdc\xa2\x6f\xdf\x1c\xca\xb2\x7a\x41\xed\x25\x97\x12\x55\x82\x6a\x24\xbc\x3b\xec\xc1\xba\xfc\x6c\xa7\xbb\xb5\xb4\x8f\x33\xa1\x00\x1f\x20\x54\x3e\x2f\x13\x36\x5f\xc3\xfb\x44\x99\xaa\x38\x2d\xc6\xab\x70\x50\x84\x4e\x26\xed\x27\xd2\x1d\x24\x65\xdb\xae\x34\xc9\x4b\xa5\x49\x4e\x75\x32\xb3\xd6\x69\x91\x56\xd2\xeb\xb1\x72\x5a\xe6\x2e\x4b\xbb\xb5\x7b\x6c\x77\x47\x16\xb1\x74\x5e\x7e\x2e\xcc\xe5\xf1\x9c\xcb\xbb\xdd\x5a\xeb\xbc\xdc\x4d\xdb\x6a\x93\xb5\x17\xd7\xa9\x09\x78\x97\xda\x8b\xbb\xf9\x09\x5a\xe2\xcf\xaf\xdf\x6f\x7f\x6a\xba\x18\x65\x76\x36\xcb\x74\xf7\x91\x98\x76\xfe\xc4\x1c\x78\xa7\x89\xfb\xa6\xed\xcd\x43\xfd\x59\x0d\x08\x25\x0f\xb0\x18\x58\xc9\xa3\x01\x8a\x6a\x1e\xde\x89\x10\x09\x99\x13\x4f\xc1\xf4\x88\x1d\xda\x31\xb6\x9f\xed\x0e\x1b\xd3\x0f\xbe\x8b\xff\xd6\xb7\xa1\x21\x74\xc7\x5f\xf8\x09\xda\xe1\x67\xbb\x9f\x1d\xdb\x1e\x60\xb1\xdb\x0f\x96\x76\x92\x59\x05\xa7\xc5\xdb\x3d\x62\x3e\xa8\xb4\x87\x6a\x5b\xec\xe6\x58\x6f\xb6\x0e\x06\x45\xdb\xfc\x24\x06\xbd\xde\x8e\x07\xa5\x39\x6e\xcb\x4e\x6b\xa6\xe5\x58\xd9\xfd\x6b\x38\xcc\x8c\x15\x36\xa7\xcf\x79\x1b\x77\xdf\xc4\xb6\x7d\xa2\x19\x4b\xab\x21\x2d\xf7\xb9\xe2\x03\x23\x5b\x9b\xff\xe0\xf5\x63\x25\xfe\xf7\x02\xd4\xb5\xd0\xf8\xc9\xab\xad\x81\x7d\xad\xd7\x5e\x01\x3b\xaa\x73\x5a\x21\x5b\x45\x7b\x85\x4d\x59\x73\x33\xed\x71\x95\xeb\x48\x4f\x45\xae\x38\x11\xd2\x4d\xdd\xce\x83\x9a\xce\xdc\xc0\x76\x48\xbc\x48\xc7\xd6\x59\x8b\xee\xaf\xb5\x63\xba\x15\x12\xb2\xb5\x40\x11\x87\x77\x43\xa3\x2c\x68\xbf\x41\x73\x45\x91\xa1\x76\xe6\x94\x26\xea\x43\xab\xb6\xf4\x8a\x34\x5b\x0e\x72\x8a\x5e\xec\x64\x6b\xaf\x6b\x45\x74\x87\x8b\xcf\xb6\x9d\xaf\xbf\xe6\x80\x1d\x36\x72\x14\x5f\x52\xb4\x6e\x50\x5e\xb1\x66\xe8\x8e\x12\xcf\x4e\xa7\xaa\x31\x5c\xcb\x46\xfe\x7f\xcc\xa5\x8e\x9b\xee\xff\x92\x82\x32\xa9\x46\xe4\x9c\x28\xc6\xa7\x19\xb4\xbe\x73\x26\x80\x46\x37\x3b\x0d\x5e\x98\x41\xcd\xdd\x3b\xa7\x99\x33\xc4\x50\x4e\xc0\x9a\xe3\x0d\x1d\xcb\xe2\xdb\xc0\x49\xd8\xe6\x2a\xaa\xe2\x1f\x8e\x1e\x60\x71\x34\xd8\x18\x66\xbe\xbe\x35\x4f\xea\xd1\x15\x3f\xb2\x22\xcc\xca\x59\xab\xe4\x1d\x0c\xb2\x38\xc2\xef\x8e\x62\xca\x86\x3b\xca\x2a\x5d\x9d\x09\xed\x41\x77\x38\x26\xad\x5d\x9d\xd3\x62\xd7\x4d\xed\x03\x3b\x3b\xe8\x68\xf7\xcb\xc6\x25\x17\x01\xad\x05\x29\x15\x58\x35\x1a\x99\x1d\x01\xaf\x8b\xa1\xe6\x85\x56\x2f\x0e\x8f\xa8\x3b\x1d\x8c\x42\x63\x54\x7c\xc6\xa7\x7f\x2e\x52\xaa\xb7\xca\x29\xb2\xad\xfb\xd9\xbe\xb5\x03\x92\x12\x47\x34\x3b\x79\xc2\xa6\xa4\xa0\x92\xe6\x6a\x44\x6e\x5c\xb9\x01\xdc\xd7\x6c\xd2\x74\xdf\xb8\x79\xbe\x5f\x14\x40\xfe\xff\xbb\x0f\x68\xdf\xf0\x85\xcf\x41\x37\xa1\x38\xa7\x9f\xef\x4a\x39\xdd\x61\xfa\x49\xb0\xd0\xd2\xb4\x44\xd7\x36\x21\xdc\xa8\x4d\x10\x21\x95\xcc\x20\x2d\x33\x48\x09\x1d\x8b\x39\xb4\xfc\x64\xd5\xcf\x76\x1c\x1a\x0d\x15\x3b\xfe\xe6\x93\xe1\x70\x9e\x28\x23\x64\x8d\x95\xc8\x4a\x5d\xd9\xb3\x4e\xe0\xf3\x3b\xf2\x07\x8c\xdf\xa2\xa4\x00\x99\x00\xd7\x74\x0a\xcb\x86\x47\xfb\xdc\xdb\x37\xff\x74\xba\x2b\x01\x28\xce\x98\xf1\x9d\x19\xf8\x8d\xd9\x9d\x1f\xe8\xe7\x3f\xf3\xda\x49\xc3\x14\xd9\xd2\x08\x55\xb7\xf3\xa5\x17\xc1\x51\xb2\xa4\xcc\xd0\xc4\x8c\x71\x71\x8d\xd7\x19\x2f\x88\x14\x25\x46\xc6\x91\xb2\xd8\x75\xac\xa6\xb9\xec\x77\x7f\xf8\xa7\x5d\x7f\x7e\xf9\x99\xe6\x45\x06\xef\x7c\xdd\x17\x6b\xeb\x33\xfa\x84\x16\xe4\xf7\x6f\xfe\x69\x60\xa3\x04\xe0\xb1\x61\x7b\xaa\xf7\x11\x35\x9b\xa8\x2c\x08\xcb\x6d\x9e\x0c\x64\x0b\xec\x68\x57\x09\xce\x5c\x71\x6d\x16\xa2\x34\x95\x5a\x0d\x08\x06\xe8\x55\x9a\xa0\x16\x9a\x66\x4b\xe6\x4e\x34\x34\xc2\xa3\xdd\x0a\xa9\xc0\xb5\x04\xf4\x3a\xec\x48\xc5\xdb\xdf\xbf\xf9\xa7\x55\xa3\xf6\x47\x9e\x00\x8e\x83\xfd\x63\xbc\xe6\x18\x80\x93\x07\x96\x65\x90\xee\x2a\x62\x3f\x37\x91\x93\x52\xea\x19\xc8\x01\x01\xae\xbc\x27\xc2\xbc\xfb\xd2\x7b\x23\x2d\xb2\xe4\x7c\x77\x09\x94\x5a\x7f\x28\x3a\x37\x1a\xce\x0e\x37\xed\x46\x30\xd3\x24\x17\x4a\xaf\x9f\x8e\x9d\x06\xa3\x7c\xf1\x71\xb2\xab\x78\x3d\xec\x60\xcc\x5d\xfd\x75\x07\xe1\xbc\x25\x7d\x30\xae\x87\x42\x0e\x6d\x37\xef\x88\x96\xe5\x2e\x02\x5f\xde\x62\x21\x07\x78\x03\x94\x0d\x06\xb7\xb2\x09\xbe\x38\x36\xde\x9d\xdd\xa6\xe2\x91\xc7\xba\x34\xf0\xb6\xef\x74\x5d\xbc\x0a\x0b\x6f\x7b\x86\x96\x38\x8f\x99\x07\xf3\xf4\xff\x58\x3d\xf2\xbb\xaa\xd4\x4b\x37\xc1\x66\xde\xee\x58\x6b\xc5\xba\x8d\x5a\x83\x01\x10\x83\x25\x5a\x77\xa4\x60\xcd\x9b\x55\x5c\x75\x22\x6c\x78\xb0\xd9\x04\xe6\x01\x4b\xd4\x9a\x2b\xae\x66\xc0\x3b\x5f\x65\x1b\xae\x2a\xfb\x8e\x75\xec\x87\xc6\xb0\x4b\xc3\x86\xd5\x26\x3e\xbc\xe3\xd0\x19\x50\xa5\xd7\x2d\x61\xcf\xb5\x9f\x6d\x4f\x67\xf8\x2e\xb7\xb6\xea\x68\x74\x17\x9c\xf1\xca\x4f\x86\xc9\xeb\x63\x20\x47\xb7\x60\xa3\x98\x6c\x46\x42\x4b\x69\x39\xaa\xfc\xd7\x66\xb1\x83\xf4\x99\xad\xa7\xcd\xbb\xe0\x5e\xd4\x1f\xed\xc6\x68\x64\xe7\x39\x0f\xa0\xbb\x82\xaa\x90\x28\x1b\xdf\xb5\xbd\x1b\x1a\x5c\xf6\x89\x3b\xc2\xfe\x65\x46\xaa\x80\x64\x24\x01\xb9\x8a\x4d\x1a\xb4\x76\x15\x34\xb7\x9c\x67\x8f\x74\xa1\x8e\x0e\x46\x35\xcf\x41\xd3\xa7\x93\xd2\x97\x5b\x77\x81\xe0\x4e\x53\x9e\x52\x99\xba\x37\x3a\x56\xd5\xe8\xbb\x70\x84\x0f\x18\x9e\xc4\x27\xe2\x1d\x99\x69\x5d\xa8\x77\x67\x67\x53\xa6\x47\x0f\xff\xaa\x46\x4c\x9c\x25\x22\xcf\x4b\xce\xf4\xe2\x0c\xa3\x8d\xd8\xb8\xd4\x42\xaa\xb3\x14\xe6\x90\x9d\x29\x36\x1d\x52\x99\xcc\x98\x86\x44\x97\x12\xce\x68\xc1\x86\x89\xe0\x73\xe0\xe8\xbf\x18\xe5\xe9\xaf\x3d\x49\x2f\xab\xc3\xb7\xd8\x04\x3a\x54\xe4\x1c\x86\x25\x7f\xe0\xe2\x91\x0f\xd1\xbc\xa7\x76\x62\x18\xdb\x45\xad\xfa\x16\xb0\x86\xbb\x04\xb5\x16\x62\x07\x9b\xe0\x8b\xaf\xac\x99\xa2\x21\xe5\xe9\xd0\x86\x6a\xbd\xec\x02\x77\x71\xab\x0e\xeb\x70\xd0\xed\xa9\xeb\x66\x0d\xa2\x89\x66\x73\xe8\x14\x94\xe8\x5b\x98\x62\xf0\xd1\x67\x5d\xa5\xa5\xb4\x7b\xa9\x11\xa5\xe8\x43\x34\x72\xba\x40\x19\x1e\x89\x25\xc2\x0a\x6f\x5c\xa4\xe0\x5c\x8e\xf3\x1d\x42\x07\x7d\xbb\x33\x6c\xf9\xde\x68\x9b\x2e\xd2\x11\x3d\xba\x0b\xa5\x21\xb7\x57\x81\x1d\x2d\x5b\x10\x2d\x17\x36\x3c\x52\x3e\x10\xa6\x7d\xcc\xa1\x51\xef\x1f\xf0\x39\xa5\x44\xc2\x50\xa4\xaf\x97\xad\x9b\xae\xe2\xbd\x5a\x94\x14\x42\x31\x7c\x2f\x27\xb8\xec\xd6\x5f\x77\x99\xa7\x11\x7e\xf4\xc7\x7f\xd9\x65\x1f\x4d\x10\x58\x73\x47\x6f\x7b\x3b\x3c\x77\xd2\xcc\x79\x76\x4b\x7f\xac\xbc\x55\xd0\x08\xa2\x89\xe0\x4a\x4b\xca\x36\x63\x49\xac\x6f\x1d\x43\x22\xba\xc7\x1d\x10\xdc\x9d\xe7\x9d\x26\x85\xac\x66\x15\x78\x81\x05\xb7\xbc\x9f\xea\xe6\xc4\x58\xa8\x09\x9f\x1d\xb3\x23\xbb\xb5\xad\xf3\x1c\x91\xa0\x79\xb2\xbf\xb6\xc0\xbe\xe9\x7b\xd4\x37\xee\xaa\xf7\xba\x9a\x72\x51\x7d\x7c\xf9\x19\x92\x72\x5b\x4c\xb6\xd5\x16\xea\x76\xb7\xcd\x48\x7b\xde\x4c\xed\xa2\x97\x2d\xf5\x86\x43\xf8\x2f\x9c\x50\x29\x70\xbd\x9c\x74\xa9\xa8\x66\x6a\xb2\xab\x23\xd8\x37\xb3\xaa\xd5\xba\x43\x23\x94\xab\x3a\x31\x55\x58\x1c\xca\x0c\x36\x3f\x9b\x69\xe4\x9c\xc9\x4c\x08\xb5\x8b\x99\xa8\xd9\xa8\xdd\x74\xf8\x0e\x73\x26\x6c\x80\x12\x62\x0e\x48\x92\x1b\xb6\xe9\xae\xf8\x06\x51\xd6\x35\x58\xff\x8c\xed\xaa\xab\xfb\x86\xe6\xbe\x6a\x73\xf8\x40\x1c\x33\x38\xba\xb7\xcc\x1f\x53\x14\xd6\x95\x26\xaa\xcc\x0d\x29\x8f\xc0\xa6\x33\xad\x06\x84\x8d\x76\xb6\x17\xf9\x66\x8e\x11\xd0\x64\xd6\x78\x85\x1c\x40\xb7\x8a\x65\x37\xcf\x5e\xd3\x07\x7a\xf2\x24\xa4\xd1\xf3\xcd\xe1\x3b\x0c\x2a\xb9\x61\xf9\x48\xac\xdd\x06\x03\x02\x3a\x19\x9d\xee\x1e\x57\x61\x5b\x0d\x5e\x67\x66\x71\xbc\x20\x4c\x83\xb9\x8c\x51\xf5\x97\xa2\x9c\xda\xb9\x06\x9f\x22\x86\x73\x50\x65\xdf\x63\xd8\x5b\x9a\xee\x6e\x92\xf0\xed\xc8\x2e\xda\x91\x39\x31\x38\xb7\x65\xee\xa1\x97\x71\x05\xd0\x01\x0e\x15\xe2\x84\x04\x55\x08\x6b\x26\x5b\x76\x8d\xff\xcf\x1d\x1d\xe0\xcd\x66\x86\x3a\x51\xa7\xf5\xd6\x9a\xb1\xe9\xcc\xef\x2c\xea\xe4\x83\xf6\x8e\xec\xb6\xc1\xba\x87\x85\xd8\xd6\x31\x38\xc4\xb6\x38\x5c\xb0\x91\xf4\x5e\x1f\xcf\xc6\x91\xd0\x20\xf3\x6a\xd9\xf0\xd4\xe0\xb5\xe2\xdc\xd2\xbe\x88\xbb\x3b\xac\xe4\x4d\x67\x2a\x4e\xcc\x29\x27\xcc\x68\x90\x86\x4f\x0d\x45\x71\x3a\x22\xe7\x84\x97\x15\x5b\x7e\x8a\x30\x2e\x2a\xba\x5c\x47\x86\x58\x25\xea\xbe\xba\x72\xeb\x90\xab\xd4\xb6\x6e\xd1\x98\xcd\x36\x74\x33\x00\xcf\x97\x5d\x79\xaa\x13\xbb\x46\x1d\x3b\x08\x13\x0b\x7c\x1f\xfe\x2d\xba\xf7\xb1\x0c\x8b\x6e\xf9\x4a\x1d\xd5\x0b\x32\x1f\x34\xe5\xf8\x8a\x07\xb4\xd9\x8d\x9d\x8b\xae\xbb\x82\xc4\xd9\x19\x24\xd2\xbc\x92\xa0\x00\xf3\xf5\x6d\x69\x96\x2b\x08\x8d\xd6\x6c\xb7\xee\xcb\xf1\x02\xbf\xdd\x31\xf6\x7e\x73\x0b\x65\xae\x75\x0b\x62\xb3\x75\x8b\xc5\x70\xeb\xb6\xbc\x7b\xe3\x44\xab\x47\x20\x0c\x87\x8b\x13\xc3\xbe\x61\x80\x38\xa7\xc7\xb6\x70\x0e\x5b\xb7\xdd\xa3\xe0\x37\xf5\x13\x6d\x39\x62\xb1\x08\xdb\x3a\xc4\xd1\xaf\x6f\x2b\xc1\x6d\x2f\x13\x56\xbf\xbe\x05\xc4\xc7\xae\x6b\x5d\x43\xf0\xd7\xb7\xf8\x8c\xc2\xb4\xdb\x57\x88\xd2\x5f\xdf\xb6\x8a\xdd\x1f\xb4\x03\xf7\xc9\xb7\xda\x32\xa6\x1f\x82\x6e\xd9\xba\x45\x5e\xf1\x6e\x01\xff\xeb\xdb\xcb\xac\xf7\xf9\xeb\xa5\x04\xac\x6f\x7b\x4e\x14\xd8\x91\xa8\xcd\x04\x7d\xab\x0d\x31\x3f\xe8\x41\xe3\xc7\x91\xa8\x69\x90\x60\x61\xf6\x7c\x54\xb9\x53\xb0\x07\x0e\x70\xc2\x3b\x24\x31\xb9\xb5\x90\x80\xa8\x8f\x98\xf5\xd1\xc9\x28\xbc\xb9\x6d\x9d\x3d\x11\x92\x0d\xb1\xbe\xc5\x93\xd7\x6c\x8b\x24\xb5\xd9\x16\x99\x7b\x44\xcb\xb2\x78\xf5\xce\x51\x4f\xf8\xc6\x3a\x23\xf7\xa8\x22\x58\x77\x68\xaf\x22\x3c\xdb\x7a\x15\xa1\x57\x11\x9e\x6f\xbd\x8a\xb0\xda\x7a\x15\xa1\x57\x11\x82\x5a\xaf\x22\x3c\xdb\x7a\x15\xe1\xd9\xd6\xab\x08\x75\xeb\x55\x84\xc3\x57\x11\x42\x33\x64\xd7\x37\xeb\x6f\x89\xe6\xf6\xf9\x8b\x75\x37\x2e\xfb\x79\x50\xb9\xf1\x61\xee\x6d\x87\x8f\x91\xa2\xef\x9c\xa8\x71\x8f\x4e\x22\x97\xec\x2d\x29\x9f\x02\x79\x3b\x7c\xfb\x66\xe7\xa4\x8a\x66\x0b\x89\x4d\x6f\xb6\x5d\x41\xa3\x56\x5b\xf4\x9d\xb1\x29\x7e\xe1\xf0\x42\x7a\x1c\x67\xaf\xe2\x2a\x5a\xca\xe7\x86\xf8\x9a\xaa\x22\x41\x0e\x7a\xf7\x84\x08\xdf\x9a\x8e\x69\x96\x43\x15\xf4\x66\xd9\xba\x4b\xe3\xa9\x93\x62\x05\x77\x01\x12\x66\x5b\x76\xdd\x76\x9d\xde\x36\x01\x6a\x93\xcd\xc7\x60\xde\xb8\x6b\x28\x91\x26\x4a\xe4\x60\xe1\xda\xfc\xd5\x61\x5e\x17\xfc\x36\x20\x27\x30\x9a\x8e\x48\x5a\x82\x83\x41\xb0\x59\x27\xa7\x83\x46\x70\x66\xd7\x58\x22\x23\xf0\x48\xfc\x8f\x99\x58\x17\xd3\x09\x73\xe0\xba\xa4\x59\xb6\x20\x30\x67\x89\xae\x56\x00\x93\xb3\x98\x56\x01\x73\x1d\xac\x8a\x86\xaa\x9f\xc3\x15\xfe\xd5\x4d\x3c\x09\xd7\x13\x57\xe8\xe8\xce\xd3\x97\x0a\x02\xd8\x19\x1a\x6d\xb4\x24\x69\x33\x9a\x0d\x48\xc3\x7f\xe2\xc1\xfd\x78\xdb\x35\x76\x87\x44\x92\x47\x82\x65\x90\x98\xaa\x81\x0b\x98\x11\xd2\x85\xf4\xac\xce\xe0\x9a\x90\x99\x35\xf8\x1f\x3b\xe7\xe6\xb7\x9b\x9e\x41\xde\x05\x43\x64\x5d\x33\xb4\xdd\x8b\x42\x64\x62\xba\x68\x6e\x3c\x57\xb7\xbf\x46\x3b\xa7\x44\x95\x63\xa7\xdc\x9a\xb3\x7f\xbd\xb4\x53\xfb\x60\x8f\x8d\xad\x0f\xf6\x58\x69\xbd\x25\xb7\xb7\xe4\xee\xd0\x4f\x6f\xc9\xed\x2d\xb9\xbd\x25\xb7\xb7\xe4\x76\x6d\xbd\x25\x77\x27\xa2\x7a\x4b\x2e\xe9\x2d\xb9\x1b\x5b\x6f\xc9\x75\xad\x0f\xf6\x58\xdb\x7a\x15\x61\xd7\xd6\xab\x08\xe1\xfd\xf4\x2a\x42\xaf\x22\xf4\x2a\x42\xaf\x22\x74\x6d\xbd\x8a\xb0\x13\x51\xbd\x8a\x40\x7a\x15\x61\x63\xeb\x55\x84\xd5\x8e\xa3\x05\x7b\xbc\x00\xb9\x31\x09\x2d\x44\x1a\x1d\xce\xa5\x10\xe9\x13\x68\x2e\xd6\x17\x9e\x88\x61\x26\x12\x8a\xb5\x04\x99\xfd\x89\x8b\x41\x51\x34\xb7\xa1\x00\x03\xf2\x0f\xc1\xc1\x62\x40\xd8\xda\x9d\x39\x10\xa1\x67\x80\x65\xba\x4e\xd4\x69\x87\x44\xf6\x1e\x0d\x66\x9b\xd6\xa3\xc1\xf4\x68\x30\x3d\x1a\xcc\xeb\xa2\xc1\xcc\xa8\x72\x25\x2e\x50\x28\xda\x0c\x0e\xd3\xe0\xd8\xf7\x20\xf3\x1e\x1b\xe6\xb9\xb6\xa2\x8b\xbb\xe3\x63\x56\xb8\xb1\xd9\xed\x8c\xa7\x2e\x9c\x12\xd2\x9b\xf6\x3c\x3b\xc3\x1d\x4e\x0b\x4d\x53\x48\x49\x01\x72\x68\x0f\x8f\x20\x13\xe6\x2a\xcc\x2c\x9d\x66\x37\xc3\x5d\x19\xe2\x81\x00\xae\xb4\x67\x22\xa0\xa7\xfd\xa3\xae\xb4\x5f\x25\x5a\xa8\x52\x33\x62\xab\x25\xfe\x7c\x71\x18\x2c\x71\xec\x85\x43\xa2\x5d\x98\xd2\xf7\x41\x16\xc3\x58\xe6\x3d\x34\xbf\xdd\xed\x54\x53\x76\x73\x8b\x6d\xd2\xf0\x85\x3a\xff\xbb\x04\xb9\x20\x62\x0e\xb2\x36\x56\xf9\x9b\x56\xb9\x18\x6d\xc4\xc2\x77\x75\x68\xc3\x55\xd3\xab\x89\x45\x99\xe2\x65\x96\x0d\x6c\xef\xcb\x6c\xcf\x5f\x44\xb6\xf2\x92\x30\xdf\x47\xf2\x5e\x44\x31\x70\xc7\xb4\xff\xc6\x8e\x24\x23\x07\x56\xb1\x76\x73\x8b\x6b\x9e\x88\x68\x9c\x78\x21\xeb\xe1\xa1\x54\xc6\xdd\xdc\x5e\xd2\xbf\x44\x62\xfb\x98\x48\x64\x3f\x13\x89\xe8\x6b\x22\x71\xfd\x4d\x24\xba\xcf\x89\xc4\xf4\x3b\x91\x57\xaf\xf4\xbb\xb9\x45\x37\x2b\xc6\x76\x45\x91\x17\x63\x30\xe4\xb5\x2b\x0a\x6f\x6e\xaf\x53\x6b\x78\x73\x7b\x81\x5d\x10\xd3\x3d\x45\x5e\x74\x0f\xec\xa5\xa6\xf1\xe6\x76\x90\x4e\xab\x27\x09\x7b\xf1\x3a\xc8\x9b\x5b\x74\x1f\x10\x79\x01\x3f\x10\x89\xed\x0b\x22\x2f\x73\x64\x5f\xd8\x27\xf4\x0a\x03\x74\xaa\xde\xbc\xb9\xbd\x04\xcf\xd9\x6b\xc5\xe7\xa7\xc8\xda\x63\x2d\xe8\xcd\x6d\xff\x55\xa2\x37\xb7\xc8\xd2\x79\x68\x65\xe9\xe7\x08\x8d\xc2\x2a\x5e\xc6\xfd\x4a\x5a\xe7\xe2\x7b\x58\xc4\x0d\xfe\x8c\x70\x72\x3f\xb4\xa8\xf3\xea\xa7\x76\x35\xec\x6a\xa9\x1d\x7d\x6d\x56\x60\x77\x3e\x02\x57\x11\x3b\xcb\x82\x69\x18\x03\xd1\xf4\x01\x30\xe2\x42\x60\x39\x12\x96\x82\xad\x5b\x63\xb7\x3a\x8e\x6f\xb6\x78\xa9\x20\x35\x84\x64\x42\x3c\x94\x85\x3f\x2a\x98\x56\x1c\xe3\x60\x32\x9e\x88\xdc\xe7\x4f\xdb\x6c\x3a\x73\xe2\x1d\x2f\x18\xda\x3a\x63\xf6\x73\x24\x07\x2f\x69\x67\x54\xfd\x7b\xcb\xc8\xf7\x77\x42\x15\xf9\x3b\xaa\x3f\x9c\x9c\xe0\x0f\x4f\xff\x1e\x1e\x9a\x59\x2d\x81\xf5\xcb\x89\x12\x39\xec\x52\x91\xf2\xf6\xea\x3c\x35\xbb\xc1\x04\xf9\xda\x28\xcd\x89\x3b\xb6\xfe\xf4\x13\xca\x35\x3b\xad\x4c\xd1\x23\x82\xfb\x0b\x75\xbf\x54\xf0\x63\x6d\xa9\xf6\x5c\xdf\x77\x10\x1e\x91\x59\xad\x5c\x1d\xd9\x63\x3d\xdc\x23\x57\xf6\xdd\x56\xe1\xab\x6a\xc6\x59\x19\x2f\x78\xdc\x7b\x1f\x3b\xe0\x54\xde\x89\x90\x63\x96\xa6\x80\x85\x36\xab\x57\x1d\x0b\x0f\x8d\x51\x1f\x39\xc3\xf7\x5b\x7b\x27\x9c\x98\xf3\x4c\x89\xc1\xf2\x38\x09\xe5\x1e\xfc\x00\xb4\xad\xd6\xd9\x1a\x96\x30\x65\x96\x45\x41\xb0\xfa\x75\x70\xe1\xe1\x2f\x75\x4f\x44\x4e\x11\x60\xea\xc0\xef\x8a\x65\x02\xfb\xeb\x22\xfa\x75\xc1\x85\xee\x6f\x8c\xfe\xc6\x58\xba\x31\x56\x0e\xde\xcb\x5d\x1a\x2b\x43\xf5\xf7\xc6\x81\xdf\x1b\x9c\xe6\xa0\x0a\x9a\xc0\x17\xe4\x61\xb6\xe6\x7f\x9b\xb7\xe6\xc9\x57\x8d\x72\xda\x20\xf3\xa8\x5e\x01\x0f\x55\x83\x37\x16\xf6\x9b\xfa\x50\xa8\x92\x37\x6a\xad\x36\x88\xb1\x7c\x73\x39\xea\x2f\x98\x12\xaf\xe6\x0b\x0e\x0a\x9d\xaf\x50\xc5\x9e\x36\x06\xc7\xb1\xc2\x5f\x1b\x21\x68\x6a\x37\x0b\x4f\x97\x41\x69\xea\x11\xd1\x0f\x9c\x03\xe5\x8a\x1c\xf9\xa0\xd8\x63\x55\x3f\xb1\x65\x51\xe5\xa7\x5a\x55\xde\xaa\xa2\xe8\xe4\xff\xfc\xdf\xd3\x56\x49\xab\x9a\xa0\xde\xcb\xbf\x75\xeb\xbd\xfc\x41\xad\xf7\xf2\xf7\x5e\xfe\x18\x7d\xf5\x5e\xfe\xde\xcb\xbf\xb6\xf5\x5e\xfe\xde\xcb\xdf\x7b\xf9\x7b\x2f\xff\x6a\xeb\xbd\xfc\xbd\x97\xbf\xd1\x7a\x2f\x7f\x77\xb2\x7a\x2f\xff\x8e\xad\xf7\xf2\xc7\xf4\xf2\xd7\x86\x8b\x43\xb3\xbe\x35\x4d\x5a\x2e\x93\x15\xb5\x4f\x4d\x35\x4b\x6a\xf4\x28\xff\x94\xfd\xd7\x61\x99\xe2\x9a\x66\xb2\x97\x31\xc4\x35\x8d\x7d\x2b\xf6\xd4\x48\x76\xb8\x8d\x56\xb7\xca\x2e\xb7\x32\xf2\x8b\x1a\xe4\x7a\x73\x7b\x37\x2a\xeb\xd4\xb2\x43\x3b\xea\xf7\x1e\xcc\x40\xcd\x44\x99\xa5\x46\xb8\xad\x90\x0e\x52\x72\xe2\x3d\x6b\xa7\x66\x2b\x72\xa1\xdb\x5f\x72\xcd\x86\xf5\x13\x55\xa2\x20\xba\x05\x7d\x35\x8f\xf0\x25\xf6\x36\x82\xda\x7b\xe4\x70\x17\xaa\x24\xfb\xfa\x74\x98\x1b\x1a\x64\xeb\x1d\x98\x22\x29\x4c\x18\xb7\x20\x2d\xb2\xe4\xdc\x08\xe7\x82\xbb\x1c\xfa\x60\xfa\xac\x48\x60\x5d\x7d\x8e\x0f\x59\x93\x06\xce\x07\xda\x35\xea\xe5\x6f\xa4\x49\x53\x64\xa2\x94\x3b\x9c\x77\xc1\x9d\x53\xd5\x7c\x62\xfb\x09\x26\xad\x62\x51\xb8\x22\xac\x7a\xfb\x70\xee\x74\x89\x5c\xa9\xf9\x62\x4c\xe1\xfe\xa0\x59\x26\x1e\xc3\xa5\x8d\x28\xe7\x3a\x72\xd9\x9a\xc0\xd3\xf6\xb8\x73\xd5\x9b\xa5\xdc\xdf\x30\xcd\xb6\x2f\x98\xb3\x65\xeb\x0b\xe6\x3c\xdf\xfa\x82\x39\x4f\x17\xcc\x69\x44\x36\x35\x2b\xe7\x74\x9d\x6d\xac\xb7\xb3\x87\xca\x39\x84\xfc\x65\x06\xc8\x37\x24\xd8\x70\xa4\x32\xd3\xac\xa8\x11\xd1\x94\x5d\xf9\xcc\x1a\xe2\x26\x0e\x59\xa7\xcd\xc5\x0c\x8d\x34\x99\x75\x24\x60\x89\x07\x22\x15\x88\xbb\xa6\xf0\x66\xb3\x88\x32\xe8\x07\xb6\x65\x65\xbc\x85\xce\x02\xfb\xb0\x2f\x1f\xff\x23\xe0\xd6\x79\x8f\x62\x4f\x3b\xde\x4e\x91\x13\x23\x2d\x65\x0b\x17\x75\xd6\xba\x7e\x5a\x62\x56\xe7\x61\xad\x17\x61\x0e\x5e\x45\x9b\xb2\x39\xf0\x5a\x46\x3b\x51\xa7\xa7\x5e\x57\x5c\x96\x3d\x3b\x8f\x19\x22\xb3\x76\xbf\x57\x77\x95\x35\x97\x64\xc5\xce\xe3\xae\x91\x31\xff\xbd\x21\x8b\xfd\xc7\xf3\x52\x66\xe7\xa1\x2d\x6b\xf3\x70\x4b\x8d\x6d\x55\x4b\x97\x1d\xfb\x3e\x10\xec\x98\x70\x18\x90\x18\x7e\xd8\x68\xf0\x1f\x71\xeb\x53\xed\x03\xf6\x63\x0f\x90\x1f\xbf\xa4\x82\x51\x07\x19\xfc\x73\x70\x76\xa6\x97\x40\x8b\x3f\xe8\x60\x9f\x1e\x2e\x3e\xa8\x9f\x5f\x14\x5c\xfc\x9e\x82\x79\x7e\x81\xa8\xf1\x07\x10\xbc\xb3\xcf\xc0\x9d\x5f\x1c\x6a\xfc\x01\x05\xea\x1c\x64\x90\xce\xa1\x05\xe8\xf4\x30\xec\x41\xed\xcb\x84\x61\x8f\x1a\x84\x13\x9b\x8f\x1c\x60\xf0\xcd\x01\x06\xde\x1c\x6a\xd0\x4d\x44\x49\xf9\x65\x82\x6d\x22\xb1\x80\x97\x09\xb2\x89\x97\x1a\x1d\xf3\x54\xee\x1b\x3e\xe3\x20\x72\xa1\x0f\x19\x36\xe3\xa0\x12\xa0\x0f\x2b\xf9\x79\x1f\x89\xcf\x07\x03\x93\xb1\x47\x88\x8c\x38\x62\x60\x04\xe1\xef\x25\xf8\x7d\x3c\x59\x2c\x2a\x1c\x46\x54\x9e\xbf\x7f\x18\x8c\xaf\x96\xed\x47\x84\xbf\xe8\x39\xff\xc6\x76\xe8\x9c\xff\xa5\xe1\x2e\xf6\x0b\x75\xd1\xf3\xff\xad\x5a\x54\x58\x8b\x17\xf6\x9c\xbe\x26\x9c\xc5\x61\x40\x59\xbc\x1a\x8c\xc5\xe1\x40\x58\xbc\x1a\x7c\x45\xef\xb1\xee\x3d\xd6\xed\xd6\x7b\xac\x7b\x8f\xf5\x2e\xfd\xf4\x1e\xeb\xde\x63\xdd\x7b\xac\x7b\x8f\x75\x60\xeb\x3d\xd6\x1d\x89\xea\x3d\xd6\xeb\x5b\xef\xb1\xee\x3d\xd6\xbd\xc7\x7a\xa5\xf5\x1e\xeb\x20\x02\x0f\xd4\x63\x1d\x07\x12\x22\xe6\x89\x3c\x24\x28\x88\x43\x80\x81\x78\x2d\x08\x88\x83\x83\x7f\xe8\x4d\xd0\xdb\x51\x17\x07\xea\x21\xe6\x11\x3e\x6c\x88\x87\x43\x86\x77\x38\x50\x68\x87\x97\x81\x75\x78\x49\x48\x87\xe0\x33\x1b\xf5\xb4\x16\x22\x3d\xe7\x9a\xf9\x14\xb2\xdd\xcf\x69\xeb\x74\xbe\xc7\x3f\xc6\x60\xcf\x58\xeb\xc0\x34\xf3\xe4\x65\x99\x81\x72\x69\xe2\x74\x2e\x58\x4a\x8a\x52\x6b\x9b\x79\xeb\xce\xa7\xdf\xf8\x34\xb7\x99\xf2\x03\xf2\x0f\xc1\x61\x40\x40\x27\x23\xb3\xb9\x31\x07\x5d\xe8\x19\x48\xf3\xf8\x89\x3a\x3d\xdd\x7d\x4d\x82\xe4\xb3\x30\xd3\x5e\x21\x61\x02\xf2\x8b\x40\x56\x40\xcf\xb3\x83\x2f\x90\xd6\xe1\x6d\xa9\xc7\x10\x01\xf7\x85\x3d\x7e\x5a\xb8\xac\x77\x3c\xf6\x36\xed\xbc\xeb\x0d\x89\xf8\x06\xad\x0d\x04\x0d\x37\xc7\x06\x8c\x83\x01\x19\x97\x9a\x30\x8d\xc0\x00\xc9\x4c\x08\xd5\x95\xbb\xb8\x24\x65\x7c\x91\x39\x13\xd6\x9c\x2e\x38\x20\xea\x80\x90\x15\x0f\x6c\x10\x65\x55\x89\xfa\x67\xac\xab\xb2\x95\x0b\xa5\xeb\x1d\xe2\x8d\xb3\x66\xf0\xea\xce\x99\x4a\x30\x14\x69\xa2\xca\xdc\x90\x62\x01\x55\x94\x85\x00\xe8\x38\xec\xc4\x88\x58\x34\x99\x35\x5e\x21\x07\xd0\xd6\x35\xe7\xb3\x9c\x1b\x87\xb8\xa9\x33\x9d\xf8\x9c\xd7\x8e\x63\x9b\xce\x40\xe9\xc1\x46\xc4\x91\xcd\x7b\xc1\xf2\x84\xd3\xae\x46\xa9\x44\xe4\x45\xa9\xc1\xc8\xf1\x65\x6e\x76\x13\xd3\x18\xb1\x82\xcc\x48\x8a\x72\x6a\x27\xdc\x83\x3c\xd8\x89\xa8\x11\x44\x78\x8a\xba\x59\xe7\x8b\xff\xc8\xae\xdc\x91\x17\xde\x0d\x11\x6c\x52\x01\x84\x90\x19\x55\xcd\x50\x9b\xfa\x5e\x7d\x06\x20\xe7\x7f\x06\xdc\xac\x66\xe0\x13\xd5\x90\x70\x66\x6c\x3a\xf3\x9b\xcd\x68\xc7\x68\x53\x68\x6d\xd2\x2f\x1d\x59\xc2\x9c\x5c\x77\x86\x50\x5c\xa9\x77\xbc\x9d\xf1\x94\xfc\x05\xbf\x85\x74\x39\xdf\x1a\xf7\x81\x35\x1a\xd0\x34\x35\x82\x08\xc8\xa1\x3d\x41\x82\x4c\x98\x53\x91\x96\x8e\xb4\x9b\xe1\xae\xac\xf1\x30\xd0\x01\x96\x76\x5c\x40\x4f\x76\xe6\x3b\x76\x10\xc3\xc7\xb6\xf4\x2a\xd1\xb4\x95\x5b\x37\xcd\x23\x72\x6e\x25\x22\xcf\xbf\x8c\xea\x3e\x58\xc1\xbf\x5a\x3d\xd5\x76\x66\x0e\x20\x1a\x22\x8e\xa3\x36\x06\xa4\x04\x89\xe8\x57\x8d\x06\x2d\x41\x5e\xa7\xee\xcf\x2b\x40\x4c\x90\xfd\xc0\x4c\x90\xbe\xe6\xcc\x61\x05\xf1\x90\xbe\xe6\xcc\x81\x05\xf5\x90\xbe\xe6\x4c\x5f\x73\xa6\x7b\x3b\x84\xa0\x1f\xd2\xd7\x9c\x39\x80\x20\x20\xd2\xd7\x9c\xd9\xa6\xf5\x35\x67\xfa\x9a\x33\xab\xad\xaf\x39\xd3\xd7\x9c\x69\xb4\xbe\xe6\x4c\x77\xb2\x0e\x2e\x90\x88\x1c\x70\x30\x11\xe9\x6b\xce\x44\xae\x39\x13\x2f\x3d\x9a\xbc\xc0\xc9\xdd\x37\x34\x06\x39\x94\x3c\x69\x72\xe0\x10\x19\xe4\xd0\x92\xa5\xc9\xc1\x25\x4c\x93\x3d\x25\x4d\x93\x43\x82\xcc\x20\xfb\x85\xcd\x20\x87\x98\x98\xf7\x65\x94\x2c\x8a\x0a\xa5\x41\x5e\xe2\xae\xd8\x3f\xa4\x06\xf9\xda\xaf\x8b\x88\xd0\x1a\xa4\xbf\x31\xb6\x69\x5f\xc2\x8d\xf1\xd2\x50\x1b\x64\xef\x70\x1b\xa4\xbf\x37\xba\xb6\xa8\x10\x1c\xe4\x75\x3c\xcc\xaf\x09\xc5\x41\x0e\x06\x8e\x83\xbc\x26\x24\x07\x39\x28\x58\x0e\xf2\x9a\xd0\x1c\xa4\xf7\xf2\xf7\x5e\xfe\xad\x5b\xef\xe5\xef\xbd\xfc\x31\xfa\xea\xbd\xfc\xbd\x97\x7f\x6d\xeb\xbd\xfc\xbd\x97\xbf\xf7\xf2\xf7\x5e\xfe\xd5\xd6\x7b\xf9\x7b\x2f\x7f\xa3\xf5\x5e\xfe\xee\x64\xf5\x5e\xfe\x1d\x5b\xef\xe5\x8f\xe9\xe5\x8f\x03\x23\x42\x5e\xe0\xd4\x1e\x12\x9c\x08\x39\x10\x48\x11\xf2\x8a\xb0\x22\xe4\x10\xa1\x45\x48\x6f\x6e\xef\x4c\x65\x1c\xb8\x11\xf2\x02\x47\xfd\xb0\x61\x47\xc8\x81\x43\x8f\x90\xc3\x85\x1f\x21\x2f\x06\x41\x42\x5e\x18\x86\x84\xc4\x3a\xd7\x36\x45\xf5\x50\x00\x7e\x2c\x35\x2b\x99\xb5\xad\xd2\xfe\x4f\x26\xce\x87\x69\xb6\xee\xd0\x48\xca\xa7\x40\xde\x0e\xdf\xbe\x79\x13\x9e\xbb\xcb\xb8\x86\x29\x84\x58\x2f\x27\x42\xe6\x54\x63\x4f\xbf\xff\x5d\xa7\x7e\xa2\xb3\xed\x4d\x38\x0f\x87\x87\x7f\xe2\x6c\x22\x6d\xfc\x89\x96\xf4\xbf\x01\x8c\x04\xb5\x02\x73\x5a\x73\xd0\xa4\xb3\x6f\xa0\x81\xb8\xa1\x59\x0e\x03\xcf\xfb\x6d\x4c\x84\x0f\x00\x70\x30\x2c\x29\x11\xdc\x89\x6c\x86\xdd\x75\xdd\x7b\xdd\x5f\x39\x01\xaa\x10\xf9\x60\x0c\xe6\xb5\x3b\x8e\x4f\xb5\xc5\xf7\x29\x04\xe3\xda\x1b\x7a\xcc\x3b\x83\xdf\x10\x0e\x3c\x28\x2d\xc1\x5a\x50\xeb\x18\xa7\xb2\x48\xa9\x86\xd3\x10\x55\x51\x2d\x94\x86\x1c\x31\x64\x8c\xa4\x47\x31\xf8\x87\x68\xb9\xc0\x00\x90\x39\x70\x5d\xd2\x2c\x5b\x10\x98\x33\x17\xbf\x63\x86\xc7\xe8\x25\xa6\x55\xd0\xcc\xff\x65\x06\xc8\x41\x24\xd8\xc0\xa4\x32\xd3\xac\xc8\x6a\xf8\x11\xbb\xfc\x99\x35\xc9\x4d\x1c\xda\x4e\x9b\x9f\x19\x1a\x69\x32\xeb\x48\xc0\x12\x37\x44\x2a\x0c\x03\x92\x0a\xef\x38\x0b\x30\x83\x1e\x61\xa3\x2a\xa8\xca\x56\x67\xc1\x7e\xd8\x97\x8f\x04\x12\x70\xff\xbc\x47\x01\xa8\x1d\x79\xa7\xc8\x89\x91\x9b\xb2\x85\x8b\x3f\x6b\x5d\x44\x2d\x81\xab\xf3\xb0\xd6\x9f\x30\x07\xaf\xac\x4d\xd9\x1c\x78\x2d\xad\x9d\xa8\xd3\x53\xaf\x35\x2e\x4b\xa1\x9d\xc7\x0c\x91\x5e\xbb\xdf\xb0\xbb\x4a\x9d\x4b\x52\x63\xe7\x71\xd7\x48\x9b\xff\xde\x90\xca\xfe\xe3\x79\x79\xb3\xf3\xd0\x96\xb5\x79\xf4\xa5\xc6\xb6\xaa\xe5\xcc\x8e\x7d\x1f\x08\x8a\x4c\x38\x20\x48\x0c\x8f\x6c\x34\x20\x90\x17\xae\x94\xf4\x0a\x00\x20\x7b\x00\xff\xe8\x2b\xf6\xf4\x15\x7b\xda\xad\xaf\xd8\xd3\x57\xec\xd9\xa5\x9f\xbe\x62\x4f\x5f\xb1\xa7\xaf\xd8\xd3\x57\xec\x09\x6c\x07\x14\xb2\x73\x90\xe1\x3a\x87\x16\xaa\xd3\x57\xec\x09\x6a\x7d\xc5\x9e\xbe\x62\x4f\x5f\xb1\xa7\xd1\xfa\x8a\x3d\x21\x47\x33\x5e\x92\x74\xcc\x53\xb9\x6f\x20\x8d\x83\xc8\x8a\x3e\x64\x00\x8d\x83\x4a\x85\x3e\xac\x34\xe8\x7d\xa4\x40\x1f\x0c\x60\xc6\x1e\xc1\x32\xfa\x02\x4f\x5b\xb5\xa8\xc0\x18\x51\x79\xfe\xfe\x01\x31\xbe\x5a\xb6\x1f\x11\x08\xa3\xe7\xfc\x1b\xdb\xa1\x73\xfe\x97\x06\xbe\xd8\x2f\xe8\x45\xcf\xff\xb7\x6a\x51\x01\x2e\x5e\xd8\x73\xfa\x9a\xc0\x16\x87\x01\x6a\xf1\x6a\x80\x16\x87\x03\x66\xf1\x6a\x40\x16\xbd\xc7\xba\xf7\x58\xb7\x5b\xef\xb1\xee\x3d\xd6\xbb\xf4\xd3\x7b\xac\x7b\x8f\x75\xef\xb1\xee\x3d\xd6\x81\xad\xf7\x58\x77\x24\xaa\xf7\x58\xaf\x6f\xbd\xc7\xba\xf7\x58\xf7\x1e\xeb\x95\xd6\x7b\xac\x83\x08\x3c\x50\x8f\x75\x1c\x70\x88\x98\x27\xf2\x90\x40\x21\x0e\x01\x10\xe2\xb5\xc0\x20\x0e\x0e\x08\xa2\x37\x41\x6f\x47\x5d\x1c\xd0\x87\x98\x47\xf8\xb0\xc1\x1e\x0e\x19\xe8\xe1\x40\x41\x1e\x5e\x06\xe0\xe1\x25\xc1\x1d\x82\xcf\x6c\xb4\xd3\x4a\x4b\x2d\x72\x51\x72\x7d\x07\x72\xce\x12\x38\x4f\x12\xf3\xd7\xbd\x78\x80\x1d\xb3\xfa\x5b\x47\xf4\xfc\x89\x6e\x09\xe3\x29\x4b\xd0\x36\xf9\x38\x03\x3d\x73\x69\x73\xf8\x1c\xa1\xf6\x41\xa2\xf1\xc9\xfa\x84\x22\x9d\xe6\x8e\xc5\xcc\x6e\xec\x7a\xd7\x25\xb0\x33\x34\x16\x22\x03\xba\x8b\x2b\xda\xc9\x8c\x20\x77\x64\xd4\x61\x3c\xeb\x07\x27\x4a\xd4\xa3\x93\x31\x64\x82\x4f\x5d\x0e\xb9\xe3\x3a\xbb\xee\xc2\x8b\xba\x3b\xe7\xaa\x4d\x4a\x29\x81\xeb\x6c\x81\xd3\x9c\xa6\x90\x12\x34\x4f\xe5\x62\xbe\xfb\x26\xbf\x47\x76\xe4\x75\x78\xaa\x49\x06\xd4\xbc\x07\x87\xfa\x45\x0c\x43\xa3\xe4\xa6\x03\xed\x95\x6f\xd9\x82\x08\x74\x5a\xff\xdd\x6f\xec\x4e\x77\x74\xfb\x34\x78\xbd\x0c\xa5\xb4\x04\x8d\x7c\x8d\xf9\x40\x06\xb9\x10\x25\x79\xa4\x56\x95\x92\x25\x47\x96\x8a\x13\xd5\x61\x91\x03\x94\x8e\xee\xc6\xf8\x21\xde\x4b\x3b\xfe\x2c\xc4\x38\x4e\xe5\xb4\x93\xe8\x14\x43\x96\x38\x97\xd3\xd2\x6a\x8a\xee\x28\x02\xd7\x72\x81\x78\x18\xdd\xee\x85\xfb\x59\xeb\x84\xe4\x74\x0a\xc7\x8a\x5c\x7c\x78\x6f\x6e\x1d\x8c\x40\x62\x13\x2b\xb3\xbb\x5b\xa8\x90\x62\xce\xd2\xae\xd7\xd0\x27\x2a\x19\x1d\x67\x46\xeb\x9d\x80\x04\x6e\x24\xe9\xdf\x9c\x7c\x3a\xbf\xfd\xdb\xf5\xf9\x87\xcb\x53\xd4\x7f\xe1\x73\x41\xb9\x61\x07\xa5\xaa\x91\x79\x1c\x85\xc7\x8a\x00\x9f\x33\x29\xb8\x99\x05\xb4\x1b\x52\x32\x77\x9d\x76\xa2\xa8\x0e\x1c\x91\xa0\x44\x36\x87\xd4\x62\x69\x54\x04\xd6\xe1\x3b\x45\xa9\xbd\x05\xd5\xc7\xde\x94\x3c\x99\x51\x3e\x85\x74\x44\xde\x8b\xd2\xbc\xd8\x6f\x7e\x83\x2f\x21\x21\x2d\x13\xe8\xa6\xe3\x58\x13\xbc\x3d\xb9\xbf\x19\x78\x99\xc5\xdc\xfe\x18\x7b\x43\x40\x25\xb4\xf0\x53\xd3\x9c\x3d\xb5\xe0\x9a\x7e\x7e\x67\xb1\x38\x8e\x7e\xd3\xf8\xea\xa8\x7b\xe0\x5a\x21\x85\x79\x15\x2b\x0b\xda\xb7\xcf\x98\x06\x49\x33\x72\xd4\x1c\x61\x44\x2e\x0d\x5d\x90\x36\xd7\xd6\x82\xd1\xc0\x1c\x24\xda\x56\xdd\xca\x0e\x88\x84\x29\x95\x69\x06\xaa\x9b\x51\x48\x4c\xaa\x2b\xdc\x9a\x5a\xdc\xae\x82\xca\x66\xcc\x85\x1e\x85\x32\x6e\xdf\x3e\x08\x04\x3b\x99\x88\x77\x64\xa6\x75\xa1\xde\x9d\x9d\xd5\x52\xd0\x88\x89\xb3\x54\x24\xea\x4c\x53\xf5\xa0\xce\x18\x37\xcc\x6f\x98\x52\x4d\x87\x0d\xae\x7b\x66\x65\xe3\x61\x22\xf2\x9c\xf2\x74\x48\xdd\x39\x1e\x56\x3b\xfb\xec\xd7\x4e\x7a\x1c\xd2\xea\x29\xc6\x87\x74\xa8\x66\xd0\x69\xe5\xc2\x14\xc5\x00\x05\x31\x50\xc8\x8c\xac\x10\xba\xb9\xdc\x17\xc3\xbe\xac\xf8\xb3\x5d\x8a\x11\xb9\x16\xda\xe1\x15\xb9\x88\x4a\xbc\x6d\x71\x95\x63\xb2\xf0\xcb\xeb\xfb\xdb\xbf\xde\x7c\xbc\xba\xbe\xef\x39\x79\xcf\xc9\xb1\xf5\x9c\xbc\xe7\xe4\x1d\x06\x3e\x14\x4e\x0e\x7c\xbe\x2f\x2e\xee\x95\xe2\x06\xc7\xaa\xb6\xaa\x4b\x14\xa8\xc2\xbc\xab\x7d\xd0\x6d\x8b\x46\xd9\xe9\x7b\xdb\x31\xad\xc9\xbe\xe4\xf3\x4f\xb4\x1d\x71\xc2\xd7\x4e\x21\x71\x0f\x58\x0d\xfd\x22\x6c\x02\x83\x3d\x5f\xa1\x71\x61\x9d\x14\x52\xdb\xc2\x63\xb6\xcc\xd0\xdd\x0d\xde\xad\xe5\xbb\xa6\x79\x65\x6e\x5d\xb7\x6a\x23\xf2\xc1\xdb\x5b\xc8\xc5\xdf\xae\xde\x5f\x5e\xdf\x5f\x7d\x73\x75\x79\xdb\xdd\x40\x19\xc1\xa5\x80\x46\xe2\x48\x13\x10\x64\xef\xdf\x45\x3e\x0a\x18\xa6\x96\xac\x0a\x09\x73\x26\x4a\x95\x2d\x2a\x43\xfc\x7a\x76\xb5\xcc\xa7\x08\xe5\x21\x14\x50\xbe\xa8\xac\xa8\x6b\x07\x5c\x92\xed\xd6\xc9\x69\x21\x26\xed\xfd\x4a\x78\x8e\x88\x18\x72\x5e\xc0\xf8\x6b\x24\xc4\xed\xa5\xbd\x80\x71\x3b\xc9\x89\x9b\x64\xbe\x00\x3a\xda\xd2\x62\x40\x47\xef\x6d\xfa\x14\xde\xe9\x47\x01\x53\x13\x8b\x93\x7d\x23\x45\x1e\x89\x9b\xdd\x21\x2e\x60\x95\xce\xb6\xee\xa8\x1e\xbb\x18\xf1\x96\xbc\xed\x34\xc7\x2a\xa1\xcc\x7c\x1e\x98\x54\x16\x25\x38\x25\x4e\x7c\x73\x22\xf8\x84\x4d\x3f\xd0\xe2\x7b\x58\xdc\xc2\x24\xcc\x25\xde\x9e\x6f\xf4\x0e\xba\x28\x5b\xf4\x43\x1a\xc9\xc6\x0e\x16\xe6\x21\x8c\x16\xdb\x13\x2b\x02\x3e\x3c\xfa\x3d\x5e\xb0\x7a\x94\x40\xf5\xd6\x42\xba\xa4\xdc\x3a\x2b\x35\x56\x1e\x43\x94\xf8\xc7\x30\x81\xcf\xb7\xf8\x41\xc8\x4d\xe9\xd1\x5d\x0f\x51\x62\xb9\xef\x6b\x50\x71\xa6\x08\x4c\x26\x90\x68\x36\x87\xac\x02\x22\x4f\x07\x64\x5c\x6a\x0f\x01\x3e\xa6\xc9\xc3\x23\x95\xa9\x22\x89\xc8\x0b\xaa\xd9\x98\x65\x4c\x2f\x08\x8b\x51\xc6\xca\x79\xe4\x1d\xae\xb9\x0f\x65\xe6\x4a\x53\xbc\x0a\x85\xb3\xb7\x99\xd5\xb6\xa1\x0a\xd4\xe7\xa1\x59\x6e\xea\xf1\xbc\xa3\x90\x92\x0b\xa5\x49\x02\xd2\x08\x75\xd9\x82\x3c\x4a\x11\xa3\xd4\xc4\xb6\x36\x93\x44\xf0\x04\x0a\xad\xce\xc4\xdc\xc8\x82\xf0\x78\xf6\x28\xe4\x03\xe3\xd3\xa1\x79\xf1\xa1\x65\x56\xea\x0c\x43\x48\xce\x7e\x8d\xff\x39\xa4\x53\x44\x7c\xe2\xf4\x3b\x72\x74\x14\xd8\x97\x28\x6c\xb4\x64\xe4\x53\x79\x87\x71\x38\x8b\x96\xe8\x54\x5d\x28\x46\xf4\x61\x5a\x21\x9f\xf2\x5e\x70\xa7\x05\x44\x9a\xe6\xdd\xe3\x17\x56\xdb\x4b\x55\xf3\x42\x76\x10\xf7\xf6\x0e\xe6\x81\xf5\xf5\x6f\x99\x95\x63\x85\x85\x48\xdf\x11\x55\x16\x85\x90\x5a\x91\x1c\x34\x4d\xa9\xa6\x23\x73\x20\x06\xed\x3f\x31\xd2\x6a\x40\xfe\x5e\x7d\x68\xd3\xfe\x7f\x3c\xfe\xf7\xef\x2f\xff\xfa\x1f\xc7\x3f\xfd\xbd\xf9\x1d\x8a\x6b\x36\x89\xa7\xf1\x40\xe0\x2b\xa8\x02\x92\x11\x17\x29\x5c\x23\x75\xf8\xa7\x6a\xc5\xd5\xb8\x2f\x34\xd5\xa5\x1a\xcd\x84\xd2\x57\x37\xd5\x9f\x85\x48\x97\xff\x0a\x4c\x25\x3a\x40\xb9\x07\xd7\xf6\x86\xea\xee\x40\xee\x24\xaa\xf4\x43\x0b\xf6\x09\xa4\xea\x5c\x1a\xa5\xd9\x5a\xe7\xc1\xf5\x5a\x21\xce\x27\x33\xc8\x29\xfe\xf3\x1b\x3f\x05\xe6\x3e\x7e\x94\x4c\x6b\x0c\xb5\x72\x75\x20\xc4\x64\xe0\x59\xab\x55\xaa\xe6\x6f\x83\xeb\xa0\x45\xe5\xfc\xd5\x0a\x46\x9e\x30\x9c\x11\x37\x5b\x96\x03\xd4\xa8\x26\x2b\x91\x95\xe7\x37\x57\x64\x6e\x67\xf8\x80\x26\xe7\xa5\xd8\xb5\xc7\xa8\xff\xe6\xa0\xd9\xb6\xa7\xd2\x2f\x62\x65\x2f\x7b\x67\x93\x38\x2a\xa4\x7d\x92\xb1\x9c\xb9\xcc\x45\xc3\x59\x40\xe9\x50\xd9\xe6\xc4\x76\x39\x4a\x8a\x72\xe0\xba\x1f\xe5\x90\x0b\xb9\xa8\xfe\x84\x62\x06\x39\x48\x9a\x0d\x95\x16\x92\x4e\x61\x50\x0d\x6e\x7f\x56\xfd\x65\x7f\xd8\x22\x6f\xf5\xd7\xd6\x20\x59\xc7\xe4\xb9\x2b\x2a\x34\x11\xe5\x00\x59\xb6\x5f\xb7\x03\xe1\xd8\xd5\xb6\xba\x8e\xaf\xc8\x1d\x57\xae\x14\xab\x26\x56\xb3\x88\x56\xa0\xb9\xc8\xca\x1c\xd4\xa0\x12\x58\xad\xa9\x92\xcf\xc9\x9c\x4a\x75\x7c\x38\x7c\x88\x90\x94\xcd\x99\x8a\x91\x60\xbd\x46\xa2\x66\x0e\xab\x40\x94\xba\x28\xb5\xab\x89\x56\xf9\x3d\x3e\x17\x42\xa1\x81\xb3\x2a\xab\xd1\xba\xcd\xde\x86\x2a\x0b\x84\x14\x54\x6b\x90\xfc\x1d\xf9\xdf\x27\xff\xf9\xdb\x9f\x87\xa7\x7f\x3a\x39\xf9\xf1\xcd\xf0\xdf\x7e\xfa\xed\xc9\x7f\x8e\xf0\x1f\xff\x7c\xfa\xa7\xd3\x9f\xfd\x1f\xbf\x3d\x3d\x3d\x39\xf9\xf1\xfb\x0f\xdf\xde\xdf\x5c\xfe\xc4\x4e\x7f\xfe\x91\x97\xf9\x83\xfd\xeb\xe7\x93\x1f\xe1\xf2\xa7\x2d\x3b\x39\x3d\xfd\xd3\x6f\x82\x49\xa7\x7c\xf1\x31\x90\x7b\xdb\x36\x8c\x56\xd2\x6e\xb9\xc7\x48\xda\x61\xeb\x2a\x64\x5c\x0f\x85\x1c\xda\xae\xdf\x11\x2d\xcb\x50\x0d\xde\x6f\xaf\xd8\xe7\xff\xd6\x73\xcd\xfa\x36\xab\xa4\x90\x03\x3a\xe0\x2f\x25\x68\x28\x48\x24\xe8\xd7\xb0\xec\xda\x91\xbc\x60\xb7\x94\xef\xf5\xb5\xdd\xa0\xbf\x04\x63\x6f\x55\x59\x0b\xd7\xb5\x16\xdd\x27\x52\xe4\x23\xd2\xf0\x7c\xcf\x11\xd5\xc2\x3d\xf7\x00\x81\x50\x7b\xa4\x37\x0e\x87\xb4\xde\x38\xbc\x81\x94\xde\x38\x1c\xd4\xbe\x48\xe3\xf0\x9d\xe5\x49\xbf\x48\xcb\xf0\x6a\xe8\xa1\xe9\xf4\xa1\x33\x14\x71\xe7\x98\xae\x4d\x31\x90\x39\x2d\xba\x04\x40\x76\x8d\x07\x88\x19\x04\xe9\xcd\x1e\x5a\x90\x42\x14\x65\x46\xf5\x86\xc0\x9f\x48\x11\x91\x15\x28\xb2\x0f\x6b\xaa\x83\xe6\xad\x48\x9b\xaf\x0f\x43\x23\xe7\x59\x46\x18\xb7\x17\xb4\xe9\xa0\xd3\xe8\x3e\x7a\x48\x82\xb5\x87\x10\x6a\xc3\x18\xe7\xe6\x55\x1f\x5d\x59\xde\x66\xfc\xbd\x22\x4a\x53\xa9\x19\x9f\x8e\x6c\xd9\x5e\x2b\x26\xba\x10\x15\xc6\xab\xe2\xbd\x9d\xc8\xa9\xd4\xd0\x0a\x62\x64\xa5\xa6\xb9\x4d\x8f\x56\xda\x4f\x0f\xbe\x81\xa6\x0f\x18\x22\x96\x40\x0a\x3c\xe9\x18\x6c\xf4\xc9\x42\x9a\xf8\x75\x18\x2f\xcc\x4c\x5c\xf2\xb9\xbb\xbf\x48\x5a\xda\x30\x69\x2b\x42\xc5\x1b\xf7\xeb\x8a\x89\x35\x67\xd8\x05\xe3\x34\x42\x63\x51\xda\xac\x0c\x8e\x15\x04\x5b\xe5\xe1\xc3\xe8\x26\xcb\xd2\xbb\x6d\xe4\x60\x45\x22\x5c\x6c\xaf\x82\x6d\x82\xf4\xb1\x15\x79\xbd\xf6\x82\xb6\xe5\xf4\xaf\x21\x3e\x29\x5c\x82\x8f\x2b\xbd\xbf\x84\xe4\x7e\x28\x52\xfb\x81\x48\xec\x2f\x23\xad\x1f\xa6\xa4\x1e\x4d\x4a\x8f\x23\xa1\xc7\x91\xce\x77\x08\xdb\x88\x29\x91\xc7\x91\xc6\x5f\xc2\x16\x57\x48\x98\xb0\xcf\x91\x38\xfe\x47\xef\xad\xd0\xf0\x19\x2d\x33\x85\x84\x02\x78\x05\x41\xc5\x1d\x87\x02\x9a\xcc\xbe\x9c\xbc\x05\x6b\x40\x8a\x7b\x2f\xde\xad\x33\x5e\xf5\x97\x22\xe9\x2f\xc5\x1d\x5a\x7f\x29\xf6\x97\xe2\xab\x5c\x8a\x8e\x5b\x7d\xfd\x37\x62\xe4\xb4\x58\x4c\xf8\xdf\x97\x4d\xe8\xa2\x8d\x3b\x80\x9c\xf9\x25\x53\xb3\xab\xa3\x58\xc3\x53\x9d\xe1\xc8\xdd\x4e\x5c\x9b\xc9\x56\x71\x10\x5a\x58\xb6\x47\x66\x6c\x6a\xb6\x67\x06\x73\xc8\x9c\xf6\x4a\x72\xca\xe9\xd4\xe2\xcd\x6a\x51\xd5\x5b\x12\x12\xcb\xc9\x48\xd6\x11\xea\x6e\x09\xc0\x01\x0d\x45\x86\xcb\x64\x82\xa6\xf8\xa5\x14\x59\x06\x52\x91\x8c\x3d\x00\x79\x0f\x45\x26\x16\x0e\x32\x96\xa7\xe4\x4e\x53\x0d\x93\x32\xbb\x03\xdd\x29\xc6\x32\x88\xe3\x20\xc1\x37\x65\x96\xdd\x88\x8c\x25\x9d\x1c\x72\x31\xb6\xe2\x15\x6e\xc0\xa2\xcc\x32\x52\x20\x21\xdd\xf6\xe1\x47\x8e\x57\xf9\x79\xf6\x48\x17\x6a\x40\xae\x61\x0e\x72\x40\xae\x26\xd7\x42\xdf\x58\x5b\x4d\xb7\x7e\x9b\x99\x65\xb6\x73\xc2\x26\xe4\x1d\xd6\xca\xd0\x44\xd3\x29\x5a\x0e\x7d\x44\xe0\xc0\x6c\xa8\xe6\xa0\x44\x18\x46\xf9\xc8\xd4\x3e\x4d\x68\xe1\xa7\xf4\xd7\x38\xba\xb9\x3a\x3b\x9f\xda\xa0\xbd\x9a\xb1\x09\x24\x8b\x24\xdb\x1b\xc3\x3c\x4f\x30\x48\xbb\x46\xe6\x6d\xb0\x13\xb5\x50\x1a\x72\x0f\x3e\x88\x96\x53\xc6\x89\x04\x55\x08\xae\x50\xca\xab\xb9\x44\xf5\x22\xd6\x12\xdd\x31\xb2\x3a\xa2\x61\xb5\xb3\x62\x10\xaa\x12\x14\x42\xe9\x3b\x4d\xa5\xee\x2a\x9f\xc4\xd2\x05\x6e\x3c\x21\xe6\x24\x27\x34\xcb\x20\x25\x2c\xcf\x21\x65\x54\x1b\xb9\x9d\x4e\x34\x42\x4e\xb6\x7c\x05\x89\x04\x9c\x77\x5f\x01\x61\x46\x79\x9a\x81\x24\x13\xca\x32\xd5\x3d\x80\x7f\xc5\x27\xa1\x41\xe6\x8c\xa3\x93\xc0\x06\x82\xa2\x93\xc2\xfc\x95\x24\x42\xa6\x0e\xdc\x91\x69\xe5\xbf\x0a\x62\xa2\xa6\x7d\x44\xc9\xae\xb1\xbd\x97\xe3\x68\xc9\x38\x13\xc9\x83\x22\x25\xd7\x2c\xb3\x2f\x2f\xc4\x03\xea\x2f\x19\xb2\x93\xce\x43\x77\xe7\x52\xd5\x3f\x87\xd5\x01\x1b\x1a\xaa\xd4\xd9\xaf\xeb\xaf\xf0\x83\x8e\xc4\x45\xd0\xa2\x63\xe8\xd0\xf0\x19\x92\x68\xb8\xc8\x97\x9f\x21\x69\xa1\x92\x3b\xd4\x1b\x5b\x1e\x12\x91\xae\x22\xb9\x02\x6d\x3b\xb0\x22\x6b\x01\x08\x63\xcd\x16\x3b\xca\xe6\xc2\x2d\x82\xab\xaf\xe4\xd7\x24\x63\x1c\xda\x0b\xa3\x58\x0a\xed\xc5\xb1\xde\x45\xa7\xe4\x92\x94\x49\x04\x84\x5e\xf8\xdc\xf1\x60\xd2\x3c\x2d\x88\x99\x2c\x84\x26\x27\xc7\x67\xc7\xa7\x2b\x7b\xe4\xd8\xc8\xe6\x19\xd8\x6b\x71\xe4\x70\xce\xaa\x97\x52\x2c\x2f\xb2\x05\xbe\xc7\x71\x3a\x20\x4c\xc7\x08\xdb\x31\xb7\xa1\x2c\xb9\x9f\x15\x87\xcb\x36\x20\x4a\x10\x2d\xa9\xaf\x83\x60\x3f\x35\x0f\x69\x59\xba\x0b\xfd\xe4\xf8\xe7\xe3\x01\x01\x9d\x9c\x92\x47\xac\xfd\x6a\xa6\x6f\x44\xee\x05\x29\x55\xf8\x8c\x55\x84\x2c\x44\x49\x38\x80\x3b\x5b\x45\xc6\x12\xa6\xb3\x05\x5e\x37\x44\x94\xda\x1a\x41\xa9\x0e\xc1\x93\x6b\xb6\xcb\xcf\x4c\xbb\x14\x2e\xc3\xbf\xdf\xe0\x6e\xb2\x57\x16\xa1\x46\x19\x99\xc3\xd9\x0c\x68\xa6\x67\x36\xc1\x80\x0b\x3e\xfc\x07\x48\x81\x98\x73\xdc\x7d\xf3\xd5\xd5\xf4\x8b\x18\x5b\xf4\x42\xf0\xf7\xe6\xda\xfb\x16\x3a\x8b\x44\x64\x99\x1f\x7d\x77\x7f\x7f\xf3\x2d\xe8\x26\x97\xe7\xf8\x21\xf9\xf6\xf2\xde\xa7\x95\xa0\x31\x1e\xe4\x44\xc8\xfc\x00\xd8\x7b\x9c\x78\xd7\x21\x29\x84\x3c\x84\x5b\x66\x26\x54\xd0\x72\x92\x17\xb8\x62\xbe\x13\x4a\x5b\x7f\x8b\xd5\x4d\x38\x96\xec\x16\xed\x1c\x09\x17\x10\x4d\xae\x6e\x46\xe4\xaf\xa2\x34\x13\x32\xa6\xe3\x6c\x51\xa1\x4e\x2b\x08\xaf\xe5\x78\x64\x48\x39\x32\x37\x88\xd9\xf9\xdf\x01\x4d\x41\x2a\x64\xd0\x40\x23\xd5\xd2\x89\x70\xdc\x1b\xb4\x45\x5d\xca\x8b\x52\x69\x91\x93\x99\x7b\xed\x36\x1e\x9d\x3b\x9c\x23\x7b\x5c\x1d\x28\x91\x84\xc2\x32\x71\xf7\x9b\xaf\x8e\x45\xaf\x70\x2f\x3b\xef\xee\xf3\xb1\x15\x53\x9b\xd3\xe6\x1c\x1c\x16\xee\xc6\xf1\x36\xb3\x55\xa3\x85\xa2\x1e\x64\xd5\xd2\xce\x48\x75\xcb\x1d\xa1\xb3\x27\xb8\xa7\xb8\x35\x4b\xe3\x44\xbf\x93\x17\xab\xd1\x68\x04\x5a\xb7\xf9\xac\x0d\xba\xbb\xf5\x7c\x5d\xe7\x4c\x55\xc1\x8b\x09\xe5\x82\xb3\x84\x66\xec\x1f\x90\x92\xb2\x10\xdc\xa5\xbb\xa1\x64\x9b\x50\x05\x43\xf4\x8e\x73\xed\x0a\x47\xd5\x98\x69\x86\x3b\x68\x21\x50\xdc\xc3\x18\x35\xc3\xee\x2d\xd5\x87\x5b\x9a\xf3\x05\x56\x7d\x65\xb1\xe2\xec\x78\xf2\x45\x88\x93\xc4\xe6\x29\x06\xe7\xc8\xaf\x66\xc8\x6b\x41\x68\x92\x20\x2a\x9c\xbd\xae\x90\xf1\x2a\x90\xf3\xf0\xfd\x15\x6d\x5e\x8d\x08\x78\x68\xb2\x97\x8d\x39\x90\x84\x97\xf9\x18\x64\x0d\x2f\x22\xf5\xea\x9c\x46\xb1\xba\xb8\x61\xed\x70\xde\x4b\xeb\x65\x0c\xca\xa7\x40\xde\x9a\x91\xff\xf8\x87\x3f\xfc\xfe\x0f\x11\xc6\x31\xaf\x57\x05\x76\x73\x72\x75\x7e\x7d\xfe\xb7\xbb\x4f\x17\x08\x5a\x18\xda\x7d\xa4\xbc\xd5\xd8\x59\xab\x51\x73\x56\x5f\x34\x63\x15\xe1\x3f\x82\xb9\x6c\xec\x23\x71\x87\x54\x99\x4d\x58\x2a\x0b\x74\xe8\x74\x92\x46\xe9\x22\xa3\x46\x85\xef\xce\xa6\x33\xcf\x30\xac\x83\xe0\x54\x2a\x03\x28\xa2\x69\xfc\x77\xa6\xb7\x76\xb5\xf0\xb4\x94\xb6\x84\x50\xe5\xbc\xaa\x6d\xf9\xce\x69\x85\x34\x7c\x45\xca\xbf\x82\x44\xf0\x34\x44\x05\x88\x25\xd2\x3a\x4a\xa2\x9e\xb9\x3b\xdb\xa7\x37\x11\xd7\x57\x89\x1b\x0c\x35\xc9\xd0\x15\x25\xd5\xaa\xc6\xe1\x93\x16\xa0\x01\x7b\xfb\xe3\xbf\x74\x77\x90\x25\xc5\x9d\x48\x1e\x22\x9a\xc8\x02\x19\xd8\x7b\x73\xd2\x12\xeb\x0b\xbc\xbf\xb8\xb1\xc4\x99\x95\xb9\xfe\x78\x5f\xa3\xb1\x60\xf6\x11\xf9\xc1\xfb\xa6\xbe\x73\xde\x42\xca\x53\xf2\x00\x45\x98\x76\x69\x18\xa6\x0f\x23\x6c\x47\x11\x8e\x5c\x7d\x35\x44\x7f\xb5\x19\xcf\x96\x11\xf8\xe8\x3f\x2b\x11\x87\xe1\x48\x37\x9c\xf3\xe8\x08\x74\x4a\xc8\x84\xb2\x8c\x50\xb4\xca\x6b\x96\x83\x4d\xb9\x42\x63\x7f\x1d\x2d\xf1\x15\x31\x9c\xaf\xd5\xda\x78\xec\xc3\xb6\xdf\xed\x6c\x35\x0c\x05\xaa\xf8\xba\xd5\x00\xc7\xb3\x65\x15\xf7\xde\xab\x01\xdb\xb6\x5e\x0d\xe8\xa8\x06\x14\x12\xee\xb4\xe8\x2c\x6b\x46\x0b\xb8\xb1\x64\x6c\x08\xb7\x19\xc3\x44\x48\x58\x8e\xb7\x69\xc4\xc1\xb8\xc8\xf9\x80\xc8\xe0\xf3\x9b\xab\xca\xf7\x25\x5a\xb1\x2e\x36\x3d\x58\x95\xc9\xcc\xbb\x49\x39\x28\x75\x86\x91\x35\x65\x61\x0d\xcb\x78\xb5\x95\x12\xba\x47\xf9\x14\x12\x20\xc7\x79\x1c\xd4\x00\x3f\xe6\x75\x81\xdb\x0f\x41\x27\xd6\x6f\xee\xc3\x8a\x1c\x7e\xbb\x9f\xae\xb0\x1a\xc8\xf5\xc4\x26\x92\xaa\x19\x60\x8a\x2a\x7c\x66\x5a\xd9\x41\x6f\x10\x06\xc7\xcf\xb8\x91\x17\xa6\x92\x26\x40\x0a\x90\x4c\x18\x11\xa3\xe4\x3a\x15\x8f\x9c\x8c\x61\xca\xb8\xf2\x2b\x16\x42\x92\xdf\x12\x18\x49\xc4\x54\x55\x68\x6d\x44\x6e\x5b\xf5\x07\x1c\xe0\x57\x22\x6a\x9e\xe9\xa6\x68\x10\x69\x4a\x50\x78\xc1\x6d\x50\x62\xe9\xe0\x6a\xe3\xf9\xf4\x75\xbd\x79\x86\xba\x6f\x08\x3b\xb3\x27\x25\xc7\x17\x4d\x21\xa3\x0b\x9b\xa8\x3d\x61\x1c\xad\xbf\x52\x9d\x8e\xc2\x43\xb3\x3a\x13\x28\x64\xa3\xcf\x8d\x3b\x83\x29\x22\x81\x26\xb3\x10\xc9\xae\x8f\x01\x7b\xae\xf5\x31\x60\x7d\x0c\x58\x1f\x03\xb6\xda\xfa\x18\xb0\x76\xeb\x63\xc0\x36\x13\x74\xc8\x4e\xbb\x3e\x06\xac\xb7\xca\xac\xb6\x3e\x06\xac\x53\xeb\x63\xc0\x9e\x6d\x07\xc7\xa2\xfb\x18\xb0\x2d\x5a\x1f\x03\xb6\x65\xeb\x63\xc0\xfa\x18\xb0\x3e\x06\xac\x8f\x01\x0b\x68\x7d\x0c\xd8\xee\xaf\xd7\x3b\x7f\xba\xb7\x3e\x06\xac\x8f\x01\xdb\xb1\xf5\x31\x60\x4b\xad\x8f\x01\xeb\x63\xc0\x9e\x6a\x7d\x0c\x58\x1f\x03\xe6\x5a\x6f\x6d\x5c\x69\x7d\x0c\xd8\x9a\xd6\xc7\x80\xed\x36\x4e\xaf\x06\x84\x75\xf6\x22\x6a\x80\xd2\xa2\xb8\x63\xd3\x00\x5c\xc8\x58\xc7\xe0\xae\xa2\xc4\x81\x46\x2a\xf2\x38\x63\xc9\x8c\x28\xfb\xa1\xb7\x63\x29\x07\xd9\xd7\x8c\x08\x6b\xdc\x24\x63\x30\x2a\x82\x79\xad\x22\xe4\x36\xb9\x9a\xa0\x03\xb9\x81\xe4\x66\x4e\x85\x87\x09\x64\xad\xea\x09\x6d\xf1\xd9\xdf\x6e\x8c\x1b\xdd\xa5\x3b\x05\x8d\xf9\x48\x28\xb7\xc5\x4a\xf1\xf5\xb1\xb8\x21\xb9\x11\xa9\xf2\x05\x1b\xb8\xe0\x43\x0b\xd6\x3a\xc2\xea\xce\x42\x8d\x02\xac\xc1\x81\xc8\x6c\x36\x46\xee\x46\x8a\xf1\xde\xd0\xd9\x6e\x30\xfe\x88\x25\x2e\x40\x4f\x4c\x5a\x88\x6b\x96\xc0\x8e\x48\x6b\xed\xc0\x30\x2c\x28\xe2\x21\xb8\x98\x63\xd8\x55\x50\xe0\x3e\xd1\xdc\x76\x8e\x9c\xf2\x28\x95\xea\xac\x10\xf6\xff\xea\xb8\xa9\x46\xc0\x54\x67\x3f\xca\x9e\xe1\xe5\x42\xa2\xa4\xf6\x16\x21\x75\x20\x11\x66\x11\xa2\xa2\x62\xca\x4a\x07\x1a\x0d\x75\x98\x91\x50\x87\x18\x05\xb5\x8f\x08\xa8\xbd\x47\x3f\xc5\x71\xab\x47\x70\xa9\x47\x92\x48\x5f\xc0\x3d\xe5\x02\xe9\xef\x67\x12\xd4\x4c\x64\x9d\x19\x4e\x2c\x66\xf3\x81\x71\x96\x97\xb9\x39\xbb\xca\xf0\x14\x36\xaf\x82\xfd\x95\x67\x19\xee\xba\xb7\x11\x07\xe6\x41\x96\x02\x56\xe6\xa6\x2c\x33\x5b\x0b\xc1\x42\x67\x74\x8e\x42\x69\x99\x24\x00\x69\x88\x58\xda\xb4\x56\xff\x7e\x54\x51\x68\x31\xfa\x99\x22\x6f\xc3\xae\x9a\x30\xbd\xa7\x61\xce\xfb\xfd\xef\x3a\xf5\x31\x95\x45\x9c\x5b\xfa\xdb\xdb\x9b\x8b\xd6\x2d\x8d\x1f\x7c\x87\xc7\xf8\x62\x06\xc9\xc3\xad\x0b\xa5\xd9\xdf\xcd\x1c\x6e\x66\x0a\x32\x31\xc5\x10\x0c\x42\xad\x28\x6d\x1f\xb2\x90\x7a\xc9\x05\x3a\xc5\x55\x04\x39\x67\x09\x8c\x5e\xc1\x50\x11\x4b\xf9\x0f\x3f\x08\x04\xdd\x04\xf8\xe2\x87\x22\x76\xdd\x59\x72\x2a\x0f\x43\xc3\x46\xe5\x28\xc5\xa0\xd1\x8c\x26\xd5\xda\x4c\xd7\x1f\xba\x20\x32\x4e\x14\x40\xa5\xd0\x4c\x99\x9e\x95\xe3\x51\x22\xf2\x33\xc3\x3a\xec\xff\x8d\x33\x31\x3e\xcb\xa9\xd2\x20\x8d\x8e\xe3\xae\xf5\x61\x62\x28\x60\x7c\x3a\xca\xd3\xd3\xd1\xaf\x82\x68\xb8\x72\xb6\x72\x97\x86\xb5\xc1\x48\x30\x06\xc3\xf7\x85\x5c\xb2\x16\x98\x49\x09\xdf\xa4\xc1\xf7\x77\x68\x51\x91\xc0\xb0\xe4\xbd\x84\x24\xf7\x5c\x9b\x44\x70\x08\xc4\x64\x2a\x87\x11\x76\xfc\x62\x21\xc7\x51\xce\x6a\xa4\x50\xe3\x03\x0a\x33\x3e\x18\x5d\xe8\x50\x42\x8b\xa3\x85\x15\xc7\x0a\x29\x8e\x12\x4e\x1c\x23\x94\x38\x5e\x18\x71\x9c\x10\xe2\xf8\xe1\xc3\x2f\x16\x3a\xfc\x45\x84\x0d\x47\xf4\x8f\x45\x0a\x17\x7e\x8d\x50\xe1\xc3\xb5\xc1\x90\x08\xe1\xc1\xaf\x17\x1a\x1c\x65\x1e\xa3\x6a\xb1\x81\x2c\x61\x0f\xa1\xc0\xaf\xe1\xff\x7f\x31\xdf\x7f\x04\xbf\x7f\x4c\x9f\x7f\x34\x7f\xff\x8b\x85\xfc\x86\x87\xfb\x46\xb5\x29\xbc\x4a\x98\x6f\xcc\x10\xdf\xe0\xf5\x65\x9c\x69\x46\xb3\xf7\x90\xd1\xc5\x5d\x58\x20\x68\xac\x95\xb8\x5e\x09\x16\xb5\x66\xeb\x76\x5c\xc3\x8c\x2a\xe2\x5d\xdd\x0e\xe2\xc5\xfb\xd2\x9d\x08\x4c\x28\x7a\x9c\xcd\xfb\x75\xf6\x5a\x93\xc3\xf3\x5c\x93\x83\x31\x8f\x5b\x5c\x95\x03\xd9\x35\xdf\x89\x47\x22\x26\x1a\x38\x39\x61\xdc\xef\x9c\xd3\x86\x95\xa6\x76\x8f\x04\xfb\x3b\x4c\xaf\x6f\xdf\xf8\x41\xbe\x3e\xbf\x07\x7a\x86\x94\x3a\x68\xcf\x97\xa3\xf1\x79\xd7\x97\x7b\x70\x52\x66\x6d\xf7\x97\x75\x89\xc5\xf1\x7d\xbd\xad\xab\xbf\xbf\x45\x7a\x2a\x56\x44\x79\x4a\x1c\x3e\xd7\xd7\xb7\x4f\x82\x43\xdd\xdb\xca\x4d\x15\x9b\xde\x8e\x67\xb1\x37\xb0\x91\x32\x05\xa1\xe6\x29\x14\x40\x7b\xa3\xeb\xc1\x18\x5d\xf7\x14\x81\xfd\xf5\x69\x5b\xaf\x1f\x71\xdd\x6b\x5b\xbf\x14\x6d\xab\x01\x8b\xf7\xad\xa4\x09\xdc\x1c\x92\xf0\xe6\x19\x48\x9d\x08\x58\xcb\x70\x15\xbb\xe0\x00\x36\x71\xac\x06\x3d\x44\x7c\xbf\x49\x99\x65\x0b\x6b\x43\x6c\x21\x60\x76\xdf\x5a\xf7\x33\x58\x81\x0e\x44\x57\xea\x1a\xea\x6a\xdd\xa4\x90\xc2\x49\x24\xb2\xe4\xdc\x88\x18\xee\x38\x19\xe2\x8d\x2e\xa2\x80\x77\x37\xa7\xd3\x16\xb0\xa1\x0b\x42\xc7\x40\xcf\x19\x90\x3a\x7f\xa9\x4d\x88\x19\x75\x22\x64\xc2\xc6\xd9\x82\xcc\x68\x66\x94\x25\x17\xa4\xfd\xc0\xb2\xcc\x75\x13\x10\x14\x0e\xda\xba\x9e\xad\x44\x93\x09\x3e\xc5\xc9\xa0\x96\x10\xf8\x5c\x40\x62\xc6\x4c\x32\xa0\xbc\x2c\x2c\x9d\x46\x3e\x5a\x88\x52\x7a\x3a\x83\xa2\xe2\x1b\xa3\x33\x45\x38\xcb\x06\x7e\xca\xdb\x10\x98\xab\x7b\xbe\x36\x29\x2b\x48\x1d\x7a\xe5\x23\x53\x30\xc0\x3e\x3b\xd3\x64\x69\xf1\x55\xfb\xed\xbe\xb1\x9f\x15\x52\xcc\x59\x5a\xc7\xe8\x9b\x6d\x81\xf1\xf1\x9d\xc7\xfa\x84\xfd\x7a\xd6\xca\x05\x1f\x72\x98\x52\x14\x8f\x1d\x43\xb3\x11\x9d\x76\x7c\x1b\x3f\xc8\x53\x96\x50\x0d\x0a\x73\x12\x5a\xd0\xb6\x73\x46\x3b\x53\x62\xde\xa7\xb1\xa3\xc8\x09\x17\x44\x60\x66\x61\xc9\x99\x5e\xa0\x47\x6f\x56\x6a\x92\x8a\x47\x7e\x1a\x72\x30\x6d\x98\x03\x25\x63\xd0\xb4\x4e\x0e\xf4\x22\x99\x22\xc0\xe9\x38\x33\x67\x0f\x23\xfe\xef\xd7\x6e\x00\x32\x01\xaa\x4b\x09\x64\x4a\x75\x00\x97\x58\x23\xcd\xdb\xf5\x7c\x7a\xdb\x31\xe5\xfc\x75\x13\x52\x72\x05\x81\x82\x6c\x34\x15\xa0\x63\xc6\xab\x39\xd1\xa2\xd4\x07\x72\x8f\x6c\x32\x1d\xd9\xcc\x9d\x86\x92\xc8\x72\x50\x44\x94\x01\x96\xbc\x96\xfa\xe7\x86\x8b\xa9\xe1\xf5\x76\xa7\xb5\xad\xab\xdb\x34\xc6\x0e\xbb\x6e\x48\xe5\x0d\x7c\x02\x1f\x6e\x65\x33\xa8\xdf\x5f\xdf\xfd\xed\x87\xf3\xff\x75\xf9\x43\xb7\x85\xbf\xa4\xc9\xac\x89\x2d\xce\x09\xc5\x8b\x02\x99\xfc\x8c\xce\x81\x50\x52\x72\xf6\xdf\xa5\x0b\x79\x3b\xa9\xc6\xeb\xc8\x56\xa3\xa4\xf7\x04\x09\xbe\xe6\x96\xe8\xc4\x39\x62\xac\xe9\x0f\x4c\x21\x50\x35\x12\xe1\x02\xff\x85\x02\x32\x91\x22\x5f\x52\xb4\xc8\x75\x15\x5c\xb7\x30\x37\x0c\xb5\xaa\xd9\x0c\x64\x37\x89\xfc\xfd\xc7\xcb\x3b\xcc\xc1\x2f\xa4\x05\x76\xc7\xe4\x02\xec\x13\x47\xb7\xa9\x83\x96\x9e\x74\x44\xce\xf9\xc2\x7e\x69\x99\x59\x47\x11\x25\x63\x4a\x03\x0a\xa7\x4e\x91\xf4\xe1\x81\x47\x6f\x46\xf8\xbf\x23\x42\xd3\x54\x1a\x4d\xb3\xca\xd1\x48\x96\xb3\xcc\x3a\x8d\x6c\xf5\x57\x36\xce\x1a\x93\xcb\x41\x63\x1a\x47\xa7\x0e\x3f\x88\xd4\xad\x04\x0a\x81\x18\xbf\x63\xa5\x5b\xa5\x25\xd5\x30\x65\x09\xc9\x41\x4e\x81\x14\x54\x27\x33\x92\xd3\x05\x49\x84\x94\x65\x61\x21\x46\x52\xaa\x69\xb7\x91\xbf\x11\x92\xe4\x9e\x3b\x1b\x6e\x66\x44\xf2\xbb\xf5\x81\xa0\x35\xcb\x6e\xfe\x93\x29\x55\x82\x3a\x7b\xfb\xe6\x5f\x7f\xf7\x87\x8e\xea\x75\xc4\x83\xdb\x35\xf4\x29\x20\xe4\xa9\x1d\xfe\xe5\x37\x18\x06\x5d\xb7\x90\x61\xdc\x0e\xb1\x3b\x1f\xb9\xa1\x62\x7c\x9a\x05\x1b\x40\x82\xcd\x80\xa1\x46\xc0\x61\xfd\x06\x37\x5d\x6d\x81\xe1\x96\xc0\x16\x0d\xdd\x4d\x29\xf1\xac\x60\xb5\x04\xe7\xed\x5e\x8e\x21\x0b\xde\x50\xec\xae\x6e\x3c\x97\x0a\xb1\x1f\xa1\x36\x51\x19\xa6\x2c\xfa\x88\x1d\xd6\xc6\x3b\x0c\xc8\x1b\xf2\xef\xe4\x33\xf9\x77\xb4\x82\xfd\xb1\xfb\x50\x71\x6c\x4c\x31\xc2\xf8\x67\x42\xe9\xab\x9b\x48\x0b\xfd\x17\x73\x5f\x99\x1e\xcd\x7a\x68\x41\xc6\xcc\x99\x23\xe0\xb3\x06\x69\xd4\x40\xb7\x86\xa1\x33\x17\x64\x51\x33\x04\x7e\x29\xbb\x3b\x34\xb8\xe0\x6a\xd2\x8e\xfe\x7f\xa5\xfd\x8d\x03\x7f\x27\x94\xbe\x76\xdc\xba\x09\xa1\xd3\xa4\x23\xc7\x8b\xb8\xc5\xee\x43\x46\xfd\x60\xf6\x5e\x5d\x63\x83\xa4\x02\x13\x20\x6c\x0e\xe7\x8c\x05\x30\x87\xc3\x39\xb1\x61\x71\xa2\xf1\xb6\xee\x53\x5b\x6b\xc9\xa6\x8f\x16\x19\xa7\xa4\x34\xca\xd2\x14\x22\x1d\xa1\x7e\x13\x40\x85\x99\x8d\xb4\x21\x0c\x3c\xa1\x1a\x8d\xac\xbe\x56\x79\x87\xf1\xc0\x19\x8e\x95\x50\xde\x55\x86\xb5\x4d\xc2\x04\xa4\xb4\x79\xc2\xe3\x85\x4f\x37\x0a\xde\x6d\x41\x5c\xae\x90\x42\x8b\x44\x74\x86\x4d\x89\xb9\x55\x6e\x1c\x2d\x38\xf7\xe8\xab\xad\xbc\xe3\x7f\x7e\x7f\x33\x20\xf7\x17\x37\x03\x22\x24\xb9\xbb\x08\x0b\x7e\x6a\x9a\x60\x8e\xee\x2f\x6e\x8e\xf6\xba\x02\x8d\x1c\xa6\xfb\x8b\x9b\x0e\x9d\xac\x86\xcf\xe6\xb4\x18\x3e\xc0\xa2\xa3\x74\x17\x43\xc2\x1c\x56\x1b\x2b\xca\x0b\xd9\x69\xce\x69\xb1\x73\x6f\x12\x68\xca\x0e\x1a\xc9\xc5\x67\x1d\x56\x94\xc6\x83\x74\xc9\xc5\x1c\x52\xab\x35\xfb\x51\x80\xa7\x85\x60\x46\x47\xea\x71\x5e\x9e\x6a\x3d\xce\xcb\xee\xad\xc7\x79\x59\xd7\x7a\x9c\x97\x1d\x5a\x8f\xf3\x62\x5b\x8f\xf3\xd2\x26\xe4\x10\x73\x8c\x7a\x9c\x97\x67\x5b\x8f\xf3\xb2\xb1\xf5\x38\x2f\x3b\xb5\x1e\xe7\x65\xb5\xf5\x38\x2f\x4f\xb4\x1e\xe7\xa5\x6a\x3d\xce\x4b\x8f\xf3\xf2\xe5\x72\xed\x1e\xe7\x65\xb9\xf5\x38\x2f\x3d\xce\x4b\x8f\xf3\xd2\x6c\x3d\xce\xcb\x86\xd6\xe3\xbc\xf4\x38\x2f\x3d\xce\xcb\xd3\xad\xc7\x79\xe9\xdc\x7a\x9c\x97\xdd\x5a\x9f\x79\xb8\x63\xeb\x71\x5e\x7a\x9c\x97\xe5\xd6\xe3\xbc\x3c\xdb\x0e\xc3\x3c\xde\xe3\xbc\xf4\x38\x2f\x4f\xb6\x1e\xe7\xa5\xc7\x79\x79\xb2\xf5\x38\x2f\x1d\xda\xc1\x19\x5d\x7b\x9c\x97\x1e\xe7\xe5\xa9\x31\x7a\x6d\x6b\xb7\xd6\xe3\xbc\xf4\x38\x2f\x2b\xad\xc7\x79\x59\x6d\x3d\xce\x4b\x8f\xf3\xd2\xe3\xbc\xf4\x38\x2f\x55\xeb\x71\x5e\xbe\x76\xbb\x93\x04\xc5\xfe\x01\x37\x22\x63\xc9\x22\x38\xdb\xe7\x16\x94\x28\x65\x62\x6e\x6c\xec\x96\x14\xd8\x6f\x65\x51\x08\x12\xb2\x0f\x0c\x42\xe1\xb6\x31\x71\x4d\x28\x05\xe9\xe6\xe0\x25\xa6\xe0\x20\xe0\x14\xfc\x0b\x5e\x77\x8f\x20\x18\xfa\xf2\xd9\x76\xfa\xba\x19\x4b\x83\xb5\xf6\xe6\x8b\x1c\x42\x3a\x67\x13\xf6\xa8\xda\x45\x5a\x54\xcc\x96\x6d\xdc\x5c\xb4\x28\x32\x16\x92\x18\x4b\xc8\x5d\x89\xd2\x05\x38\x17\xb8\x7a\x47\x92\xa2\x1c\x90\x1c\x72\x21\x03\x12\x23\x22\x68\x70\xad\xad\x72\x08\xeb\x74\x6b\x09\xf2\x93\xaf\x05\xce\xff\xc2\xea\x0b\x35\x4a\x55\xb5\x56\xcc\xb3\xc3\xa0\x58\xb3\xab\xc9\x72\x30\x2a\xd3\x2d\x2b\xd0\xb5\xd0\xb7\xee\x70\xef\x6d\xbd\x22\x47\x2c\xf8\x29\xdc\x1b\x6a\xd5\x85\xc8\x8b\x52\x43\xeb\x62\xb3\x53\x6c\x95\x0e\xa6\x42\x19\xfa\x7e\xb2\x41\x13\xc1\x27\x6c\xea\xb4\xef\xb3\x9c\x72\x3a\x85\x61\x35\xdb\xc3\x1a\xea\xe1\xac\xf3\x45\xbd\xb7\x54\xd0\x24\xa3\xac\x7b\xe0\x60\x2c\x36\x71\x81\x54\x20\x0c\x58\x1d\x50\x8f\xb9\x69\xd5\x34\x0f\xaa\xb0\x71\x66\xf9\xc6\xc8\x7f\x65\x7f\x3c\x08\xd0\x1e\xa9\x46\x5b\x05\x2a\x46\x6b\x76\x6a\xb8\xc2\xc8\x09\xcd\x8a\xd9\xd3\x2a\x63\x48\xca\xe5\xfb\x05\xa7\x39\x4b\xfc\xc1\x3b\xcf\x32\x91\x58\x53\x4d\x5b\xd9\x0c\x7b\x13\x4b\xbd\x79\xa5\x3c\x2f\x35\x1d\x67\x30\x22\x57\x16\xb9\x42\xf0\x6c\x61\x8e\xa5\x02\xed\x23\x17\xdc\x99\x08\x53\x30\x43\xc2\x62\x03\x43\x62\xd7\xca\xea\xb8\xd7\x2c\xd4\x06\x70\xc3\xe1\x04\x07\x02\x5c\xcb\x85\xd9\x96\x37\x22\xbd\x33\x3b\xb3\xf5\x74\x30\x02\x47\x60\x24\x6c\x8c\x28\xd8\xc0\x08\xd8\x38\x71\xab\xe1\x31\xab\x71\xe3\x55\x6b\xcf\x82\x05\x10\x6a\x26\x02\xb5\xb6\x45\x21\xd2\xd1\x1a\x8e\x45\xc4\x24\x90\x02\x33\xe2\x8d\x48\x8d\x2c\x25\xc1\xb2\xad\xea\x8c\x5a\xbb\xe2\x95\x21\xee\x01\x0d\x81\x54\xd7\x42\x16\x9d\x53\x96\x99\x03\x1c\x48\xc0\x2a\x18\x63\x98\xb3\x26\x92\x0b\xc3\xc5\xec\x1f\xd2\x66\x71\xd9\x5e\xad\x84\xb1\x64\x26\x14\x70\xe4\x97\xb4\x4a\xec\xa9\xd2\x0e\x1c\x8b\x49\xed\x15\x1d\x1a\x5c\x7c\x35\x21\x90\x17\x7a\x31\x20\x30\x07\xb9\xd0\x33\x0c\x42\xa8\xe0\x44\x91\xad\x31\x45\x72\x9a\x36\x76\xc7\x80\x08\x6f\x97\x0e\x1c\x1e\xef\x07\xa7\xaa\x95\x99\xb6\x8a\x1b\x53\x55\x76\xc5\xbe\x77\x4d\x6c\x94\x1b\x12\xca\x34\x63\xa2\xd4\x10\x44\x58\xcd\x59\x37\x3c\x5b\x12\xf1\x2c\xfc\x80\x54\x34\x32\x4a\xcc\x96\xc8\xe9\x67\xb4\x5a\xd2\x5c\x94\x5c\x5b\xf8\x1a\xab\x48\x54\xc2\x9f\xcd\xbb\x79\xc5\x30\xba\x17\x15\xf9\x49\x9c\xab\x9d\xa6\x1e\xb1\xe2\x26\x46\xfa\x32\xd5\x1a\x24\x7f\x47\xfe\xf7\xc9\x7f\xfe\xf6\xe7\xe1\xe9\x9f\x4e\x4e\x7e\x7c\x33\xfc\xb7\x9f\x7e\x7b\xf2\x9f\x23\xfc\xc7\x3f\x9f\xfe\xe9\xf4\x67\xff\xc7\x6f\x4f\x4f\x4f\x4e\x7e\xfc\xfe\xc3\xb7\xf7\x37\x97\x3f\xb1\xd3\x9f\x7f\xe4\x65\xfe\x60\xff\xfa\xf9\xe4\x47\xb8\xfc\x69\xcb\x4e\x4e\x4f\xff\xf4\x9b\xee\x4e\xc9\x50\x0f\x7c\x3c\xff\x7b\x24\xef\xfb\x8b\xf8\xde\x1d\x8f\xdd\xfb\xe1\x77\x57\xe0\xca\xf1\x77\x4e\x8b\xa7\x8e\xbf\x0c\x36\xd5\x5c\x4d\xea\xf1\x99\x22\x22\x67\x5a\x43\xea\xee\xde\x06\x24\xce\x92\x99\xc8\x31\x2c\x44\xb3\xa2\x78\x7b\x37\xa0\x59\x6a\xeb\x52\x67\xb2\xaa\xfb\x15\x0d\x63\x9c\xb0\xbc\xc8\x20\x07\xae\x91\xf1\x0c\xbd\xca\x8b\x56\xc6\x51\xfd\x06\x89\xb5\x83\xc0\xe7\x04\x20\x75\x44\xf6\xbc\xb1\xd1\x7a\xde\xd8\xf3\xc6\xe7\x5a\xb0\xa9\x3c\x06\x63\xbc\x6d\x12\xe1\x4c\x5c\xca\x4b\xca\x68\x38\xaf\x90\x13\xc4\x04\xe3\x27\xe6\x2c\x2d\x69\xd6\x04\x98\xf5\x98\xa3\xdd\x38\x40\xc3\xb4\x93\xd3\xc5\x8a\x25\x87\x71\xd6\x44\xb3\x1d\x54\x51\x3f\xf8\xa0\x93\xcb\x6a\x8f\xf3\xd1\x79\xf6\x48\x17\xaa\x23\xe8\xe5\x37\x42\x62\x20\xc9\xd2\xa0\x44\x48\x1f\x5f\xd4\x54\x71\xdb\x16\xfe\x6e\x1e\xc2\x75\x13\xdd\x86\xa8\x70\x4a\xf6\xb1\xaa\x1e\xf4\x7e\x24\x37\x11\x75\x56\x88\xd9\xe7\xdd\x5e\xfc\x0e\xb4\x76\x46\xc0\xa5\x2d\x41\xeb\x39\xad\xdc\xa2\xed\xe9\xb1\xa1\x44\x08\x35\x6b\xbe\x9c\x08\xb3\x26\x58\xa4\x61\x32\x81\xa4\xa3\x16\x6c\x21\x3d\xd6\x8c\x63\xc3\xdb\x35\xe3\x25\xcd\xb2\x85\x9f\x13\x48\x89\xe0\x9d\x06\x82\xcf\x4c\x93\x92\x6b\x96\x99\xcd\x44\x24\x4c\xcb\x8c\x36\x0d\x88\xee\xcd\x7c\xd4\x5d\x3a\x22\x1f\x79\x02\xcd\x87\xbb\x19\xbe\x97\x06\x30\x42\x47\x06\x1a\xd2\x01\x76\xbd\xbc\x03\x31\x6e\xad\xc5\x31\xaa\x65\xe9\x34\xbc\x9f\xcb\x2a\x2e\x69\x64\x0f\x62\x15\x34\x41\x52\x36\x99\x98\x91\x51\x49\xe7\x42\xe6\x74\x95\x2a\xca\xd3\x4e\xa3\x1b\x09\x08\xb3\x55\x9a\xa0\xc1\x58\x28\xe6\x48\xb1\x14\x12\x2a\x8f\x9a\x25\x46\xce\x33\x3d\x13\xe5\x74\x56\xef\x8a\xb0\x29\x27\x4a\x63\xb4\x96\x99\x4c\xe5\x2d\x1e\x4b\x9b\x4d\x19\x59\x87\x27\x60\x45\x32\x01\xf6\xb8\x3f\xd2\x8e\x63\xaf\x44\x14\xd8\x10\x71\xbb\xe6\x3e\x85\x0b\x43\x02\x21\x6d\xe4\xdb\x71\xf8\xac\x23\xbc\xf0\x88\x5c\x59\xfc\x8c\x41\xbb\xd7\xd6\x94\xd8\xc9\x68\x84\xc4\xf9\xe0\xce\x8e\xf1\x80\x4b\x03\xb0\x2a\x63\x0d\x61\x8e\x6d\xe7\x94\x2f\x7c\x82\x08\x86\xac\xd9\xc4\xb6\x2a\x67\x25\xeb\x66\x7b\xaf\xce\xd2\xab\x57\xed\x51\x90\x94\x92\xe9\xc5\x85\xe0\x1a\x3e\x77\xe2\x7d\x31\x6e\xf5\xbb\x36\x19\xad\x7b\xdd\x93\x48\x44\x61\xb1\x25\x97\x0a\x37\xcd\x44\x99\xa5\x88\xb0\x5b\x72\x64\x3b\xdd\x6e\x94\xab\x89\xb9\xc2\xed\x7e\xc3\x1b\x13\xdd\x69\xcb\x84\xf9\x48\x51\x1b\x30\xfb\xdf\x25\x9b\xd3\x0c\xb8\x6e\xfc\xe2\x06\x63\x07\x9b\x3f\x7a\x49\x9f\xab\xa6\xea\xa1\xd6\x30\x60\x58\x88\xb4\x56\x28\xce\xfc\xd4\xe1\x47\xf0\x59\x7f\x81\xfe\x56\x14\x98\x6e\x24\x9b\xb3\x0c\xa6\x70\xa9\x12\x9a\xa1\x1e\xb5\x6f\xe5\xfc\x7c\x03\x5d\xb8\x33\xa5\xc8\x94\x11\xc0\x8c\xb2\x6a\x44\x4d\x1b\x39\x8d\x8e\xbf\x29\x65\x1c\xab\x0e\x05\x38\x87\xdc\xa0\xca\x86\x6e\x1b\x7d\xbb\xa0\xd2\xec\x42\x1f\xa2\x6d\xaf\xc6\xb1\x10\x99\x83\xa9\xcd\x16\x35\x5d\xac\xbb\x17\x05\x79\xb1\xf8\x1b\x87\xc7\xbf\x19\x2a\x14\x99\x64\x74\x5a\x5f\xcd\xa0\x57\xf2\x5d\xc2\xa3\xc6\x37\x4e\x34\x62\xb0\x96\x46\xb0\x31\x52\x45\x1d\x4f\xdf\xe4\xe0\xdd\x15\xba\xb7\xa7\xc8\x4f\xa8\x22\xd5\xd8\xdd\x44\x07\xd3\x7e\x77\x8a\xf7\xc4\xc5\xf9\xcd\xdf\xee\xfe\x7a\xf7\xb7\xf3\xf7\x1f\xae\xae\xbb\x47\xcd\x0a\x0d\xd6\xba\xd2\x90\xee\x93\x2a\xd0\xc3\xac\x42\x15\x2b\x34\x12\x6a\x84\xae\x13\x04\x73\xe1\xa9\x78\x0c\xf4\x2f\x9b\x3d\x05\xb4\x9b\xe4\x4a\x8b\xe2\x5c\xe6\x42\xde\x48\x31\x61\x59\x67\xd7\x64\xac\x13\xbc\x44\x8e\xf7\x34\x9d\xbb\x8f\xeb\xeb\xc6\xe2\x0b\xac\xc6\x39\x34\xae\x0c\x86\x59\xec\xa6\x9b\xee\x96\xad\x56\x0e\x82\xcd\x88\x58\x22\xb1\xfb\x21\xda\xeb\x9e\xd9\x7b\xf6\xa6\x21\xa3\xe3\xcf\x63\x78\xe2\x33\x91\xd0\x0c\xeb\x17\x85\x6d\x7c\x12\xd9\xc9\xba\x4c\x57\x23\xdb\x84\xfa\xed\x4c\x32\x41\x53\x54\x56\x1d\xf3\x4f\xc1\xa3\x6a\x7b\xb1\x0b\x1d\xe7\x41\x84\xdc\xdb\x48\x7f\x1c\xcf\xa7\xc7\x14\x12\x2a\xa9\x66\x69\x78\x41\xba\x57\x1b\xf4\xed\x43\x3b\x0c\xc1\xbd\x65\x2b\x91\x33\xf4\xcc\x55\xc3\xb8\x03\xc6\x26\x68\x01\x41\x33\x10\x9b\xe0\xa6\x44\x03\xd0\x0f\x7e\x19\x02\x0a\x9f\x44\x8a\x04\xc0\x4e\x0e\x64\x77\xda\xf9\xa9\x76\xa4\x0d\x53\x7e\x60\x66\x06\x27\x35\x93\xf6\xdb\xc6\xcb\x20\x36\x56\x39\x70\x3f\x7e\xc2\x12\x5b\x9e\xff\x53\x19\x8c\x0b\x56\x2d\x31\x19\x36\x8e\x56\x21\x61\xb8\x7a\xbc\x42\x03\x17\x6e\x4b\xae\x59\x0e\x1e\xfb\x62\xb8\x24\x13\x49\xfb\xf5\xb1\xaa\x90\x66\xa3\x6c\x74\x42\xfe\xcc\xf1\xbc\x72\x48\xc9\x90\x70\x51\x2f\x11\xf0\x89\x90\x09\x3a\x69\xf6\xba\xc1\x13\x5a\xd0\x31\xcb\x58\x08\x33\x8f\xb5\xc1\xb1\x70\x43\x83\x1e\x34\x27\xa5\xe9\x59\x2a\x45\x61\x6f\x62\x9f\x94\x1a\x1e\x18\xd8\x4e\x7e\x6a\x62\x0c\xa3\xc0\x3e\x69\x13\x32\x95\x94\xeb\xda\x90\xbb\xb2\x71\x7e\x89\x32\x48\x0c\x21\x80\xa6\xf1\x4a\xa0\x9c\xa7\x86\x67\x34\x97\x2d\xf8\x5c\x1d\x1a\x9c\xea\x85\x7f\xb9\x46\xf6\x13\xb9\xf9\x78\x77\xf5\xff\x2e\x9d\x9b\xee\xa2\x9d\x6d\x87\x0d\xa6\x68\xf8\x41\xb4\x6d\x73\xeb\x2a\x50\xf5\x1b\xe7\xeb\xde\x38\x95\x81\x68\xef\x48\x50\xb7\x25\x6f\x57\xc1\xaf\x49\x23\x79\x90\xac\x73\x53\x81\x26\xb4\x7b\x6d\xfa\x7a\x24\x10\xf3\x08\xd7\x0c\x3d\x6f\x0d\x6b\xad\x16\xb6\xc8\x52\x94\x7a\xad\xcd\xdb\x75\x42\x33\xf5\xa5\x5e\x91\x21\xa6\x9d\x42\x8a\xe4\x83\x28\x79\x1c\x68\xa9\x80\x1d\x57\x11\x42\x52\xe0\x42\x3b\x6b\x0a\xea\x12\x62\x82\xdf\x12\x1b\x36\xd5\x40\x8d\x6c\xc9\x39\x01\x62\xd6\x7d\x43\xb4\xaa\xfc\xfb\x5e\x0e\xb7\xfa\x4b\xa9\x60\xd9\x7f\xe1\xe4\xaa\x3a\x8a\x6a\x22\xba\x07\x8f\x48\xa0\x29\x2a\x98\x05\xd5\x33\x0b\x67\x96\x53\xf5\x00\xa9\xfd\x20\x10\xca\xa1\xca\xc1\x41\x17\xbf\x9f\xe9\x7b\x33\xb9\x3e\x6d\x06\x0d\xc2\x16\xd4\x0d\x13\x75\x42\x54\xb1\xbd\x9e\x86\x00\xc6\x6e\x16\xe1\x23\xcf\x16\xb7\x42\xe8\x6f\xaa\x6a\x6d\xfb\x3e\x19\x7f\x71\xee\x88\xb6\x11\x13\xed\xd2\x14\x49\x1e\xe2\xc6\x41\xbe\xd8\xa8\x31\x17\xca\x16\xcd\x82\xfc\x52\xb9\xa2\x2c\xf9\xb9\xfa\x56\x8a\xb2\xb3\x0c\x17\x53\xdf\xfc\xf6\xea\x3d\x5e\x7c\xa5\x43\xfb\xe1\x5a\x2e\xb0\xf8\xa8\xb7\x78\x45\x74\xda\xfc\xd9\xe1\x2a\x35\x39\x5b\x30\x84\x0a\x21\x1f\xe8\x82\xd0\x4c\x89\xca\xa4\xc6\xd7\xb9\x5b\xbd\x2f\xd7\x7c\x3d\x16\x7a\xb6\xe2\xc4\xed\x1a\x05\x62\xda\xea\x78\x83\x06\x68\x50\x9d\x9f\xcd\xf8\xca\xb0\x1a\x13\x8b\x0a\x09\x09\xa4\xc0\x93\x2f\xf5\x44\xec\x1b\xc3\x06\x4f\xd5\xb5\xe0\x86\xbd\xee\xfb\x5c\x5d\x55\xf6\x49\xb7\x1a\xcd\x53\x84\xa6\x6c\xe7\x44\xa4\x18\xa6\x87\xcc\xb5\x54\x21\x59\x5f\x57\x13\xf4\x7a\xda\x4d\xf7\x7d\x39\x86\xcc\x2c\x36\xcb\x32\xb3\x03\x59\x4a\xb5\x0d\x4d\x60\x39\x9d\x02\xa1\xba\x3a\x84\x5a\x10\xe0\xaa\x94\x6e\xdf\x74\x0c\xd0\x31\xad\x8a\x2d\x72\xaf\xf6\xe7\xab\xf7\xe4\x0d\x39\x31\xef\x76\x8a\x12\xc7\x84\xb2\x0c\x21\xa4\x30\xf8\x6f\xc9\x25\x3b\xf1\xe1\x49\x41\x53\x80\x7c\x84\x08\x69\xaf\x96\x01\xe1\x82\xa8\x32\x99\xf9\x39\x60\x82\x57\x16\x61\x87\x27\x1c\x94\x0b\xd3\xb3\x9d\x78\xf7\xe1\x9f\x15\xc8\x7d\x1f\x5b\x73\x1d\xfe\xf9\x15\xaf\xc3\xa6\x8a\x68\x8e\x7f\x7b\xc1\xec\x59\xcd\x41\xd3\x94\x6a\xea\xae\x49\xff\x40\xbf\x6b\xfb\xcb\x32\xe0\xb2\x54\xf0\x03\xe3\xe5\x67\x8b\xd8\x79\x10\x6e\x8f\xbb\x4b\xa4\x88\x24\x7e\xa1\x45\xc3\x6f\xe7\x3d\x14\x11\xd2\xa3\xaf\x5a\xc7\x68\xb0\x41\xeb\xc6\x5b\x82\x5a\xf8\x07\x30\x8a\x10\xe5\xa9\xc8\x57\x88\x9c\x08\x49\x80\x26\xb3\xce\xd4\x34\xa2\x46\xfa\x83\xe9\xda\x2f\xdb\x21\x94\xc1\x1c\xb2\x68\xb6\xfd\x1f\x4c\x6f\x66\x72\xfc\xce\xc5\xee\x49\x46\xc7\x90\x39\xc0\x16\x8b\xe2\x15\xf1\x84\x45\xb2\x81\x4b\x11\x31\x24\xe6\x56\xd8\x48\x2e\x5a\x4d\x84\xe9\xfe\x8b\x98\x87\xa8\xc1\x17\xf7\x2e\xba\xa4\x9e\x07\xb4\x81\x7e\x09\xf3\x50\x06\x08\x88\x64\x79\x1e\x8c\xb4\xd9\x9e\x07\x94\xbf\x0e\x7d\x1e\x14\x24\x89\xc8\x8b\x03\x89\x94\xbc\xb7\x51\xf8\x86\xa2\x6d\xa3\x22\xdb\x0f\xd3\xa0\x70\x67\x87\xc3\x4c\xb5\xbd\x07\x3d\x18\xf3\xff\xaf\x71\x9d\x23\xb7\x5b\xbe\xe3\xdd\xe8\xc1\x11\x99\xd5\x88\xae\xc3\x5f\xe2\x8d\xd7\x87\x61\xb6\xda\xab\x87\x61\x36\xb0\xdc\x28\x9a\xe7\x5b\x21\x91\x5f\x43\x30\xa6\x51\x02\x70\x5e\x81\x63\x42\x59\x41\xf5\x6c\x40\x24\x64\x16\x21\xdd\xb1\xe7\x07\x6b\xf1\x3a\x46\x8e\xe3\x09\xf2\xec\xa6\x8e\x59\xb5\x60\x6e\x51\x63\x37\xd7\xc5\x6b\xda\x67\xae\x3f\xde\x37\x13\x80\x29\x5f\x58\x98\x82\x80\xf4\x56\xdb\x0e\x4f\xac\x78\xc9\x98\xce\xe5\x55\x7c\xe9\x90\xce\xa0\xfe\xd6\x47\x74\xbe\xde\x29\xdd\x2e\xca\x73\x39\xc6\x33\x2a\x09\xcb\x01\x9f\xab\x63\x44\x58\xb9\xe0\x23\xe0\xae\xce\x03\x32\x80\xfc\xc5\x52\xe4\xb5\xec\xc4\x30\x0e\xcd\xf8\x54\x35\x8d\x20\x34\xcb\xa2\xc4\x24\xac\xb3\x82\xf8\x53\x50\xa1\x99\xad\x5a\x03\xda\xd5\x36\x42\x46\x7f\xc6\x82\xf1\x65\x5b\x22\x32\xa3\x51\x7c\xe1\x76\x88\x69\xae\xe8\x85\x34\x33\xa8\x19\xcd\xee\x0a\x48\x0e\xe5\xb6\xf8\xf6\xc3\xdd\x79\x9b\x32\x94\x85\x1d\x76\x23\xe0\xf7\x84\xa6\x39\x53\x0a\x1d\x3e\x30\x9e\x09\xf1\x10\x34\xe4\x89\x4f\xb5\x9d\x32\x3d\x2b\xc7\xa3\x44\xe4\x8d\xac\xdb\xa1\x62\x53\x75\xe6\x38\xca\xd0\x4c\xdc\x29\x61\x3c\xab\x32\x95\xd1\x5a\xc8\xb5\x72\x1e\x84\xe0\x97\x27\x49\xf5\xf6\xb8\xf5\x30\x3f\xa5\x0a\xcd\x5e\x9d\x1e\x04\xd8\xc4\xcd\xbb\x77\xa9\x63\x75\x57\x85\xe1\xe0\x2f\xed\xac\x0d\xef\xde\x04\x8b\x74\x5e\x9c\xb5\xf3\x68\x95\xd7\xbd\x4f\x92\x13\xfa\x13\x50\x41\x11\xb0\x31\xcf\xdc\x77\x35\x49\x24\x05\x0b\x22\x02\x88\xe7\x45\x37\xe6\xdc\xa3\x7b\xfb\x18\x6b\x09\xba\x9f\x1e\xc7\xc2\x37\x3d\xcf\x32\xb3\x90\xd4\x01\xca\x34\xa2\x3b\x51\x35\xa9\x30\x5c\x94\x59\x71\x0b\xdf\x62\x94\x85\xe6\x5b\x84\xd7\xdc\x3f\x61\xda\xa3\xe7\x78\xf8\x1e\x2d\xec\xd8\x94\xe4\xec\xb3\xa1\xb0\x39\x62\x1b\x6f\x04\x1d\xff\xeb\xbf\x0e\x28\xad\x44\x30\xf8\xa0\x82\xed\x1a\x98\x15\x6a\x0e\xe2\x93\xa3\xb5\xb9\xb6\xcc\x17\xd7\xa0\x8d\xa2\x66\xe7\xad\xe9\x7d\x30\x8a\x95\x2c\x23\x1c\x86\x10\xcf\x30\x69\x7a\x87\xa3\x72\x8a\xc0\xf3\x80\x9e\x62\x47\x93\x91\x41\xbc\xf0\xf6\x5a\x9e\x63\xb2\x26\x7d\xe7\xd5\x3c\xc8\x64\x7b\x2f\xf2\x0b\xfa\xaa\xc8\xa1\xf8\xab\x42\xa1\x56\x1a\xb0\x31\x7b\xc3\x59\x69\x42\xd7\xb0\xd5\xe0\xa5\x1b\x91\xae\x20\xda\xf8\xa2\xf3\xdd\x4b\x8c\x98\xcd\x51\xab\x20\x5c\x38\xf3\x48\xa3\xee\x3b\x7c\x86\xa4\xd4\x90\x3a\x60\x2b\x67\x52\xb6\xa0\x38\x6d\x6a\x3a\x53\xe0\x93\xf4\x5d\xc5\x49\x35\xa8\xd1\xc0\x9d\xae\x53\x41\x73\x0d\xc8\x7f\x21\x97\x74\x38\x96\x75\xa9\xfa\x9b\xea\xe7\x5d\xa7\x02\xe3\xa8\x13\xca\xbd\x6e\x85\x15\xcf\xad\x85\xdb\x01\x58\x39\x1c\x8f\x31\x90\x82\x4a\x9a\x9b\x3b\x58\x11\xb7\x3c\x63\x98\x32\x9b\x16\xd8\xb8\x14\x2b\x04\xac\x6e\x88\x6e\xa8\xd8\x30\x4d\x72\x36\x9d\xd9\xd3\x42\x28\x96\x86\x24\x3e\x6e\x2c\x13\x34\x25\xc8\x58\x84\x24\x8f\x54\xe6\x46\x16\xa0\xc9\x0c\x83\xd0\x28\x27\x69\x69\xce\x03\x41\xbc\xa6\xc5\x50\x69\xaa\x8d\x8e\x09\x32\xc0\x06\xe7\xa7\x69\x0f\xc5\x4b\x5e\xba\x30\xdb\x9e\xf1\x74\xcc\x49\x8b\x62\x05\xb9\xfc\x0c\xc9\x52\xe9\xef\x3c\x47\x88\x3f\xe1\x8f\xb3\x47\x2a\x0b\x16\x06\x0f\x44\x55\x76\x6f\x78\x28\xb2\xc9\x85\x9b\x70\xe6\xb5\x4f\xfb\xa7\xd1\x47\xdb\x8b\xa0\xbc\x13\xab\x81\xdb\x6b\xfe\x34\x5b\xdd\x9c\x5c\x8b\x11\x24\x64\x55\x47\x2e\x88\x2c\x4f\x07\x56\xa6\x12\x42\x93\x93\xe3\xb3\xe3\xd3\x95\xbd\x70\xac\x9a\x69\x06\x36\x23\xba\x7e\x21\xc5\xf2\x22\x5b\xe0\x3b\x1c\xdb\x62\x54\x01\x45\x5e\x4d\xf3\x01\xab\x55\x05\x06\x35\x83\x2c\x1b\x10\x65\xc4\x5f\xea\xc1\x6f\xed\xa7\xe6\x21\x2d\xcb\xc4\x9a\xc9\x4e\x8e\x7f\x3e\x1e\x10\xd0\xc9\x29\x79\x14\xfc\x58\x5b\x87\x07\xb9\x47\x1d\x32\x88\xa6\x8a\x88\x85\x28\xb1\x5e\xb2\x5d\xb6\x0a\x2f\x39\xa1\x46\xfd\x29\xad\x8c\x6e\x41\x37\x20\x0b\xa8\xff\x6b\xda\xe5\x67\xa6\x8d\x28\xa2\x4b\x34\x53\xbc\xb1\x9a\x02\x18\xf6\x6a\x2e\x3c\x73\xd3\x9d\xcd\x80\x66\x7a\xb6\xa8\xb4\x17\x5b\x8a\x56\x91\x92\xbb\x6f\xc2\x65\xa8\x03\x48\x1b\x3d\xdc\x04\x4e\x57\x11\xfb\x7e\x26\x41\xcd\x44\xb6\xf7\x34\x4e\x5f\x26\x35\x11\x5c\x19\x9e\x62\x54\x6c\x47\xa3\xaa\x32\xe8\x5c\xa9\x56\xe1\x00\x4f\xcd\x29\x93\x90\x3a\x61\xc9\xa1\x27\xce\xe8\x1c\x25\x05\x23\xcf\x41\x1a\xa2\x9a\x34\x75\xa2\xdf\xc7\x2c\xe4\xba\xff\x9a\xa9\xa6\x4d\x65\x11\xe7\x96\xfe\xf6\xf6\xe6\xa2\x75\x4b\xe3\x07\xdf\xe1\x31\xbe\x98\x41\xf2\x70\x1b\x56\x50\xe4\x40\x42\x0b\x0a\x21\xf7\x29\x18\x98\xe1\xa3\x49\x05\x37\x42\x6a\xc2\xab\xd2\xc8\xe6\x6c\x4d\x71\x15\x41\xce\x59\x02\x23\x5f\x36\xd9\x3b\xe7\x7d\x01\x1c\xca\xa7\x40\xde\x9a\x03\xf1\xc7\x3f\xfc\xe1\xf7\x7f\x08\xe7\xd1\xe1\x48\xe6\xe1\x07\x81\x60\x30\x14\xbe\xf8\xa1\x88\x5d\x77\x96\x9c\x75\xc6\x66\x47\x29\x2a\x75\x19\x4d\xaa\xb5\x99\xae\x3f\x74\x61\x56\x49\x05\x40\xd6\xb8\x2b\x0c\xeb\xb0\xff\x37\xce\xc4\xf8\x2c\xa7\x4a\x83\x34\x3a\x8e\xbb\xd6\x87\x89\xa1\x80\xf1\xe9\x28\x4f\x4f\x03\x2a\xdc\x91\x86\x5a\xbd\x82\x2d\xde\x82\x99\xd9\x80\x13\x6e\x26\x65\xef\x26\x78\xe2\xa9\x7c\x47\x8e\xba\x01\x53\x9b\x25\xf8\x16\xe2\x64\xa2\x7d\x77\x7f\x7f\xf3\x2d\xe8\x26\xc3\xe6\xf8\x21\xf9\xf6\xf2\xbe\xaa\x78\x65\x76\x97\x4d\x6a\xea\xb9\x76\x08\xd7\x9e\x89\xb0\x92\x67\xb1\xfd\x2e\x96\x95\x20\xcc\x36\xe7\x90\x98\x85\x1e\xb4\x8a\xab\xf8\x38\xc4\xab\x9b\x11\xf9\xab\x28\x51\xe4\xa2\xe3\x6c\x41\x1e\xa9\x45\x34\x50\x10\xc6\x53\x8e\x0c\x19\x47\x86\x6b\x99\x5d\xfd\x1d\xd0\xd4\x96\x4b\x40\xd3\xce\xde\xcf\x6a\x83\xa6\x68\xcb\x76\x51\x2a\x2d\x72\x32\x73\xaf\x6a\xe7\xb0\xae\x29\x67\x65\x23\x7b\x04\xd1\xf7\xa3\x88\x84\xc2\x6a\x4b\xee\x37\x5f\x85\x2e\xb4\xc2\x85\xec\x3c\x37\x2a\x0f\x51\x92\x34\xa7\xca\x09\xfa\x68\xc2\x64\x8e\x47\x75\x36\x89\xd5\x2d\x4a\x01\x4f\x12\xa9\x88\x27\x09\x2f\xe4\xe9\x3b\x09\x77\x42\xc6\x29\x09\x4a\xa2\x94\x05\x25\xd1\xab\x3d\x12\xe7\x6a\x73\x9b\xcb\x06\xe0\x18\x42\x43\x51\x09\x89\x37\x26\x57\xb5\x38\x28\x17\x9c\x25\xd6\x9d\x41\xca\x42\x70\x22\x4a\x5d\x94\x1a\x4d\x41\x09\x55\x30\x9c\x53\xc9\x0c\x43\xb5\x35\x95\xab\x48\x28\x6e\x4e\xbb\x16\x02\xed\x24\x95\xd3\xd9\x52\x1c\x4e\x66\x24\x69\xc6\x34\xdc\x6c\x91\x57\x78\x65\x71\xc2\x77\x34\x39\x68\x1b\x0c\xb1\x65\xac\x66\xf1\xd4\x3a\xaa\x67\x18\xd9\x87\xbe\x2c\x1f\x18\x8a\x8c\xd3\xa8\x0d\x07\x90\x78\x13\x55\x8b\x0d\x64\x09\xe8\x6f\x17\x72\x49\x0f\x36\x14\xae\xce\x61\xa4\x58\x93\x97\x57\xab\x9b\x25\x90\xc7\x60\x64\xfb\xab\xf3\xeb\xf3\xbf\xdd\x7d\xba\xf8\xdb\xf5\xf9\x87\xcb\x90\xae\x83\xcb\x97\xc5\x2c\x60\x16\xad\x84\xd9\x0b\x15\x78\x34\x4d\x25\x33\x38\x9c\x30\x93\x3b\xa4\xa6\x09\x4a\xe6\x74\x80\x46\x69\x9d\x30\x94\x3a\xb2\x64\x34\x35\x8c\x67\xaf\x1c\xc7\x45\x15\xbc\x87\x8c\x2e\xee\x20\x11\x3c\xdd\x7b\x74\xf6\x75\xc5\x6c\x94\x25\xa8\xaa\x28\x04\x4b\x88\x59\xbe\x86\x97\xab\x83\xe4\xe3\x03\x9a\x21\x0d\xf6\xfd\x3a\x7b\xad\xc9\xe1\x79\xae\xc9\xc1\x98\xc7\x0b\x90\x0c\x23\x82\x0e\x61\xd7\x7c\x27\x1e\x5d\x71\xb0\x13\xc6\xfd\xce\x39\x6d\x58\x69\x6a\xf7\x48\x38\x9a\x9a\x16\xe4\xed\x1b\x3f\xc8\xd7\xe7\xf7\x70\x91\x3e\x07\xed\xf9\x72\x34\x3e\xef\xfa\xaa\xc3\x96\xda\xee\xaf\x90\xf8\x21\xb2\xc4\xc6\xdf\x8e\xaa\x3c\xb5\xb7\x48\x4f\xc5\x8a\x28\x4f\x7d\xc8\xd9\xd7\xb7\x4f\x74\x52\xdc\x89\xe4\x21\x92\xd9\xf5\xfe\xe2\xc6\xf6\xb6\x14\xcf\x62\x6f\x60\x23\x65\x0a\x42\xcd\x53\x28\x80\xf6\x46\xd7\x83\x31\xba\x1e\xdb\xb4\x2e\x9a\xbd\xdb\xd9\x80\x7a\xdc\x6b\x5b\x75\xf3\x82\x8f\x6c\x57\x40\xe9\xb5\xad\x0d\xad\xd7\xb6\x76\x68\xbe\x12\x2d\x13\xfc\x5b\x49\x13\xb8\x39\x24\xe1\xcd\x33\x10\x92\xba\xfa\xec\xa4\x96\xe1\x2a\x76\xc1\x01\x52\xcb\x3f\x7c\x51\x5d\x32\x35\x6f\x62\xc3\xa3\xd1\x86\x58\x07\x16\x97\x32\x40\xcc\xbb\x9f\xb9\xae\x9d\x88\xeb\x9d\xcc\xeb\xa8\xab\x75\x93\xa2\x02\x43\xf7\x55\x43\xdc\x71\x32\xc4\x1b\x5d\x44\x01\xef\x6e\x4e\xa7\xcd\x15\x24\x8a\x4d\xcd\x74\xf9\x5a\xce\x16\x44\xcb\x97\xde\xab\x09\x31\xa3\x4e\x84\x4c\xd8\x38\x5b\x90\x19\xcd\x8c\xb2\x84\x25\x81\x29\x79\xc0\x52\xb6\xd8\x4d\xf7\x89\xba\x03\x97\xab\x69\x25\x9a\x4c\xf0\x29\x4e\x06\x75\x39\x19\x9f\x0b\x48\xcc\x98\x49\x06\x94\x97\x85\xa5\xd3\xc8\x47\x0b\x51\x46\x48\xcb\xf0\x8e\xef\x4a\x9e\xe2\xcc\xc1\x8f\xd8\xc2\x6d\x4f\xee\xf9\x76\x72\x2d\xf9\xa8\x67\x20\x1f\x99\x82\x41\xf7\xd2\xb5\xc4\x9b\x7d\x97\xca\xc8\xd9\xcf\x2a\x08\x15\x97\x39\x68\xb6\x05\xa6\xb2\x76\x1e\xeb\x13\xf6\xeb\x59\x2b\x17\x7c\xc8\x61\x6a\x81\x1a\x1c\x43\xb3\x11\x9d\x76\x7c\x1b\x3f\x58\x65\x1b\x28\x2d\x8a\x56\xdd\xde\x39\xa3\x9d\x29\x41\x50\x88\x7a\x47\x91\x13\x2e\x88\x28\xcc\xd5\x55\x72\xa6\x17\xe8\xd1\xf3\x25\xa3\x03\xf2\xad\xee\x5d\x98\x03\x25\x63\xd0\xd4\xd9\xc0\xcd\x21\xa8\x30\xd1\x11\xee\xdc\x9c\x3d\x4c\x12\xb8\x5f\xbb\x01\x2a\x98\xf4\x29\xd5\x01\x5c\x62\x8d\x34\x6f\xd7\xf3\xe9\x6d\xc7\x94\xf3\xd7\x05\xe2\x30\x1f\x06\xb2\xa1\x39\xd1\xa2\xd4\x07\x72\x8f\x6c\x32\x1d\x59\x88\x8b\x86\x92\xc8\x72\x50\x44\x94\x91\xea\x4d\xbc\x75\xc3\xc5\xd4\xf0\x7a\xbb\xd3\xda\xa6\x74\xca\x3a\x55\x1d\x8e\xb1\xc5\x36\x80\xf7\xbb\x3c\xdc\x06\x7e\xe5\xb8\x9c\x4c\x40\xe2\x4d\x87\x04\xaf\x84\xdd\x57\x75\xbc\xfc\x1d\xd6\xcd\x78\xeb\x02\xbe\x40\x0f\xb0\x76\x80\x03\x93\xd8\x30\xa4\x03\xd9\xc4\x32\xbd\x12\x14\x62\xc1\x73\x72\xf9\xf1\x9b\x6e\x5b\x34\x46\x65\x81\xb0\x94\x55\x7c\xcf\x8f\xbc\x5b\x4c\x62\xdc\xfd\xb0\x0e\xf5\xc5\x6d\x8b\x24\x13\xca\xa5\x47\xe3\xba\x24\x33\xca\x39\x78\x63\x14\xd3\x68\xc9\x1e\x03\x70\x22\x0a\xb0\x41\x79\x9d\x88\xa1\x44\x31\x3e\xcd\x80\x50\xad\x69\x32\x1b\x19\xea\xb8\xdf\x0b\x75\x1e\xb2\xfb\x44\x69\x09\x34\xb7\x7b\x42\x42\x4e\x99\x1d\x9e\xd0\x44\x0a\xa5\x48\x5e\x66\x9a\x15\x55\x67\xdd\xac\x88\x80\x88\x10\xca\xa6\xa5\xfa\xb5\xc2\xb4\x92\x3a\xe1\x79\x50\x53\xe8\x5e\x5f\x34\x8b\x15\xa1\xe9\x6c\x60\xbe\x85\xbc\xd0\x8b\x2a\x31\xb1\x9b\x0e\x34\x61\x52\x69\x92\x64\x0c\xb8\x76\x6f\x66\x21\x07\x91\x86\x81\x17\xa7\xb9\x9b\x11\xe5\xa6\x84\xa7\xa8\x7c\x17\x5a\xd9\xfc\xbb\x8a\x08\xdf\x55\xca\x94\xb3\x75\xa8\x6e\xd9\x7f\xd4\x57\xa6\xb1\x1b\xc7\xcf\x08\x6e\x1d\x2f\xe0\x58\x8a\xdc\x47\x0d\x12\x1a\x75\xb6\xeb\xdc\xc9\x30\xbe\x82\xe5\x63\xfc\xb9\x1e\xb4\x30\x07\x6a\xdd\x02\x53\x61\x56\xb8\x0e\x6e\x28\x0e\x73\x73\x0e\x20\x01\x23\x8a\xd2\x88\x4c\xe6\xd5\x79\x4c\x43\x96\xfb\x00\x4a\xd1\x29\xdc\x74\x0c\x47\x88\xc1\x70\x6a\x43\x1b\xc6\x31\xd4\xdb\x66\x06\x16\xe8\x4a\x8b\xc6\x27\xcd\x24\xaf\xa6\xf2\x98\xdb\x17\xe9\x44\x81\x57\x9a\x1e\x25\xd3\x1a\x70\x97\x62\x25\x27\x0c\x40\x5b\x06\xef\x6c\x27\x97\x75\x1a\xcf\x4d\x7a\x73\x3c\x23\x7e\xf0\xd4\xa6\x69\x8d\x81\x8c\x25\x83\x09\x99\x30\xcc\x1b\xc3\x8c\xaa\x81\xad\x42\x40\x31\x6e\x97\x2a\x05\x12\x5f\xdb\x99\x05\xfc\xeb\x77\xa3\xe7\x2f\xee\xfd\xb5\x2c\x79\x42\x1b\x25\x3a\x11\x5b\x8c\x4d\xc8\x14\xb3\xb8\x9c\x12\xfc\x2f\x6f\xfe\xed\x8f\x64\xbc\x30\xf2\x1a\x2a\x62\x5a\x68\x9a\x79\x02\x48\x06\x7c\x6a\x56\x11\x59\x6e\x37\xbe\xd1\xc2\xa7\xaa\x16\x27\x63\x39\xd3\x76\x82\xde\xfe\xee\x61\x1c\x74\xf4\x90\x3f\x9e\xa5\x30\x3f\x6b\x6c\xa1\x61\x26\xa6\xdd\x7a\xbd\x88\x91\x4d\x1c\x64\x67\x5b\x73\xa2\x45\xc6\x92\xc5\xbe\xce\xb4\x2f\x5e\x42\x66\xe2\xd1\x1a\x73\x56\x8f\x6a\x03\xea\xa5\x10\x45\x99\xe1\xc4\x91\x6f\x2a\x7c\xbe\x52\xc1\x32\xf4\x51\xa8\x91\xb0\xc1\xed\xd0\x89\xea\x86\x5d\xba\x73\x5c\x0a\xa3\x27\x53\x38\xe0\x09\xe7\x73\xab\xea\x90\x74\xb6\xc6\x7d\x43\xb3\x6c\x4c\x93\x87\x7b\xf1\x83\x98\xaa\x8f\xfc\x52\x4a\x21\xdb\xef\x9c\x51\x73\xa7\xcf\x4a\xfe\x80\x55\x74\x6b\x30\x5a\x31\x75\x31\x85\x1e\x3f\xa0\xf1\x76\x9d\x88\xf1\x6f\x69\xe1\x41\xbd\x48\xe2\x6d\x70\xf5\xc8\xf0\x99\xd5\x86\x36\x4e\xc0\xd0\xdc\x35\x01\x1f\x5a\xef\xa1\x9a\x47\xfb\x77\x6f\xfe\xe5\x5f\x2d\x73\x21\x42\x92\x7f\x7d\x83\x29\xc7\x6a\x60\x2f\x00\xbc\x81\x8d\xa8\x95\xd3\x2c\xeb\xea\x25\x68\xb2\x80\x6f\x3a\x17\xa7\x3e\x80\x23\xaf\xf7\x76\xba\xb7\x56\x19\xef\xef\xff\x8a\xfa\x22\xd3\x0a\xb2\xc9\xc0\xa2\xbd\x54\x66\xad\x63\x94\xae\x8e\xdd\x95\xd7\x1d\x29\x68\xff\x4a\xdb\x5c\x64\x65\x0e\xef\x61\xce\x92\x6e\x0e\xcc\xd6\xaa\xb4\x7a\xf3\x66\xfa\x8c\x29\x04\x01\x1a\x67\x22\x79\x20\xa9\xfb\xb2\x11\x2a\xbf\x5c\x55\xbb\xfb\x2c\x74\x4d\x1a\x08\x48\x16\xd8\xf8\xfe\xad\x34\x81\x9c\x16\x45\x85\x50\x22\xe9\x63\x6b\x32\x90\x35\x21\x3a\x6a\xa0\x1b\x31\xd8\x99\x1e\xea\x4a\x1f\xba\x37\x32\xd7\x54\xe7\x2e\x3a\xe7\x16\x84\x7b\xe2\x6b\xea\xbb\xfb\x31\x5b\x1b\xa2\xee\xd0\x9f\x86\x02\xff\x6d\xf1\x16\x56\x90\xb1\x2a\xc8\xa1\x6a\x63\x58\x09\xd2\x6c\x1f\xbc\x65\xba\x9b\x2f\x23\x38\x43\xc3\x72\x24\x5a\xf3\xc2\x2b\x27\x74\x4e\xb5\xd3\x8f\xbc\x97\x9d\x92\x02\xa4\x62\xca\x88\x4e\x9f\xf0\x40\x5d\x64\x94\xe5\x0d\xf7\xdd\xbe\x26\x61\x35\xa2\x3e\xa7\xc5\xf0\x01\x16\x1d\x37\x5c\xe0\x71\xd9\x14\xe0\x9f\xd3\xa2\xe3\x3d\x80\xa5\x6b\xc3\xaf\x81\x8e\x97\xf3\x8d\x48\x1d\x1d\x78\x3d\xd8\x92\xc4\x2f\xa2\xc6\x46\x94\x81\xf6\x7d\xe5\x7c\xaa\x17\xae\x7d\xe3\x98\x4f\xaa\x2b\xc7\x3e\xf5\x35\x5d\x34\xf8\x7e\x5f\xea\x3d\x53\x11\x1f\x89\x9d\x06\x45\x3a\xe1\xed\xe4\x76\x46\xfb\x3a\x6a\x19\xb4\xec\xc9\x6c\xa8\xbe\xce\xd0\x34\xb2\x45\x01\x02\x08\x30\x47\xd1\x0d\x4a\x8e\xdf\x1d\xef\xf5\x8e\xb3\x2b\x23\x45\x41\xa7\xa8\x99\x1e\xc2\x02\x2d\xd3\xd4\xc4\xa0\x9d\x89\x47\xfb\xbd\x8d\x2e\x29\xdc\x53\x90\xd6\x40\xe6\x33\x11\xb4\x3a\x36\x72\xd0\xef\x08\xa7\x5d\x5b\xac\xc2\x47\xba\x20\x54\x8a\x92\x07\xa5\x41\xa3\x63\xa4\x72\x9c\x7d\x58\x7a\xd9\x6b\xc1\xc1\x3b\xe9\x43\x46\xb9\xaf\x31\xcc\x99\xb2\xf1\x0a\x8c\x93\xb7\xa3\xb7\x6f\x82\x69\xbf\x85\xa4\x94\x8a\xcd\xe1\xd6\xd5\x38\x6f\x38\x55\xae\x26\x37\x42\x29\x36\xce\x30\x71\x4b\x0b\x72\x69\x0b\xc0\xaf\xbe\x68\x15\x38\x82\x6f\x2c\x64\x13\xad\x34\x80\xc2\x13\x7b\x82\x9b\x01\x9f\x66\x80\x80\xa8\x8f\xc3\x92\x24\x71\x5d\x97\x24\xc9\xeb\x4a\x92\xb4\xf7\xde\x5e\xdf\xd5\x17\xbe\x3f\x04\x4e\xf2\xc1\xf9\x06\xea\xca\xf6\xcc\x57\x4e\xc6\x8f\x1e\x25\xd3\xee\x70\x3f\x32\x05\xe4\x04\xad\x12\x4b\x9b\x31\x08\xa0\xb9\x69\xc3\x0a\xac\x80\x1f\x03\x60\x59\x2e\x1f\xdd\x43\x58\xa5\x55\x7e\x52\x47\xe0\x3f\x3a\x03\x56\xbd\x82\x8e\xfb\xd7\xf7\xf2\x8c\xf2\x34\x0b\xe2\x19\xd5\xac\x64\x8b\x20\x2c\x9c\xab\x09\x69\xb2\x44\xe7\xbf\x6c\x54\x93\x98\x51\x45\xb8\x20\x39\x50\x0c\xd0\x34\xb7\x8b\xe7\x82\x2d\xac\xe6\x78\x34\xd8\xcd\x6e\xaf\xb1\xe6\x85\xe0\xd8\xf5\x7b\xa6\x1c\x7b\x36\x7c\xc4\x69\x20\x36\xac\x23\xa7\x69\x48\x6a\x77\x63\x4e\xeb\xc5\x1b\xd5\x41\x93\xcb\x94\xd4\x17\xc7\x12\x2d\x2f\x41\xc7\xc0\x95\x20\x37\xc3\x97\x18\x27\xb8\xc6\x2c\x57\x07\xc9\x04\x79\xb3\x6d\x5b\x7e\xdd\xea\x5a\x5c\x79\xd7\xf5\x14\x57\x04\x07\xd0\xf0\xfc\xab\x0e\x1a\xbc\xd0\xc7\x88\x5a\x97\xba\xab\x81\xe2\x32\x1e\xc3\x90\xbc\xbd\x53\xa2\x32\xf7\x4c\x81\x83\xa4\xce\xaf\xe0\x43\x44\x1d\xf8\x0a\x55\x82\x87\x1e\x88\x67\x36\x9c\xe1\xf7\xcf\x8b\x29\xf6\x67\x01\x84\xa0\x9c\x73\x22\xe4\xd2\x69\x77\x1e\x93\x75\x12\x4b\xcc\xb7\x5e\x82\xe6\xb2\x9b\xbf\x81\xf9\x69\x16\xe5\xbf\x4b\x36\xa7\x19\x58\x0c\x7b\xcf\x1a\xf6\x2a\x4c\xa8\x72\x7c\xa8\x6a\xa3\xd3\x0f\x51\xed\x58\x1f\xf4\xb0\x51\x83\x8c\x24\x4f\x1c\x1d\x91\x13\x3b\xc6\xb1\x05\xd9\xdd\xaf\x90\xeb\xd6\xea\xf2\x73\x11\x50\xb9\x35\xde\x7a\x5d\x7e\x2e\x28\xc6\x69\x14\x07\xb1\x70\xff\x0b\x66\x74\x0e\x88\x69\xcc\x32\x2a\x33\x0c\x4a\xbf\xb3\x53\x46\xc6\xa5\x26\xc0\xe7\x4c\x0a\x9e\x9b\xe3\x87\xe0\x33\x86\x33\x49\x40\x30\xf8\x04\x14\xf9\xcd\xc9\xa7\xf3\x5b\x4c\x5a\x3a\x75\x68\xf9\xee\xfd\x4a\x85\xf8\x00\x4b\xef\xd0\xe8\xee\x10\xf7\x1b\xf1\xef\x6e\xb6\x0b\xca\x27\x7e\x2e\xcc\xbb\xe5\xa5\x2e\x69\x86\xd0\xcf\x49\x56\x9a\xbb\x70\x6f\x3b\x3b\xbe\x0d\x3c\xc4\x92\x17\xd3\x04\xee\x80\xbf\xdf\xb3\x4e\xc7\x35\xc6\x41\xbd\x68\xec\xd7\x15\x18\xf2\xce\x35\x1e\xd6\x80\x50\xae\x08\x3a\xc7\xaa\x02\xa6\x6c\xe6\xe1\xb8\xbb\xb8\x5b\x78\x06\x96\x4e\xb0\xc9\xdf\xbe\x26\xe9\x8a\x85\x11\x6b\xb4\xec\xdd\x86\xdf\xe1\x30\xc4\x3b\x06\x1d\x0c\xd1\x71\x76\x7d\xca\xd5\x05\x2e\xcd\x6e\x14\x87\x6d\xf4\xbb\x4a\x93\x35\x1b\xe1\xfd\xf5\x5d\xb3\xa0\x87\x75\xfe\x89\x9d\x57\xf2\xa6\xee\xa2\xae\x7a\x83\x15\xf1\x2a\x07\x2a\xc8\xa9\x15\xa7\x11\x79\xb6\x92\xaf\xdf\x5f\xdf\xed\x38\x96\xdf\xcd\x56\x18\x1e\x53\x65\x63\xa4\xdf\x5f\xdf\xd9\xb8\xb5\xdd\x68\xef\xec\x48\xe9\xee\x83\x40\x00\x37\xc4\xd6\xea\xc0\xb1\xc3\xb9\xdc\x79\x15\x0f\x62\x16\x1f\x7d\xbe\x96\x1a\x72\x75\x43\x68\x9a\x4a\x0c\x67\xee\x72\x96\x5b\x88\x76\xb4\x28\xaa\xa8\x54\x2c\x12\x43\x15\x34\x5f\xbd\xb1\x07\x50\xf0\xe9\xb8\x7e\xb6\xbd\x2f\x8b\x8c\xd9\xf0\xd3\xe6\x10\x75\x09\x9d\x5c\xcc\xbb\xf0\xa7\x10\x0f\x63\x67\xff\x62\x90\x7c\x10\x15\x73\x4e\x74\x2d\x4f\x1b\x7b\x97\x4a\x50\x22\x9b\xd7\xc5\xf3\x83\x77\xa7\x63\x47\x18\x92\x58\xed\x4e\x5f\x81\xf6\x85\x76\x26\x70\x2d\x19\xac\xee\x4a\x72\x6b\xde\xae\x44\x76\x56\x91\xc0\xe6\x80\x29\x4b\xae\x42\x70\x87\x91\x71\x18\x9f\x77\x4b\xf4\xcc\x66\xdd\x50\x8d\x27\x93\x4a\x2f\x0a\xe0\x9b\x07\xbc\xe2\x5e\x8e\xc8\x12\x32\x7d\xfa\xfe\xfa\xce\xde\xa4\x76\xba\x1c\x9e\xb7\x5a\xbb\x77\x3a\x5f\x72\x64\xff\x65\x92\x42\xdc\x36\xd1\x72\x4a\xab\x92\xa6\x6c\xed\x04\x1f\xab\x40\x88\xd4\x5b\x17\x9a\x10\x96\x08\x1c\x60\x39\x08\x42\x2a\x6d\xc7\x86\xf8\xb4\xd7\x27\x26\x0b\x47\xdb\xcb\xbb\x46\xbd\x2b\x14\x50\x99\xcc\xba\x6c\xec\xd8\x97\x85\xa5\x84\xa4\xc2\x66\x88\x4d\x84\x44\x0f\xfc\x10\x45\x9d\x4c\x88\x87\xb2\x78\x19\xe9\xc6\x0d\x5c\x50\x3d\x7b\xb1\x4b\xa4\x35\x46\x2f\xdf\x74\xdf\xb3\x29\x57\x5d\xf2\x5c\x02\x95\x2f\xd0\x56\xe5\xc2\x91\x6b\xa4\xb6\xdd\x2f\xa3\x96\x19\xec\x22\x2b\x95\x06\xf9\x0d\x93\x4a\x1f\xed\xda\xd3\x27\x9a\x31\x07\x9c\x6c\x43\x58\x8e\x9b\xdd\xfd\x85\xe9\x99\x2b\xd4\x7b\x3c\x68\x7f\x65\xfe\x76\x64\x1c\x13\x21\xc9\xf1\xb5\xe0\xb0\x73\xf0\xd0\x92\x06\x5a\x09\x3e\xd5\x95\xbe\x51\x66\x73\x93\xa8\x20\xb3\xa0\x2a\xf8\x45\xe7\x73\x76\xef\x6a\x27\x1b\x7a\xbc\xa4\xa0\x40\x13\x8a\x45\x27\xb1\xef\x59\x5d\xb0\xd8\x16\x47\xb3\x85\x9e\x85\xd3\x79\x17\x8d\xa5\xdd\x71\xf0\x46\x75\x35\x2d\x36\x2f\x40\x17\xd5\x76\xe7\x73\x86\x88\x21\xe0\xca\xc9\xfc\xc0\xf8\xc3\x8e\x87\x3c\xec\x84\x5c\xae\x8c\xde\x80\x68\xf1\xbe\x77\xc6\x2d\x68\x82\x11\xf5\xe8\x58\x94\xda\x97\xb8\x69\x7a\xe1\x19\xff\x2f\xbb\x2f\x30\x80\x15\x01\x70\x76\x5d\x95\x35\x06\x70\x35\xb0\x61\x2e\xde\xc2\xad\x16\x5c\x53\xac\xb5\xfd\x5e\x24\x0f\x20\x49\x66\x68\xde\x75\xf3\xd5\x79\xac\xad\xaa\xca\x3b\xa7\xb5\x74\x8d\xc8\x80\x62\x06\x39\x48\x9a\x55\x06\xd0\x57\x5d\xf4\x1f\xdc\xed\x5d\x91\xd1\x4c\xe2\xb4\xe5\x11\x5d\xa1\x5c\x91\x8e\xc8\xe5\xba\xa7\x72\xba\xf0\x85\xdf\x19\x47\xdf\xe1\x67\xa6\xf4\xee\x37\x4c\x21\xd2\x26\x46\x6a\xa9\x40\x0e\x2b\xcc\x5c\x42\x5d\xf1\x45\x9f\x4f\x9b\xc2\xb8\x9c\x4e\x19\x9f\x8e\xac\x78\x80\x62\x48\x5d\x20\xb6\xb6\x85\x3d\xce\x60\xd7\x08\x99\x44\x02\xc5\xf8\x61\x54\x56\x6c\xc8\x04\x6b\xf6\x9e\x8b\xd4\x76\x3e\x5e\x58\x0b\xac\xdf\x93\x15\x90\x12\xb9\xe2\x44\x48\x57\x17\x83\xa6\x29\xd9\x39\x4c\x67\xcd\x8a\x60\x5f\xf5\xfc\x5a\xe2\xca\xda\x3f\x7f\xac\xea\x5f\x35\x16\x48\x95\x63\x23\xfb\x96\x72\xd7\x5a\xd7\x5d\x65\x94\x4e\xf2\x49\xa8\x2c\x7a\xce\xeb\xed\x79\xd1\x44\x22\xa0\x44\x43\x5e\x08\x49\xe5\x62\x39\xdd\xc4\xdc\x24\x66\xfb\x9a\x05\x5a\x9a\xdb\x1b\x91\x1a\x21\x61\x67\x32\xd6\x6c\xdb\x39\x33\x6a\xe7\xba\x9d\xbb\xf6\x3c\xe1\xd5\xc6\x05\xf1\x6b\x46\x3a\x50\xa1\x92\x19\xa4\x25\xa2\x4f\x4d\x4b\x2a\x29\xd7\x60\xf8\xa7\x0b\x61\x5d\xb4\x02\x39\x2a\xa4\x86\x0a\xb6\x6d\x81\x79\xa3\x58\xdc\xd9\x7c\x82\x75\xa5\xbb\x84\x9b\x38\xe1\xd8\x74\xd4\x80\x83\xb8\x9f\x01\x31\x92\x64\x06\x1a\x27\x1f\xe6\x2c\xd1\x7e\x90\x09\x2e\xc2\x9a\xad\x9f\xd0\xd2\x42\x3d\xec\x1e\x00\x74\x23\x5c\x1d\xd5\x04\xcc\x9d\xa4\x55\x3d\xb5\x2e\xeb\x91\x75\x8a\x2b\xb9\xf7\x27\x7b\x1d\xc1\xf5\xc1\x7c\xe6\x48\xa2\x51\xa4\x33\xd3\xc4\xb7\x7b\x82\x31\x57\x6b\xbc\x66\x25\x76\x1c\x2a\xc0\x00\xd3\x3d\xe5\xa1\x53\xaa\x42\x88\xad\x87\xca\xe9\xde\x92\x80\xce\xe5\xb4\xcc\x31\x69\xde\xe9\xb6\xc0\xb5\x5c\x14\x82\x75\xf5\xdb\x9b\xa3\x86\x6e\xc6\x63\x45\x2e\x3e\xbc\x6f\x02\xbe\x35\xcb\xf4\x79\x38\xc0\x6e\x83\x7c\x8a\x1b\xa0\x40\xae\x26\x84\x56\x42\x5f\x27\x8a\xea\x8b\xda\xd9\x7c\x9c\xeb\xb7\x22\xd0\x5b\x60\x19\x2f\x8c\x04\x8b\x72\x7a\xa3\xae\x4f\x32\xa3\x7c\x6a\x58\xd5\x7b\x51\x9a\x17\xfb\xcd\x6f\xf0\x25\x24\xa4\x65\xd2\x31\xb8\x14\x01\xa3\x1d\x2a\xd2\x6f\x7c\x98\x97\x2b\x20\x66\x74\x51\x50\x09\x2d\xfc\xd4\x34\x67\xcf\x4a\xb9\xef\x08\x1b\xc1\x88\x1c\xfd\xa6\xf1\xd5\x11\x52\xdc\x89\x9a\x42\x0a\xf3\x2a\x0e\x84\x09\xdf\x3e\x63\x1a\xf9\xc7\x51\x73\x84\x11\xb9\x34\x74\x61\xd4\x74\xb5\xb6\x0d\x5c\x9d\x71\xbd\xb2\x03\x22\x61\x4a\x65\x9a\x41\x47\x00\x11\x31\xa9\x94\x0c\x0b\x54\xe9\x76\x15\x32\x46\xc4\x15\xe0\x42\x8f\xe2\xb8\xbe\xb7\x45\xb4\xd3\x54\x3d\xa8\x33\xab\xce\x0c\x53\xaa\xe9\x90\x16\xd6\x1e\xc4\x04\x3f\xb3\xa6\xee\xa1\x2b\x52\x3e\xa4\xee\xf4\x0e\xab\x9d\x7d\xf6\x6b\x07\xbf\x3a\xa4\xd5\x53\x8c\x0f\xe9\x10\xcb\x76\x77\xb6\xdf\xec\x21\xed\x2e\x7a\xe0\x4c\x50\x39\xa6\x80\xb2\xfb\x31\xd8\xf4\x65\xc5\x95\xed\x52\x8c\xc8\xb5\xd0\xbe\xba\x7e\x5a\x27\x1a\x06\x14\x67\x6f\x32\xee\xcb\xeb\xfb\xdb\xbf\xde\x7c\xbc\xba\xbe\xef\xf9\x77\xcf\xbf\xb1\xf5\xfc\xbb\xe7\xdf\x1d\x06\x3e\x14\xfe\x0d\x7c\xbe\x2f\xde\x5d\xd9\xbb\xd6\x19\x18\x97\xaa\xbd\x06\x26\x8a\x7f\x45\x89\xf6\x97\x7c\xfe\x89\x1a\xd5\xb1\x90\xa0\x50\x41\x31\x1a\xeb\xba\x20\x65\xf7\x00\x5a\x02\xeb\x98\xce\x2f\x36\xd3\x7e\x8f\x79\xf2\x11\xf3\x44\xaf\x1b\x35\x3c\xd6\xad\x5a\x5d\x32\x88\x92\x8b\xbf\x5d\xbd\xbf\xbc\xbe\xbf\xfa\xe6\xea\xf2\x76\xaf\x29\x04\x81\x45\x4b\xe3\x25\x0f\xec\x22\x1f\x05\x0c\x53\x4b\x56\x85\x84\x39\x13\xa5\xca\x16\x55\x75\xfc\xf5\xec\x6a\x15\xb4\x20\x30\x17\x6b\xe1\xbd\x39\xeb\x07\x5c\x92\xed\xd6\xc9\x69\x01\xc3\xef\x59\xc2\x73\x44\xc4\x90\xf3\x02\xc6\x5f\x23\x21\x6e\x2f\xed\x05\x8c\xdb\x49\x4e\xdc\x24\xf3\x05\xd0\xd1\x96\x16\x03\x3a\x6a\x27\xab\xec\x9f\x93\x7d\x23\x45\x1e\x89\x9b\xdd\x59\xbb\xb1\x0f\x61\x58\x77\x54\xab\xe0\xa6\xa6\x14\xe2\x34\xc7\xba\x44\x89\xd1\x5a\xf3\x42\x77\x4c\xaf\x20\xb1\xca\xb3\xc7\xa9\x64\x6e\x83\xd3\x3f\xd0\xe2\x7b\x58\xdc\x42\x60\x31\xa6\xf6\x7c\x63\x98\x83\x22\x94\x3c\xc0\xc2\xc6\x30\x5e\xf8\xc1\xc2\xea\x51\x1d\x60\x75\xfb\x07\xe8\x86\xf9\xee\x5b\xbc\xb2\xf4\x0f\x10\x80\x48\xe0\xdb\x4a\xcd\x72\xb3\x84\x28\xe6\x9b\x35\x3d\xa8\x2a\xed\x87\x5a\x86\xbf\x29\x3d\xba\xeb\x21\xc2\xc4\x2d\xa3\xd2\xc0\x64\x02\x89\xf6\x99\xee\x76\x37\x0f\x30\x19\x32\x2d\x6d\x29\x4d\x9a\x3c\x3c\x52\x99\x2a\x92\x88\xbc\xa0\x9a\x8d\x59\xc6\xf4\x22\x2c\x0d\xde\x37\xbc\xe1\x2b\x1c\x6f\xcb\x14\xc9\x15\x57\x9a\xe2\x55\x28\x9c\xbd\xcd\xac\x76\x0d\xa6\x8b\x98\xbb\x96\x9b\x62\xc2\x0d\x95\xe1\xf5\xef\x0d\x29\xb9\x50\x9a\x24\x20\x8d\x50\x97\x2d\xc8\xa3\x14\xbc\x23\xc4\x75\xbb\xed\x58\xc5\x45\xcc\x8d\x2c\x08\x8f\x67\x2e\x1d\x6f\x68\x5e\x7c\x68\x99\x95\x3a\xc3\x64\x8f\xb3\x5f\xe3\x7f\x0e\xe9\x14\x11\x9f\xcc\xf7\x8e\x1c\x1d\x05\xf6\x25\x7c\x6c\x50\xdc\x53\x79\xe7\x62\xd6\x9a\xa2\x53\x75\xa1\x10\x0b\xbc\x8b\x7c\xca\xc3\x0d\x38\x2d\x20\xd2\x34\x87\xa1\xc6\xd8\xd6\x32\x08\xe5\xb4\x08\xb3\x07\xd5\x0d\xd9\x41\xdc\xdb\x3b\x98\x07\xd6\xd7\xbf\x65\x56\x55\x31\xcc\xf4\x9d\x87\xd1\x50\x24\x07\x4d\x53\xaa\xe9\xc8\x1c\x88\x41\xfb\x4f\x55\xd0\x04\x06\xe4\xef\xd5\x87\x19\x1d\x43\xa6\x7e\x3c\xfe\xf7\xef\x2f\xff\xfa\x1f\xc7\x3f\xfd\xbd\xf9\x1d\x8a\x6b\x68\x9f\x6c\x3e\x10\xf8\x0a\x18\x92\xc4\x45\x0a\xd7\x48\x1d\xfe\xe9\x34\xbd\xf3\x24\x11\x25\xd7\xee\x0b\xc4\x50\x1f\xcd\x84\xd2\x57\x37\xd5\x9f\x85\x48\x97\xff\x0a\xa8\x94\x47\x0e\x53\xee\xc1\xb5\x0d\xc0\x54\xb4\x2d\x9e\xf4\x43\x0b\xf6\x09\xa4\x0a\x82\xe1\xf3\xad\x9d\x18\x61\x7b\xf5\xdb\x58\x25\x33\xc8\x29\xfe\xf3\x1b\x3f\x05\xe6\x3e\xae\xaa\x5c\x70\x04\xab\x37\x77\x60\xbb\x74\xee\xd1\xfc\x6d\x90\xc6\x69\x5b\x44\xce\x5f\xad\x60\xe4\x09\xc3\x19\x71\xb3\x65\x39\x40\x25\x3f\x7a\x2b\x45\x1d\x6d\x78\x7e\x73\x45\xe6\x76\x86\x0f\x68\x72\x5e\x8a\x5d\xfb\x18\xa6\x6f\x0e\x9a\x6d\x37\x23\xad\x5a\xf6\xb2\x77\x04\xe1\x94\xfc\xf7\xae\xa4\x81\xaa\xca\x38\x82\xd2\xa1\xb2\xcd\x89\xed\x72\x94\x14\xe5\xc0\x75\x3f\xca\x21\x17\x72\x51\xfd\x59\xc5\x87\x0d\x95\x16\x92\x4e\x11\x90\xce\x0e\x6e\x7f\x56\xfd\x65\x7f\xd8\x22\x6f\xf5\xd7\xd6\x20\x99\x94\xd2\xc8\xe9\xd9\xa2\x46\x7a\xfa\xea\x58\xb6\x5f\xb7\x03\xe1\xd8\xd5\xb6\xba\x8e\xaf\xc8\x1d\xd7\x11\xad\xa8\x26\x56\xb3\x88\x56\x20\x07\x1c\x3d\xa8\x04\x56\x6b\xaa\xe4\x73\x32\xa7\x52\x85\x14\x36\xb7\x2d\x22\x93\x4e\xd9\x9c\x29\x11\x00\x0a\x54\x75\xb4\x2a\x51\x7b\x64\x05\x57\xa2\xc4\x26\x2a\x54\x7e\x8f\xcf\x05\x96\x2b\xab\x0e\xfb\xd2\x6d\xf6\x36\x54\x59\x20\xa4\xa0\x5a\x83\xe4\xef\xc8\xff\x3e\xf9\xcf\xdf\xfe\x3c\x3c\xfd\xd3\xc9\xc9\x8f\x6f\x86\xff\xf6\xd3\x6f\x4f\xfe\x73\x84\xff\xf8\xe7\xd3\x3f\x9d\xfe\xec\xff\xf8\xed\xe9\xe9\xc9\xc9\x8f\xdf\x7f\xf8\xf6\xfe\xe6\xf2\x27\x76\xfa\xf3\x8f\xbc\xcc\x1f\xec\x5f\x3f\x9f\xfc\x08\x97\x3f\x6d\xd9\xc9\xe9\xe9\x9f\x7e\x13\x4c\x7a\x84\xfa\xe5\xb6\xc5\xac\x62\xde\xee\x31\x92\x76\xf8\x22\x15\xcd\xeb\xe6\xb7\x57\xec\xf3\xef\x33\x73\xdf\xd5\xb7\x59\x25\x85\x1c\xd0\x01\x7f\x29\x41\x43\x41\x22\x41\xbf\x86\x65\xd7\x8e\xd4\x28\xb8\xe0\x92\xaa\x51\x89\xfb\xda\x6e\xd0\x5f\x82\xb1\xd7\xeb\x39\x76\x5d\x6b\xd1\x7d\x22\x45\xee\xf0\xdb\xad\xe7\x7b\x8e\xd9\x98\xee\xb9\x07\x08\xf0\x8a\xf8\xd6\x1b\x87\x3b\xb7\xde\x38\xbc\x81\x94\xde\x38\x1c\xd4\xbe\x48\xe3\xf0\x9d\xe5\x49\xbf\x48\xcb\x70\x7c\xcc\xc5\x8e\x31\x5d\x31\xe1\x16\x81\xcf\xbb\xc6\x03\xc4\x0c\x82\xf4\x66\x8f\x66\x51\xcd\xed\x22\x8d\xba\x47\xb5\x9b\x95\xab\xc2\x9a\xea\x50\x79\x2b\xd2\xe6\xeb\xc3\xd0\xc8\x79\x96\x11\xc6\xed\x05\x6d\x3a\xe8\x34\x7a\x0d\xd9\xe1\x90\xaf\x1d\xd2\xf1\xdc\xbc\xaa\x4f\x7d\x6c\x17\xb1\xc6\x4c\x39\xcc\xd4\xfc\x8b\x4d\x84\x7c\xb0\xb9\x91\x4a\xe3\x94\xf8\xd2\xe4\x9d\xc8\xa9\xd4\x50\x1b\x39\x63\x2e\x0a\xaa\x94\x48\x6c\xde\x68\x05\xb5\x80\x35\x45\xdd\xf4\xe0\x1b\x68\xfa\x80\x21\x62\x09\xa4\xc0\x77\xcd\xe8\xf5\xed\x93\xc5\x9c\xf0\xeb\x30\x5e\x60\x69\x6c\x3e\x77\xf7\x17\x49\x3d\xec\x09\xbe\x71\xbc\x71\xbf\xae\x98\x58\x73\x86\x5d\x30\x4e\x23\x34\x16\xa5\xcd\x3a\xb5\x13\x23\x8a\xc5\xa4\xf6\xf0\x61\x74\x93\x65\xe9\xdd\x36\x72\xb0\x22\x11\x2e\xb6\x57\xc1\x36\x41\xfa\xd8\x8a\xbc\x5e\x7b\x41\xdb\x72\xfa\xd7\x10\x9f\x14\x2e\xc1\xc7\x95\xde\x5f\x42\x72\x3f\x14\xa9\xfd\x40\x24\xf6\x97\x91\xd6\x0f\x53\x52\x8f\x26\xa5\xc7\x91\xd0\xe3\x48\xe7\x3b\x84\x6d\xc4\x94\xc8\xe3\x48\xe3\x2f\x61\x8b\x2b\x24\x4c\xd8\xe7\x48\x1c\xdf\x43\xef\x10\x0d\x9f\xd1\x32\x53\x48\x28\x80\x57\xc8\x6e\xbe\x28\x2a\xd0\x64\xf6\xe5\xe4\x2d\x58\x03\x52\xdc\x7b\xf1\x6e\x9d\xf1\xaa\xbf\x14\x49\x7f\x29\xee\xd0\xfa\x4b\xb1\xbf\x14\x5f\xe5\x52\x74\xdc\xea\xeb\xbf\x11\x23\xa7\xc5\x62\xc2\xff\xde\xeb\x6f\x58\x32\x02\x80\x84\x77\x3c\x8a\x35\x60\xd1\x19\x8e\xdc\xe5\xc4\x05\x9d\x33\x1c\xf5\xa6\xcc\xb2\x2e\xa0\xa4\xb6\xc5\x58\x80\x2b\x9c\xf6\xa2\xcc\x32\x07\x64\xd9\x6d\xf6\x3f\x72\xbc\xc0\xce\xb3\x47\xba\x50\x03\x72\x0d\x73\x90\x03\x72\x35\xb9\x16\xfa\xc6\x5a\x28\xba\xf5\xdb\xcc\xa7\xb2\x9d\x13\x36\x21\xef\x32\xaa\x41\x69\xa2\xe9\x14\xed\x65\x75\xa9\x15\x21\x5b\x83\xd6\xc5\xe4\xf6\x68\x38\x0a\xdf\x9b\xbf\xf6\x68\x7f\xc3\xfd\xec\xd5\x8c\x4d\x20\x59\x24\x59\x38\x9b\xf8\xc1\xf7\xe4\x33\xc1\xbc\x78\x80\xa1\x43\x6b\xe0\xc4\xbe\x40\xcc\xf6\x42\x28\x7d\xa7\xa9\xd4\xfb\x06\x6e\xbf\xf1\x84\x98\xc9\x4e\x68\x96\x41\x4a\x58\x9e\x43\xca\xa8\x36\x82\x20\x9d\x68\x90\xcd\xd2\xf4\xf8\x9c\x2d\xc8\x37\xb2\xf5\xfb\x7c\x6d\x53\x49\x26\x94\x65\xaa\x7b\x44\xf8\x8a\x91\xdb\xd6\xd3\xa6\xae\x96\x63\x03\x0e\x90\x26\x89\x90\x29\x26\xbb\x0a\x0f\x9b\x87\x2f\x11\xc2\x9f\x4c\xfb\x88\xa2\x42\x4e\x39\x9d\x42\xee\x4a\x0c\xb6\xc9\x1a\x67\x22\x79\x50\xa4\xe4\x9a\x65\xae\x90\xb7\x78\x40\x81\x38\xc3\x93\xda\x79\xe8\xee\x0c\xa0\xfa\xe7\xb0\x3a\x84\x43\x43\x95\x3a\xfb\x75\xfd\x15\x7e\xd0\x91\xb8\x08\x6a\x59\x0c\xa5\x0c\x3e\x43\x12\x22\x20\xb6\x8d\xe4\x9f\x21\x69\x54\xf0\xa5\x1e\xba\xc9\xe2\x31\x22\x60\x52\x24\xdf\x92\x6d\x91\x62\x6c\x62\xc5\xb5\x04\x00\x55\x35\x5b\xec\xb0\x8d\x0b\xb7\x08\x4c\xb9\x99\xb7\x7f\x66\x8c\x43\x7b\x61\x94\xad\x5f\x02\x4d\x58\x4b\xf3\xe7\x4a\x81\x36\x9f\x8c\x1c\x4c\x9a\xa7\xc5\xd0\x26\x85\xd0\xe4\xe4\xf8\xec\xf8\x74\x65\x8f\x1c\x1b\x8d\x3a\x03\xb5\x50\x1a\x72\x0b\x29\x9a\xd4\x2f\xa5\x58\x5e\x60\xc1\x40\x48\x8e\x7d\x7d\xd3\x60\xca\xcc\x1d\x69\x31\x8e\x71\x56\x1c\xbc\xd7\x80\x28\x41\xb4\xa4\x29\x73\xb6\x2c\xfc\xd4\x3c\xa4\x65\xe9\x20\x8b\x4f\x8e\x7f\x3e\x1e\x10\xd0\xc9\x29\x79\x14\xfc\x58\xe3\xf4\x8d\xc8\xbd\x20\xa5\x0a\x9f\xb1\x8a\x90\x85\x28\x09\x07\x70\x67\xab\x42\x35\x37\xd7\x0d\x11\xa5\xb6\x56\x35\xaa\x43\x60\xc9\x9a\xed\xf2\x33\xd3\x2e\x27\xc8\xf0\xef\x37\x4b\x35\x64\x33\x36\x87\xb3\x19\xd0\x4c\xcf\x6c\xc4\x3a\x17\x7c\xf8\x0f\x90\x02\x41\xcc\xb8\xfb\x26\x94\x8c\x30\x57\x60\xb3\x05\xb8\x05\x57\x09\x8a\x12\xac\x12\x59\xbb\xf4\xcd\x5c\x7b\xdf\x42\x67\x91\x88\x2c\xf3\xa3\xef\xee\xef\x6f\xbe\x05\xdd\xe4\xf2\x1c\x3f\x24\xdf\x5e\xde\xfb\x3c\x85\x06\xb0\xf7\x01\xb0\xf7\x38\x01\x94\x43\x52\x08\x79\x08\xb7\xcc\x4c\xa8\xa0\xe5\x24\x2f\x70\xc5\x7c\x27\x94\xb6\x06\x7c\x2d\x0c\xdb\xe6\x90\x98\x4d\xd0\x0e\xba\xf7\x88\xe9\x57\x37\x23\xf2\x57\x51\x9a\x09\x19\xd3\x71\xb6\x20\x8f\x94\x3b\x6b\x77\x58\xa4\xac\x69\x47\x86\x94\x23\x73\x83\x98\x9d\xff\x1d\xd0\x14\xa4\x42\x06\x0d\x34\x30\x27\x26\xe2\x71\x6f\xd0\x16\x75\x29\x2f\x4a\xa5\x45\x4e\x66\xee\xb5\xdb\x00\x67\xee\x70\x8e\xec\x71\x75\x28\x37\x12\x0a\xcb\xc4\xdd\x6f\xbe\x3a\x16\xbd\xc2\xbd\xec\xbc\xbb\xcf\xc7\x56\x4c\x6d\x4e\x9b\xb3\x98\x5b\xfc\x14\xc7\xdb\xcc\x56\x8d\x16\xdb\x18\x21\x26\x9c\x44\x8c\x0b\x27\x61\xd0\x67\xcb\x1d\xa1\xf7\x20\xb8\xa7\x78\xa1\xe6\x24\x5a\x38\x35\x79\x91\x90\x6a\xe2\x22\xe5\xdc\xe6\xb3\x9e\xa3\xb0\xba\x6e\xcb\x9d\x37\xca\x69\x25\x94\x0b\xce\x12\x9a\xb1\x7f\x40\x4a\xca\x42\x70\x97\x3f\x85\x92\x6d\x42\x15\x0c\xd1\xdd\xca\x2d\x3b\x57\x0d\x10\x2e\xc3\x1d\xb4\x10\x28\xee\x61\xd0\x93\x61\xf7\x96\xea\x38\xa4\x46\x8d\xfc\x0d\x46\x94\x6b\xb6\x15\x0f\x6d\x6b\xb1\xe2\xec\x78\xf2\x45\x88\x93\xc4\x26\xbe\x05\x27\x5d\xaf\xa6\x5c\x6b\x41\x68\x92\x20\xcc\x98\xbd\xae\x90\xf1\xda\x02\xb3\x07\x73\x6f\x1b\x11\xf0\xd0\x64\x2f\xeb\xc4\x96\x84\x97\xf9\x18\x64\x8d\x57\x21\xf5\xea\x9c\x46\xb1\xba\xb8\x61\xed\x70\xde\xed\xe7\x65\x0c\xca\xa7\x40\xde\x9a\x91\xff\xf8\x87\x3f\xfc\xfe\x0f\x11\xc6\x31\xaf\x57\x45\x0a\x73\x72\x75\x7e\x7d\xfe\xb7\xbb\x4f\x17\x88\x82\x17\xda\x7d\xa4\x44\xc8\xd8\x69\x90\x51\x93\x20\x5f\x34\x05\x12\xf1\x24\x82\xb9\x6c\xec\x23\x71\x87\x54\x99\x4d\x58\x2a\x8b\x9c\xe7\x74\x12\x67\xdd\xb6\x26\x66\x15\x21\x75\xa9\xe9\x27\x33\x0c\xeb\x20\x38\x95\xca\x00\x8a\x68\x1a\xff\x9d\xe9\xad\x05\x06\x4c\x52\x5f\x14\x1e\x2d\x4c\x6d\x5b\xbe\xab\x0b\x87\x34\x7c\x45\xca\xbf\x82\x44\xf0\x34\x44\x05\x88\x25\xd2\x3a\x4a\xa2\x9e\xb9\x3b\xdb\xa7\x37\x11\xd7\x57\x89\x1b\x0c\x35\xc9\xd0\x15\x25\xd5\xaa\xc6\xe1\x93\x36\xe3\x1f\x7b\xfb\xe3\xbf\x74\x77\x90\x25\xc5\x9d\x48\x1e\x22\x9a\xc8\x02\x19\xd8\x7b\x73\xd2\x12\xeb\x0b\xbc\xbf\xb8\xb1\xc4\x99\x95\xb9\xfe\x78\x5f\xc3\x7b\x60\x3a\x4b\xed\xd6\xfd\xce\x79\x0b\x29\x4f\xc9\x03\x14\x61\xda\xa5\x61\x98\x3e\x2e\xad\x1d\x96\x86\xb6\x77\xe9\x9c\xc8\x36\x85\xd6\x32\x02\x1f\x4e\x66\x25\xe2\x30\x60\xe2\x86\xdf\x1b\x1d\x81\x4e\x09\x99\x50\x96\x11\x8a\x56\x79\xcd\x72\xb0\x39\x3c\x68\xec\xaf\x03\x11\xbe\x22\x86\xf3\xb5\x5a\x1b\x8f\xeb\x12\x9c\xbb\x5a\x0d\x43\x91\x0f\xbe\x6e\x35\xc0\xf1\x6c\x59\x05\x52\xf7\x6a\xc0\xb6\xad\x57\x03\x3a\xaa\x01\x85\x84\x3b\x2d\x3a\xcb\x9a\xd1\x02\x6e\x2c\x19\x1b\xc2\x6d\xc6\x30\x11\x12\x96\xe3\x6d\x1a\x71\x30\x2e\x14\x3b\x20\xd4\xf4\xfc\xe6\xaa\xf2\x7d\x89\x56\xac\x8b\xcd\x37\xf5\xc5\x40\x33\x36\x07\x0e\x4a\x9d\x61\x64\x4d\x59\x58\xc3\x32\x5e\x6d\xa5\x84\xee\x51\x3e\x85\x04\xc8\x71\x1e\x07\x35\x62\x8c\x79\x5d\xe0\xf6\x43\xd0\x89\xf5\x9b\xfb\xb0\x22\x17\x06\xe6\xa7\x6b\x12\xe4\xce\x6f\xd4\xed\x94\x54\xcd\x00\x73\x1e\xe1\x33\xd3\xca\x0e\x7a\x83\xb8\x2a\x7e\xc6\x8d\xbc\x30\x95\x34\x01\x52\x80\x64\xc2\x88\x18\x25\xd7\xa9\x78\xe4\x64\x0c\x53\xc6\x95\x5f\xb1\x10\x92\xfc\x96\xc0\x48\x22\xa6\xaa\x7a\x5d\x23\x72\xdb\x02\xb4\x77\x08\x52\x89\xa8\x79\xa6\x9b\xa2\x41\xa4\x29\x41\xe1\x05\xb7\x41\x49\xb3\x6c\x51\x6f\x3c\x9f\x0f\xad\x37\xcf\x50\xf7\x0d\x61\x67\xf6\xa4\xe4\xf8\xa2\x29\x64\x74\x61\x33\x7f\x27\x8c\xa3\xf5\x57\xaa\xd3\x51\x78\x68\x56\x67\x02\x85\x6c\xf4\xb9\x71\x67\x30\x45\x24\xd0\x64\x16\x22\xd9\xf5\x31\x60\xcf\xb5\x3e\x06\xac\x8f\x01\xeb\x63\xc0\x56\x5b\x1f\x03\xd6\x6e\x7d\x0c\xd8\x66\x82\x0e\xd9\x69\xd7\xc7\x80\xf5\x56\x99\xd5\xd6\xc7\x80\x75\x6a\x7d\x0c\xd8\xb3\xed\xe0\x58\x74\x1f\x03\xb6\x45\xeb\x63\xc0\xb6\x6c\x7d\x0c\x58\x1f\x03\xd6\xc7\x80\xf5\x31\x60\x01\xad\x8f\x01\xdb\xfd\xf5\x7a\xe7\x4f\xf7\xd6\xc7\x80\xf5\x31\x60\x3b\xb6\x3e\x06\x6c\xa9\xf5\x31\x60\x7d\x0c\xd8\x53\xad\x8f\x01\xeb\x63\xc0\x5c\xeb\xad\x8d\x2b\xad\x8f\x01\x5b\xd3\xfa\x18\xb0\xdd\xc6\xe9\xd5\x80\xb0\xce\x5e\x44\x0d\x50\x5a\x14\x77\x6c\x1a\x00\x34\x18\xeb\x18\xdc\x55\x94\x38\x14\x42\x45\x1e\x67\x2c\x99\x11\x65\x3f\xf4\x76\x2c\x44\x28\x33\x07\xa2\x19\xa5\x53\xdf\x24\x63\x30\x2a\x82\x79\xad\x22\xe4\x36\xb9\x9a\xa0\x03\xb9\x01\x92\x66\x4e\x85\x63\x6b\x66\x9c\x06\x1c\x7f\x5b\x7c\xf6\xb7\x1b\xe3\x46\x77\xe9\x4e\x41\x63\x3e\x12\xca\x6d\xf5\x4b\x7c\x7d\xac\x96\x47\x6e\x44\xaa\x7c\x05\x00\xfe\xff\xb1\xf7\xee\xbd\x6d\xe4\x58\xde\xf0\xff\xcf\xa7\x20\x32\x83\xc7\xf6\xb6\x64\x27\x73\xc3\x4c\x63\xf1\x36\xbc\x8e\x3b\x6d\x4c\xe2\x08\xb6\x93\x79\x06\x3d\xbd\xbd\x54\x15\x25\x71\x5d\x45\x56\x93\x2c\xd9\x1a\xf4\x87\x7f\xc1\xc3\x4b\xb1\x24\x39\x89\x48\xda\x92\xd3\xaa\x05\x66\x3b\x92\x5c\xbc\x1f\x9e\xcb\xef\xfc\x0e\x67\x43\xc3\xfe\x79\x0c\xe5\x82\xb9\x3c\x4e\xf0\x06\x27\x92\x9e\x19\x8c\xdc\x48\xf0\x71\x3a\xf1\x19\xbc\x45\x42\x91\xcc\xaf\x94\xf6\x2c\x05\xbd\xb3\x35\xe4\xce\x8e\x20\x9f\x32\xa0\x75\x72\xde\xe1\x3b\x8a\xd2\xd9\x4d\x84\xce\x2e\xa2\x73\xb6\x81\xcc\xd9\x3a\x2a\x27\x4f\xb8\x37\x43\xa8\x37\x93\xa6\xf4\x08\x61\x13\x0b\xf0\xbe\x99\x09\x22\x67\xbc\x8a\x16\x38\xb9\x84\xcd\x3b\xca\x68\xdd\xd6\xfa\xec\x4a\x2d\x53\xe8\xdc\x83\xd0\xa5\x13\x19\x16\x9b\x6e\x22\xe1\xfa\x87\xb4\x24\x50\x82\x18\xd3\x4a\x6f\x2d\x20\xb1\x9c\xe1\x39\x28\x4b\x6d\x51\x10\x52\xa6\xa8\x4b\xa1\x17\xf5\x8f\xc7\xbe\x87\x86\x8c\x9c\x4a\xf4\x2a\xed\xaa\x49\xd3\xc7\x03\x37\xd3\x1f\xff\x10\xf5\x8e\xa9\x68\xf2\xdc\xd2\x6f\xae\x46\x67\xbd\x5b\x1a\x3e\xf8\x01\x8e\xf1\xd9\x8c\x14\xb7\x57\x16\xe2\xb1\xbd\x9b\x39\xdd\xfd\x91\xe4\xfa\xc8\xa1\x18\xa4\x5a\xf7\x7d\x1d\x54\x1b\xe0\xfd\xd0\xdc\x14\x56\x91\x88\x39\x2d\xc8\xf1\x13\x18\xd0\xb9\x8c\xd2\xf4\x83\x80\xc0\x7d\x0d\x03\xdf\x15\xb5\xeb\xda\x74\xc7\x7b\xbe\x03\xdf\x89\xed\x29\x80\x19\x2b\x5c\xf8\xb5\x99\xae\x3f\x74\x49\xdd\x38\x94\x84\xf8\x14\x85\x29\x55\xb3\x76\x7c\x5c\xf0\xfa\x44\x8b\x0e\xf3\x3f\xe3\x8a\x8f\x4f\x6a\x2c\x15\x11\x27\x25\x2f\xec\xb5\x3e\x2c\x74\x0f\x28\x9b\x1e\xd7\xe5\xd1\xf1\xff\x49\xea\xc3\x85\xf5\xe1\xda\xf4\xa0\x07\x8c\xd7\x31\xd1\x72\x9f\x8b\x25\x2b\x56\x4f\x4a\xfa\x26\x4d\xbe\xbf\x53\xab\x27\x24\xc2\x65\xb7\x02\x95\xdd\x4b\x6d\x94\xc1\x51\x9d\x53\xa8\xec\x06\x1c\xf6\xd1\xa0\xb0\x59\xce\x6a\x26\x08\xec\x0e\xc1\x5f\x77\xc6\x16\xda\x15\xc8\xeb\x0e\x96\xc1\xcf\x00\x73\xcd\x01\x71\xcd\x07\x6f\xdd\xd5\x6a\xf1\x8f\x06\x69\x7d\x16\x70\xd6\x8c\x71\x9b\x4c\x30\xd6\xa7\x80\xb0\xee\xae\x0f\x06\x65\x80\xad\x3e\x1d\x64\x35\xcb\x3c\x66\xb5\x62\x13\x45\xc2\x16\x20\xaa\x4f\x11\x97\x7e\xb4\x98\x74\x86\x78\x74\xce\x58\x74\xb6\x38\xf4\xa3\x41\x51\xd3\x61\xa8\x59\x7d\x0a\x4f\x02\x3f\xcd\x09\x3d\x4d\x5e\x5f\xca\xa8\xa2\xb8\x7a\x4d\x2a\xbc\xb8\x4e\x03\x28\xe6\x5a\x89\xcb\x15\x10\xa3\x71\x5b\xf7\xe3\xed\x33\x6c\x6b\xff\x93\xd2\x51\x8f\xb8\x20\xb4\x55\x81\x21\x7e\x6c\xc6\x17\x5d\x8c\x0c\x6d\xce\x45\x71\xc7\xc5\x6d\xc5\x71\x29\x4f\x1a\x6e\xfe\xa7\x63\xa2\x08\x28\x28\x92\xd4\xf4\xdd\x70\x8f\x1b\xbe\x8f\x1d\xd9\x35\x3f\xf0\x3b\xc4\x27\x8a\x30\x74\x48\x99\xdb\x39\x47\x81\x97\xa6\x0b\x8f\x24\xc7\x3b\xf4\x5b\x5f\xbd\x74\x8d\x7c\x7d\x71\x0f\x88\x0c\x49\xb9\xd3\x91\x2f\xdb\xc7\xcf\x87\xbe\xec\x0f\x27\x6d\xd5\x0f\x7f\x99\x90\x58\x9e\xd8\xd7\xab\xae\xcc\xf5\x2b\xe8\x8f\x17\x45\x98\x95\xc8\xf2\x46\x7d\x7d\xfb\x24\x19\x82\xdd\x37\x6e\x3c\x66\xba\x8f\x67\x31\x37\xb0\xd6\x32\x39\xc2\xfa\x57\xa0\x80\xee\x9d\xae\x3b\xe3\x74\xdd\x12\x32\xf8\xeb\xb3\xb6\x9e\x1e\x09\xbc\xb7\xb6\x7e\x2b\xd6\x56\x40\xd7\xf6\x46\xe0\x82\x8c\x76\x49\x79\x73\x02\xa4\x4b\x50\xeb\x74\x38\x2f\x2e\x18\x21\x26\xa1\xa9\x23\xe3\x03\xde\xb9\x49\x5b\x55\x0b\xe3\x43\xec\x31\x33\xc6\x6f\xad\x9b\x19\x59\xa1\xb4\x83\x50\xea\x9a\xde\x75\xb6\x49\x23\xb8\xd5\x48\x44\xcb\x98\x56\x31\xec\x71\xd2\x9d\xd7\xb6\x88\x24\x2c\xde\x9d\x8e\x7b\x84\x7b\x16\x1c\x0d\x40\xcf\x19\x41\x5d\x5e\x4d\xbf\x23\xba\xd5\x09\x17\x05\x1d\x57\x0b\x34\xc3\x95\x36\x96\x2c\x78\xf8\x96\x56\x95\x7d\x4d\x02\x58\x99\x28\x13\x7a\x36\x1a\x4d\xc5\xd9\x14\x26\x03\x9b\x8e\x90\xfb\x86\x14\xba\xcd\xa2\x22\x98\xb5\x8d\xe9\xa7\xd6\x8f\x16\xbc\x15\xae\x9f\x49\x68\xed\xa0\x75\x2a\x11\xa3\xd5\xc0\x4d\x79\x9f\x9a\x71\x75\xcf\x77\x2e\x65\x49\x4a\xcb\xaa\x78\x47\x25\x19\xc0\x3b\xa3\xfb\x64\xfa\xc2\xe7\x44\x08\x5a\x12\xb3\x6f\xcc\x67\x8d\xe0\x73\x5a\x76\xd8\x71\xbd\x2d\x00\xb7\x1d\xdd\xd6\x47\x78\xaf\x13\xad\x8c\xb3\x21\x23\x53\x0c\xea\xb1\x15\x68\x06\xd1\x69\xda\x37\xf8\x41\x56\xd2\x02\x2b\x22\x01\x2b\xdf\xa3\x5c\x9d\x53\x1c\xdd\x13\x3d\x9e\x60\x47\xa1\x43\xc6\x11\x87\x8c\xb7\x96\x51\xb5\x80\x88\xde\xac\x55\xa8\xe4\x77\xec\x28\xe5\x60\x1a\x98\x03\x46\x63\xa2\x70\x97\xb4\xe6\x54\x32\x89\x08\xc3\xe3\x4a\x9f\x3d\xc0\x90\xdf\xac\xdd\x00\x68\x42\xb0\x6a\x05\x41\x53\xac\x12\xa4\xc4\x1a\x6d\xde\xac\xe7\xa7\xb7\x1d\x95\x36\x5e\x37\x41\x2d\x93\x24\x51\x91\xcd\x66\x02\x44\x66\x62\xea\x13\xcd\x5b\xb5\x23\xf7\xc8\x43\xae\x23\x93\x51\x12\x18\x89\xb4\x26\x12\xf1\x36\xc1\x93\xd7\x33\xff\x6c\x73\x39\x2d\xbc\xbd\xdf\x69\xed\x13\x1b\x36\xcd\xb1\xc3\x2e\x03\xad\x7c\x4d\x1e\x4a\x07\xbc\x32\x39\xbe\xaf\x2f\xaf\x7f\x7e\x7b\xfa\x5f\xe7\x6f\xe3\xb6\x00\xc8\x3a\x16\xea\xce\x2d\xa3\xbf\xb4\x04\xe1\x9a\xb3\x29\xc2\x55\x98\x02\x33\x00\x47\x67\xf0\x01\x48\xc5\xbc\xc9\x32\x91\x7a\xad\xbe\x04\xa2\x04\xc3\x0a\x1c\xf3\x29\x32\x82\x62\x51\x20\x09\xe8\x8f\x3e\x12\xc6\x8d\x01\xf0\xa7\x3d\xf2\x06\x46\x94\x3e\xe3\xc6\x20\xa4\x0c\x61\x24\x29\x9b\x56\xc9\xb6\x60\xb2\x47\x24\xd5\x1f\x32\xec\x46\x30\x8a\x75\x8b\xa4\x3b\x45\x7a\x7d\x88\xb7\x2a\xf3\x39\x04\xba\xcb\xcc\xb9\x00\xc8\x7d\xc3\x25\x71\x2e\x00\xa3\xe3\x5e\x8c\x10\x2e\x4b\x91\xa4\x47\x5b\x61\xe3\x6d\x74\x43\x10\x60\x9a\x35\xa1\xdf\x01\x7a\x89\xfe\x13\xdd\xa3\xff\x04\x87\xc0\x5f\xe2\x9b\xca\x63\x6e\xe7\x40\x34\xcf\xb8\x54\x17\xa3\x4c\x0b\xfd\x8f\x19\x56\xf0\x46\xbd\x1e\x8a\xa3\x31\xb5\x96\x19\xb9\x57\x44\x68\x8d\xd8\xae\x61\xea\xcc\x25\x39\x17\x74\x07\x9f\xcb\xee\x4e\x8d\xb3\x5e\x4c\xfa\x40\xe8\x27\xda\xdf\xd0\xf0\x0f\x5c\xaa\x4b\x2b\xad\x43\x96\x8b\xb0\x1f\x35\x56\xc5\xac\x2f\xee\x53\x5a\x7d\xa7\xf7\x5e\x70\xfd\x97\x1c\x2e\x4a\x93\xce\x36\xa3\x09\xc2\x61\x77\x4e\x6c\x1a\x64\x2e\xdf\xd6\xfd\xd4\xd6\x5a\x72\x6f\x82\x1a\x66\xf5\xb6\xa0\x72\x44\xc3\xcb\x63\x74\x8e\x8b\x59\x42\x2f\xf4\x6c\x94\x81\x32\xd0\xf0\xd2\x74\x63\x86\xe7\x7a\x8f\xdb\x56\x01\xbe\x67\x54\x57\x1f\x28\x83\x03\xa7\x25\x56\x81\x19\x1a\xa7\xe0\xc7\x04\x99\x10\x21\x4c\xca\xe4\x78\xe1\x32\x2f\x92\x77\x5b\x92\x94\x6b\x04\x57\xbc\xe0\xd1\xcc\x06\x39\xb7\xca\xc8\xf6\x05\xe6\x1e\xc2\x56\x3e\x50\xf8\xe1\xf5\x68\x80\x6e\xce\x46\x03\xc4\x05\xba\x3e\x4b\xc3\x81\x84\xd6\xe8\x8b\x9b\xb3\xd1\x8b\xad\xae\x40\x90\xce\x71\x73\x36\x8a\x78\xc9\x2a\x92\xb0\xc6\xcd\xf0\x96\x2c\x22\xb5\xbb\x1c\x1a\xe6\xd0\x6f\xac\x2c\x03\x32\xd3\x5c\xe3\x66\xe3\xb7\x09\x82\x4b\xba\x27\x5b\xf8\xf2\x67\x4f\xb6\xb0\x27\x5b\xd8\x93\x2d\xec\xc9\x16\xf6\x64\x0b\xbb\x0b\xf4\xdf\x93\x2d\x7c\xf6\xd9\x93\x2d\x3c\xf8\xec\xc9\x16\x36\x7a\xf6\x64\x0b\xab\xcf\x9e\x6c\xe1\x13\xcf\x9e\x6c\xc1\x3f\x7b\xb2\x85\x3d\xd9\xc2\xf3\x95\xda\x7b\xb2\x85\xe5\x67\x4f\xb6\xb0\x27\x5b\xd8\x93\x2d\x84\xcf\x9e\x6c\xe1\x81\x67\x4f\xb6\xb0\x27\x5b\xd8\x93\x2d\x7c\xfa\xd9\x93\x2d\x44\x3f\x7b\xb2\x85\xcd\x9e\x7d\xfa\xcf\x86\xcf\x9e\x6c\x61\x4f\xb6\xb0\xfc\xec\xc9\x16\x3e\xfb\xec\x86\x7b\x7c\x4f\xb6\xb0\x27\x5b\xf8\xe4\xb3\x27\x5b\xd8\x93\x2d\x7c\xf2\xd9\x93\x2d\x44\x3c\x3b\xe7\x74\xdd\x93\x2d\xec\xc9\x16\x3e\xd5\xc6\xde\xda\xda\xec\xd9\x93\x2d\xec\xc9\x16\x56\x9e\x3d\xd9\xc2\xea\xb3\x27\x5b\xd8\x93\x2d\xec\xc9\x16\xf6\x64\x0b\xfe\xd9\x93\x2d\x7c\xed\x7e\x27\x41\x24\xfd\x37\x19\xf1\x8a\x16\x8b\xe4\x3c\x93\x2b\x22\x79\x2b\x0a\x7d\x63\xc3\x6b\x51\x03\xef\xf5\x1e\x85\x24\x25\x7b\xc7\x92\xf7\xaf\x82\x89\x0b\x93\xf8\x85\x9d\x83\xc7\x98\x82\x9d\x48\xe4\x77\x03\xbc\x8c\x47\x10\xc0\x4b\x14\x16\xca\x4c\x5f\x9c\xb3\x34\xd9\x6a\x0f\x07\xb2\x0b\x89\x84\x21\xf7\x88\xdf\x45\x8a\x7b\x61\x4b\x1f\xdc\x5c\xb8\x69\x2a\x9a\x92\x92\x89\xd0\x75\x0b\xda\x05\xb1\x21\x70\xf9\x2d\x2a\x9a\x76\x80\x6a\x52\x73\x91\x90\x18\x91\xc1\x82\xeb\x6d\x95\x5d\x58\xa7\x2b\xd3\x21\x37\xf9\x8a\xc3\xfc\x2f\x8c\xbd\xd0\x11\xc4\xf8\xb5\xa2\x4e\x1c\x26\x61\xcd\x56\xcb\x56\x53\xd5\xf3\x02\x5d\x72\x75\x65\x0f\xf7\xd6\xd6\x2b\x33\x62\xc1\x4d\x61\x3a\xb7\x4c\xe4\x82\x77\x17\xda\x17\xe7\x4e\xa2\xf3\x35\x9f\x42\xfc\x53\x36\xfa\x25\x7e\x4c\x51\x1d\xc2\x95\x20\xb8\x5c\x40\x37\x0a\xc0\xeb\x75\xfe\xbf\x67\x98\xb6\x59\x54\x98\xc6\x83\xfc\x72\x1d\xe9\x33\xe8\x05\xd2\xfb\xb5\x03\xbf\x43\x1e\x99\x5f\xac\x81\x87\x78\x53\x73\xc6\x8f\xdd\x57\xe6\x8f\x07\x09\x96\x1e\x56\xb0\xbb\xc0\x88\x01\x53\x96\xca\x50\x4d\x48\x37\xee\x18\xc2\x55\x33\xfb\xb4\x79\x97\x92\x1e\xf9\x7a\xc1\x70\x4d\x0b\x77\x58\x4e\xcd\xde\xa4\x9c\x2d\x19\x86\x69\x23\x31\xbd\xd7\x43\xaa\xeb\x56\xe1\x71\x45\x8e\xd1\x85\x5a\x5b\x41\x3f\x2d\x95\x19\x65\x81\xb0\x26\xc2\x57\xd7\xea\xd5\xb0\xd7\x0c\x21\x03\x61\x5a\x2a\x71\x46\x10\x61\x4a\x2c\xf4\xb6\x1c\xf1\xf2\x5a\xef\xcc\xde\xaf\x93\x79\x1a\x12\x51\xab\x39\x10\xab\x89\x68\xd5\x3c\x18\xd3\x74\x7c\x69\x5e\x6c\x69\x17\x05\x30\x34\x33\x61\xd2\x4e\x6f\x5b\xe8\x9b\x61\x8d\xc4\x42\x7c\x92\xd8\x03\xdd\xe2\x88\x97\x5a\xef\x11\xc4\x88\x2d\x7f\x46\x8d\x0f\xf0\x42\x77\xee\x16\x9c\x76\x58\x75\x0a\x11\x9e\x63\x5a\xe9\x03\x9c\xd8\x01\x9f\xf4\x9c\x29\x78\x93\x29\xdc\x60\xf1\xf5\xbb\xb4\x59\x6c\x66\x56\x2f\xb9\xab\x98\x71\x49\x18\xc8\x4b\xec\x93\x70\x7c\x8a\x80\x15\x31\xa5\xb9\xa2\x53\x81\xc0\x17\x13\x44\xea\x46\x2d\x06\x88\xcc\x89\x58\xa8\x19\x00\x06\x04\x37\x20\x12\x68\x42\xf7\xad\xc6\x65\xb0\x3b\x06\x88\x3b\x1f\x72\x62\xf3\x70\x3f\x58\xb3\xaa\xad\x94\x31\xb2\x40\x2d\x4f\xca\x12\x35\x4f\x86\x5d\x93\x9b\x0b\x05\xa5\x0a\xcd\x9c\x5c\x26\xfa\xa9\x68\x4d\xe3\x18\x22\x51\xc6\xb3\xf0\x16\x7a\x11\x64\x7f\xe8\x2d\x51\xe3\x7b\xf0\x30\xe2\x9a\xb7\x0c\xb6\x46\xc1\xeb\xa6\x55\x81\xa6\xee\x94\xfe\x27\x73\x3d\x16\x9c\x4d\xe8\xd4\x06\xc7\x4e\x6a\xcc\xf0\x94\x0c\x7d\x77\x86\x9d\x7a\x73\xb2\x3d\xd0\x06\x2e\x1d\xbb\xc4\x28\x47\xaa\x31\x56\x8a\x08\xf6\x2d\xfa\xef\xc3\x7f\x7d\xf3\xeb\xf0\xe8\xbb\xc3\xc3\x1f\x5f\x0e\xff\xf6\xd3\x37\x87\xff\x3a\x86\xff\xf8\x8f\xa3\xef\x8e\x7e\x75\xff\xf8\xe6\xe8\xe8\xf0\xf0\xc7\xbf\xbf\x7b\x73\x33\x3a\xff\x89\x1e\xfd\xfa\x23\x6b\xeb\x5b\xf3\xaf\x5f\x0f\x7f\x24\xe7\x3f\x7d\xe1\x4b\x8e\x8e\xbe\xfb\x7d\x7c\x00\x31\x35\x5a\x9e\x2f\x56\x9e\x29\x52\xfe\x28\x71\x72\x2b\x63\xb7\x7e\xf8\xed\x15\xb8\x72\xfc\x6d\x80\xe1\x53\xc7\x5f\x24\xbb\x55\x2e\x26\x5d\xfb\x54\x22\x5e\x53\xa5\xac\x13\x01\x87\xf4\x35\x4b\x2e\x1d\x2b\xb0\xe8\xc4\x28\x50\x54\x86\x34\x2a\x9d\x27\x28\xba\x5b\xfe\x7e\x05\x27\x16\x43\xb4\x6e\x2a\x52\x13\xa6\x40\xf0\x0c\x9d\xc9\x0b\x1e\xc1\xe3\x6e\x04\x05\x66\x8c\x2b\x44\xee\x0b\x42\x4a\xdb\xc9\xbd\x6c\x0c\x9e\xbd\x6c\xdc\xcb\xc6\xcf\x3d\xc9\x6e\xed\x4c\xfe\xcd\xd0\x95\xbd\x12\xa4\xd2\x72\xc1\x1c\x31\xa7\x3e\xc3\xcf\x3d\xf5\x01\x9f\x20\x12\x4b\x71\xd9\x35\x62\x59\x33\x71\xac\x13\xd3\x71\x1b\xe3\xc5\x8a\x27\x68\x89\x32\xdd\x24\x98\x5b\xf9\x25\x1d\xd8\xc6\x58\xad\x9c\x45\x35\xbd\x13\x04\xec\x92\x14\xad\xa0\x6a\x71\xc6\x99\x22\xf7\x51\xa6\x67\x8e\xed\xd4\xe1\x56\xaf\xfb\x1d\xb2\xde\x53\x9b\x60\x6a\xbf\x43\xbc\x31\x54\x64\x0f\x92\xed\xcf\x78\x5b\x95\x7a\x39\x45\xcb\x60\x97\xc4\xed\x8e\x8b\x89\x5e\x6b\x03\x64\x82\xb5\x06\xdf\xee\x72\x17\x1d\xc4\xc8\x74\xe7\x97\x96\xce\x71\x45\x98\x0a\xfe\x62\x04\xa0\x93\xf0\x8f\x9e\xa1\xcb\x1d\x6c\x99\x91\xa0\x73\x5a\x91\x29\x39\x97\x05\xae\xe0\x2a\xdd\xb6\x7e\x76\xfa\x40\xbf\x60\x3f\x08\x5e\x49\x74\x37\x23\x5a\x5f\xd1\x72\xc2\x00\xdd\xc0\xf7\x3b\xc5\x94\xa1\x9a\x8b\x14\xff\xa0\x6d\x54\x1a\xa4\x9d\x56\xb9\x1a\x2c\xf4\xda\x3b\x44\x9d\x11\x30\x63\xce\x2b\xcb\x2a\x58\x2d\xba\x7e\xd1\x78\x47\x1a\x38\x63\xf8\xcf\x8c\xdc\xfd\xac\x7b\x21\xd1\xa4\xc2\x53\x0f\xa4\xd3\x02\x6a\x19\x9e\x9c\x0e\xf2\x7b\x70\xa2\x81\x32\xaf\x25\x08\x57\x77\x78\x21\x3b\xf8\x63\xd7\x36\x4d\xd0\x62\x5e\x1d\xc1\x29\xc6\x12\xf9\xb6\xcb\xe8\x97\xfd\xe1\x08\xf2\xd5\xce\x4e\x47\x3f\x5f\xff\xf3\xfa\xe7\xd3\xd7\xef\x2e\x2e\xe3\x41\x4e\x5c\x11\xa3\x60\x07\xb7\x81\xbd\x23\xec\x2a\xf8\xd0\xee\x31\x97\xc7\xe0\x3d\x83\xdc\x7b\x56\xf2\xbb\xc4\x10\x83\xde\x53\x04\xc7\x5d\x3d\xb8\x69\x4e\x45\xcd\xc5\x48\xf0\x09\xad\xa2\xbd\xd3\xb9\x4e\xf0\x52\x77\x9c\xb3\xf1\xd4\x7e\xdc\x89\x7b\x93\x0e\xba\x1a\xea\x0a\x04\x35\x85\xa4\x43\xfd\x9a\x78\xe3\xa6\x07\x19\x35\x00\xd6\xa5\x2e\xc6\x1f\xa2\xad\xee\x99\xad\x27\xdb\xe8\x6e\x44\xfe\x79\x8e\x60\x4c\xc5\x0b\x5c\x41\xa1\x83\xb4\x8d\x8f\x32\xfb\xd9\x97\xfb\x15\x80\x83\xb1\xdb\xce\xa8\xe2\xb8\x24\xa5\x93\xeb\x8c\x97\xc4\x91\xa0\x3a\x65\x07\x62\x27\x49\x1d\xb9\x31\xc0\x4c\x68\xcf\xa1\x99\x1b\x41\x9c\xe9\xbc\xdc\x3c\x37\xdc\xaf\x49\x4d\xbe\xeb\x47\xa2\xec\x28\x7b\x79\x37\xa9\x67\xce\x37\x63\x0f\x18\x9d\x40\x2c\x1b\x54\x7e\x3a\x81\x4d\xa9\x8f\xd8\x8b\xb7\x6e\x19\x12\x18\xd2\x33\x05\x83\xe0\x25\x3b\xb2\x3b\xcd\xfc\xf8\x1d\x69\x50\x65\xb7\x54\xcf\xe0\xa4\x13\xd2\x6e\xdb\x38\x1d\xc4\x40\xcb\x12\xf7\xe3\x47\xa8\xc5\xe1\xe4\x3f\x16\xc9\x34\x2e\x7e\x89\xd1\x30\x38\x5a\x8d\x20\xc3\xd5\xe3\x95\x1a\xbb\xba\x6a\x99\xa2\x35\x71\xa9\xca\xc3\x25\x9d\x48\x98\xaf\x0f\xa4\x27\x06\xcc\xb2\xd1\x11\xfa\xc0\xe0\xbc\x32\x52\xa2\x21\x62\xbc\x5b\x22\xc2\x26\x5c\x14\xe0\xa7\xdb\xea\x06\x2f\x70\x83\xc7\xb4\xa2\x29\xc2\x3c\xd7\x06\x07\x9e\xed\xa0\x3f\xe0\xd0\x2c\xcb\x93\x52\xf0\xc6\xdc\xc4\x2e\x87\x28\x1d\x1b\xd2\xc7\xaa\x87\x94\x90\xa0\xb0\x4f\xfa\x1d\x99\x0a\xcc\x54\x97\xa4\xb2\xb2\x71\x7e\x8b\x3a\x48\x0e\x25\x00\x97\xf9\x18\xeb\x4f\x4b\x2d\x33\xc2\x65\x4b\x3e\x57\xbb\xc6\x7e\x77\xe6\x06\x17\x80\xd5\xd1\xe8\xfd\xf5\xc5\xff\x5b\x3a\x37\xf1\xaa\x9d\x79\x76\x9b\xfb\x4a\xcb\x83\x6c\xdb\xe6\x8a\xd4\x7c\xbe\xdf\x38\x5f\xfd\xc6\xf1\x0e\xa2\xad\x13\x77\x5c\xb5\x2c\x74\xc7\xb0\xa0\x6b\xa8\x4e\xd2\x75\x46\x3e\xc7\xb5\xff\xd6\xb0\xdc\xa8\x20\x48\xff\x84\x29\x8a\xab\x6a\x11\xfa\x48\x15\x37\x35\x31\xb2\x14\x76\x0b\x6f\xd7\x09\xae\xe4\x73\xbd\x22\x53\x5c\x3b\x8d\xe0\xc5\x3b\xde\xb2\x3c\x4c\x20\x09\x3b\xce\x77\x04\x95\x84\x71\x65\xbd\x29\x60\x4b\xf0\x09\x7c\x8b\x4c\xe4\x3c\x20\xf9\xea\xe9\x39\x09\x6a\xd6\x4d\xa0\x5a\xf9\x04\x40\xa7\x87\x1b\xfb\xa5\x95\x44\xae\xd7\xab\xba\x40\xfa\x84\xc7\xc7\x0f\x05\xc1\x25\x18\x98\x0d\x56\x33\xc3\x3e\x53\x63\x79\x4b\x4a\xf3\x41\x62\xe6\xad\x87\x61\x03\x94\xd2\xcd\xf4\x8d\x9e\x5c\x87\x9c\x06\x87\xb0\xe1\xe0\x01\xac\x76\x8a\x29\xb6\xd5\xd3\x90\x20\xd8\xf5\x22\xbc\x67\xd5\xe2\x8a\x73\xf5\xbd\x2f\xae\xb3\xed\x93\xf1\x0f\x1b\x8e\xe8\x3b\x31\xc1\x2f\x8d\xa1\xcb\x43\xd8\x38\x20\x17\x83\x92\x40\xa9\x62\x51\x2f\xc8\x6f\x55\x2a\x8a\x96\x9d\xca\x37\x82\xb7\xd1\x3a\x5c\x4e\x7b\xf3\xcd\xc5\x6b\xb8\xf8\x5a\x4b\xce\xc0\x94\x58\x34\x9c\x32\xe5\x3c\x5e\x19\x83\x36\x1f\x2c\x0d\x46\x28\xd9\x92\x33\xde\x11\x7a\x87\x17\x08\x57\x92\x7b\x97\x1a\x5b\x17\xe4\x74\x11\x54\xfd\xf5\x98\xab\xd9\x4a\xe8\x14\xb3\xf8\x50\xce\x6a\x7b\x83\x80\xe3\xa1\x4b\xa7\xa3\x6c\xa5\x59\x05\xd8\xf2\x46\x90\x82\x94\x84\x15\xcf\xf5\x44\x6c\x9b\x72\x00\x4e\xd5\x25\x67\x5a\xbc\x6e\xfb\x5c\x5d\x78\xff\xa4\x5d\x8d\xf0\x14\x81\x2b\xdb\x06\x11\x31\xd0\x73\x80\x70\x6d\x65\x0a\xf0\xff\x62\x02\x51\x4f\xb3\xe9\xfe\xde\x8e\x49\xa5\x17\x9b\x56\x95\xa9\x20\x8c\x95\x01\x04\xd0\x1a\x4f\x09\xc2\xca\x1f\x42\xc5\x11\x61\xb2\x15\x76\xdf\xd0\xf8\x14\x99\x92\x13\xe9\x0b\xb9\x61\x89\x3e\x5c\xbc\x46\x2f\xd1\xa1\x1e\xdb\x11\x68\x1c\x13\x4c\x2b\x60\xfc\x00\xf0\xcd\x52\x48\x76\x02\xa0\x41\x9e\x92\xfd\x7b\x61\xe5\x08\xe2\xc2\x5c\x2d\x03\xc4\x38\x92\x6d\x31\x73\x73\x40\x39\xf3\x1e\x61\x4b\xff\x98\x04\x87\xde\x8b\x9d\x7c\xf7\xe1\x07\x49\xc4\xb6\x8f\xad\xbe\x0e\x3f\x3c\xe1\x75\x18\x9a\x88\xfa\xf8\xf7\x17\xcc\x9c\xd5\x9a\x28\x5c\x62\x85\xed\x35\xe9\x7e\xb0\xdf\xb5\xfb\xcb\x32\xe1\xb2\x94\xe4\x2d\x65\xed\xbd\x41\xba\xed\x44\xd8\xe3\xfa\x1c\x7a\x04\xc7\x0b\x16\x9a\x07\x71\x3b\x17\xa1\xc8\x90\x21\x77\xd1\x3b\x46\x83\x07\xac\x6e\xb8\x25\x5c\x76\xba\x36\x84\x30\x2b\x79\xbd\xd2\x49\x48\x9f\x4f\x29\x8e\x1e\xa0\x46\xf6\x07\xd3\x3e\xbf\xed\x80\x50\x45\xe6\x24\xa1\x20\xfc\xd2\xa1\x7c\xab\xdf\xa6\x27\xc7\xed\x5c\x78\x3d\xaa\xf0\x98\x54\x36\x67\xdf\x90\xae\x64\x3c\x61\x99\x7c\xe0\x82\x67\x84\xc4\x5c\x71\x83\xe4\xc2\x7e\x22\xf4\xeb\x9f\xc5\x3c\x64\x05\x5f\xdc\x58\x74\x49\x37\x0f\xe0\x03\x7d\x0e\xf3\xd0\x26\x28\x88\x68\x79\x1e\xb4\xb6\xd9\x9f\x07\xd0\xbf\x76\x7d\x1e\x24\x29\x0a\x5e\x37\x3b\x82\x94\xbc\x31\x28\x78\xdd\xa3\x2f\x45\x45\xf6\x7f\x8c\x93\xe0\xce\x96\x36\x13\x2b\x73\x0f\x3a\xee\xcc\xff\x1b\x5c\xe7\x20\xed\x96\xef\x78\xdb\x7a\x32\x22\xd3\xb7\x68\x5f\xf8\x5b\xbc\xf1\xf6\x30\xcc\xde\xf3\xe4\x30\xcc\x80\xce\x07\x83\x7b\xbe\x07\x89\xfc\x1a\xc0\x98\xda\x08\x80\x79\x25\xac\xa4\x6c\x0a\x01\xab\x01\x12\xa4\x32\x84\xb6\x56\x3c\xdf\x1a\x8f\xd7\x01\x48\x1c\xd7\x21\x27\x6e\x3a\xcc\xaa\xe1\xf3\xc9\x8a\xdd\x5c\x87\xd7\x34\xbf\xb9\x7c\x7f\x13\xe6\x70\x61\xb6\x30\x99\xaa\xf0\x27\x5b\xbf\x4e\x9f\x0d\xa6\x73\x79\x15\x1f\x1b\xd2\x99\xf4\xbe\xf5\x88\xce\xa7\x3b\xa5\x5f\x86\xf2\x5c\xc6\x78\x66\xed\xc2\x32\xe0\x73\xb5\x8d\x0c\x2b\x97\x7c\x04\xec\xd5\xb9\x43\x0e\x90\x7f\x98\x1e\x39\x2b\xbb\xd0\x82\x43\x51\x36\x95\xa1\x13\x04\x57\xa9\x09\x9a\xe6\x59\xe7\x05\x71\xa7\xc0\x13\xda\xac\x7a\x03\xfa\xe4\xe8\x29\xad\x7f\xc6\x83\xf1\xbc\x3d\x11\x95\xb6\x28\x9e\xb9\x1f\x62\x5a\x4b\x7c\x26\xf4\x0c\x2a\x8a\xab\xeb\x86\x14\xbb\x72\x5b\xbc\x79\x77\x7d\xda\xef\x19\xe8\xc2\x96\xbe\x8b\xc0\xf7\x08\x97\x35\x95\x12\x02\x3e\x64\x3c\xe3\xfc\x36\xa9\xc9\xc3\x35\xa5\xfc\x03\x7c\x9e\xa4\x53\x79\x62\x25\xca\x50\x4f\xdc\x11\xa2\xac\xf2\x99\xc2\xe0\x2d\x64\x4a\xda\x08\x42\xf2\xe0\x51\xe1\x47\x0f\x5b\x0f\xf2\x53\x3c\x34\x7b\x75\x7a\x80\x63\x0d\x36\xef\xd6\xb5\x8e\xd5\x5d\x95\x46\x5b\xbc\xb4\xb3\x1e\x18\x7b\xc8\x17\x66\xa3\x38\x6b\xe7\xd1\x18\xaf\x5b\x9f\x24\xab\xf4\x17\x44\xe6\x2b\xa5\x9e\xa1\x02\xbe\xed\x12\x2a\x89\xa9\x64\x40\x80\xd2\x05\x3f\x98\xe9\x0e\xe1\xed\x03\x28\xfd\x64\xff\xf4\x20\x17\xc5\xdd\x69\x55\xe9\x85\xc4\xfa\x9a\x38\x90\x21\xba\x13\x4c\x93\x19\x9e\x93\xae\x08\x34\x99\x4c\x48\x01\xc6\x42\x38\x8a\xf4\x12\xc9\x87\x14\x50\x4c\x21\x9d\xae\xe2\xa6\x6d\x8c\x6a\x7a\xaf\x7b\x18\xb6\x18\x62\x50\x59\x09\x81\xff\xf5\x5f\x27\x54\xc2\x40\x00\x3e\xf0\xcc\x2d\x03\xbd\x42\x61\x23\x2e\x39\x5a\xe9\x6b\x4b\x7f\x71\x49\x94\x36\xd4\xcc\xbc\x85\xd1\x07\x6d\x58\x89\x36\xc3\x61\x48\x89\x0c\xa3\x30\x3a\x9c\x55\x52\x24\x9e\x07\x88\x14\xdb\x3e\x69\x1d\xc4\x29\x6f\x4f\x15\x39\x46\x6b\xd2\x77\x9e\x2c\x82\x8c\xbe\x3c\x8a\xfc\x88\xb1\x2a\xb4\x2b\xf1\xaa\x54\xd2\x13\x53\x06\x12\x0a\xd3\x24\x33\x9e\x8c\xba\x12\xb7\x5f\x44\xf3\x1d\xd1\xde\x96\x89\x3f\xc8\x7d\xbc\x26\xda\x9b\xaa\xf3\x7b\x52\x2c\x95\x94\xac\x6b\xa8\x9c\xc5\xa1\x91\x56\xf9\xc2\x77\xc9\xb7\xd6\x8e\xe8\xf4\x76\x84\xbb\x22\x44\xcf\xec\x84\x53\xa7\x26\x9b\x7f\x6a\xc5\xb9\xbf\x08\xd2\x79\xdb\x03\x8e\x39\xfd\x4f\x7d\x73\x51\x36\xb5\x64\x26\x5c\x78\xea\xa7\xa4\x6e\xb9\x7e\x40\xc5\x03\xce\x15\x3a\x3c\x38\x39\x38\x5a\xd9\x0b\x07\x32\xc4\x43\x9b\xd4\xcd\x6e\x40\x92\xd6\x4d\xb5\x80\x31\x1c\x98\x22\x07\x09\xc5\xc3\xf4\xe3\x90\x75\x9e\x2d\x58\xce\x48\x55\x0d\x90\xd4\xf7\x34\x76\x44\x6d\xe6\x53\xfd\x23\x25\xda\xc2\xd8\xf3\x87\x07\xbf\x1e\x0c\x10\x51\xc5\x11\xba\xe3\xec\x40\x19\xcf\x2c\xba\x01\x65\x37\xa9\x4f\xbe\x13\x0b\xde\x42\x1d\x3e\xb3\x6c\x9e\xdb\xaf\xc0\x5a\x4f\x6b\x8d\x32\x61\xd8\x01\x48\x95\x50\x57\x4e\x3f\xe7\xf7\x54\x69\x99\xa9\x5a\xb0\xa7\x5e\x1a\x95\x86\x40\x11\x01\x2c\xa1\xc2\xee\xc9\x8c\xe0\x4a\xcd\x16\x5e\xcd\x32\x25\xce\x24\x6a\x99\xfd\x26\x5d\xd8\xef\x40\x7e\xdb\xee\x66\x9a\xd9\x4a\x8b\x3b\x5d\x28\xda\xf6\xf1\xb3\x75\xa2\x4d\x3d\xe8\x7e\x8d\x68\xa8\x1d\x4d\xca\x5c\x65\xa2\xff\xf8\xf5\x95\x80\x9e\x8a\x26\xcf\x2d\xfd\xe6\x6a\x74\xd6\xbb\xa5\xe1\x83\x1f\xe0\x18\x9f\xcd\x48\x71\x7b\x95\x46\x7e\xbd\x23\x31\xd0\x2d\xd7\x7d\xce\x5a\xee\x78\xc4\x85\x42\xcc\x97\xdc\xd3\x67\x6b\x0a\xab\x48\xc4\x9c\x16\xe4\xf8\x09\xaa\x0b\xe7\x62\xdd\x4c\x3f\x08\x08\x50\x1b\x30\xf0\x5d\x51\xbb\xae\x4d\x77\xd6\x79\xc5\x6c\x4f\xf5\x1a\x34\x15\x2e\xfc\xda\x4c\xd7\x1f\xba\x34\xf7\x89\x24\x04\xad\xf1\xab\x6a\xd1\x61\xfe\x67\x5c\xf1\xf1\x49\x8d\xa5\x22\xe2\xa4\xe4\x85\xbd\xd6\x87\x85\xee\x01\x65\xd3\xe3\xba\x3c\x4a\xa8\xc6\x82\x82\x4a\xb1\xd6\x8d\xb3\x14\x10\x71\x51\x32\xcf\x13\x4a\xa5\x0f\xe5\x8d\x17\x30\x29\x5b\xf7\x15\x22\xd7\xcb\x6f\xd1\x8b\x17\x51\x6f\xd1\x4b\xf0\x26\x53\xad\xfe\x1f\x6e\x6e\x46\x6f\xfa\x95\xfa\x19\x7c\x88\xde\x9c\xdf\xf8\xea\x0c\x7a\x77\x99\xec\x8b\xbd\xd4\xde\x99\x6a\xfd\x19\x1c\xc4\x9b\x54\xf8\x07\x06\x5b\xad\x72\xe1\x71\xb5\x40\x77\xd8\xa4\x5e\x4b\x92\x26\x53\x5e\xe8\x6e\xbc\xd0\x52\x4b\xef\xea\x1f\x08\x2e\x89\x90\x60\x0d\x11\xbc\xfd\xe0\x47\xd0\xa7\x6c\xcb\x76\xd6\x4a\xc5\x6b\x34\xb3\x43\x35\x73\xd8\xd5\x3f\x31\xba\x91\x39\x82\xe0\x0c\x92\x48\x90\xc6\x58\x4b\xf6\x6f\xbe\x0a\x5b\x68\x45\x0a\x99\x79\x0e\x58\xf2\x31\x2a\xc2\xa9\xb2\x8a\xbe\x29\xb9\x6c\x65\x54\x52\x0d\x5c\xf3\x64\x29\x36\x85\x32\x15\x9c\x42\xe9\x45\xa7\xdc\x4b\xd2\xa3\x25\x79\xca\x57\xa1\x2c\x25\xac\x50\xf6\xca\x44\xc8\xc6\x04\xec\xe6\x32\x48\x01\xdd\xd1\x54\xfa\x34\xe4\x48\x16\x1c\xf2\xa2\xc0\x8c\x33\x5a\xe0\x8a\xfe\x9b\x94\xa8\x6d\x38\x43\xbc\x55\x4d\xab\xc0\x15\x54\x60\x49\x86\x73\x2c\xa8\x16\xa8\xa6\xfe\x9f\x87\x6c\x30\x7d\xda\x15\xe7\xe0\x27\xf1\xd1\x31\xd3\xe3\xf4\x6e\x66\xd2\x66\x90\xab\x95\x9f\x79\x85\x57\x16\x27\x7d\x47\xa3\x9d\xf6\xc1\x20\x53\x72\x61\x96\xcf\xac\xc3\x6a\x06\x10\xa4\x02\x22\x89\x16\xc1\x06\x82\x53\x9b\x0d\x3b\x90\x21\x90\xd5\x8a\x4d\x14\x09\xa6\x0a\xb2\x58\xb2\x83\x75\x0f\x57\xe7\x30\x53\x50\xfc\xf1\xcd\xea\xb0\x5c\xdf\x98\x68\xdd\xfe\xe2\xf4\xf2\xf4\xe7\xeb\x8f\x67\x3f\x5f\x9e\xbe\x3b\x4f\x79\x75\x72\xa9\x8d\x9c\xc5\x36\xb2\x95\xdb\x78\xa4\x62\x44\xfa\x91\xc5\x8c\xec\x4e\x3c\xfc\x1a\x7a\x13\xb2\x27\x59\x1b\x00\x8a\xb2\xf2\x0c\x74\x5a\x68\xc9\x69\xaa\x05\xcf\x56\x25\x0e\x65\x54\x51\x5c\xbd\x26\x15\x5e\x5c\x93\x82\xb3\x72\xeb\x30\xd2\x4b\x2f\x6c\xa4\xe9\x90\x75\x5b\xf7\xc1\x07\x33\x2c\x4d\xd0\x99\x94\x68\x4c\x26\x5c\x10\x88\x9a\x30\x2d\x91\x9a\x2e\x7e\x6c\xc6\xa7\x9e\xb0\x5e\xdc\x1d\x17\xb7\x15\xc7\xa5\x3c\x69\xb8\xf9\x9f\x61\x45\x27\xa4\x58\x14\x15\xf9\x9d\xef\xff\x30\x49\x4d\xdf\x0d\xf7\x78\x43\x04\x05\xe8\xc2\x2e\xec\x9a\x1f\xf8\x1d\xe2\x13\x45\x18\x3a\xa4\xcc\xed\x9c\xa3\xc0\x4b\xd3\x85\x47\xd2\x69\x9f\x14\x47\xaf\x5e\xba\x46\xbe\xbe\xb8\x07\x44\x86\xa4\xdc\xe9\xc8\x97\xed\xe3\xe7\x43\x5f\xf6\x87\x93\xb6\xea\x87\xbf\x4c\x48\x2c\x4f\xec\xeb\xd5\xb1\x4f\xa8\x79\x05\xfd\xf1\xa2\x08\xb3\xd2\x61\x63\xbe\xbe\x7d\xa2\x8a\xe6\x9a\x17\xb7\x99\xdc\xae\x37\x67\x23\xf3\xb6\x25\x3c\x8b\xb9\x81\xb5\x96\xc9\x11\xd6\xbf\x02\x05\x74\xef\x74\xdd\x19\xa7\xeb\x41\x57\x6a\x6a\x53\x07\xea\xc1\xde\xda\xea\x1e\xa7\xf8\x88\x7e\xa9\x86\xbd\xb5\xf5\xc0\xb3\xb7\xb6\x36\x78\x0c\xda\x1d\x32\x47\xdf\x08\x5c\x90\xd1\x2e\x29\x6f\x4e\x80\xa0\xd2\xd6\x12\x45\x9d\x0e\xe7\xc5\x05\x23\xa4\x34\xf2\xc3\x0e\x85\xa0\xa9\x1e\xc9\xa4\xad\xaa\x85\xf1\x21\x1a\x15\xc0\x82\x62\xd2\xb8\x6e\xe1\xd5\x56\xc5\x75\x41\xe6\x75\xbd\xeb\x6c\x93\xc6\xb3\x36\xbb\xf2\x06\xf6\x38\xe9\xce\x6b\x5b\x44\x12\x16\xef\x4e\xc7\xe1\x0a\x22\x49\xa7\x7a\xba\x00\xe8\x39\x23\xc8\xb0\xfd\xb8\x1a\x61\x5d\x47\x74\xab\x13\x2e\x0a\x3a\xae\x16\x68\x86\x2b\x6d\x2c\xdd\x51\x35\x43\x18\xdd\xd2\xaa\xb2\xaf\x89\x9f\xa8\x6b\x57\xb5\xd1\x68\x34\x15\x67\x53\x98\x0c\x6c\xc1\xe3\xf7\x0d\x29\x14\xd4\xad\x27\x98\xb5\x8d\xe9\xa7\xd6\x8f\x16\xbc\xcd\x80\x1f\x77\x81\x6f\xaf\x4f\x31\x6a\x79\x12\x4c\x85\xa9\x4f\xee\xf9\x7e\x16\x20\x7a\xef\xca\xef\x9a\x8a\x57\xd1\x7d\x32\x7d\xe9\xd7\xbb\x32\x9f\x79\xae\x07\x9b\xe2\xa4\xb7\x05\xe4\xdc\x45\xb7\xf5\x11\xde\xeb\x44\x2b\xe3\x6c\xc8\xc8\xd4\x64\x94\x5b\x81\x66\x10\x9d\xa6\x7d\x83\x1f\xf4\xf9\xc9\x52\xf1\x06\xd1\xba\x26\xa5\xb6\x8f\xab\x05\x9a\x53\x1c\xdd\x13\xc8\x5e\xef\x76\x14\x3a\x64\x1c\xf1\x46\x5f\x5d\x2d\xa3\x6a\x01\x11\xbd\x59\xab\x50\xc9\xef\x58\x42\x62\xc8\x8d\x85\x39\x60\x34\x26\x0a\x5b\x1f\xb8\x3e\x04\x9e\xbc\x19\x78\x99\xf5\xd9\x03\x0c\xf9\xcd\xda\x0d\xe0\xf9\x9c\xa7\x58\x25\x48\x89\x35\xda\xbc\x59\xcf\x4f\x6f\x3b\x2a\x6d\xbc\x2e\x91\x30\x76\x37\x28\xd8\xf4\x89\xe6\xad\xda\x91\x7b\xe4\x21\xd7\x91\xc9\xc5\x0f\x8c\x44\x5a\x13\x89\x78\x9b\x89\x18\xff\x95\x6d\x2e\xa7\x85\xb7\xf7\x3b\xad\x7d\xa4\x2a\x69\x54\x79\xd4\x1c\x5b\xec\x01\x96\x71\x9b\x30\x18\x10\xed\x8d\xdb\xc9\x84\x08\xb8\xe9\xa0\xc3\x2b\xb0\x7b\x5f\x70\xc8\xdd\x61\x71\xce\x5b\x0b\xf8\x22\x6a\x00\x24\xe7\x36\xeb\xfd\x81\x26\x2d\x1b\x20\xd4\x13\x15\x44\x02\x69\x35\x43\xe7\xef\xbf\x8f\xdb\xa2\x39\x28\xd0\xd3\x72\xeb\x60\x9c\xef\x59\x1c\x26\x31\xef\x7e\x58\x47\x4f\x61\xb7\x45\x51\x71\x69\xf3\x38\x61\x5d\x8a\x19\x66\x8c\x38\x67\x14\x55\xe0\xc9\x1e\x13\xc2\x10\x6f\x88\x01\xe5\x45\x75\x06\x23\x49\xd9\xb4\x22\x08\x2b\x85\x8b\xd9\xb1\xee\x1d\x73\x7b\xa1\x4b\x98\xb4\x9f\x48\x25\x08\xae\xcd\x9e\x10\xa4\xc6\xd4\x34\x8f\x70\x21\xb8\x94\xa8\x6e\x2b\x45\x1b\xff\xb2\x38\x2f\x22\x81\xd4\x75\x69\xf2\xe7\xdc\x5a\x41\x5a\x49\x97\x99\x39\xe8\x7a\x68\x87\xcf\xc3\xaa\x2a\xe0\x3a\x1b\xe8\x6f\x49\xdd\xa8\x05\xd2\x53\x5b\x45\xe7\xc6\x4c\xa8\x90\x0a\x15\x15\x25\x4c\xd9\x91\x19\x6e\x34\xe8\xc3\xc0\xa9\xd3\xcc\xce\x88\xb4\x53\xc2\x4a\x30\xbe\x1b\x25\x11\x64\x20\xfa\x4e\xb8\x57\x95\x54\x5a\x5f\x87\x1c\xc4\xad\x9d\x2b\xa1\x61\x36\x8e\x9b\x11\xd8\x3a\x4e\xc1\x31\x3d\xb2\x1f\x05\x5d\x08\x0a\x02\xbb\x9a\xf0\x5a\x9f\x4d\x91\x2b\x50\xe7\xc2\x9d\xeb\x41\x2f\x39\xba\xb3\x2d\x20\x15\x66\x45\xea\xc0\x86\x62\x64\xae\xcf\x01\x29\x88\x56\x45\x71\x46\x21\xf3\xe4\x32\x46\x61\x31\x25\xea\xcc\x8d\x3f\x36\x7b\x37\x87\xb4\x09\x2b\xa7\x87\x0e\xa2\x6e\x71\x60\x1d\x46\xbc\x04\x36\x89\x8e\xf1\x63\x5d\x39\x77\x33\xae\x48\xdb\xeb\xe6\x81\x1a\xf1\xce\xa2\x32\x19\x5e\xbe\xa3\xb2\xc1\x05\x91\xe8\xf0\x62\x74\x36\x40\xa3\x8b\xd7\x36\x8d\x8b\x4f\x96\xd9\xf5\x62\xa7\xc5\x5e\x82\xe6\xec\x3e\x54\xc0\xde\x57\xa7\x09\xba\x14\xd0\x6c\xd9\xfe\x8e\xbc\x51\x16\x3d\x33\xab\x37\x01\x58\x68\xb4\x6e\x2a\xa8\x13\x89\x64\x0b\x96\x91\x0d\x5c\xe8\xad\x6d\xec\x11\x7b\x68\x49\x47\x70\x64\xc9\xe8\x23\x83\x38\xa6\x15\x3f\x5c\xbb\xe6\x10\xcb\x76\x13\x65\xf5\x00\x50\x98\x95\xfd\xca\x73\xc4\x40\xae\x99\x85\x8a\xc7\xdf\xee\x91\xee\xb0\xc0\x88\x7a\x47\xa4\xc4\x53\x32\x8a\xc4\x01\xe5\x38\x7b\x9d\x87\x1b\x00\x44\x9d\xbc\x9e\x11\x43\x85\xa5\x78\xf0\x49\x98\x5d\x19\x7a\x6d\x6a\x33\x90\xa8\x1e\xb8\xb3\x75\x27\xa8\x52\x04\xae\x07\xa8\xf5\x04\x5b\x77\x99\xde\xb3\x9f\xd5\x19\xd5\x9e\x9d\xf4\xb0\x3d\xad\xf7\xb3\xd2\xe4\x47\x8e\x09\x1a\x0b\x4a\x26\x68\x42\x21\x61\x13\x52\x19\x07\xa6\x4e\x01\x06\xc0\x3c\x96\x92\x08\x18\xb6\xf5\xc7\xb9\xe1\xc7\xf5\xe7\x1f\x76\xfc\x4a\xb4\xac\xc0\x41\x11\x4f\x60\x1f\xa3\x13\x34\x85\xf4\x49\xeb\x7d\xfa\xd3\xcb\xbf\xfd\x05\x8d\x17\xda\x50\x82\x33\xa9\xb8\xc2\x95\xeb\x00\xaa\x08\x9b\xea\x55\x04\x5d\x27\xee\xc2\xee\x31\x58\xf9\xc5\xa9\x68\x4d\x95\x99\xa0\x57\x7f\xb8\x1d\x27\xdd\x79\xa0\x98\x9c\x94\x64\x7e\x12\x6c\xa1\x61\xc5\xa7\x71\x6f\x3d\xf3\x84\x4f\x6d\x53\xc6\x02\x22\x72\x9f\x68\x5e\xd1\x62\xb1\xb5\xfb\xd4\xba\xc2\xd0\x8c\xdf\x19\x2f\xea\xea\x51\x0d\xc8\x60\x1a\xde\xb4\x15\x4c\x1c\xfa\xde\x33\xf8\xb5\x92\x2c\x93\x23\xa5\x7a\xe7\x03\x69\x07\xe8\x05\xdb\xec\xd2\x55\x6f\x73\x87\x5d\x37\xb9\xa5\xa6\xb0\xc1\x6e\x5f\xa9\x24\xda\x0d\xfe\x3d\xae\xaa\x31\x2e\x6e\x6f\xf8\x5b\x3e\x95\xef\xd9\xb9\x10\x5c\xf4\xc7\x5c\x61\xad\x4c\xcf\x5a\x76\x0b\x75\x76\x3b\xba\x5a\x3e\xb5\x60\x5e\x60\x96\xec\x4f\x6c\x54\x67\xdc\x28\x0d\x81\xa8\xb3\x05\x9c\xf3\xbb\x6b\x99\xdc\xd3\xce\xc3\xcd\x10\xd1\x7d\x8e\xd7\x70\xc2\x71\xc8\xf0\x68\xff\xe1\xe5\x9f\xfe\x6a\x84\x0b\xe2\x02\xfd\xf5\x25\xe4\xfa\xcb\x81\xb9\x00\x40\xf5\xd5\x36\x4e\x8d\xab\x2a\x56\xa7\x09\x45\xc0\xf7\xd1\xe5\xab\x77\xe0\xc8\xab\xad\x9d\xee\x2f\xf6\xd5\xdc\xdc\xfc\x13\x34\x31\xaa\x24\xa9\x26\x03\xc3\x07\xe3\xfd\xc9\x07\x60\xd6\x1c\xd8\x2b\x2f\x9e\x4b\x68\xfb\xde\x92\x39\xaf\xda\x9a\xbc\x26\x73\x5a\xc4\x21\x07\x7a\xab\xd2\x7b\x9b\x8b\x8f\x55\x54\x82\x2e\x39\xae\x78\x71\x8b\x4a\xfb\x65\x90\xa3\xb2\x5c\x77\x3b\x7e\x16\x62\xb3\x75\x12\xb2\x74\x1e\x1c\x7f\x2f\x3f\xa7\xc6\x4d\xa3\xf5\x68\x20\xf6\x12\xf8\xae\x37\x19\x20\x9a\x80\x3f\x35\xd1\xe8\x49\x46\xb1\xa4\x62\x58\x86\x76\x44\xfa\x9a\x8a\x7e\x45\x74\x52\x4f\x3a\x04\xa6\xeb\x7d\x3c\x80\xa0\xb7\x21\xba\x17\xba\xd3\xd0\xc0\x7f\x1b\xa2\x93\x15\x53\xdd\x57\x54\xf3\x1b\xc3\x68\x90\x7a\xfb\xc0\x2d\x13\x1f\x37\xc8\x80\x42\x48\x4b\x4e\xea\xcd\x0b\xf3\xe8\x8f\x1a\x2b\x6b\x1f\x39\xef\x05\x46\x0d\x11\x92\x4a\xad\x3a\x7d\x84\x03\x75\x56\x61\x5a\x07\x71\xf3\x6d\x4d\xc2\x6a\x2a\x4b\x8d\x9b\xe1\x2d\x59\x44\x6e\xb8\xc4\xe3\xf2\x50\x66\x4d\x8d\x9b\xc8\x7b\x00\x8a\xdb\xa6\x5f\x03\x91\x97\xf3\x88\x97\xb6\x1f\x70\x3d\x98\xa2\xc5\x9f\x33\x63\xd1\x75\x3b\x86\x33\x05\x3f\x7f\x5c\x7a\xb0\xac\xca\xd3\xb6\xef\xaa\x8f\xdd\x8a\xf7\xaf\x2a\xfd\x89\xbf\xab\xcc\xaf\xbe\xa6\x1b\x0a\xc6\xf7\x5c\x2f\x28\xdf\xf9\x4c\x72\x38\x09\x9b\x08\xd7\x9a\xdd\x19\xfd\x7b\xac\xe7\x09\x33\x47\x3a\xb0\x99\xad\x87\xea\xd8\xd4\x1b\x48\xe8\x80\x3e\x8a\xb6\x51\x74\xf0\xed\xc1\x56\x2f\x47\xb3\x32\x82\x37\x78\x0a\x26\xed\x2e\x2c\xd0\x72\x9f\x42\x7a\xdb\x19\xbf\x0b\x45\x66\x63\x7f\xa5\x25\xa6\xe3\x48\x9f\xf1\xa4\xd5\x31\x58\x5f\xb7\x23\xac\x59\x6e\xaa\x44\xdc\xe1\x05\xc2\x82\xb7\x2c\x89\xb8\x00\x42\x99\x3e\xd4\xfd\x6e\x69\xb0\x97\x9c\x11\x07\xab\x49\x69\xe5\xa6\xe7\xfa\x06\x84\x11\x65\xe8\xd5\xf1\xab\x97\xc9\x7d\xbf\x22\x45\x2b\x24\x9d\x93\x2b\x5b\x3e\x3d\x08\x83\x5e\x4c\x46\x5c\x4a\x3a\xae\x20\xd5\x52\x71\x74\x6e\x6a\xcb\xaf\x0e\xd4\x43\xbd\x60\xc4\x5c\x84\x44\xa8\x09\x3d\x3c\x34\x27\x38\x84\x68\xeb\x06\x12\x70\x5a\xbb\xa5\x82\xc2\xba\x2e\xa9\xa0\x97\x5e\x05\x35\xf7\xde\x56\xc7\xea\x6a\xea\xef\x82\x24\x79\x67\x83\x0a\x5d\xd1\x7c\xea\x8a\x32\xc3\x47\x77\x82\x2a\x7b\xb8\xef\xa8\x24\xe8\x10\xdc\x19\x4b\x9b\x31\x89\xfb\x39\x74\x7e\x25\x16\xd7\xcf\xc1\xdd\x2c\x96\x8f\xee\x2e\xac\xd2\xaa\x3c\xe9\x72\x66\xee\xac\xe7\xab\x5b\x41\x2b\xfd\xbb\x7b\x79\x86\x59\x59\x25\xc9\x0c\x3f\x2b\xd5\x22\x89\xbd\xea\x62\x82\x42\x91\x68\x11\x07\x41\x10\x72\x86\x25\x62\x1c\xd5\x04\x03\xa4\x5a\xdf\x2e\x4e\x0a\xf6\x68\xa0\xf3\xf5\xc1\x6c\x76\x73\x8d\x85\x17\x82\x15\xd7\xaf\xa9\xb4\xe2\x59\xcb\x11\x6b\xba\x18\x20\x56\x8d\xcb\x14\x32\x86\x60\x4e\xbb\xc5\x3b\xee\x60\xce\xcb\x3d\xe9\x2e\x8e\xa5\xbe\x3c\x46\x3f\x06\xb6\xba\xb9\x6e\xde\x44\x96\xd7\xf8\xf3\x3a\x58\x5b\x12\xfe\xc4\x3c\xcb\xc3\xf5\xd7\xe2\xca\x58\xd7\xf7\xd8\x77\x38\xa1\x0f\x9f\x1f\xea\x20\x90\x85\x0e\xd5\x6d\x40\x30\xb6\xbc\x8a\xcd\x51\x4e\x23\x09\x77\xd1\x0c\xef\x27\x9a\x12\x46\x04\xb6\x01\x09\x07\xea\xb6\x21\x7d\x2c\x39\x4b\x3d\x10\x9f\xd9\x70\x5a\xde\x7f\x5e\x4d\x31\x7f\x96\xd0\x11\xd0\x73\x0e\xb9\x58\x3a\xed\x36\xd4\xb2\x4e\x63\xc9\x39\xea\x25\x32\x3d\xb3\xf9\x03\x96\x5e\xbd\x28\xbf\xb4\x74\x8e\x2b\x62\xe8\xf1\x9d\x68\xd8\xaa\x32\x21\xdb\xf1\xae\x9a\x8d\xd6\x3e\x04\xb3\x63\x3d\x5a\xe2\x41\x0b\x32\x93\x3e\xf1\xe2\x05\x3a\x34\x6d\x1c\x18\x5a\xec\xed\x2a\xb9\x76\xad\xce\xef\x9b\x84\xa2\xb0\xf9\xd6\xeb\xfc\xbe\xc1\x00\xf0\x68\x76\x62\xe1\xfe\x8b\xcc\xf0\x9c\x00\x0b\x39\xad\xb0\xa8\x20\x8d\xe4\xda\x4c\x19\x1a\xb7\x0a\x11\x36\xa7\x82\x33\x00\x55\x01\x5d\x94\x96\x4c\x82\x4c\x88\x20\xac\x20\x12\xfd\xfe\xf0\xe3\xe9\x15\xa4\x19\x1e\x81\xe9\x4b\xdc\xf8\x5a\x69\x51\x50\xbd\x31\x04\xaf\xdb\xc5\xfd\x86\xdc\xd8\xf5\x76\x01\xfd\xc4\xcd\x85\x1e\x5b\xdd\xaa\x16\x57\x40\xd6\x5e\x54\xad\xbe\x0b\xb7\xb6\xb3\xf3\x3b\xcf\x53\x3c\x79\x39\x7d\xe7\x96\xaa\xff\x35\x8d\x3a\xae\x39\x0e\xea\x59\xb0\x5f\x57\x0a\x07\xa4\x01\x28\xfb\xb4\xb1\x2b\x8a\xce\x81\xf4\x54\xb2\x61\xe6\x9c\xbd\x8b\xe3\x70\x1d\x74\x3a\x53\x96\xae\x61\x09\x87\x19\xc0\x9a\xeb\x68\xcc\xd8\x76\x01\x10\xf9\x8e\x41\x84\x23\x3a\xcf\xae\x9f\x71\xa9\x4e\x2b\x8a\xe5\xa6\x7e\xec\xb4\xad\xfe\x43\xd7\x2c\x64\xfb\x31\x5b\xd5\x11\x57\x1e\x62\xa0\x7b\x66\x60\x4e\x17\x23\x8b\x45\x77\xbb\x92\xb2\xff\x35\x59\xa7\x3e\xa0\x64\xb2\x41\xe1\x4f\x36\xec\x89\x41\x1c\x4d\x50\x64\xbd\xa1\xd8\xf8\x4f\x54\xe4\x27\x55\xbc\xf8\x59\x47\x33\x5e\xd9\xbc\x6b\x87\x66\x18\x13\x75\x47\x08\x43\x17\x23\x98\x73\x3d\x95\x86\x97\x71\xfd\xcc\x5b\xe5\x98\x29\xb1\xb0\x07\x7a\xe3\xde\x04\x6b\x06\xab\xb0\xe9\xd1\x4d\x88\x3f\xc5\x47\x9e\x86\x88\x6e\x7a\xa9\xa4\x44\x8a\xfc\x32\x24\xdf\x46\x3f\xf8\x05\x75\x6c\x3a\x78\xcc\xe7\x04\xd6\xbb\x2c\x45\x64\x96\xf6\xd6\xc2\x9f\xd9\x15\x98\x24\x22\x4b\xda\x24\xaf\x4f\xb7\x0e\x0e\x4a\x02\xe5\x99\x41\x3c\xc1\x31\x7b\x72\x68\x5f\x3c\x65\x7b\xce\x7b\x71\xc3\xe3\x96\xef\x56\xbc\x18\x9d\x3d\xe5\x8d\xf8\xc1\x7a\x97\x74\xd3\x07\x12\xd1\xa6\xe8\xf2\x3a\x36\x5d\xfa\x2e\x97\x21\xa0\x33\x8b\x70\xb4\xc7\x3a\xd7\x67\x5d\xc1\xc6\xa7\x56\x2a\x10\x33\xed\xea\x2b\xcd\xd2\x8a\x5b\xe0\x08\x78\x7e\x1a\x5e\x1e\x2f\x4f\xb5\xfd\x8b\xf8\xe9\x76\x6e\x25\xa3\xc2\x58\x6f\xda\xc0\x53\xfb\x2c\x5d\xa1\x00\x93\xf4\xfe\xb3\xd8\x2a\x87\xdb\x5b\xd8\xd1\xc5\xeb\x2d\x9e\x8b\x86\x96\xcf\xfb\x5c\x7c\x90\x1b\xd3\xea\x67\x9d\x40\xa8\xbe\x99\x77\x06\x63\x30\xd3\xb6\xe0\xa6\xfd\x6b\x60\xc4\xe2\x0a\x35\x82\x48\xc2\xfc\xd9\x29\xd7\xe5\x1b\xc2\xb5\xd8\x1f\xc5\x40\xff\x7b\xd2\x56\x9b\xaa\xfe\x5c\x04\x94\x3a\x9e\x7f\x08\x7b\xf6\x10\x88\x31\xe0\x39\xa6\x15\xf8\x9d\x02\x7e\xd8\x95\x0e\xd8\xb4\xa8\x0d\x7b\x50\x71\x5c\x42\xcc\x0b\xdd\xea\x3b\xab\x42\x35\x2f\xdb\xca\x40\xb4\xd0\xd9\xe9\xe8\xe7\xeb\x7f\x5e\xff\xfc\xee\xfd\xeb\x0f\x6f\x37\xa6\xd1\x32\xb9\xe1\xa4\xdb\xe2\x03\x84\x11\x23\x77\xd0\x73\x06\x56\x57\x61\x1d\xdd\x9e\x5e\x51\x0b\xc7\x6b\x9b\x25\x68\x82\xbe\x06\x73\x31\x69\x2b\xfd\xa3\x0d\x7b\x50\x53\x45\xa7\x18\x5e\xd6\xd9\xfa\x63\x41\xf0\x2d\x6f\x15\x9a\xb7\x15\x23\x02\x8f\x69\x45\xb5\x6a\x8c\xc8\x9c\x30\x03\xf4\xd3\x7f\xa0\x3b\x19\x56\xa9\xa5\x9b\x36\x1e\x16\x31\xb6\xe5\x11\xf5\xa4\xea\x96\x71\x61\xfd\x68\x96\x26\x12\xbe\x6c\x04\x9d\xd3\x8a\x4c\x89\xe7\x5f\x8b\xa1\x01\xee\xe3\x4b\x70\xd5\xcc\xf0\xb0\x22\x73\x62\x78\x9c\xf4\x15\xa1\x77\xd4\x8c\x33\x2e\x4c\xc0\xc9\x30\x92\xdb\x1b\x02\x98\x6d\xcc\x61\x75\x35\x7b\x4d\x16\xeb\xb5\x4b\x27\xb5\x59\xa4\x4f\x26\xac\x36\x87\x68\xa4\xc9\xaa\x6b\x1f\xe2\x76\x2b\x10\xa6\x41\x8f\x36\x46\x0b\xaf\x77\x7c\x75\x86\x27\xbc\xdd\xc9\x18\x7b\x58\x30\x32\x68\xd4\xa1\x2b\xa1\x04\x4c\x2f\x31\x73\xbe\xb1\xde\x0d\x8e\xb0\x51\x5b\x55\xd7\xa4\x10\x64\x53\xf0\x6e\xda\xd4\x5f\x2c\xb5\xfd\x90\x5b\x26\x70\xbe\x43\x11\x17\xfb\x63\xd6\x55\x6a\x08\xd2\x91\x3b\x9a\xed\xa6\xad\x2a\x13\xdd\x5f\xb8\xe5\x84\xd1\xca\x20\x6d\x84\x4a\x97\xda\x1e\x73\x9b\xf4\xd6\x58\x12\xdf\x35\xb7\xbc\x0d\x96\xb2\x0b\xa6\xce\x69\xd9\xe2\x0a\xba\x05\x1e\x48\x9b\xb9\x8d\x4d\x29\x52\x2b\x11\xeb\xc8\x4a\xfb\x1b\xf2\xfa\x74\xb2\xea\xc4\xcc\xc9\xef\xcc\x60\x16\x94\x4d\x87\xf0\x89\xee\xa6\x1d\xcf\x90\xb3\x21\x1e\x6e\x0a\x9c\x7f\x56\x6e\xaa\xb7\xbc\xc0\xd5\x7b\xf0\xeb\x5c\xb9\xdd\xe6\x04\xba\x44\x84\xf1\x76\x3a\x83\xe9\x15\x35\x76\xb4\xb1\x15\x51\x50\xdd\xd5\x26\x7d\xc5\xf8\xa3\xfc\xce\x2e\xad\x53\x29\xac\xe8\xdb\xdf\xd9\x4f\xe8\xaa\x4a\xf1\x1e\xc5\x22\xec\x72\x84\x31\x2e\x03\xc1\x6d\x67\x36\x32\xe6\xd6\xbf\x54\xc9\x64\x42\x0a\xe5\x80\x20\xc6\x8d\x37\x80\x58\x61\xd9\x1a\x6e\x68\x5c\xdc\xde\x61\x51\x4a\x54\xf0\xba\xc1\x8a\x82\x8a\xb1\x88\x45\x89\xb8\xdc\x03\x93\xe3\x06\x79\xa9\xc7\xe8\x82\x49\x85\x41\x06\x3a\x8a\x0b\xbd\xc2\x5d\x5a\x2a\x64\xaf\x1a\x86\xb0\x19\x11\x04\x61\x11\x87\xd6\xc1\x55\xad\x95\xcd\x82\x08\xbd\xf7\xab\x05\xba\x13\x9c\x45\xa6\x87\x6f\x28\x94\xf8\x9c\x88\x39\x25\x77\x27\xd6\x9a\x1e\xea\xc1\x0d\xcd\x16\x96\x27\x70\x12\x4e\x7e\x07\xff\xef\xf9\xf8\xa5\x96\xdc\x43\x35\x6e\xe2\xdd\x7e\x5f\x41\xec\x87\x32\xda\xf1\xde\x3c\xa9\xb2\xf1\xd6\x2a\x13\xb6\x36\x05\xfd\xb7\x91\xe3\x81\xd2\x3e\x26\x15\x67\xd3\xa0\x2a\x87\x36\x4e\x36\xd5\x0a\x18\x55\x3d\x43\x00\x00\x02\x50\xac\x1d\xa2\x90\x5c\x94\xc0\x77\x44\x0d\x28\xbb\xd7\x3a\x94\x4f\x0e\x98\x96\x30\xdb\xd4\xc1\x4d\x7b\xad\x43\xae\xbe\xec\x0c\x5b\x93\xb2\xec\x18\xec\x15\xd7\xc6\x08\xf1\x45\x9c\x8d\xb1\x60\x31\x9c\x08\x17\x05\x17\xe5\xe6\x47\x45\xab\x3a\xca\x53\x46\x19\x2a\x06\x43\x96\x01\x7a\xaf\x56\x72\x30\x5b\xee\x27\x58\xe2\xa2\xee\x11\xeb\x58\x6f\xd5\x86\xcd\xb7\x8c\xfe\xd2\x12\x84\x6b\xae\xf5\xbe\x2a\x25\x61\x6b\x79\x25\x6b\xbc\x00\xc5\x1e\x26\xed\xad\xe3\x40\xd4\x96\x9d\x56\xdf\x06\x00\xf6\xa4\x41\xa1\x90\x01\x7a\xdb\xaf\x1c\x32\xd0\xe3\xbc\x36\xac\xfd\xf6\xa3\xcd\x6d\x3d\x20\xd7\xe1\xad\x28\xc8\x95\xb9\x88\x6a\x4b\x10\xb1\x66\x5a\xf5\xde\x53\xf8\x96\x30\x13\xb3\xd4\x4b\x0a\xc9\x5a\xad\x80\x9d\x56\xcc\x48\xd9\x56\x9b\x2f\xf1\x78\x81\x26\x5a\x9d\xb5\x58\x97\x19\x9d\xce\x88\x54\xce\xf3\x79\x02\x94\x06\x26\x6d\x0e\x17\x33\xdf\x5d\x90\xbf\x01\x19\x5a\x07\x96\xa9\xf1\xfd\xe6\x04\x17\x60\xbc\x5a\x56\x5c\xe3\x49\x90\x6d\xed\xee\xfe\xe5\xcd\x24\x8f\xd1\x5b\xdd\x2b\x73\x1c\x71\xd3\x54\xd4\x69\xe5\xbd\x35\xde\xf8\xb4\x01\x3d\x1e\xc0\x88\xd0\x04\xcb\x19\xe5\x2c\x75\x97\x15\x06\x5c\x50\xb4\x42\x2b\x2f\xd5\x02\xd8\xcd\xcb\x52\xeb\x87\x02\x09\x52\xf3\xf9\xe6\x7e\xdb\x64\xc0\x42\x1a\x67\xa8\x9e\xe4\x61\x60\x6f\x3c\x13\x23\xe2\xd4\x33\x1f\xea\xfd\x52\x2c\xdd\x16\x66\x03\x6a\xed\xdf\xd5\x67\x15\x2d\xeb\xd2\x1c\x23\x6e\x8e\x2d\x85\x96\x23\x92\x11\x53\xcc\x03\x2c\xa6\x5b\xcb\x0f\x3e\x15\xd3\xd6\x88\x4b\x7b\xbf\x43\x8c\xb3\xe1\x34\xde\x4a\x58\x81\x14\x1d\x48\x74\xf6\xee\x75\x48\xc7\x1c\x16\xd1\x76\x64\xdd\x71\xcd\x7d\xcc\x0b\x46\x04\x15\xc3\x23\x1c\xa3\x7a\x54\x78\xc9\xa2\xc5\x7c\x35\x77\xde\x2e\xdf\x41\xe7\xa4\xa1\xac\x69\x95\x55\xbe\x83\xaa\x9b\xc5\x0c\xb3\xa9\xd6\x76\x5e\xf3\x56\x0f\xec\xf7\xbf\x87\x41\x08\x52\xb6\x45\x64\x22\x89\xf1\xa6\x99\x93\xfb\x7b\x07\xe9\xb6\xe5\x7d\xe1\x52\x92\x05\x6e\xdc\xd4\x84\xb3\x27\x17\x4c\xe1\xfb\x6f\x11\x3d\x26\xc7\xe8\xc5\xef\x83\xaf\x5e\x40\x8f\xa3\x7a\xd3\x08\xae\x87\x62\x29\x52\x61\xf4\x15\x55\x90\x4a\xfe\x22\x6c\xe1\x18\x9d\xeb\x7e\x41\x86\x94\x5f\xdb\x80\xf5\x72\xdc\xad\xec\x00\x09\x32\xc5\xa2\xac\x48\x24\xcb\x18\x9f\xf8\x64\x1e\x43\x23\x6f\x77\x15\xb9\xa7\x52\x49\x1b\x16\x39\xce\x03\x73\xfb\xd2\xbb\x43\x61\x79\xab\x6f\x0a\x2d\xfc\x86\x25\x56\x78\x18\x48\xdd\x13\xe3\x15\x1d\x16\xbc\xae\x31\x2b\x87\xd8\x9e\xe3\xee\x52\x39\xf9\x9d\x2d\x8e\x30\xc4\xfe\x57\x94\x0d\xf1\x50\xce\x48\xd4\xca\xed\x31\x26\xf0\xd8\xb9\xdc\x96\xc0\x3e\xf7\xf2\xd9\x2c\xc5\x31\xba\xe4\xaa\x33\xa7\xfc\x6d\x0b\xab\x9c\x53\x84\x9f\x5f\xde\x5c\xfd\x73\xf4\xfe\xe2\xf2\x66\x2f\xc9\xf7\x92\x1c\x9e\xbd\x24\xdf\x4b\xf2\x88\x86\x77\x45\x92\x13\x36\xdf\x96\x14\x77\x8e\xb7\x75\x79\x35\x36\xa0\xa7\x56\x00\xfa\x5b\x87\xe6\x6f\x9b\x5e\xe7\x9c\xcd\x3f\x62\x6d\xf2\x5b\x7c\x8a\xc5\x3e\xaf\x49\x4d\xb2\x3f\x30\xee\x88\xb3\x67\xcf\xaf\xb3\x45\x76\x9c\x8c\xec\x10\x61\x28\x6a\xdd\xaa\x75\xa5\x3d\x31\x3a\xfb\xf9\xe2\xf5\xf9\xe5\xcd\xc5\xf7\x17\xe7\x57\x5b\x4d\x1c\x04\x7f\xda\x2e\xa4\x0c\x6e\xa2\x1f\x25\x34\xd3\x69\x56\x8d\x20\x73\xca\x5b\x59\x2d\x90\x83\x60\xac\x17\x57\xab\x54\x45\x89\x19\xd8\x06\x8f\x43\x8b\xf5\xdb\x44\x2e\xe9\x76\xeb\xf4\xb4\x84\xe6\xb7\xac\xe1\xd9\x4e\xe4\xd0\xf3\x12\xda\x5f\xa3\x21\x7e\xb9\xb6\x97\xd0\x6e\x94\x9e\xf8\x90\xce\x97\xd0\x8f\xbe\xb6\x98\xf0\xa2\x7e\x8a\xea\xf6\x25\xd9\xf7\x82\xd7\x99\xa4\xd9\xb5\x89\x61\x38\xd4\xe2\xba\xa3\x7a\x60\x2b\x06\xf6\xf4\x6d\x6b\x39\x76\xa5\x04\xb5\xfd\x0a\xf1\xfc\xc4\xd9\x49\x2a\x35\x9c\xa7\xda\x2f\xb2\x09\x96\xef\x70\xf3\x77\xb2\xb8\x22\x89\x45\x53\xfb\xf3\x4d\x2a\x52\x68\x9d\x07\xdd\x92\x85\x61\x54\x3a\x73\x8d\xa5\xd5\x8d\xcd\x32\x7d\x28\x4b\xbd\x66\xf3\x0c\xf5\x10\x93\xde\x91\x67\x31\xf5\x73\x4b\x12\x78\x88\xdc\xb3\xc4\x92\x45\x60\x09\x41\xcd\xd7\x6b\x9a\xb6\x7a\x28\x57\x85\x66\xf3\xa4\x29\x7c\xee\xc9\x59\xad\xd9\x3c\xf9\x80\x4c\xfd\x67\xbb\xb0\xa6\xfe\xb3\x55\x90\xd3\x72\x57\xf2\x41\x9e\xfa\xcf\x2e\x01\xa0\xfa\x4f\xc6\x53\x94\x02\x8e\x5a\x7e\x1c\xf6\x37\xf3\xa9\x34\x20\xef\x45\x4f\x75\xf2\x17\x0a\x32\x3c\xfd\x20\xa7\x5c\x92\x94\xb5\x02\x32\x4d\x73\x1a\x57\x9c\x79\xf2\xc1\xc8\xfa\x0f\x88\x83\xbc\xb7\x77\xb2\x0c\xec\xae\x7f\x23\xac\x7c\xd1\xfa\xf2\x5b\x47\x9e\x25\x51\x4d\x14\x2e\xb1\xc2\xc7\xfa\x40\x0c\xfa\xff\xb4\x19\x32\xff\xe3\x3f\xac\xf0\x98\x54\xf2\xc7\x83\xff\xfc\xfb\xf9\x3f\xff\xbf\x83\x9f\xfe\x27\xfc\x0e\xd4\x35\x83\xc2\x0e\x7e\x90\x38\x04\x28\xf7\xc5\x78\x49\x2e\xa1\x77\xf0\x4f\x6b\xe9\x9d\x1a\x20\x8e\xfd\x02\x4a\xae\x1c\x9b\xec\x4f\xff\xcf\x86\x97\xcb\xff\x4a\xa8\x68\x8d\x76\x53\xef\x81\xb5\x4d\x60\x52\x36\x4f\x3e\xed\x07\x37\xf4\x23\x11\x32\x89\x7c\xd7\x3d\x7d\xaa\x6c\xf3\x56\xb7\x8d\x65\x31\x23\x35\x86\xff\xfc\xde\x4d\x81\xbe\x8f\x7d\x51\x2c\x06\xb5\x6d\xf4\x1d\x38\xe8\xb1\x91\xbd\x98\xbf\x4a\xb2\x38\xcd\x93\x51\xf2\xfb\x15\xcc\x3c\x61\x30\x23\x76\xb6\x8c\x04\xf0\xfa\xa3\x4f\xfb\x70\xb9\x17\xe8\x74\x74\x81\xe6\x66\x86\x77\x68\x72\x1e\x4b\x5c\x3b\x3c\xdd\xf7\x3b\x2d\xb6\x3d\xea\x6f\xb9\x44\xc5\xb7\x26\x1d\xcd\x7d\x6f\x2b\x20\x49\x5f\x6e\x9d\x6c\xce\xa6\xb2\xfc\x1c\x9a\x57\x1e\x17\x4d\x3b\xb0\xaf\x3f\xae\x49\xcd\xc5\xc2\xff\xd3\x13\xfa\x0f\xa5\xe2\x02\x4f\x81\x86\xd6\x34\x6e\xfe\xcc\xff\xcb\xfc\x61\xaf\x7b\xab\x7f\x6d\x1c\x92\x1d\x66\xcf\xf3\x3b\x7e\x75\x22\xdb\xad\xdb\x8e\x48\xec\x22\xb5\x82\x6a\xff\xe9\x9d\x86\x03\x1f\x4a\x31\x66\xa2\x9f\x45\xf0\x02\xd9\x3a\x13\x83\x2e\x59\x0d\x5c\x95\x6c\x8e\xe6\x58\xc8\x83\xdd\x91\x43\x08\x95\x74\x4e\x25\x4f\xa0\x02\xf4\x2f\x5a\xd5\xa8\x5d\xda\xa4\xad\x68\x66\xd2\xa3\x7c\xdc\xe3\xbe\x81\xb2\xc2\xfe\xb0\x2f\xdd\x66\xaf\x52\x8d\x05\x84\x1a\xac\x14\x11\xec\x5b\xf4\xdf\x87\xff\xfa\xe6\xd7\xe1\xd1\x77\x87\x87\x3f\xbe\x1c\xfe\xed\xa7\x6f\x0e\xff\x75\x0c\xff\xf1\x1f\x47\xdf\x1d\xfd\xea\xfe\xf1\xcd\xd1\xd1\xe1\xe1\x8f\x7f\x7f\xf7\xe6\x66\x74\xfe\x13\x3d\xfa\xf5\x47\xd6\xd6\xb7\xe6\x5f\xbf\x1e\xfe\x48\xce\x7f\xfa\xc2\x97\x1c\x1d\x7d\xf7\xfb\xe4\xae\x63\xb6\x78\x9f\x28\xbd\xcd\x33\xcc\x52\x40\x7f\xdd\x1b\x33\x59\x87\xbd\xab\x90\x32\x35\xe4\x62\x68\x5e\xfd\x2d\x64\xe2\x27\x36\xe0\xb6\x57\xee\xf3\x7f\xe5\xa4\x66\x80\x61\x77\x5a\xc8\x0e\x1d\xf0\xc7\x52\x34\x4c\xee\xe7\x53\x78\x76\x4d\x4b\x41\x7d\xa6\x03\xd9\xa5\x3d\x7e\x6d\x37\xe8\x6f\xc1\xd9\xeb\xec\x1c\xb3\xae\x9d\xea\x3e\x11\xbc\xb6\x55\x5b\x4c\xe4\x7b\x8e\x2b\x5a\xba\xdf\xdd\x92\x84\xa8\x88\x7b\xf6\xce\xe1\xe8\x67\xef\x1c\x7e\xa0\x2b\x7b\xe7\x70\xd2\xf3\x2c\x9d\xc3\x86\x91\xe2\xb7\xe9\x19\xce\xcf\xb4\x1c\x89\xe9\xca\x49\xb2\x4c\xd8\x3c\x16\x0f\x90\x13\x04\xe9\xdc\x1e\x61\x0d\xee\x2f\x43\x1a\xc5\xe3\xdb\xf5\xca\x79\x58\x53\x07\x9a\x37\x2a\x6d\xbd\x1e\x86\x86\x4e\xab\x0a\x51\x66\x2e\x68\xfd\x82\xa8\xd6\x3d\x95\x16\xb1\xf5\x2e\x2c\x85\xeb\x5c\x0f\xd5\xd3\x60\x05\xf8\x7b\x69\x12\xa0\x29\x9b\x1e\x1b\x36\x29\xa3\x26\x5a\x88\x0a\x65\xa8\x6e\x2b\x45\x9b\x48\xbc\x8b\x37\x43\x0d\x72\x46\x5f\x14\x58\x4a\x5e\x50\xec\x0b\x7c\xfb\x12\xe4\x76\x7a\x60\x04\x0a\xdf\x02\x44\xac\x20\x25\x61\x9b\x33\x71\x98\xe7\xa3\x6e\xaf\x5b\x87\xf1\x42\xcf\xc4\x39\x9b\xdb\xfb\x0b\x95\xad\x81\x49\x1b\x15\x2a\x5f\xbb\x5f\x17\x26\x56\x9f\x61\x0b\xc6\x09\xa0\xb1\xa0\x6d\x7a\x87\x23\x06\x44\x31\x9f\x74\x11\x3e\x40\x37\x59\x92\xa1\xed\xe0\x62\xd3\xd5\x76\x0f\xb6\x49\xb2\xc7\x56\xf4\xf5\x2e\x0a\xda\xd7\xd3\xbf\x06\x7c\x52\xba\x06\x9f\x57\x7b\x7f\x0c\xcd\x7d\x57\xb4\xf6\x1d\xd1\xd8\x1f\x47\x5b\xdf\x4d\x4d\x3d\x9b\x96\x9e\x47\x43\xcf\xa3\x9d\x6f\x00\xdb\xc8\xa9\x91\xe7\xd1\xc6\x1f\xc3\x17\xd7\x08\x32\xa1\xf7\x99\x24\xbe\xe3\x52\x45\x8a\xdc\x83\x67\xa6\x11\xa4\x21\xac\x74\x19\xf1\x8e\xfa\x10\xa8\x3b\x9e\x4d\xde\x82\x71\x20\xe5\xbd\x17\xaf\xd7\x39\xaf\xf6\x97\x22\xda\x5f\x8a\x1b\x3c\xfb\x4b\x71\x7f\x29\x3e\xc9\xa5\x68\xa5\xd5\xd7\x7f\x23\xe6\x2e\xa2\x51\xe3\xe9\xd6\xe8\x2a\xcf\xfa\xbc\x03\x20\x99\x9f\x84\x67\x71\x85\xfc\x35\xd2\xb5\x14\x0a\x59\x8f\x83\x50\xdc\x88\x3d\x43\x0c\x26\x90\xe1\xa2\x36\xd6\x2b\xaa\x31\xc3\x53\xe0\x2c\xd3\xbf\x73\x95\xbf\xb8\x40\x5a\x3a\x08\x1a\x59\x60\x76\x89\xc0\x01\x1c\x45\x8e\x84\x0a\xbe\x14\xbc\xaa\x88\x90\xa8\xa2\xb7\x04\xbd\x26\x4d\xc5\x17\xb5\xcd\xa9\x2d\xd1\xb5\xc2\x8a\x4c\xda\xea\x9a\xa8\x84\x7a\x34\x91\x12\xc7\xd3\x2f\x1b\xaa\xbc\x6d\x6d\x45\x60\x62\x06\x66\x62\xd4\x18\xce\xbe\xa8\xd7\xbc\x67\x70\x95\x9f\x56\x77\x78\x21\x07\xe8\x92\xcc\x89\x18\xa0\x8b\xc9\x25\x57\x23\xe3\xab\x89\x7b\x6f\x98\x59\x66\x5e\x8e\xe8\x04\x7d\x5b\x61\x45\xa4\x42\x0a\x4f\xc1\x73\xd8\xb1\x31\x73\xd1\x6b\xb4\x2b\xa6\xbb\x45\x17\x5a\x06\x8a\x66\x68\xdd\x13\x34\x3f\x39\x09\x6a\xe5\x48\x0f\xb7\x46\xe0\x65\xb8\x16\x0d\xf7\x9a\xa1\x0e\xf4\xe2\xc4\x10\xa8\xbb\x52\xa1\xe0\x39\xa5\x0c\x09\x22\x1b\xce\x24\xe9\x71\x6d\x76\x03\x31\x9e\xe8\x48\x64\x75\x46\xc7\x6a\xb4\x61\x90\x6a\x12\x34\x5c\x2a\xa0\xa4\x8c\xd5\x4f\x72\xd9\x02\x23\xd7\x11\x60\x29\xc5\x55\x45\x4a\x44\xeb\x9a\x94\x14\x2b\xad\xb7\xe3\x89\x22\x02\xe1\x7e\xac\xc0\x16\x93\x38\x36\xd5\x70\x5c\x01\x7a\xc7\x7b\x1a\x6f\xac\x2d\xc7\x24\x14\x11\x35\x65\xd8\x16\xdc\x76\xe4\xa6\x21\x4b\xea\x12\xef\x69\x92\x10\xd5\xcf\x7b\xd0\xec\x82\xed\xbd\x8c\xa3\x45\xe3\x8a\x17\xb7\x12\xb5\x4c\xd1\xca\x56\x2e\xe0\xb7\x60\xbf\x54\x20\x4e\xa2\x9b\x8e\x97\x52\xfe\x3f\x87\xfe\x80\x0d\x75\xaf\xe4\xc9\xef\xba\xaf\xe0\x83\xc8\xce\x65\xb0\xa2\x73\xd8\xd0\xe4\x9e\x14\x29\xfa\x7c\x3f\xa6\x71\x4f\x0a\x7f\x75\x49\xd8\xe1\xc0\x7a\xa3\x77\x94\x65\xba\xca\x14\x0a\x34\x4f\x26\x48\x54\x2e\x18\x52\x02\xc3\x58\xf8\xe4\x46\xd9\x9c\xd9\x45\xa0\xd2\xce\xbc\xf9\x67\x45\x19\xe9\x2f\x8c\x27\xeb\xf7\x8b\x63\xa2\x8b\x2b\x55\x74\x5d\xee\x78\x72\xd7\x5c\x5f\x74\xdf\xa0\x8c\xcc\xe1\xc1\xc9\xc1\xd1\xca\x1e\x39\x30\x05\x2e\xcd\xb5\x78\x6c\x79\xce\xfc\xa0\x24\xad\x1b\xa8\xea\x4c\x8a\x03\x57\x84\x3e\xb9\x67\xfa\x36\x34\x45\x93\x60\x56\x2c\x2f\xdb\x00\x49\x8e\x94\xc0\x25\xb5\x06\x02\x7c\xaa\x7f\xa4\x44\x6b\x2f\xf4\xc3\x83\x5f\x0f\x06\x88\xa8\xe2\x08\xdd\x71\x76\xa0\x60\xfa\x8e\xd1\x0d\x54\xc2\x48\x47\xda\xba\x8e\x2c\x78\x0b\xf5\x96\xcc\x12\x36\x15\x2d\xa8\xaa\x16\x70\xdd\x20\xde\x9a\xca\x50\x5a\xb5\x48\xe0\x93\x0b\x9f\xf3\x7b\xaa\x6c\x0a\x97\x96\xdf\x2f\x97\x0a\xfd\x57\x74\x4e\x4e\x66\x04\x57\x6a\x66\x12\x0c\x18\x67\xc3\x7f\x13\xc1\x81\x73\x8e\xd9\x6f\x52\xbb\x91\x16\xb9\x0d\x9f\x84\x28\xee\x6a\x87\xb2\x60\x8b\x32\x3b\x03\xdc\xa3\xaf\xbd\x37\x24\x5a\x25\x42\x2b\x65\x50\x6f\x6e\x46\x6f\x88\x0a\xa5\x3c\x83\x0f\xd1\x9b\xf3\x1b\x97\x56\x02\xce\x78\x22\x26\x5c\xd4\x3b\x20\xde\xf3\xe0\x5d\x87\x50\x8b\x70\x07\x6e\x99\x19\x97\x49\xcb\x89\x1e\xe1\x8a\x31\x95\x23\x71\xed\x6c\x13\x46\x0a\xbd\x09\xfa\x39\x12\x8e\xba\xff\x62\x74\x8c\xfe\xc9\x5b\xa0\x8d\xc7\xe3\x6a\xe1\x59\xa7\x25\x49\x03\x36\xeb\xe7\x85\xee\xca\x0b\x7d\x83\xe8\x9d\xff\x03\xc1\x25\x11\x12\x04\x34\xc1\x89\x29\x4c\x19\x8f\x7b\xd0\xb7\xac\x4b\x79\xd6\x4a\xc5\x6b\x34\xb3\xc3\xee\xf3\xd1\xd9\xc3\x79\x6c\x8e\xab\x25\x25\x12\xa4\x31\x42\xdc\xfe\xcd\x57\x27\xa2\x57\xa4\x97\x99\x77\xfb\xf9\xd8\xa8\xa9\xe1\xb4\xd9\x00\x87\xa1\xbb\xb1\xb2\xcd\x54\x38\xc8\x74\x5d\x64\x80\xf0\xa3\x8c\x30\x7e\x94\xc6\x54\xb7\xfc\x22\x08\xf6\x24\xbf\x29\x5f\x66\x00\xca\x86\x7e\x47\x8f\x82\x80\x47\x16\xd8\x68\x37\x9f\xf1\x41\xc7\x7b\xcf\xd7\xbd\x9c\x76\x45\xdc\x0a\xcc\x38\xa3\x05\xae\xe8\xbf\x49\x89\xda\x86\x33\x9b\xee\x06\x9a\x6d\x81\x25\x19\x42\x74\x9c\x19\x71\x2e\x03\xce\x34\x2d\x1d\x14\xe7\xa0\xee\xf9\x8a\x5e\xa6\xd7\x79\xba\x9a\x15\xa8\x9d\x4c\x00\x18\x3e\x2b\x01\xf5\xde\x62\xe5\xd9\xf1\xe8\x59\xa8\x93\xc8\xe4\x29\x26\xe7\xc8\xaf\x66\xc8\x9b\xa2\x2e\xc0\x0a\x67\xae\x2b\x10\xbc\xa6\xbe\xe7\xce\xdc\xdb\x5a\x05\xdc\x35\xdd\xcb\x60\x0e\x04\x62\x6d\x3d\x26\xa2\xa3\x17\x11\x6a\x75\x4e\xb3\x78\x5d\x6c\xb3\xa6\x39\x17\xa5\x75\x3a\x06\x66\x53\x82\x5e\xe9\x96\xff\xf2\xe7\x3f\xff\xf1\xcf\x19\xda\xd1\xc3\xf3\xc0\x6e\x86\x2e\x4e\x2f\x4f\x7f\xbe\xfe\x78\x06\xa4\x85\xa9\xaf\xcf\x94\xb7\x9a\x3b\x6b\x35\x6b\xce\xea\xa3\x66\xac\x02\xfd\x47\xb2\x94\xcd\x7d\x24\xae\xa1\x57\x61\xf9\x54\x6b\x93\x04\xf5\xd0\x62\xca\x13\xaf\x3e\x61\x30\x4f\x0b\xac\x9d\x90\x54\xb2\x22\xa4\xc9\x66\xf1\x5f\xeb\xb7\xf5\xb8\x9b\x51\xd9\x0a\x5b\x38\xd4\x05\xaf\x3a\x5f\xbe\x0d\x5a\x41\x1f\xbe\x22\xe3\x5f\x92\x82\xb3\x32\xc5\x04\xc8\xa5\xd2\xda\x9e\x64\x3d\x73\xd7\xe6\x9d\xce\x45\xdc\x5d\x25\xb6\x31\xb0\x24\x53\x57\x14\xf9\x55\xcd\x23\x27\x0d\x41\x03\xbc\xed\x2f\x7f\x8a\x0f\x90\x15\xcd\x35\x2f\x6e\x33\xba\xc8\x12\x05\xd8\x6b\x7d\xd2\x0a\x13\x0b\xbc\x39\x1b\x99\xce\xe9\x95\xb9\x7c\x7f\xd3\xb1\xb1\x40\xf6\x51\x57\xba\xef\x07\x1b\x2d\xc4\xac\x44\xb7\xa4\x49\xb3\x2e\xb5\xc0\x74\x30\xc2\x3e\x8a\x10\x7c\xef\xc2\xb2\xbf\x9a\x8c\x67\x23\x08\x1c\xfa\xcf\x68\xc4\x69\x3c\xd2\x41\x70\x1e\x02\x81\xd6\x08\x99\x60\x5a\x21\x0c\x5e\x79\x45\x6b\x62\x52\xae\xc0\xd9\xdf\xa1\x25\xbe\x22\x81\xf3\xb5\x7a\x1b\x0f\x1c\x6c\xfb\xdb\x8d\xbd\x86\xa9\x44\x15\x5f\xb7\x19\x60\x65\xb6\x40\x61\xc9\xff\xbd\x19\xf0\x25\xcf\xde\x0c\x88\x34\x03\x1a\x41\xae\x15\x8f\xd6\x35\xb3\x01\x6e\x4c\x37\x1e\x80\xdb\x8c\xc9\x84\x0b\xb2\x8c\xb7\x09\x70\x30\x16\x39\x9f\x80\x0c\x3e\x1d\x5d\xf8\xd8\x17\xef\x61\x5d\x4c\x7a\xb0\x6c\x8b\x99\x0b\x93\x32\x22\xe5\x89\x0c\x4b\xe7\xc2\xd5\xd6\x0a\x12\x8f\xf2\x69\x04\x21\x35\xcc\xe3\xa0\x23\xf8\xd1\xc3\x25\xcc\x7c\x48\x54\x61\xe2\xe6\x0e\x56\x64\xf9\xdb\xdd\x74\x4d\x92\xc2\xf9\xdd\xc4\x16\x02\xcb\x19\x81\x14\x55\x72\x4f\x95\x34\x8d\x8e\x80\x06\xc7\xcd\xb8\xd6\x17\xa6\x02\x17\x04\x35\x44\x50\xae\x55\x8c\x96\xa9\x92\xdf\x31\x34\x26\x53\xca\xa4\x5b\xb1\x94\x2e\xb9\x2d\x01\x48\x22\x2a\x7d\xa1\xb5\x63\x74\xd5\xab\x3f\x60\x09\xbf\x0a\xde\xc9\x4c\x3b\x45\x83\x4c\x53\x02\xca\x0b\x6c\x83\x16\x57\xd5\xa2\xdb\x78\x2e\x7d\x5d\x3d\x3c\x43\xf1\x1b\xc2\xcc\xec\x61\xcb\x60\xa0\x25\xa9\xf0\xc2\x24\x6a\x4f\x28\x03\xef\xaf\x90\x47\xc7\xe9\xd0\xac\xe8\x0e\x72\x11\xbc\xf3\xc1\x9d\x41\x25\x12\x04\x17\xb3\x14\xcd\x6e\x8f\x01\xfb\xdc\xb3\xc7\x80\xed\x31\x60\x7b\x0c\xd8\xea\xb3\xc7\x80\xf5\x9f\x3d\x06\xec\xe1\x0e\xed\x72\xd0\x6e\x8f\x01\xdb\x7b\x65\x56\x9f\x3d\x06\x2c\xea\xd9\x63\xc0\x3e\xfb\xec\x9c\x88\xde\x63\xc0\xbe\xe0\xd9\x63\xc0\xbe\xf0\xd9\x63\xc0\xf6\x18\xb0\x3d\x06\x6c\x8f\x01\x4b\x78\xf6\x18\xb0\xcd\x87\xb7\x0f\xfe\xc4\x3f\x7b\x0c\xd8\x1e\x03\xb6\xe1\xb3\xc7\x80\x2d\x3d\x7b\x0c\xd8\x1e\x03\xf6\xa9\x67\x8f\x01\xdb\x63\xc0\xec\xb3\xf7\x36\xae\x3c\x7b\x0c\xd8\x9a\x67\x8f\x01\xdb\xac\x9d\xbd\x19\x90\xf6\xb2\x47\x31\x03\xa4\xe2\xcd\x35\x9d\x26\xf0\x42\xe6\x3a\x06\xd7\xbe\x27\x96\x34\x52\xa2\xbb\x19\x2d\x66\x48\x9a\x0f\x9d\x1f\x4b\x5a\xca\xbe\x10\x11\x16\xdc\x24\x63\xa2\x4d\x04\x3d\xac\x26\xe5\x36\xb9\x98\x40\x00\x39\x60\x72\xd3\xa7\xc2\xd1\x04\xd2\x5e\xf5\x84\xbe\xfa\xec\x6e\x37\xca\xb4\xed\x12\xdf\x83\x60\x3e\x0a\xcc\x4c\xb1\x52\x18\x3e\x14\x37\x44\x23\x5e\x4a\x57\xb0\x81\x71\x36\x34\x64\xad\xc7\x50\xdd\x99\xcb\xe3\x04\x6f\x70\x22\x33\x9b\xc1\xc8\x8d\x04\x1f\x6f\x8d\x9d\x6d\x04\xf8\x23\x5a\x58\x80\x1e\x9f\xf4\x18\xd7\x4c\x07\x23\x99\xd6\xfa\xc0\x30\x28\x28\xe2\x28\xb8\xa8\x15\xd8\x1e\x14\xb8\x4d\x36\xb7\x8d\x91\x53\x8e\xa5\x52\x9e\x34\xdc\xfc\x4f\x87\x9b\x0a\x00\x53\xd1\x71\x94\x2d\xd3\xcb\xa5\xa0\xa4\xb6\x86\x90\xda\x11\x84\x59\x06\x54\x54\x4e\x5d\x69\x47\xd1\x50\xbb\x89\x84\xda\x45\x14\xd4\x36\x10\x50\x5b\x47\x3f\xe5\x09\xab\x67\x08\xa9\x67\xd2\x48\x1f\x21\x3c\x65\x81\xf4\x37\x33\x41\xe4\x8c\x57\xd1\x02\x27\x97\xb0\x79\x47\x19\xad\xdb\x5a\x9f\x5d\xa9\x65\x0a\x9d\x7b\xb0\xbf\x74\x22\xc3\x5e\xf7\x06\x71\xa0\x7f\x48\x4b\x02\x95\xb9\x31\xad\xf4\xd6\x02\xb2\xd0\x19\x9e\x83\x52\xda\x16\x05\x21\x65\x8a\x5a\x1a\x7a\xab\xff\x78\xec\x7b\x68\x38\xfa\xa9\x44\xaf\xd2\xae\x9a\x34\xbb\x27\x70\xe7\xfd\xf1\x0f\x51\xef\x98\x8a\x26\xcf\x2d\xfd\xe6\x6a\x74\xd6\xbb\xa5\xe1\x83\x1f\xe0\x18\x9f\xcd\x48\x71\x7b\x65\xa1\x34\xdb\xbb\x99\xd3\xdd\x4c\x49\x2e\xa6\x1c\x8a\x41\xaa\x17\xa5\x1f\x43\xe6\x42\x2d\x85\x40\xa7\xb0\x8a\x44\xcc\x69\x41\x8e\x9f\xc0\x51\x91\xcb\xf8\x4f\x3f\x08\x08\xc2\x04\x30\xf0\x5d\x51\xbb\xae\x4d\x77\x7c\x84\x21\xf0\x51\xd9\x9e\x02\x68\xb4\xc2\x85\x5f\x9b\xe9\xfa\x43\x97\xd4\x8d\x43\x49\x88\x37\x68\xa6\x54\xcd\xda\xf1\x71\xc1\xeb\x13\x2d\x3a\xcc\xff\x8c\x2b\x3e\x3e\xa9\xb1\x54\x44\x68\x1b\xc7\x5e\xeb\xc3\x42\xf7\x80\xb2\xe9\x71\x5d\x1e\x1d\xff\x9f\xa4\x3e\x5c\x58\x5f\xb9\x4d\xc3\x7a\xc0\x49\x30\x26\x5a\xee\x73\xb1\xe4\x2d\xd0\x93\x92\xbe\x49\x93\xef\xef\xd4\xa2\x22\x89\xb0\xe4\xad\x40\x92\xf7\x52\x1b\x65\x08\x08\xe4\x14\x2a\xbb\x01\x3b\x7e\x34\xc8\x71\x96\xb3\x9a\x09\x6a\xbc\x43\x30\xe3\x9d\xb1\x85\x76\x05\x5a\x9c\x0d\x56\x9c\x0b\x52\x9c\x05\x4e\x9c\x03\x4a\x9c\x0f\x46\x9c\x07\x42\x9c\x1f\x3e\xfc\x68\xd0\xe1\x67\x01\x1b\xce\x18\x1f\xcb\x04\x17\x7e\x0a\xa8\xf0\xee\xfa\x60\x50\x06\x78\xf0\xd3\x41\x83\xb3\xcc\x63\x56\x2b\x36\x51\x24\x6c\x01\x0a\xfc\x14\xf1\xff\x47\x8b\xfd\x67\x88\xfb\xe7\x8c\xf9\x67\x8b\xf7\x3f\x1a\xe4\x37\x1d\xee\x9b\xd5\xa7\xf0\x24\x30\xdf\x9c\x10\xdf\xe4\xf5\xa5\x8c\x2a\x8a\xab\xd7\xa4\xc2\x8b\xeb\x34\x20\x68\xae\x95\xb8\x5c\x01\x8b\x1a\xb7\x75\x1f\xd7\x30\xc3\x12\xb9\x50\xb7\xa5\x78\x71\xb1\x74\xab\x02\x23\x0c\x11\x67\x3d\xbe\xe8\xa8\x35\xda\xbd\xc8\x35\xda\x19\xf7\xb8\xe1\x55\xd9\x91\x5d\xf3\x03\xbf\x43\x7c\xa2\x08\x43\x87\x94\xb9\x9d\x73\x14\x78\x69\xba\xf0\x48\x72\xbc\x43\xbf\xf5\xd5\x4b\xd7\xc8\xd7\x17\xf7\x80\xc8\x90\x94\x3b\x1d\xf9\xb2\x7d\xfc\x7c\xe8\xcb\xfe\x70\xd2\x56\xfd\xf0\x97\x09\x89\xe5\x89\x7d\xbd\xea\xaa\xbf\xbf\x82\xfe\x78\x51\x84\x59\x89\x2c\x3f\xd7\xd7\xb7\x4f\x92\xa1\xee\x7d\xe3\xc6\x63\xd3\xfb\x78\x16\x73\x03\x6b\x2d\x93\x23\xac\x7f\x05\x0a\xe8\xde\xe9\xba\x33\x4e\xd7\x2d\x21\xb0\xbf\x3e\x6b\xeb\xe9\x11\xd7\x7b\x6b\xeb\xb7\x62\x6d\x05\xb4\x78\x6f\x04\x2e\xc8\x68\x97\x94\x37\x27\x40\xba\x44\xc0\x4e\x87\xf3\xe2\x82\x11\x62\x12\xc7\x3a\xd2\x43\xe0\xf7\x9b\xb4\x55\xb5\x30\x3e\xc4\x1e\x03\x66\xfc\xd6\xba\x99\x91\x15\xea\x40\x08\xa5\xae\xe9\x5d\x67\x9b\x34\x82\x5b\x8d\x44\xb4\x8c\x69\x15\xc3\x1e\x27\xdd\x79\x6d\x8b\x48\xc2\xe2\xdd\xe9\xb8\x47\x6c\x68\x41\xe8\x00\xf4\x9c\x11\xd4\xe5\x2f\xf5\x3b\xa2\x5b\x9d\x70\x51\xd0\x71\xb5\x40\x33\x5c\x69\x63\xc9\x82\xb4\x6f\x69\x55\xd9\xd7\x24\x80\xc2\x89\x32\xa1\x67\xa3\xd1\x54\x9c\x4d\x61\x32\xb0\xe9\x08\xb9\x6f\x48\xa1\xdb\x2c\x2a\x82\x59\xdb\x98\x7e\x6a\xfd\x68\xc1\x5b\xe1\xfa\x99\x84\x8a\x0f\x5a\xa7\x12\x31\x5a\x0d\xdc\x94\xf7\x29\x30\x57\xf7\x7c\xe7\x52\x96\xa4\xb4\xec\x95\x77\x54\x92\x01\xbc\x33\xba\x4f\xa6\x2f\xae\x6a\xbf\xd9\x37\xe6\xb3\x46\xf0\x39\x2d\x3b\x8c\xbe\xde\x16\x80\x8f\x8f\x6e\xeb\x23\xbc\xd7\x89\x56\xc6\xd9\x90\x91\x29\x06\xf5\xd8\x0a\x34\x83\xe8\x34\xed\x1b\xfc\x20\x2b\x69\x81\x15\x91\x90\x93\xd0\xa3\xb6\x9d\x53\x1c\xdd\x13\x3d\x9e\x60\x47\xa1\x43\xc6\x11\x87\xcc\xc2\x96\x51\xb5\x80\x88\xde\xac\x55\xa8\xe4\x77\xec\x28\xe5\x60\x1a\x98\x03\x46\x63\xa2\x70\x97\x1c\xe8\x54\x32\x89\x08\xc3\xe3\x4a\x9f\x3d\x40\xfc\xdf\xac\xdd\x00\x68\x42\xb0\x6a\x05\x41\x53\xac\x12\xa4\xc4\x1a\x6d\xde\xac\xe7\xa7\xb7\x1d\x95\x36\x5e\x37\x41\x2d\x93\x24\x51\x91\xcd\x66\x02\x44\x66\xbc\xea\x13\xcd\x5b\xb5\x23\xf7\xc8\x43\xae\x23\x93\xb9\x13\x18\x89\xb4\x26\x12\xf1\x36\xc1\x93\xd7\x33\xff\x6c\x73\x39\x2d\xbc\xbd\xdf\x69\xed\x13\x1b\x36\xcd\xb1\xc3\x2e\x03\xad\x3c\xe0\x27\x70\x70\x2b\x93\x41\xfd\xfa\xf2\xfa\xe7\xb7\xa7\xff\x75\xfe\x36\x6e\xe1\xcf\x71\x31\x0b\xb9\xc5\x19\xc2\x70\x51\x80\x90\x9f\xe1\x39\x41\x18\xb5\x8c\xfe\xd2\x5a\xc8\xdb\xa1\x6f\x2f\x52\xac\x66\x49\xef\x49\x52\x7c\xf5\x2d\x11\x25\x39\x72\xac\xe9\x5b\x2a\x81\xa8\x1a\x3a\x61\x81\xff\x5c\x12\x34\x11\xbc\x5e\x32\xb4\xd0\xa5\x07\xd7\x2d\xf4\x0d\x83\x8d\x69\x36\x23\x22\x4e\x23\x7f\xfd\xfe\xfc\x1a\x72\xf0\x1b\x61\x88\xdd\x21\xb9\x00\xde\x09\xad\x9b\xd4\x41\xd3\x9f\xf2\x18\x9d\xb2\x85\xf9\xd2\x08\xb3\x48\x15\xa5\xa2\x52\x11\x50\x4e\xad\x21\xe9\xe0\x81\x2f\x5e\x1e\xc3\xff\xbd\x40\xb8\x2c\x85\xb6\x34\x7d\x8e\x46\xb1\x9c\x65\x16\xd5\xb2\xb1\x5f\xe9\xb8\x0a\x26\x97\x11\x05\x69\x1c\x51\x2f\x7c\xc7\x4b\xbb\x12\xa0\x04\x02\x7e\xc7\x68\xb7\x52\x09\xac\xc8\x94\x16\xa8\x26\x62\x4a\x50\x83\x55\x31\x43\x35\x5e\xa0\x82\x0b\xd1\x36\x86\x62\xa4\xc4\x0a\xc7\xb5\xfc\x3d\x17\xa8\x76\xd2\x59\x4b\x33\xad\x92\x5f\xaf\x07\x82\x76\x22\x3b\xfc\x4f\x2a\x65\x4b\xe4\xc9\xab\x97\x7f\xfd\xc3\x9f\x23\xcd\xeb\x8c\x07\x37\x16\xfa\x94\x00\x79\xea\xc3\xbf\xdc\x06\x03\xd0\x75\x8f\x19\xc6\xee\x10\xb3\xf3\x41\x1a\x4a\xca\xa6\x55\xb2\x03\x24\xd9\x0d\x98\xea\x04\x1c\x76\x23\x18\xc5\xfa\x02\xd3\x3d\x81\xbd\x3e\xc4\xbb\x52\xf2\x79\xc1\x3a\x0d\xce\xf9\xbd\xac\x40\xe6\x2c\x30\xec\x2e\x46\x4e\x4a\xa5\xf8\x8f\xc0\x9a\xf0\x8e\x29\xc3\x3e\x62\x9a\x35\x78\x87\x01\x7a\x89\xfe\x13\xdd\xa3\xff\x04\x2f\xd8\x5f\xe2\x9b\xca\xe3\x63\xca\x01\xe3\x9f\x71\xa9\x2e\x46\x99\x16\xfa\x1f\xfa\xbe\xd2\x6f\xd4\xeb\xa1\x38\x1a\x53\xeb\x8e\x20\xf7\x8a\x08\x6d\x06\xda\x35\x4c\x9d\xb9\x24\x8f\x9a\xee\xe0\x73\xd9\xdd\xa9\xe0\x82\x8b\x49\x1f\xfd\xff\x44\xfb\x1b\x1a\xfe\x81\x4b\x75\x69\xa5\x75\x48\xa1\x13\xf6\xa3\x86\x8b\xb8\x27\xee\x53\x5a\x7d\xa7\xf7\x5e\x57\x63\x03\x95\x1c\x12\x20\x4c\x0e\xe7\x8c\x26\x08\x87\xdd\x39\xb1\x69\x38\xd1\x7c\x5b\xf7\x53\x5b\x6b\xc9\xa7\x0f\x1e\x19\x6b\xa4\x04\x65\x69\x1a\x5e\x1e\x83\x7d\x93\xd0\x0b\x3d\x1b\x65\xa0\x0c\x7c\xc2\x34\x3a\x36\xf6\x9a\x8f\x0e\xc3\x81\xd3\x12\xab\xc0\x2c\x56\x87\x35\x8f\x20\x13\x22\x84\xc9\x13\x1e\x2f\x5c\xba\x51\xf2\x6e\x4b\x92\x72\x8d\xe0\x8a\x17\x3c\x9a\x36\x25\xe7\x56\x19\xd9\xbe\xc0\xdc\x43\xac\xd6\x47\xc7\x3f\xbc\x1e\x0d\xd0\xcd\xd9\x68\x80\xb8\x40\xd7\x67\x69\xe0\xa7\xd0\x05\xf3\xe2\xe6\x6c\xf4\x62\xab\x2b\x10\xe4\x30\xdd\x9c\x8d\x22\x5e\xb2\x0a\x9f\xad\x71\x33\xbc\x25\x8b\x48\xed\x2e\x87\x86\x39\xf4\x1b\x2b\xcb\x80\xcc\x34\xd7\xb8\xd9\xf8\x6d\x82\xe0\x92\xee\x34\x93\x8b\xcb\x3a\xf4\x3d\xcd\x47\xe9\x52\xf3\x39\x29\x8d\xd5\xec\x5a\x21\xac\x6c\x38\xd5\x36\xd2\x9e\xe7\xe5\x53\xcf\x9e\xe7\x65\xf3\x67\xcf\xf3\xb2\xee\xd9\xf3\xbc\x6c\xf0\xec\x79\x5e\xcc\xb3\xe7\x79\xe9\x77\x64\x17\x73\x8c\xf6\x3c\x2f\x9f\x7d\xf6\x3c\x2f\x0f\x3e\x7b\x9e\x97\x8d\x9e\x3d\xcf\xcb\xea\xb3\xe7\x79\xf9\xc4\xb3\xe7\x79\xf1\xcf\x9e\xe7\x65\xcf\xf3\xf2\x7c\xa5\xf6\x9e\xe7\x65\xf9\xd9\xf3\xbc\xec\x79\x5e\xf6\x3c\x2f\xe1\xb3\xe7\x79\x79\xe0\xd9\xf3\xbc\xec\x79\x5e\xf6\x3c\x2f\x9f\x7e\xf6\x3c\x2f\xd1\xcf\x9e\xe7\x65\xb3\x67\x9f\x79\xb8\xe1\xb3\xe7\x79\xd9\xf3\xbc\x2c\x3f\x7b\x9e\x97\xcf\x3e\xbb\xe1\x1e\xdf\xf3\xbc\xec\x79\x5e\x3e\xf9\xec\x79\x5e\xf6\x3c\x2f\x9f\x7c\xf6\x3c\x2f\x11\xcf\xce\x39\x5d\xf7\x3c\x2f\x7b\x9e\x97\x4f\xb5\xb1\xb7\xb6\x36\x7b\xf6\x3c\x2f\x7b\x9e\x97\x95\x67\xcf\xf3\xb2\xfa\xec\x79\x5e\xf6\x3c\x2f\x7b\x9e\x97\x3d\xcf\x8b\x7f\xf6\x3c\x2f\x5f\xbb\xdf\x49\x10\x49\xff\x4d\x46\xbc\xa2\xc5\x22\x39\xdb\xe7\x8a\x48\xde\x8a\x42\xdf\xd8\xf0\x5a\xd4\xc0\x7b\xbd\x47\x21\x49\xc9\xde\x31\x0a\x85\xab\x60\xe2\x42\x2a\x05\x61\xe7\xe0\x31\xa6\x60\x27\xe8\x14\xdc\x00\x2f\xe3\x11\x04\x43\x57\x3e\xdb\x4c\x5f\x9c\xb3\x34\xd9\x6a\x0f\x07\xb2\x0b\xe9\x9c\x21\xed\x91\xdf\x45\x8a\x7b\x61\x4b\x1f\xdc\x5c\xb8\x69\x2a\x9a\x92\x18\x8b\xd0\x75\x0b\xda\x05\xb1\x21\x70\xf9\x2d\x2a\x9a\x76\x80\x6a\x52\x73\x91\x90\x18\x91\xc1\x82\xeb\x6d\x95\x5d\x58\xa7\x2b\xd3\x21\x37\xf9\x8a\xc3\xfc\x2f\x8c\xbd\xd0\xb1\x54\xf9\xb5\xa2\x4e\x1c\x26\x61\xcd\x2e\x26\xcb\x60\x54\xaa\x7a\x5e\xa0\x4b\xae\xae\xec\xe1\xde\xda\x7a\x65\x46\x2c\xb8\x29\xdc\x1a\x6b\xd5\x19\xaf\x9b\x56\x91\xde\xc5\x66\xa6\xd8\x18\x1d\x54\xa6\x0a\xf4\xed\x64\x83\x16\x9c\x4d\xe8\xd4\x5a\xdf\x27\x35\x66\x78\x4a\x86\x7e\xb6\x87\x1d\xd5\xc3\x49\xf4\x45\xbd\xb5\x54\xd0\xa2\xc2\x34\x1e\x38\x98\x4b\x4c\x9c\x41\x2f\x80\x06\xac\x03\xd4\x43\x6e\x9a\x9f\xe6\x81\x87\x8d\x53\x23\x37\x8e\xdd\x57\xe6\x8f\x07\x09\xd6\x23\x56\xe0\xab\x00\xc3\x68\xcd\x4e\x4d\x37\x18\x19\xc2\x55\x33\xfb\xb4\xc9\x98\x92\x72\xf9\x7a\xc1\x70\x4d\x0b\x77\xf0\x4e\xab\x8a\x17\xc6\x55\xd3\x37\x36\xd3\x46\x62\x7a\xaf\x87\x54\xd7\xad\xc2\xe3\x8a\x1c\xa3\x0b\xc3\x5c\xc1\x59\xb5\xd0\xc7\x52\x12\xe5\x90\x0b\xf6\x4c\xa4\x19\x98\x29\xb0\xd8\x44\x48\xec\x5a\x5d\x1d\xf6\x9a\xa1\xda\x20\x4c\x4b\x38\xce\x08\x22\x4c\x89\x85\xde\x96\x23\x5e\x5e\xeb\x9d\xd9\xfb\x75\x32\x03\x47\x22\x12\x36\x07\x0a\x36\x11\x01\x9b\x07\xb7\x9a\x8e\x59\xcd\x8b\x57\xed\x22\x0b\x86\x40\x28\x4c\x04\xea\x6d\x8b\x86\x97\xc7\x6b\x24\x16\xe2\x93\xc4\x1e\xe8\x16\x47\xbc\xd4\xba\x94\x20\x46\x6c\xf9\x33\x6a\xfc\x8a\x17\xba\x73\xb7\xe0\x08\xc4\xaa\x53\xb2\xf0\x1c\xd3\x4a\x1f\xe0\xc4\x0e\xac\x92\x31\xa6\x05\x6b\x32\x85\x30\x2c\x66\x7f\x97\x36\x8b\xcd\xf6\xea\x25\x8c\x15\x33\x2e\x09\x03\x79\x89\x7d\x62\x8f\x4f\x3b\xb0\x22\xa6\x34\x57\x74\x2a\xb8\xf8\x62\x82\x48\xdd\xa8\xc5\x00\x91\x39\x11\x0b\x35\x03\x10\x82\xa7\x13\x05\xb1\x46\x25\xaa\x71\x19\xec\x8e\x01\xe2\xce\x2f\x9d\xd8\x3c\xdc\x0f\xd6\x54\x6b\x2b\x65\x0c\x37\x2a\x7d\x76\xc5\xb6\x77\x4d\x6e\x96\x1b\x94\x2a\x34\x73\xb2\xd4\x20\x60\x58\xad\x69\x1c\x9f\x2d\xca\x78\x16\xde\x42\x2f\x82\x8c\x12\xbd\x25\x6a\x7c\x0f\x5e\x4b\x5c\xf3\x96\x29\x43\x5f\x63\x0c\x09\xaf\xfc\x99\xbc\x9b\x27\x84\xd1\x3d\xaa\xca\x8f\xf2\x5c\xed\xb8\x74\x8c\x15\xa3\x1c\xe9\xcb\x58\x29\x22\xd8\xb7\xe8\xbf\x0f\xff\xf5\xcd\xaf\xc3\xa3\xef\x0e\x0f\x7f\x7c\x39\xfc\xdb\x4f\xdf\x1c\xfe\xeb\x18\xfe\xe3\x3f\x8e\xbe\x3b\xfa\xd5\xfd\xe3\x9b\xa3\xa3\xc3\xc3\x1f\xff\xfe\xee\xcd\xcd\xe8\xfc\x27\x7a\xf4\xeb\x8f\xac\xad\x6f\xcd\xbf\x7e\x3d\xfc\x91\x9c\xff\xf4\x85\x2f\x39\x3a\xfa\xee\xf7\xf1\x41\xc9\xd4\x08\x7c\xbe\xf8\x7b\xa6\xe8\xfb\xa3\xc4\xde\xad\x8c\xdd\xfa\xe1\xb7\x57\xe0\xca\xf1\xb7\x41\x8b\x4f\x1d\x7f\x91\xec\xaa\xb9\x98\x74\xed\x53\x89\x78\x4d\x95\x22\xa5\xbd\x7b\x03\x4a\x9c\x25\x37\x91\x15\x58\xc0\x66\x85\xe1\xf6\x0e\xa8\x59\x3a\xef\x52\x74\xb7\xfc\xfd\x0a\x8e\x31\x86\x68\xdd\x54\xa4\x26\x4c\x81\xe0\x19\x3a\x93\x17\xbc\x8c\xc7\xdd\x08\x0a\xe3\x07\x21\xf7\x05\x21\xa5\xed\xe4\x5e\x36\x06\xcf\x5e\x36\xee\x65\xe3\xe7\x9e\x64\x57\x79\x0e\xc1\x78\x15\x76\xc2\xba\xb8\xa4\xd3\x94\xc1\x71\xee\x99\x13\xf8\x04\xf0\x13\x73\x5a\xb6\xb8\x0a\x09\x66\x1d\xe7\x68\x9c\x04\x08\x5c\x3b\x35\x5e\xac\x78\x72\x28\xa3\x21\x9b\xed\xc0\xa3\x7e\xe0\x87\x56\x2f\xeb\x22\xce\x2f\x4e\xab\x3b\xbc\x90\x91\xa4\x97\xdf\x73\x01\x40\x92\xa5\x46\x11\x17\x0e\x5f\x14\x9a\xb8\x7d\x0f\x7f\x5c\x84\x70\xdd\x44\xf7\x29\x2a\xac\x91\x7d\x20\xfd\x0f\x5d\x1c\xc9\x4e\x44\x97\x15\xa2\xf7\x79\xdc\xc0\xaf\x89\x52\xd6\x09\xb8\xb4\x25\x70\x37\xa7\x3e\x2c\xda\x9f\x1e\x03\x25\x02\xaa\x59\xfd\xe5\x84\xeb\x35\x81\x22\x0d\x93\x09\x29\x22\xad\x60\x43\xe9\xb1\xa6\x1d\x03\x6f\x57\x94\xb5\xb8\xaa\x16\x6e\x4e\x48\x89\x38\x8b\x6a\x88\xdc\x53\x85\x5a\xa6\x68\xa5\x37\x13\x12\x64\xda\x56\x38\x74\x20\xda\x91\x39\xd4\x5d\x79\x8c\xde\xb3\x82\x84\x3f\x8e\x73\x7c\x2f\x35\xa0\x95\x8e\x8a\x28\x52\x0e\xe0\xd5\xcb\x3b\x10\x70\x6b\x3d\x89\xe1\x97\x25\xaa\x79\x37\x97\x1e\x97\x74\x6c\x0e\xa2\x07\x4d\xa0\x92\x4e\x26\xba\x65\x30\xd2\x19\x17\x35\x5e\xed\x15\x66\x65\x54\xeb\x5a\x03\x82\x6c\x95\x90\x34\x18\x0a\xc5\xbc\x90\xb4\x24\x05\x16\x2f\xc2\x12\x23\xa7\x95\x9a\xf1\x76\x3a\xeb\x76\x45\xda\x94\x23\xa9\x00\xad\xa5\x27\x53\x3a\x8f\xc7\xd2\x66\x93\x5a\xd7\x61\x05\x31\x2a\x19\x27\xe6\xb8\xdf\xe1\xc8\xb6\x57\x10\x05\x06\x22\x6e\xd6\xdc\xa5\x70\x01\x24\x90\x94\x41\xbe\x1d\x23\xf7\x2a\xc3\x80\x8f\xd1\x85\xe1\xcf\x18\xf4\xdf\xda\x9b\x12\x33\x19\x01\x24\xce\x81\x3b\x23\xf1\x80\x4b\x0d\x50\x9f\xb1\x06\x34\xc7\xe6\xe5\x98\x2d\x5c\x82\x08\x40\xd6\x4c\x62\x9b\xcf\x59\xa9\xe2\x7c\xef\xfe\x2c\x3d\x79\xd5\x1e\x49\x8a\x56\x50\xb5\x38\xe3\x4c\x91\xfb\x28\xd9\x97\xe3\x56\xbf\xee\x77\xa3\x77\xaf\xbb\x2e\x22\xde\x18\x6e\xc9\xa5\xc2\x4d\x33\xde\x56\x25\x30\xec\xb6\x0c\xc4\x4e\xdc\x8d\x72\x31\xd1\x57\xb8\xd9\x6f\x70\x63\x42\x38\x6d\xb9\x63\x0e\x29\x6a\x00\xb3\xbf\xb4\x74\x8e\x2b\xc2\x54\xf0\x17\x23\xc0\x0e\x86\x7f\xf4\x98\x31\x57\x85\xe5\x6d\x67\x61\x90\x61\xc3\xcb\xce\xa0\x38\x71\x53\x07\x1f\x91\x7b\xf5\x0c\xe3\xad\xa0\x30\x8d\x04\x9d\xd3\x8a\x4c\xc9\xb9\x2c\x70\x05\x76\xd4\xb6\x8d\xf3\xd3\x07\xfa\x05\x3b\x53\xf0\x4a\x6a\x05\x4c\x1b\xab\x5a\xd5\x34\xc8\x69\x08\xfc\x4d\x31\x65\x50\x75\x28\x21\x38\x64\x1b\x95\x06\xba\xad\xed\xed\x06\x0b\xbd\x0b\x1d\x44\xdb\x5c\x8d\x63\xce\x2b\x4b\x53\x5b\x2d\xba\x7e\xd1\xf8\x28\x0a\xc8\x62\xfe\x33\x23\x77\x3f\xeb\x5e\x48\x34\xa9\xf0\xb4\xbb\x9a\x89\x5a\xc9\x77\x49\x47\x8d\x3f\x38\xd1\xc0\xc1\xda\x6a\xc5\x46\x6b\x15\x1d\x9e\x3e\x94\xe0\xf1\x06\xdd\xab\x23\x90\x27\x58\x22\xdf\x76\x9c\xea\xa0\x9f\x3f\x1c\xc1\x3d\x71\x76\x3a\xfa\xf9\xfa\x9f\xd7\x3f\x9f\xbe\x7e\x77\x71\x19\x8f\x9a\xe5\x8a\x18\xef\x4a\xa0\xdd\x17\x1e\xe8\xa1\x57\xc1\x63\x85\x8e\xb9\x3c\x86\xd0\x09\x90\xb9\xb0\x92\xdf\x25\xc6\x97\xf5\x9e\x22\x38\x4e\x73\xc5\x4d\x73\x2a\x6a\x2e\x46\x82\x4f\x68\x15\x1d\x9a\xcc\x75\x82\x97\xba\xe3\x22\x4d\xa7\xf6\xe3\xee\xba\x31\xfc\x02\xab\x38\x87\xe0\xca\xa0\x90\xc5\xae\x5f\x13\xef\xd9\xea\xe5\x20\x98\x8c\x88\xa5\x2e\xc6\x1f\xa2\xad\xee\x99\xad\x67\x6f\xea\x6e\x44\xfe\x79\x8e\x48\x7c\xc5\x0b\x5c\x41\xfd\xa2\xb4\x8d\x8f\x32\x07\x59\x97\xfb\x15\x64\x9b\x60\xb7\x9d\x51\xc5\x71\x09\xc6\xaa\x15\xfe\x25\x71\xac\xda\x4e\xed\x82\xc0\x79\x52\x47\x6e\x0c\xd2\x1f\xda\x73\xe9\x31\x8d\x20\x5e\xab\x59\x6a\x9e\xa3\xf8\x6a\x83\xee\x79\xd7\x87\x21\xd8\x51\xf6\x12\x39\x53\xcf\x9c\x6f\xc6\x1e\x30\x3a\x01\x0f\x08\xb8\x81\xe8\x04\x36\x25\x38\x80\xde\xba\x65\x48\x28\x7c\x92\x09\x09\x00\x2f\xd9\x91\xdd\x69\xe6\xc7\xef\x48\x03\x53\xbe\xa5\x7a\x06\x27\x9d\x90\x76\xdb\xc6\xe9\x20\x06\xab\x9c\xb8\x1f\x3f\x42\x89\x2d\x27\xff\xb1\x48\xe6\x05\xf3\x4b\x8c\x86\xc1\xd1\x6a\x04\x19\xae\x1e\xaf\x54\xe0\xc2\x55\xcb\x14\xad\x89\xe3\xbe\x18\x2e\xe9\x44\xc2\x7c\x7d\x20\x3d\xd3\x6c\x96\x8d\x8e\xd0\x07\x06\xe7\x95\x91\x12\x0d\x11\xe3\xdd\x12\x11\x36\xe1\xa2\x80\x20\xcd\x56\x37\x78\x81\x1b\x3c\xa6\x15\x4d\x11\xe6\xb9\x36\x38\x14\x6e\x08\xfa\x03\xee\xa4\xb2\x3c\x29\x05\x6f\xcc\x4d\xec\x92\x52\xd3\x81\x81\xfd\xe4\xa7\x90\x63\x18\x14\xf6\x49\xbf\x23\x53\x81\x99\xea\x1c\xb9\x2b\x1b\xe7\xb7\xa8\x83\xe4\x50\x02\x70\x99\xaf\x04\xca\x69\xa9\x65\x46\xb8\x6c\xc9\xe7\x6a\xd7\xe8\x54\xcf\xdc\xe0\x82\xec\x27\x34\x7a\x7f\x7d\xf1\xff\x96\xce\x4d\xbc\x6a\x67\x9e\xdd\x26\x53\xd4\xf2\x20\xdb\xb6\xb9\xb2\x15\xa8\xf6\x1b\xe7\xeb\xde\x38\xde\x41\xb4\x75\x26\xa8\xab\x96\xf5\xab\xe0\x77\x5d\x43\x75\x92\xae\x33\xf2\xa4\x09\xfd\xb7\x86\xb1\x1e\x41\x90\xfe\x09\x53\x14\x22\x6f\x81\xb7\x56\x71\x53\x64\x29\x4b\xbd\xd6\xf0\x76\x9d\xe0\x4a\x3e\xd7\x2b\x32\xc5\xb5\xd3\x08\x5e\xbc\xe3\x2d\xcb\x43\x2d\x95\xb0\xe3\x7c\x47\x50\x49\x18\x57\xd6\x9b\x02\xb6\x04\x9f\xc0\xb7\xc8\xc0\xa6\x02\xd6\xc8\x9e\x9e\x93\xa0\x66\xdd\x04\xaa\x95\x8f\xef\x3b\x3d\xdc\xd8\x2f\xad\x24\xcb\xf1\x0b\xab\x57\x75\x28\xaa\x09\x8f\x07\x8f\x08\x82\x4b\x30\x30\x1b\xac\x66\x86\xce\xac\xc6\xf2\x96\x94\xe6\x83\x44\x2a\x07\x9f\x83\x03\x21\x7e\x37\xd3\x37\x7a\x72\x5d\xda\x0c\x38\x84\x0d\xa9\x1b\x24\xea\xa4\x98\x62\x5b\x3d\x0d\x09\x82\x5d\x2f\xc2\x7b\x56\x2d\xae\x38\x57\xdf\xfb\x6a\x6d\xdb\x3e\x19\xff\xb0\xe1\x88\xbe\x13\x13\xfc\xd2\x18\xba\x3c\x84\x8d\x03\x72\x31\xa8\x31\x97\x2a\x16\xf5\x82\xfc\x56\xa5\xa2\x68\xd9\xa9\x7c\x23\x78\x1b\xad\xc3\xe5\xb4\x37\xdf\x5c\xbc\x86\x8b\xaf\xb5\x6c\x3f\x4c\x89\x05\x14\x1f\x75\x1e\xaf\x8c\x41\x9b\x0f\x96\x57\x29\x94\x6c\xc9\x14\x2a\x08\xbd\xc3\x0b\x84\x2b\xc9\xbd\x4b\x8d\xad\x0b\xb7\xba\x58\xae\xfe\x7a\xcc\xd5\x6c\x25\x88\x1b\x8b\x02\xd1\xcf\x6a\x7b\x83\x80\x34\xa8\xcb\xcf\xa6\x6c\xa5\x59\x05\x89\x45\x8d\x20\x05\x29\x09\x2b\x9e\xeb\x89\xd8\x36\x87\x0d\x9c\xaa\x4b\xce\xb4\x78\xdd\xf6\xb9\xba\xf0\xfe\x49\xbb\x1a\xe1\x29\x02\x57\xb6\x0d\x22\x62\x80\xe9\x81\x70\x6d\x65\x4a\xd6\xd7\xc5\x04\xa2\x9e\x66\xd3\xfd\xbd\x1d\x93\x4a\x2f\x36\xad\x2a\xbd\x03\x69\x89\x95\x81\x26\xd0\x1a\x4f\x09\xc2\xca\x1f\x42\xc5\x11\x61\xb2\x15\x76\xdf\x44\x02\x74\xf4\xe3\xb1\x45\x76\x68\x1f\x2e\x5e\xa3\x97\xe8\x50\x8f\xed\x08\x34\x8e\x09\xa6\x15\x50\x48\x01\xf8\x6f\x29\x24\x3b\x71\xf0\xa4\xa4\x29\x00\x39\x82\xb8\x30\x57\xcb\x00\x31\x8e\x64\x5b\xcc\xdc\x1c\x50\xce\xbc\x47\xd8\xf2\x09\x27\xe5\xc2\xec\xc5\x4e\xbe\xfb\xf0\x83\x24\x62\xdb\xc7\x56\x5f\x87\x1f\x9e\xf0\x3a\x0c\x4d\x44\x7d\xfc\xfb\x0b\x66\xce\x6a\x4d\x14\x2e\xb1\xc2\xf6\x9a\x74\x3f\xd8\xef\xda\xfd\x65\x99\x70\x59\x4a\xf2\x96\xb2\xf6\xde\x30\x76\xee\x44\xd8\xe3\xfa\x1c\x7a\x84\x0a\xb7\xd0\x3c\x88\xdb\xb9\x08\x45\x86\xf4\xe8\x8b\xde\x31\x1a\x3c\x60\x75\xc3\x2d\x81\x0d\xfd\x03\xd1\x86\x10\x66\x25\xaf\x57\x3a\x39\xe1\x02\x11\x5c\xcc\xa2\x7b\x13\xa0\x46\xf6\x07\xd3\x3e\xbf\xed\x80\x50\x45\xe6\xa4\xca\xe6\xdb\x7f\xab\xdf\xa6\x27\xc7\xed\x5c\x78\x3d\xaa\xf0\x98\x54\x96\xb0\xc5\xb0\x78\x65\x3c\x61\x99\x7c\xe0\x82\x67\x84\xc4\x5c\x71\x83\xe4\xc2\x7e\x22\xf4\xeb\x9f\xc5\x3c\x64\x05\x5f\xdc\x58\x74\x49\x37\x0f\xe0\x03\x7d\x0e\xf3\xd0\x26\x28\x88\x68\x79\x1e\xb4\xb6\xd9\x9f\x07\xd0\xbf\x76\x7d\x1e\x24\x29\x0a\x5e\x37\x3b\x82\x94\xbc\x31\x28\x7c\xdd\xa3\x2f\x45\x45\xf6\x7f\x8c\x93\xe0\xce\x96\x87\x19\x2b\x73\x0f\x3a\x32\xe6\xff\x1b\x5c\xe7\x20\xed\x96\xef\x78\xdb\x7a\x32\x22\xd3\xb7\x68\x5f\xf8\x5b\xbc\xf1\xf6\x30\xcc\xde\xf3\xe4\x30\xcc\x80\xcb\x0d\x83\x7b\xbe\x07\x89\xfc\x1a\xc0\x98\xda\x08\x80\x79\x25\x0c\x12\xca\x1a\xac\x66\x03\x24\x48\x65\x18\xd2\xad\x78\xbe\x35\x1e\xaf\x03\x90\x38\xae\x43\x4e\xdc\x74\x98\x55\x43\xe6\x96\x15\xbb\xb9\x0e\xaf\x69\x7e\x73\xf9\xfe\x26\x4c\x00\xc6\x6c\x61\x68\x0a\x12\xd2\x5b\xcd\xb3\x7b\x6a\xc5\x63\x62\x3a\x97\x57\xf1\xb1\x21\x9d\x49\xef\x5b\x8f\xe8\x7c\xba\x53\xfa\x65\x28\xcf\x65\x8c\x67\xd6\x2e\x2c\x03\x3e\x57\xdb\xc8\xb0\x72\xc9\x47\xc0\x5e\x9d\x3b\xe4\x00\xf9\x87\xe9\x91\xb3\xb2\x0b\x2d\x38\x14\x65\x53\x19\x3a\x41\x70\x55\x65\xc1\x24\xac\xf3\x82\xb8\x53\xe0\xd9\xcc\x56\xbd\x01\xfd\x6a\x1b\x29\xad\x7f\xc6\x83\xf1\xbc\x3d\x11\x95\xb6\x28\x9e\xb9\x1f\x62\x5a\x4b\x7c\x26\xf4\x0c\x2a\x8a\xab\xeb\x86\x14\xbb\x72\x5b\xbc\x79\x77\x7d\xda\xef\x19\xe8\xc2\x96\xbb\x91\xc0\xf7\x08\x97\x35\x95\x12\x02\x3e\x64\x3c\xe3\xfc\x36\xa9\xc9\x43\x97\x6a\x3b\xa5\x6a\xd6\x8e\x8f\x0b\x5e\x07\x59\xb7\x43\x49\xa7\xf2\xc4\x4a\x94\xa1\x9e\xb8\x23\x44\x59\xe5\x33\x95\xc1\x5b\xc8\x94\xb4\x11\x84\xe4\xc1\xa3\xc2\x8f\x1e\xb6\x1e\xe4\xa7\x78\x68\xf6\xea\xf4\x00\xc1\x26\x6c\xde\xad\x6b\x1d\xab\xbb\x2a\x8d\x07\x7f\x69\x67\x3d\x30\xf6\x90\x2c\xd2\x46\x71\xd6\xce\xa3\x31\x5e\xb7\x3e\x49\x56\xe9\x2f\x88\x4c\x42\xc0\xe6\x3c\x73\x3f\x74\x5d\x42\x25\x31\x24\x22\x04\xf8\xbc\xf0\x83\x39\xf7\x10\xde\x3e\x80\x5a\x82\xf6\x4f\x0f\x72\xf1\x9b\x9e\x56\x95\x5e\x48\x6c\x09\x65\x02\x74\x27\x98\x26\x9e\xc3\x45\xea\x15\x37\xf4\x2d\xda\x58\x08\x47\x91\x5e\x73\xff\x90\x2a\xc7\x9e\xe3\xe8\x7b\x14\x37\x6d\x63\x54\xd3\x7b\xdd\xc3\xb0\xc5\x3e\xdf\x08\x04\xfe\xd7\x7f\x9d\x50\x5a\x09\x01\xf8\xc0\xd3\x76\x0d\xf4\x0a\x85\x8d\xb8\xe4\x68\xa5\xaf\x2d\xfd\xc5\x25\x51\xda\x50\x33\xf3\x16\x46\x1f\xb4\x61\x25\xda\x0c\x87\x21\x25\x32\x8c\xc2\xe8\x70\x56\x49\x91\x78\x1e\x20\x52\x6c\xfb\xa4\x75\x10\xa7\xbc\x3d\x55\xe4\x18\xad\x49\xdf\x79\xb2\x08\x32\xfa\xf2\x28\xf2\x23\xc6\xaa\xd0\xae\xc4\xab\x52\xa9\x56\x02\xda\x98\xad\xf1\xac\x84\xd4\x35\x74\x15\xbc\x34\xe2\xe5\x0a\xa3\x8d\x2b\x3a\x1f\x5f\x62\x44\x6f\x8e\xce\x04\x61\xdc\xba\x47\x82\xba\xef\xe4\x9e\x14\xad\x22\xa5\x25\xb6\xb2\x2e\x65\x43\x8a\xd3\xef\x4d\x74\x0f\x5c\x92\xbe\xad\x38\x29\x07\x1d\x1b\xb8\xb5\x75\x3c\x35\xd7\x00\xfd\x2f\x48\x49\xcb\x63\xd9\x95\xaa\x1f\xf9\x3f\x8f\x9d\x0a\xc0\x51\x17\x98\x39\xdb\x0a\x2a\x9e\x1b\x0f\xb7\x25\xb0\xb2\x3c\x1e\x63\x82\x1a\x2c\x70\xad\xef\x60\x89\xec\xf2\x8c\xc9\x94\x9a\xb4\xc0\xe0\x52\xf4\x0c\x58\x71\x8c\x6e\x60\xd8\x50\x85\x6a\x3a\x9d\x99\xd3\x82\x30\x94\x86\x44\x0e\x37\x56\x71\x5c\x22\x10\x2c\x5c\xa0\x3b\x2c\x6a\xad\x0b\xe0\x62\x06\x20\x34\xcc\x50\xd9\xea\xf3\x80\x80\xaf\x69\x31\x94\x0a\x2b\x6d\x63\x12\x91\xe0\x83\x73\xd3\xb4\x85\xe2\x25\x8f\x5d\x98\x6d\xcb\x7c\x3a\xfa\xa4\x65\xf1\x82\x9c\xdf\x93\x62\xa9\xf4\x77\x5d\x03\xc5\x1f\x77\xc7\xd9\x31\x95\x25\x2b\x83\x3b\x62\x2a\xdb\x11\xee\x8a\x6e\x72\x66\x27\x9c\x3a\xeb\xd3\xfc\x53\xdb\xa3\xfd\x45\x90\x2e\x88\x15\xf0\xf6\xea\x7f\xea\xad\xae\x4f\xae\xe1\x08\xe2\xc2\xd7\x91\x4b\xea\x96\xeb\x07\x54\xa6\xe2\x5c\xa1\xc3\x83\x93\x83\xa3\x95\xbd\x70\x20\xc3\x34\x03\x93\x11\xdd\x0d\x48\xd2\xba\xa9\x16\x30\x86\x03\x53\x8c\x2a\xa1\xc8\xab\x7e\x1c\x60\xd5\x57\x60\x90\x33\x52\x55\x03\x24\xb5\xfa\x8b\x1d\xf9\xad\xf9\x54\xff\x48\x89\xb6\x30\x6e\xb2\xc3\x83\x5f\x0f\x06\x88\xa8\xe2\x08\xdd\x71\x76\xa0\x4c\xc0\x03\xdd\x80\x0d\x99\xd4\x27\xdf\x89\x05\x6f\xa1\x5e\xb2\x59\x36\xcf\x97\x5c\x60\x6d\xfe\xb4\x46\x47\x37\xa4\x1b\xa4\x4a\xa8\xff\xab\x9f\xf3\x7b\xaa\xb4\x2a\xa2\x5a\x70\x53\xbc\x34\x96\x02\xd1\xe2\x55\x5f\x78\xfa\xa6\x3b\x99\x11\x5c\xa9\xd9\xc2\x5b\x2f\xa6\x14\xad\x44\x2d\xb3\xdf\xa4\xeb\x50\x3b\x90\x36\xba\xbb\x09\x9c\xb6\x22\xf6\xcd\x4c\x10\x39\xe3\xd5\xd6\xd3\x38\x5d\x99\xd4\x82\x33\xa9\x65\x8a\x36\xb1\x6d\x1f\xa5\xcf\xa0\xb3\xa5\x5a\xb9\x25\x3c\xd5\xa7\x4c\x90\xd2\x2a\x4b\x96\x3d\x71\x86\xe7\xa0\x29\x68\x7d\x8e\x94\x29\xa6\x49\x68\x13\xfd\x31\x67\x21\xd7\xed\xd7\x4c\xd5\xcf\x54\x34\x79\x6e\xe9\x37\x57\xa3\xb3\xde\x2d\x0d\x1f\xfc\x00\xc7\xf8\x6c\x46\x8a\xdb\xab\xb4\x82\x22\x3b\x02\x2d\x68\xb8\xd8\xa6\x62\xa0\x9b\xcf\xa6\x15\x8c\xb8\x50\x88\xf9\xd2\xc8\xfa\x6c\x4d\x61\x15\x89\x98\xd3\x82\x1c\xbb\xb2\xc9\x2e\x38\xef\x0a\xe0\x60\x36\x25\xe8\x95\x3e\x10\x7f\xf9\xf3\x9f\xff\xf8\xe7\x74\x19\x9d\xce\x64\x9e\x7e\x10\x10\x80\xa1\x60\xe0\xbb\xa2\x76\x5d\x9b\xee\xac\x73\x36\xdb\x9e\x82\x51\x57\xe1\xc2\xaf\xcd\x74\xfd\xa1\x4b\xf3\x4a\x4a\x42\xd0\x9a\x70\x85\x16\x1d\xe6\x7f\xc6\x15\x1f\x9f\xd4\x58\x2a\x22\xb4\x8d\x63\xaf\xf5\x61\xa1\x7b\x40\xd9\xf4\xb8\x2e\x8f\x12\x2a\xdc\xa1\xc0\xac\x5e\xe1\x16\xef\xd1\xcc\x3c\xc0\x13\xae\x27\x65\xeb\x2e\x78\xe4\x7a\xf9\x2d\x7a\x11\x47\x4c\xad\x97\xe0\x0d\xc9\x93\x89\xf6\xc3\xcd\xcd\xe8\x0d\x51\xa1\xc0\x66\xf0\x21\x7a\x73\x7e\xe3\x2b\x5e\xe9\xdd\x65\x92\x9a\xf6\x52\x3b\x45\x6a\xcf\x78\x5a\xc9\xb3\xdc\x71\x17\x23\x4a\x80\x66\x9b\x31\x52\xe8\x85\x1e\xf4\x8a\xab\x38\x1c\xe2\xc5\xe8\x18\xfd\x93\xb7\xa0\x72\xe1\x71\xb5\x40\x77\xd8\x30\x1a\x48\x92\x26\x53\x5e\xe8\x6e\xbc\xd0\x52\x4b\xef\xea\x1f\x08\x2e\x4d\xb9\x04\x70\xed\x6c\xfd\xac\x06\x7d\xca\xb6\x6c\x67\xad\x54\xbc\x46\x33\x3b\x54\x33\x87\x5d\x4d\x39\xa3\x1b\x99\x23\x08\xb1\x1f\x89\x04\x69\x8c\xb5\x64\xff\xe6\xab\xb0\x85\x56\xa4\x90\x99\xe7\xa0\xf2\x10\x46\x45\x38\x55\x56\xd1\x07\x17\x26\xb5\x32\x2a\xda\x25\xd6\x3d\x59\x0a\x78\xa2\x4c\x45\x3c\x51\x7a\x21\x4f\xf7\x92\xf4\x20\x64\x9e\x92\xa0\x28\x4b\x59\x50\x94\xbd\xda\x23\xb2\xa1\x36\xbb\xb9\x0c\x00\x47\x77\x34\x95\x95\x10\x39\x67\xb2\xaf\xc5\x81\x19\x67\xb4\x30\xe1\x0c\xd4\x36\x9c\x21\xde\xaa\xa6\x55\xe0\x0a\x2a\xb0\x24\xc3\x39\x16\x54\x0b\x54\x53\x53\xd9\x23\xa1\x98\x3e\xed\x8a\x73\xf0\x93\xf8\xa0\xb3\xe9\x71\x7a\x37\x33\x69\x33\xfa\x81\xcd\x96\x79\x85\x57\x16\x27\x7d\x47\xa3\x9d\xf6\xc1\x20\x53\xc6\x6a\x96\xcf\xac\xc3\x6a\x06\xc8\x3e\x88\x65\x39\x60\x28\x08\x4e\x6d\x36\xec\x40\xe2\x4d\x56\x2b\x36\x51\x24\x40\xbc\x9d\x8b\x25\x3b\x58\xf7\x70\x75\x0e\x33\x61\x4d\x1e\xdf\xac\x0e\x4b\x20\x8f\x89\xd6\xed\x2f\x4e\x2f\x4f\x7f\xbe\xfe\x78\xf6\xf3\xe5\xe9\xbb\xf3\x94\x57\x27\x97\x2f\xcb\x59\xc0\x2c\x5b\x09\xb3\x47\x2a\xf0\xa8\x1f\x59\xcc\xc8\xee\xc0\x4c\xae\xa1\x37\x21\x29\x99\xb5\x01\x82\xd2\x3a\x69\x2c\x75\x68\xc9\x69\xaa\x05\xcf\x56\x25\x8e\x45\x15\xbc\x26\x15\x5e\x5c\x93\x82\xb3\x72\xeb\xe8\xec\x4b\x2f\x6c\xa4\xe9\x90\xaf\x28\x44\x96\x18\xb3\x5c\x0d\x2f\x5b\x07\xc9\xe1\x03\x42\x48\x83\x19\x5f\x74\xd4\x1a\xed\x5e\xe4\x1a\xed\x8c\x7b\xbc\x21\x82\x02\x22\x68\x17\x76\xcd\x0f\xfc\xce\x16\x07\x3b\xa4\xcc\xed\x9c\xa3\xc0\x4b\xd3\x85\x47\xd2\xd9\xd4\x14\x47\xaf\x5e\xba\x46\xbe\xbe\xb8\x87\x45\xfa\xec\x74\xe4\xcb\xf6\xf1\xf3\xa1\xaf\x0e\xb6\xd4\x0f\x7f\xa5\xe0\x87\xd0\x92\x18\x7f\x75\xec\xf3\xd4\x5e\x41\x7f\xbc\x28\xc2\xac\x74\x90\xb3\xaf\x6f\x9f\xa8\xa2\xb9\xe6\xc5\x6d\x26\xb7\xeb\xcd\xd9\xc8\xbc\x6d\x09\xcf\x62\x6e\x60\xad\x65\x72\x84\xf5\xaf\x40\x01\xdd\x3b\x5d\x77\xc6\xe9\x7a\x60\xd2\xba\x70\xf5\xed\xc6\x0e\xd4\x83\xbd\xb5\xd5\x3d\x4e\xf1\x11\xfd\x0a\x28\x7b\x6b\xeb\x81\x67\x6f\x6d\x6d\xf0\xb8\x4a\xb4\x94\xb3\x37\x02\x17\x64\xb4\x4b\xca\x9b\x13\x20\xa8\xb4\xf5\xd9\x51\xa7\xc3\x79\x71\xc1\x08\x29\x8d\xfc\x70\x45\x75\xd1\x54\x8f\xc4\xc0\xa3\xc1\x87\xd8\x01\x8b\x5b\x91\xa0\xe6\xdd\xcc\xec\xab\xad\x8a\xeb\x82\xcc\xeb\x7a\xd7\xd9\x26\x8d\x27\x43\x77\x55\x43\xec\x71\xd2\x9d\xd7\xb6\x88\x24\x2c\xde\x9d\x8e\xc3\x15\x44\x92\x4e\xf5\x74\xb9\x5a\xce\x86\x44\xcb\x95\xde\xeb\x3a\xa2\x5b\x9d\x70\x51\xd0\x71\xb5\x40\x33\x5c\x69\x63\x09\x4a\x02\x63\x74\x0b\xa5\x6c\xe1\x35\xf1\x13\x75\x4d\x6c\xae\xa6\xd1\x68\x2a\xce\xa6\x30\x19\xd8\xe6\x64\xdc\x37\xa4\xd0\x6d\x16\x15\xc1\xac\x6d\x4c\x3f\xb5\x7e\xb4\xe0\x6d\x86\xb4\x0c\x17\xf8\xf6\xfa\x14\xa3\x96\x7e\xc4\x14\x6e\xfb\xe4\x9e\xef\x27\xd7\xa2\xf7\x6a\x46\xc4\x1d\x95\x64\x10\x5f\xba\x16\x39\xb7\xef\x52\x19\x39\xf3\x99\xa7\x50\xb1\x99\x83\x7a\x5b\x40\x2a\x6b\x74\x5b\x1f\xe1\xbd\x4e\xb4\x32\xce\x86\x8c\x4c\x0d\x51\x83\x15\x68\x06\xd1\x69\xda\x37\xf8\x41\x9f\x6d\x20\x15\x6f\x7a\x75\x7b\xe7\x14\x47\xf7\x04\x48\x21\xba\x1d\x85\x0e\x19\x47\xbc\xd1\x57\x57\xcb\xa8\x5a\x40\x44\xcf\x95\x8c\x4e\xc8\xb7\xba\xb1\x30\x07\x8c\xc6\x44\x61\xeb\x03\xd7\x87\xc0\x73\xa2\x03\xdd\xb9\x3e\x7b\x90\x24\x70\xb3\x76\x03\x78\x9a\xf4\x29\x56\x09\x52\x62\x8d\x36\x6f\xd6\xf3\xd3\xdb\x8e\x4a\x1b\xaf\x4b\xe4\x61\xde\x0d\x66\x43\x7d\xa2\x79\xab\x76\xe4\x1e\x79\xc8\x75\x64\x28\x2e\x02\x23\x91\xd6\x44\x22\xde\x66\xaa\x37\xf1\xca\x36\x97\xd3\xc2\xdb\xfb\x9d\xd6\x3e\x52\x95\x34\xaa\xea\x70\x8e\x2d\xf6\x00\x79\xbf\xcd\xc3\x0d\xf8\x2b\xc7\xed\x64\x42\x04\xdc\x74\xd0\xe1\x15\xd8\xbd\xaf\xe3\xe5\xee\xb0\x38\xe7\xad\x05\x7c\x11\x35\x80\xda\x01\x96\x4c\xe2\x81\x26\x2d\xc9\x26\x94\xe9\x15\x44\x02\x17\x3c\x43\xe7\xef\xbf\x8f\xdb\xa2\x39\x2a\x0b\xa4\xa5\xac\xc2\x38\xdf\xb3\x38\x4c\x62\xde\xfd\xb0\x8e\xf5\xc5\x6e\x8b\xa2\xe2\xd2\xa6\x47\xc3\xba\x14\x33\xcc\x18\x71\xce\x28\xaa\xc0\x93\x3d\x26\x84\x21\xde\x10\x03\xca\x8b\xea\x0c\x46\x92\xb2\x69\x45\x10\x56\x0a\x17\xb3\x63\xdd\x3b\xe6\xf6\x42\x97\x87\x6c\x3f\x91\x4a\x10\x5c\x9b\x3d\x21\x48\x8d\xa9\x69\x1e\xe1\x42\x70\x29\x51\xdd\x56\x8a\x36\xfe\x65\x71\x5e\x44\x02\x8c\x10\xd2\xa4\xa5\xba\xb5\x82\xb4\x92\x2e\xe1\x79\xd0\xf5\xd0\x0e\x9f\x87\xc5\x8a\xc0\x75\x36\xd0\xdf\x92\xba\x51\x0b\x9f\x98\x18\x67\x03\x4d\xa8\x90\x0a\x15\x15\x25\x4c\xd9\x91\x19\xca\x41\xe8\xc3\xc0\xa9\xd3\xcc\xce\x88\xb4\x53\xc2\x4a\x30\xbe\x1b\x25\x4d\xfe\x9d\xef\x84\x7b\x55\x49\xa5\xf5\x75\xc8\xb8\xec\x3f\xec\x2a\xd3\x98\x8d\xe3\x66\x04\xb6\x8e\x53\x70\x4c\x8f\xec\x47\x41\x17\x82\x3a\xdb\x5d\xee\x64\x9a\x5c\x81\xf2\x31\xee\x5c\x0f\x7a\x9c\x03\x9d\x6d\x01\xa9\x30\x2b\x52\x07\x36\x14\x23\x73\x7d\x0e\x48\x41\xb4\x2a\x8a\x33\x0a\x99\x27\x97\x31\x81\x2e\xf7\x8e\x48\x89\xa7\x64\x14\x09\x47\xc8\x21\x70\x3a\x47\x1b\xe0\x18\xba\x6d\x33\x23\x86\xe8\x4a\xf1\xe0\x93\x30\xc9\x2b\x34\x1e\x6b\x33\x90\xa8\x1e\x38\xa3\xe9\x4e\x50\xa5\x08\xec\x52\xa8\xe4\x04\x00\xb4\x65\xf2\xce\x7e\x72\x59\x54\x7b\x76\xd2\xc3\xf6\xb4\xfa\xc1\x4a\x93\xa6\x35\x26\x68\x2c\x28\x99\xa0\x09\x85\xbc\x31\xc8\xa8\x1a\x98\x2a\x04\x18\x70\xbb\x58\x4a\x22\x60\xd8\xd6\x2d\xe0\x86\x1f\xd7\x9f\x7f\xd8\xf1\x2b\xd1\xb2\x02\x07\x25\x3a\x81\x5b\x8c\x4e\xd0\x14\xb2\xb8\xac\x11\xfc\xa7\x97\x7f\xfb\x0b\x1a\x2f\xb4\xbe\x06\x86\x98\xe2\x0a\x57\xae\x03\xa8\x22\x6c\xaa\x57\x11\x44\x6e\x9c\xdc\xe8\xf1\x53\xf9\xc5\xa9\x68\x4d\x95\x99\xa0\x57\x7f\xb8\x1d\x27\x1d\x3d\x90\x8f\x27\x25\x99\x9f\x04\x5b\x68\x58\xf1\x69\xdc\x5b\xcf\x72\x64\x13\x27\xf9\xd9\xd6\x9c\x68\x5e\xd1\x62\xb1\xad\x33\xed\x8a\x97\xa0\x19\xbf\x33\xce\x9c\xd5\xa3\x1a\x50\xbd\x34\xbc\x69\x2b\x98\x38\xf4\xbd\xe7\xe7\x6b\x25\x59\xa6\x3e\x4a\x75\x12\x06\xd2\x0e\x82\xa8\xb6\xd9\xa5\x3b\xc7\xa6\x30\xba\x6e\x72\x4b\x3c\x61\x63\x6e\xbe\x0e\x49\xb4\x37\xee\x7b\x5c\x55\x63\x5c\xdc\xde\xf0\xb7\x7c\x2a\xdf\xb3\x73\x21\xb8\xe8\x8f\xb9\xc2\xfa\x4e\x9f\xb5\xec\x16\xaa\xe8\x76\x64\xb4\x7c\x6a\x31\x85\x8e\x3f\x20\x18\x5d\x54\x67\xdc\x28\x0d\x3d\xa8\x53\x49\x9c\x0f\xae\x6b\x99\xdc\xd3\xce\xd1\xc6\x10\xd1\x7d\x8e\x4d\xc0\x27\xbd\x71\xc8\xf0\x68\xff\xe1\xe5\x9f\xfe\x6a\x84\x0b\xe2\x02\xfd\xf5\x25\xa4\x1c\xcb\x81\xb9\x00\xe0\x06\xd6\xaa\x56\x8d\xab\x2a\x36\x4a\x10\x8a\x80\xef\xa3\x8b\x53\xef\xc0\x91\x57\x5b\x3b\xdd\x5f\x6c\x32\xde\xdc\xfc\x13\xec\x45\xaa\x24\xa9\x26\x03\xc3\xf6\xe2\xdd\x5a\x07\xa0\x5d\x1d\xd8\x2b\x2f\x9e\x29\x68\xfb\x46\xdb\x9c\x57\x6d\x4d\x5e\x93\x39\x2d\xe2\x02\x98\xbd\x55\xe9\xbd\xcd\xb9\xe9\x2b\x2a\x81\x04\x68\x5c\xf1\xe2\x16\x95\xf6\xcb\x00\x2a\xbf\x5c\x55\x3b\x7e\x16\x62\x93\x06\x12\x92\x05\x1e\x1c\x7f\x2f\x4d\xa0\xc6\x4d\xe3\x19\x4a\x04\xbe\xeb\x4d\x06\x88\x26\x60\x47\x4d\x0c\x23\x26\x07\xd3\x53\x43\xe9\x43\x3b\x22\x7d\x4d\x45\xbf\x22\x3a\xb7\x20\x3d\x12\xdf\xf5\x3e\x3e\x8e\xd9\xdb\x10\xdd\x0b\xdd\x69\x68\xe0\xbf\x0d\xdf\xc2\x0a\x33\x96\xa7\x1c\xf2\x1b\xc3\x68\x90\x7a\xfb\xc0\x2d\x13\xef\xbe\xcc\x10\x0c\x4d\xcb\x91\xe8\xcd\x0b\xf3\x41\xe8\x1a\x2b\x6b\x1f\xb9\x28\x3b\x46\x0d\x11\x92\x4a\xad\x3a\x7d\x84\x03\x75\x56\x61\x5a\x07\xe1\xbb\x6d\x4d\xc2\x2a\xa2\xbe\xc6\xcd\xf0\x96\x2c\x22\x37\x5c\xe2\x71\x79\x08\xe0\x5f\xe3\x26\xf2\x1e\x80\xd2\xb5\xe9\xd7\x40\xe4\xe5\x3c\xe2\xa5\xed\x07\x5c\x0f\xa6\x24\xf1\xa3\x98\xb1\x19\x75\xa0\x6d\x5f\x39\x1f\xbb\x85\xeb\xdf\x38\xfa\x13\x7f\xe5\x98\x5f\x7d\x4d\x17\x0d\x8c\xef\xb9\xde\x33\xbe\xf3\x99\xc4\x69\x12\xd2\x09\x6e\x27\xbb\x33\xfa\xd7\x51\xcf\xa1\x65\x4e\x66\x60\xfa\x5a\x47\xd3\xb1\x29\x0a\x90\xd0\x01\x7d\x14\x6d\xa3\xe8\xe0\xdb\x83\xad\xde\x71\x66\x65\x04\x6f\xf0\x14\x2c\xd3\x5d\x58\xa0\xe5\x3e\x85\x1c\xb4\x33\x7e\x67\xbe\x37\xe8\x92\xc6\xfe\x8a\x94\x1d\x91\xf9\x8c\x27\xad\x8e\x41\x0e\xba\x1d\x61\xad\x6b\xc3\x55\x78\x87\x17\x08\x0b\xde\xb2\xa4\x34\x68\x08\x8c\xf8\xc0\xd9\xbb\xa5\xc1\x5e\x72\x46\x5c\x90\x3e\xa5\x95\x9b\x8e\xc3\x9c\x4a\x83\x57\xa0\x0c\xbd\x3a\x7e\xf5\x32\xb9\xef\x57\xa4\x68\x85\xa4\x73\x72\x65\x6b\x9c\x07\x41\x95\x8b\xc9\x88\x4b\x49\xc7\x15\x24\x6e\x29\x8e\xce\x4d\x01\xf8\xd5\x81\x7a\xe0\x08\x8c\x98\x8b\x90\xad\x34\xa1\x87\x87\xe6\x04\x87\x80\x4f\xdd\x40\x02\xea\x63\xb7\x34\x49\x58\xd7\x25\x4d\xf2\xd2\x6b\x92\xe6\xde\xdb\xea\x58\x5d\xe1\xfb\x5d\x90\x24\xef\x6c\x6c\xa0\xab\x6c\x4f\x5d\xe5\x64\xf8\xe8\x4e\x50\x65\x0f\xf7\x1d\x95\x04\x1d\x82\x57\x62\x69\x33\x26\x11\x34\x87\x3e\xac\xc4\x0a\xf8\x39\x08\x96\xc5\xf2\xd1\xdd\x85\x55\x5a\x95\x27\x1d\x02\xff\xce\x3a\xb0\xba\x15\xb4\xd2\xbf\xbb\x97\x67\x98\x95\x55\x92\xcc\xf0\xb3\x52\x2d\x92\xb8\x70\x2e\x26\x28\x14\x89\x36\x7e\x19\x54\x93\x98\x61\x89\x18\x47\x35\xc1\x00\xd0\xd4\xb7\x8b\x93\x82\x3d\xae\xe6\x7c\x7d\x30\x9b\xdd\x5c\x63\xe1\x85\x60\xc5\xf5\x6b\x2a\xad\x78\xd6\x72\xc4\x5a\x20\x06\xd6\x51\xe3\x32\x25\xb5\x3b\x98\xd3\x6e\xf1\x8e\x3b\xd0\xe4\x72\x4f\xba\x8b\x63\xa9\x2f\x8f\xd1\x8f\x81\x2d\x41\xae\x9b\x6f\x01\x27\xb8\xc6\x2d\xd7\x81\x64\x92\xa2\xd9\xe6\x59\x1e\xae\xbf\x16\x57\xc6\xba\xbe\xc7\xbe\xc3\x09\x7d\xf8\xfc\x50\x07\x81\x2c\x74\x18\x51\x13\x52\xb7\x35\x50\x6c\xc6\x63\x1a\x93\xb7\x0b\x4a\x78\x77\xcf\x94\x30\x22\xb0\x8d\x2b\x38\x88\xa8\x25\x5f\xc1\x92\xb3\xd4\x03\xf1\x99\x0d\xa7\xe5\xfd\xe7\xd5\x14\xf3\x67\x09\x1d\x01\x3d\xe7\x90\x8b\xa5\xd3\x6e\x23\x26\xeb\x34\x96\x9c\xa3\x5e\xa2\xe6\x32\x9b\x3f\xe0\xfc\xd4\x8b\xf2\x4b\x4b\xe7\xb8\x22\x86\xc3\xde\x89\x86\xad\x2a\x13\xb2\x1d\xef\xaa\xd9\x68\xed\x43\x30\x3b\xd6\x83\x1e\x1e\xb4\x20\x33\xe9\x13\x2f\x5e\xa0\x43\xd3\xc6\x81\x21\xd9\xdd\xae\x92\x6b\xd7\xea\xfc\xbe\x49\xa8\xdc\x9a\x6f\xbd\xce\xef\x1b\x0c\x38\x8d\x66\x27\x16\xee\xbf\xc8\x0c\xcf\x09\x70\x1a\xd3\x0a\x8b\x0a\x40\xe9\xd7\x66\xca\xd0\xb8\x55\x88\xb0\x39\x15\x9c\xd5\xfa\xf8\x01\xf9\x8c\x96\x4c\x82\x00\x19\x7c\x41\x24\xfa\xfd\xe1\xc7\xd3\x2b\x48\x5a\x3a\xb2\x6c\xf9\x76\x7c\xad\x04\x7e\x80\xa5\x31\x04\xaf\xdb\xc5\xfd\x86\xdc\xd8\xf5\x76\x01\xfd\xc4\xcd\x85\x1e\x5b\xdd\xaa\x16\x57\x40\xfd\x5c\x54\xad\xbe\x0b\xb7\xb6\xb3\xf3\xfb\xc0\x53\x3c\x79\x39\x5d\xe0\x96\xf8\xfb\x35\x8d\x3a\xae\x39\x0e\xea\x59\xb0\x5f\x57\x68\xc8\xa3\x6b\x3c\xac\x21\xa1\x5c\x51\x74\x0e\xa4\x27\xa6\x0c\xf3\x70\xec\x5d\x1c\x07\xcf\x80\xd2\x09\x26\xf9\xdb\xd5\x24\x5d\xf1\x30\x42\x8d\x96\xad\xfb\xf0\x23\x0e\x43\xbe\x63\x10\xe1\x88\xce\xb3\xeb\x19\x2f\xc9\xe6\x55\x85\xd2\xf6\xf9\xa5\x6d\x33\x48\x7c\xa2\xcc\xde\x3a\xa6\x74\x2e\x14\x24\x31\x39\x7e\xb2\x98\x91\xb2\x8d\x50\xb9\x2e\x26\x06\x0c\x34\xe8\xbd\x0e\xa3\x02\xb3\x92\xea\xbd\x62\x52\x01\xcc\xeb\xf5\x21\xb3\xfa\xbf\x6b\x50\x84\x35\x4b\xfd\x87\x97\x11\xcc\x6b\x00\xb1\x5e\x51\xb7\x07\x61\xd5\x5e\x4b\x98\x00\x2a\x69\x49\xd0\x98\x14\xbc\x26\x80\x1d\x6e\x38\x33\xfa\xb8\xa3\x54\xf0\x09\x24\x26\x72\x6c\x86\xb6\x69\x97\x02\x47\xa8\xbd\xd0\xdd\x31\x92\x9e\x6b\x5f\x00\x5a\x4c\xaf\x35\x15\x5d\xf3\x7a\x1e\x0d\x6c\xc3\xaf\x0c\xe2\x0c\xe1\xae\x68\xa7\x1e\xc1\xa6\xfd\xf9\x92\x64\x9a\x6e\xa9\x86\x64\x4e\x81\x7e\xe0\x04\x4b\x49\xa7\x6c\xd8\xf0\x72\xa8\x9b\x3d\xf9\x9d\xfe\xdf\x8d\x8f\x52\xa4\x00\xd0\x6d\x5d\x93\x0a\x24\xf3\x53\x9f\x1f\xd7\xae\xd9\xd3\xd2\xfd\xcb\x1c\x22\x67\x9d\x41\x7e\xc1\xd2\xc2\x4d\xa8\x32\xeb\x15\xb3\x4c\xd7\x6b\xda\x31\x1e\x57\xf3\xbe\x03\x89\x2a\x3c\x26\x95\xfc\xdc\x76\x01\x8c\x43\x4c\x0f\x36\x4c\xc0\x72\xd7\x0e\x5e\xbb\x5b\x22\x36\x49\x44\xb8\xd3\x55\xa2\xc3\xd5\x28\x3a\x66\x98\xe7\x8a\xd2\xb7\x53\x24\xfd\x1f\xdf\xb0\xcb\x69\x3b\xfc\xda\xbb\x3a\xf5\x1e\x7a\x7f\xbd\x02\x92\x91\x01\x10\x64\xe3\x4d\xcc\x6b\x9b\xff\xcd\xca\x40\x0b\x01\x69\x68\x02\x68\x82\xe8\x99\x86\x2c\x69\xda\xf1\x78\x43\x5e\xe8\xe6\x97\x90\x1d\xc1\xb2\xa7\x05\x0a\xe4\x9a\x3b\x60\xc2\xab\x8a\xdf\x01\xff\x8d\xe9\x43\xe0\xfe\xdc\x9c\xc7\x65\x28\x97\x2a\xd0\xf5\xeb\x3c\xe7\x1b\x81\x7d\xef\x20\x77\xff\x4d\xc2\x2e\x54\x00\xbd\x78\x1d\xff\xc7\x17\xa3\xb3\xf8\x3f\xfe\x20\x89\xd8\xd4\xab\x68\xff\x7c\x79\xfa\x71\xd3\x9c\x8a\x9a\x8b\x91\x29\x02\x9e\xe7\xa5\x92\xbc\xd5\xfb\xc7\xad\x69\xa6\x77\x42\x95\xf9\xac\xfd\x9c\xc8\x37\x82\xb7\x9b\x9a\x61\x9f\x7e\xd9\xd9\x0c\x33\x97\x20\x90\x69\xe4\x0b\x59\xa8\x2a\x76\x1a\x67\x58\x10\x5b\x5c\x54\x6b\x87\xb2\xc1\x45\xa6\xd9\xf3\x75\x3f\x33\xbe\x2e\xe3\x7a\xc8\xb6\x69\x2a\x52\x13\xa6\x70\x05\xaf\xcd\xb5\x11\x57\xde\x9b\xb2\xd8\xdd\x9d\xf1\xe3\x7f\xfc\xf4\x38\xa7\xf3\xd3\x4d\xe4\x38\xab\x9f\x6b\x21\xfd\xe4\x7e\xba\x85\x02\x37\x78\x4c\x2b\xaa\x75\x97\xc7\x78\xbf\x8b\x8f\x5f\x71\xae\xbe\xf7\xb8\xbe\xc7\x68\xa9\x11\x74\x4e\x2b\x32\xdd\x38\x36\xfa\x65\xdb\x49\xdf\x84\x23\xd7\xc4\xb9\x2c\x70\x15\x93\xdb\xf2\x85\x23\xe1\x05\x04\x66\x1e\x65\x41\xd2\x44\xcf\x17\xbc\x7c\x73\x41\x14\xad\x81\xc7\x02\x0d\x23\xbc\x32\xf1\xb0\xc0\x38\x38\x4c\xba\xc7\xf1\xa1\xf2\xf0\xb6\x4e\x29\x9b\xa2\x5e\x21\xc2\x56\x08\xc2\x54\xb5\x08\x02\xa7\x40\xac\x61\x34\x67\xd0\x6a\x41\xb1\xb6\xda\x61\x8c\x3f\xee\xd4\x1b\x4c\x96\xb3\xa3\xc6\x0b\xad\x4e\x06\xfe\x98\x49\x0b\x64\x31\xa0\xc1\x9b\x92\xb1\x80\x97\x8a\x62\x1e\x5b\x53\x29\x88\x37\x84\x75\x5b\xf8\xc4\xfa\x47\x87\x7a\x6b\xf7\x6a\x07\x19\xf3\xf2\xb8\x2e\x7f\xd7\x54\x58\x4d\xb8\xa8\x87\xce\x0d\x32\xec\x99\x9e\x11\xdd\x3a\x83\x3c\x76\x8f\xe9\x30\xbc\x4d\xa6\xbc\x3a\x2b\x2b\x12\x98\x95\x7e\x01\x58\x69\x82\x97\xa8\x65\x82\x14\x7c\xca\x80\xc9\xdf\x7e\x0b\x06\x93\xf7\xfa\x60\xa9\x4d\x3a\xc4\xda\xaa\xda\xb8\x6f\x91\xc6\x28\x9f\x13\x31\x23\x78\xc3\x53\x98\xb6\xc1\xdf\xdb\x36\x91\x20\x8d\x20\x12\x26\xd4\x84\xd0\x25\x6f\x45\x41\x7c\xa7\x10\x96\x92\x17\xc0\x4a\x6c\x92\x04\x1d\x5f\x18\x06\x53\x71\xc2\x05\xc2\x68\x4a\xe7\x84\xa1\x2b\xb3\x1b\xce\x2a\xbc\x39\x4f\x56\xe0\x77\x73\x2e\x76\xdc\x2a\xee\x13\x48\x11\x56\x08\x97\x35\x05\x96\x06\xc3\x3c\x60\xdd\x92\x61\xab\xc1\x4f\xf4\x2e\x15\x1c\xd2\x09\xd1\xc5\xa6\x09\xa6\x5f\xf4\x5e\xc8\xaa\x74\x40\x00\x3f\x5d\x60\xe2\x39\x00\x84\x2f\x7e\x8e\x0a\x88\x9d\xbb\xf2\x30\x11\xd3\xf3\x25\x1d\xb2\x04\x19\xfa\x1a\x58\xd7\xa8\x75\x4e\xcd\xf0\xdc\xc0\x25\xba\x25\xae\xb4\x9a\xb1\xa9\x1a\xa9\xcd\x7e\x00\x10\x85\xfd\x32\x89\x83\x2e\xa2\x01\x84\xb2\xe0\x1a\xeb\xc2\x1b\x23\x5e\x5e\x37\xa4\x18\x74\x5b\xd0\x2d\xb8\x63\xda\x70\x24\x60\x1b\xf6\x27\x90\x82\xc6\x25\x22\x8c\x97\xb8\xd4\xbb\x35\xec\x64\x88\x5b\xa1\xaa\x47\x2b\x02\x86\x79\x27\x2f\x0c\xd8\xe1\xdf\x44\x6c\x9c\x5a\xb4\xc6\x1d\x37\xa5\xea\xf8\xf6\xaf\xe0\x8b\x23\x6c\x86\x59\x01\x9a\xbc\x3c\xb9\x25\x8d\x3c\x91\x74\x6a\x5c\x6f\x7f\xf9\xeb\x5f\xc1\x0f\xe7\x16\xe7\xe4\xea\xfc\xf4\xf5\xbb\xf3\xe3\x7a\x33\xb5\x6c\xab\x4e\xb9\x06\x2b\x45\x04\xfb\x16\xfd\xf7\xe1\xbf\xbe\xf9\x75\x78\xf4\xdd\xe1\xe1\x8f\x2f\x87\x7f\xfb\xe9\x9b\xc3\x7f\x1d\xc3\x7f\xfc\xc7\xd1\x77\x47\xbf\xba\x7f\x7c\x73\x74\x74\x78\xf8\xe3\xdf\xdf\xbd\xb9\x19\x9d\xff\x44\x8f\x7e\xfd\x91\xb5\xf5\xad\xf9\xd7\xaf\x87\x3f\x92\xf3\x9f\xbe\xf0\x25\x47\x47\xdf\xfd\x7e\xc3\x8e\x46\x92\x72\xa6\x12\x71\x26\x91\x6f\x66\x24\xdc\x6c\x04\x21\x35\xdc\x20\x31\xac\x02\x69\x17\xd0\x68\xa9\x6d\xa7\x69\xd9\x7f\xe9\x7b\xc5\x75\x8f\x4d\xf5\x55\x23\xcd\xf5\x53\xf1\x3b\x60\x76\xa1\x5c\x2b\xce\x9b\x47\x9c\x40\x8d\xbb\x24\x73\x22\x06\xae\x0f\x6f\xf5\x2b\x47\x91\x6f\x0c\x21\x0f\xeb\xde\x17\x49\x9d\x17\xb9\x41\xdc\xbc\x3c\xe5\x4a\xde\x00\x53\x9d\x1d\x2d\x08\xee\x63\xf4\x11\x0b\xca\x5b\x69\x35\x64\xa4\x8d\x70\xce\x40\xc9\x30\x4c\x08\xfe\xb2\x87\xc0\x8b\x49\x9b\xd8\x54\xc8\xb8\x26\x3d\xf5\x70\x69\x69\xa4\xfc\xd4\x9f\xfa\x4b\xf2\x6c\xfd\xad\x4d\x37\x35\x11\x1b\x41\xe6\x6e\x18\xc2\x71\x09\x11\x65\x6a\x6e\xf8\x51\x19\x8b\x60\xed\x15\xed\x14\x9a\x4d\x9d\x05\xc1\x94\x41\xa3\x6e\x8c\x70\xa1\xc5\xc4\x5e\xa1\x3a\x13\x9d\x3a\x46\x30\x58\x37\xe3\x75\x0f\x3e\x8d\x3b\x66\xf1\xc2\x31\x96\x6e\xaf\x59\x9e\x8d\xa7\xdc\xff\x17\x93\x1e\x54\xd2\x87\xee\x3b\x6a\x57\x3f\x8d\xe8\x85\x39\x10\x70\xd5\x0f\x0b\x41\x15\x2d\x70\xf5\x22\x02\x21\xeb\x5e\x54\x54\xad\x36\xb8\xc2\x77\x09\x82\xd4\x1d\x37\x7d\xc2\x15\xba\x25\x8b\x3b\x2e\x4a\xa7\xfd\x85\x80\xd9\x4d\x63\xd1\x7a\x63\x48\xe5\x86\x03\x80\x7b\x2d\x92\x4d\xa8\x46\xd4\x44\xa0\x31\x71\xe8\xb2\xa5\x1f\x2f\x8e\xd1\x29\x5b\x18\xc5\x2b\xc2\xfe\xf7\x91\x93\xa0\x18\x2c\x68\xb7\xc6\x12\xe9\x9d\x06\xab\xf5\xb8\xbe\x61\x15\x55\x15\x6e\x3d\x34\x48\x9b\x3c\x5e\xf0\x38\xbd\xd5\x61\x83\xb8\xb0\xb4\xb5\x20\x90\x84\x21\xf9\xdd\x14\x03\x6c\x5f\xf6\x24\xb7\x85\xd6\xfa\x29\x23\x52\xbe\xd1\x1b\x76\x7b\x67\x06\x83\x02\x6e\xfb\x02\x44\xb7\x1d\x3d\x14\xd1\x92\xc9\xa4\xec\x69\x95\x80\x97\xdd\x2f\x37\x5d\xd2\x53\x87\x75\x01\x6b\xc7\x50\x50\xeb\xa6\xa9\x92\x61\x00\xd5\x04\x3a\xf5\x2f\x4e\x2f\x37\x0d\xb3\x59\x8e\x2b\xa3\x42\xcb\x6e\x8c\x5d\x79\xd0\xfe\x28\xc1\x16\xb3\xbc\x44\xe4\x97\x16\x57\x80\x9c\xbc\x11\x2d\xd9\xb4\xb2\x70\x94\xc1\x41\xd4\x1d\x17\xb7\x27\x7f\xfe\xeb\x4b\xb0\x39\x7c\xef\x86\xd3\x8d\xaf\xa8\xd8\x7c\xef\xa8\x4c\xef\xa5\xe2\xe7\xe5\x55\xb8\x91\xdd\x5a\x3a\x87\x86\xc5\xc4\x9a\x8a\x1c\x7a\x07\xf8\x05\x8a\xc2\x1a\x44\xe5\x75\xc7\x67\x74\x0f\xbb\xee\xde\x2c\x9a\xcd\x95\xa4\xf8\x64\xec\x5e\xbb\xc9\xa0\xcf\xb3\xf0\x6d\x66\x55\xa4\x59\x12\xdf\x4e\x00\x5d\x38\x90\xc1\xc7\x40\x91\x03\xd2\x1c\x20\x35\x70\xc3\x2c\x9a\x04\x3a\xa0\x2c\x88\xc6\x48\xbc\x88\x73\xb0\x01\x6b\xc7\x93\xca\xdc\xab\x5e\xcb\xf6\x26\x75\x6a\xc1\xd2\x97\xbe\x02\x86\xe5\x7c\xda\x54\x3d\x31\x2c\xa0\x50\xa4\xd2\x57\x3c\xb3\xce\x1f\x00\x66\x55\xda\x8c\x2b\x0d\x9b\x29\x16\xca\x28\xcc\x6e\x6a\x36\xd5\x8d\x3b\x1e\x98\x92\x20\x3c\xc7\xb4\x02\x34\x3c\xb8\x92\xb8\xec\x81\x63\xcc\x60\x0b\xce\x64\x5b\x43\x8f\x36\x0d\xa5\x8d\x17\x56\x9b\x88\xf1\x6f\x52\x43\xf2\x58\x35\xb3\x4f\xd3\xc1\x6f\xae\x9a\xbd\x5e\x30\x5c\xd3\xc2\xad\xe2\xa9\x59\x36\x20\x92\xec\xd1\xc7\xc7\x7b\x65\x75\xf7\xeb\xba\x55\x7a\x6a\x63\x94\x93\x6d\xdc\x0c\x11\x61\x1f\xb8\x4c\x82\xa3\x10\xe6\x54\x90\x7b\x5c\xa8\x6a\x01\x11\x95\xde\x8f\x06\x88\x50\xc8\x3b\x35\x70\xf4\x6a\x73\xc6\x13\x2e\xec\xce\x32\xfa\x6c\xef\xed\x37\xa4\x6e\x80\xcd\xd0\x2a\xf0\xd2\xd0\xfe\xaa\x56\x30\x47\x64\xba\xf4\x17\x1b\x37\x1f\x80\x12\x23\xf2\xc8\x2e\x14\xc2\x65\x29\x11\xf6\xc5\x94\xa8\x32\x8a\x77\xcb\xe8\x2f\x2d\xa9\x16\x88\x96\x84\xa9\x0e\xb8\xd6\x9f\x62\xcb\xf7\x64\xe5\xc3\xe6\x62\xfd\xac\x3b\xdf\x46\xdd\x27\xa4\x74\x15\x88\xac\x3f\xf9\x81\x35\x35\xee\x5f\x30\x13\xb4\xae\x1e\x61\x26\x6c\x49\x27\x88\x60\x67\x49\x51\x05\x62\x19\x09\x72\xa4\x7d\x40\x18\x76\xfd\x46\x32\x24\xd2\x26\x5e\x55\x2c\x6f\xa5\x08\x00\xa4\x79\x3a\xce\x04\x7d\x01\xa2\xd7\x97\xd7\x3f\xbf\x3d\xfd\xaf\xf3\xb7\x4f\xce\x04\xd9\x53\x15\x36\xf7\x6a\x98\x27\xc7\x12\x5c\x2d\x77\x64\x39\x2c\xbe\x24\x7f\x9c\x05\x6e\xf5\x39\x19\x4b\x25\xc4\x1c\x6a\xcc\x94\x4f\x77\x88\xfe\xa8\x77\x9d\x07\xc2\x9b\x4f\xd6\x0c\x49\x5f\xc5\x6b\xe5\xae\x2f\x09\x16\xd5\xae\x89\x6b\x6d\x77\xef\x84\x23\xd9\x89\x3d\xd4\x9b\xda\x4f\xef\x25\xf7\xd3\xa8\x46\x57\xf7\x61\xd6\x3d\x05\x2c\xd9\xfe\x76\x0e\x32\xc3\x80\x16\xc8\x04\x5f\x31\x62\xe4\x6e\x59\x5d\x30\x37\xb9\xfe\x8b\xd8\x3d\x35\xe6\x2d\x2b\xcd\xed\x66\x87\x60\x7c\xdf\x61\x4a\x4f\x49\x2a\xa2\x9c\xe7\x2a\x4d\x41\x40\x4e\xcd\x06\xa6\x57\xf0\x79\xc1\xbb\x8d\xe2\x0e\x05\xcf\xdc\x19\xf2\x12\x59\x7f\x32\x40\xb8\xe2\x6c\x6a\xe9\x85\xa3\x9a\xed\xd2\xfd\x7d\x14\x61\xb0\x32\xd9\x50\x33\x17\xdb\x6b\xc2\xf4\xc5\xea\x34\xe9\x9b\x35\x5c\x2e\xdd\xa6\x20\x05\x17\xa5\xf1\xe9\xe8\x89\x37\xee\x9b\xe3\xde\x89\xbb\x86\xcf\x88\x8c\xde\x58\x6b\xf5\x6e\x98\x5f\xc6\xa1\x2a\xc7\x34\xf0\x91\x81\xe1\x63\x34\x9d\xa8\xe6\x96\x42\xe5\x3d\x51\x1e\x90\x3f\x08\x5e\xa1\xa6\xc2\x8c\xd8\x72\x20\xde\x01\x9b\x65\x9a\xf7\x72\xfd\x73\xcf\x57\x90\x55\xe9\x4d\xfc\x6d\x38\x3e\x3c\xe7\xb2\xa9\x6c\x80\x0d\x91\x0a\x9f\xa0\xb3\xd1\x07\xd8\x26\xef\x48\xcd\xc5\xa2\xeb\xa4\x57\xd1\xf5\x29\xc0\x1b\x0b\xeb\xf5\x49\x39\xda\x5c\xb2\x10\x41\xe7\x20\x5e\x98\x63\x67\x51\x3a\xba\x27\x6f\x69\x4d\x15\x24\x8b\x6d\x1a\x17\x2a\x9a\x16\xe2\x49\xe8\x45\x0d\xa3\x79\xd1\x17\xc8\x12\x19\x66\x9d\x25\x7f\x0f\x16\xc4\x84\x3b\x1c\x76\x31\xc5\x55\x60\xc2\xab\xfa\x5f\x8c\x0c\xa7\x02\x43\xc0\xc6\x09\x10\x6e\xaa\xad\xd8\x2e\xe1\xc0\x51\x11\x25\xaf\xb5\x35\x20\x60\x62\x07\xc6\xab\xa4\xa7\xd2\xbf\x5e\xce\xb0\x00\x8b\xba\xd6\x97\x50\x7f\x3d\x70\xd4\xc5\xbf\xa9\x1f\x47\x5b\xb4\x6f\xc9\x9c\x54\xdd\x26\xb4\x1e\x99\x0d\x1b\xde\xbc\xfc\x5f\xb4\x69\x1a\x6f\x29\x16\x11\x4e\x4d\x94\x45\xc1\xb4\xfb\x58\x0b\xa6\x4e\x9d\x94\xfa\x70\xfb\xd3\x3c\xe8\xe5\x2d\x37\xa4\xe8\x5f\xd9\x51\xd5\x90\xc0\xdf\xa0\x0f\x4f\x47\xd5\x1e\x52\xe7\x47\xdd\x69\x8f\xec\x2a\x44\x8f\xe7\x2e\x44\x9f\x70\x19\x6a\xb1\x57\x60\x06\xe2\xc7\x81\xfd\xf4\x91\xef\x0e\xe5\xe6\x77\x69\x0a\xc7\x70\x34\xc3\x70\x6f\xaf\x3e\xe8\x2b\xd4\xea\x08\x61\x4a\x2c\x2c\x00\xf4\x5a\xef\xb7\xbe\xd0\x8d\xd7\x1d\xa2\xa9\x85\xd3\x88\x85\xa3\x49\x81\x53\x29\x81\x53\x08\x31\xb3\x55\xeb\xfc\x04\x27\x7b\x6f\xb1\xc1\x24\x58\x95\x2e\xb1\x55\x6e\x90\x85\x23\x8f\x78\x89\xee\x00\x55\xd0\x27\x4c\x30\x05\x81\x2f\x74\xb7\x6e\xbb\x42\x67\xee\x7a\x75\xc1\x90\xe8\xa6\xad\x43\x2d\x99\x13\x3b\x03\x67\x94\x85\x31\x6f\x7b\x23\x58\x3d\xad\xe7\xb6\x28\x66\x5c\x12\x66\xc1\xf0\xc2\xfd\x80\xf5\x03\xd0\xa5\xb9\x1e\x93\x2a\x48\x5b\xe2\x0e\x32\x27\x62\xa1\x20\x12\xea\x89\x8c\xad\x03\x54\x2e\x85\xc1\x02\xb0\x73\x74\xc3\x20\xb3\x6d\x76\x00\x00\x5d\x26\xce\xf9\x0a\x23\xdd\xca\x8e\xc8\xcb\xb4\x14\x29\xda\xf2\x11\x2c\x41\xa9\xa4\xad\x68\x4e\xd6\xd4\xe8\xd8\xf1\x81\x63\x12\xdf\x43\x69\xe0\xce\x46\x2a\x78\xdd\xb4\x2a\x08\xd2\xba\x20\x6e\xcc\xea\x27\x91\x55\xd4\x98\xe1\x29\x19\xfa\x8e\x0c\x83\x84\xa4\x48\x15\x22\xf2\x42\xcd\x81\x95\x47\xcf\x09\x2f\x8f\xe2\x31\xf3\x28\x03\x6e\x1e\xa5\x62\xe7\x51\x5e\xfc\x3c\xea\x6e\xa5\xad\x1c\x5d\xef\x32\x58\x3a\xbc\xb6\xae\xf7\xa7\x0e\xaf\xd3\x04\x63\x4e\x2f\x90\x06\xdb\x96\xa9\x44\xbc\xa6\xca\xe1\xf3\x02\x3d\x01\x58\x43\x43\x9a\x52\x2b\x68\x00\x1d\x89\xe1\xfe\x24\xf7\x4d\x45\x0b\xaa\x02\x0e\xe7\x32\xc6\x0a\x0b\x68\x68\xb9\x36\x9b\x68\xed\xd2\xe4\xa1\xfe\xa3\x33\xfb\x2c\x36\xdd\xf7\xbd\x30\x1c\x69\xe4\xbe\x20\xc4\xb9\x5c\xf6\xd2\x6c\x2f\xcd\xbe\xf0\xf9\xda\xa4\x99\xad\xc7\xfc\xf4\xa9\x40\x57\xa6\x61\xd4\x74\xa9\x3f\x2b\xb5\x62\x3d\x1f\x6b\x44\x58\xdf\x26\xfd\x9c\x42\x35\xf9\x01\x7a\xcf\xbe\x37\x55\x3e\x07\x26\x0f\xe8\x18\x5d\x30\x24\x79\x6d\x2b\x92\xde\x2b\x39\x30\x1a\x2f\x46\xb2\x1d\x4b\x62\xf5\x5d\x2e\x89\xcb\x18\xb6\x69\xd7\x0d\x11\x46\xf4\x45\xe6\x0c\x69\x69\x65\x3a\xf5\xc8\x64\x5f\x77\x5c\xdc\x56\x1c\x97\xf2\xa4\xe1\xe6\x7f\x86\x9e\x2c\xef\xe4\x77\x76\xdd\x87\xcd\xe6\x5c\x22\xb1\xb8\xf3\x20\x19\xf3\xa9\xb3\x35\xae\x96\xda\xee\x41\x51\x7b\xa9\xac\xfd\xe0\x31\x70\xb2\x19\x34\x35\x9a\x0a\xde\x36\x2e\x2c\xd8\xf1\xfe\x6a\x53\x7c\x53\xf8\x10\xd7\x93\x11\x04\x71\x4d\xde\x41\xbf\x23\xde\x9c\x07\xcf\x03\xe9\xec\x4e\xb0\x28\xa5\x1c\xac\x65\x5f\x17\x2d\x8b\xc8\x79\x30\x09\xb0\x5c\x74\x14\x91\x04\xbd\xa8\xc8\x14\x17\x8b\x17\xfd\x5e\xad\x61\x42\xb5\x5e\x4b\x7d\xfd\xea\x6b\xdd\xf4\xce\x95\x96\xdd\xd4\xb1\x0f\xf5\x6a\xe1\xea\x36\x28\x60\x03\x28\x93\x76\xf8\x2e\xe7\xc2\x6e\x25\x9b\xfb\xbf\xb1\x73\x22\x3a\x4d\xf7\xcf\x7f\xfd\xf3\xd0\xb1\x1f\xc0\x30\x9f\xe2\xdc\xf4\xc8\x36\xb7\x97\xae\xd1\xdb\x6d\x63\x82\x4a\x2a\x1b\xd8\x99\xe0\x01\xef\x72\x1e\x7c\x77\xf3\xe5\xde\xac\x6f\xd2\x6d\x86\xc8\x06\xd3\x56\x83\xb2\xe9\x93\xa7\xcf\x5c\xf7\x9b\xb6\xe7\x8e\x37\xf8\x97\xb6\xab\x28\x6b\x2f\x2b\xa3\x6c\x07\x0b\x68\x27\x11\x4a\xac\x06\x2c\xaf\x91\x97\xab\xde\x1a\xab\xbd\x01\xbd\xba\x93\x20\x7e\xe9\xa4\xc2\x0b\x27\x51\xfb\x83\x28\x21\x0d\x86\xb8\x1a\x5a\x1b\xf6\xa2\xe3\xa6\xf5\x22\x50\x6b\xa1\x75\x03\x97\xac\xfb\x36\x1a\xe3\xba\x3c\xdf\xcb\x81\x0c\xac\x4c\x62\x09\x00\x22\x2c\x3f\x85\xa9\xa3\x02\x78\x91\x9a\xcf\x81\xdd\x53\xeb\x14\x13\x45\xc4\x1d\x16\xe5\x86\x77\xfe\x56\xd3\x6b\xfa\xc3\x87\xdd\xd6\x91\x82\xc0\xc5\x39\x32\x6c\xa6\xd3\x16\x8b\x12\xf2\xa9\xba\x3d\xb1\x47\xd4\xae\x7b\xb6\x8e\xa8\xb5\x59\xd3\x81\x00\xd8\x3c\xc2\xec\x9e\x73\xac\xf5\xa0\xfe\x9b\x4c\xac\x04\xf2\xdb\x96\x70\x59\x90\x21\xbd\xc7\xcd\x6c\xe4\x22\x5e\x22\x0a\x7b\xd2\xbb\xa6\xdf\x34\x9a\xf1\xaa\x04\x65\x75\x58\x91\x39\xa9\x7c\xd7\xb4\xc0\x15\x74\xdc\x2a\x4b\xb8\x54\xf0\xba\xb6\xb9\xef\xb6\x8c\xbc\xc9\x93\xdf\xd8\xd8\x31\xfc\x80\xb8\xfa\xb6\xc7\xb5\x00\xb7\xcb\xb1\xee\x1e\x81\x9d\x11\x8e\x12\x4c\x48\xa7\x14\xd8\x6b\x90\x4f\x10\xd1\xdb\x34\x62\xfb\x6d\x01\x48\xb1\xc4\xbe\xb8\x0d\xe7\xe2\x52\x17\x5c\xbc\xeb\xd4\x7e\x8c\xb8\xa1\x6d\xd4\x6b\xd1\x4a\xb2\x52\x24\xaa\xe3\xd5\x8a\x04\xe2\x5f\x72\x48\x52\x87\x92\xdf\x3e\xe0\x59\xf8\xb2\x06\xfa\xda\x85\x0c\x5e\x88\xb5\x72\x79\xcc\x2c\x96\x38\x9a\x5f\x2d\xc9\x79\x96\x12\x59\x37\x4e\xa0\x8d\xff\x30\x2d\xaa\x5e\xf1\x02\x57\xc0\x25\x1c\xbb\xc5\x50\xb6\xa0\xea\x72\x5f\x02\x12\x05\xac\x87\x09\x9f\x55\x1c\x97\x8e\x23\x9d\xb8\x72\x08\x58\x2d\xd9\xdf\xb1\xb1\x48\x43\x62\x62\x5a\x72\xb9\x1f\x8d\x20\x01\x97\x55\xaf\x61\x0e\x15\x48\x62\x1b\x7b\xd7\x87\x11\xd8\x91\x85\x1c\x83\xb6\x2b\x49\x0d\x38\x02\xb2\x09\x88\x63\x5f\xcf\x52\xcb\x4a\x2a\xd1\x8b\xb7\x6e\xd2\x5f\xa4\x54\xb9\x8e\x76\x5c\xaa\xc8\xa4\xe2\x5c\x7b\xce\xcc\x83\xdf\x67\xc6\x7f\x71\x4b\xf5\x4c\x4d\x3a\x21\xe7\xb6\x84\xe7\xa4\x6b\x9a\x8a\xc6\xef\xb2\x8f\xb8\xa2\xa5\x97\x9c\x58\x24\x94\x79\xf5\xcb\x87\x86\xc1\x21\x69\x04\x19\xae\x1e\x94\x78\xc8\x81\xf5\xf8\x38\x87\xe5\xf0\xb3\xf5\x71\x12\x37\x2e\x42\x1f\x18\x9c\x39\x46\x4a\xad\x6d\xf1\x6e\x29\x08\x9b\x70\x61\x9c\x31\x4f\xbe\x61\x2d\xc1\xf6\x36\xae\xe1\x53\x4f\xe4\x12\xb2\x3f\x1b\x17\xa4\x85\x1f\xc2\x9e\x34\x1e\xcc\xbe\xdb\xbc\x43\xb9\x6e\xde\x2e\x14\x03\xb0\xa5\xcd\xf4\xcc\xd9\x78\x3f\x6c\x80\xbf\xdb\xda\x2c\xca\xa5\x22\x18\x3a\xc1\x3b\xdd\xe8\x8c\x36\x46\x88\x61\x65\xff\x3c\x46\x38\x40\x8e\x89\x7e\xa1\xaf\x3e\xd9\xf0\xf2\xdb\x18\x3c\xe2\x2b\x93\xa2\xc2\xef\x80\xb4\xf2\xcd\xc5\x6b\x7f\x96\xf5\x5b\xbf\xbf\x8e\xa1\xfd\xd6\xcf\x1f\xcc\x7b\x25\x51\x53\x5a\xa2\xb1\x2d\x0f\x4a\x14\x3a\x64\xe4\x0e\xe9\x33\x20\x6d\x0a\x90\x27\xff\xb0\xb3\xe9\xda\xf7\xc3\xb3\x9d\x38\x8a\xe8\xc5\x1f\x6d\x02\x0e\x11\x8e\x6b\x6a\x4c\x6d\xb1\xf3\xf7\x57\x07\x8e\xb1\xf3\x6e\x28\xee\x86\xc3\xe1\x30\x66\xfe\x9c\x4f\x78\xd0\x5b\x79\xef\x65\xa9\x79\x49\x27\x8b\xa5\xf5\xd7\xf7\x4d\xd7\x25\xd0\xbd\x31\x5b\xd8\xf1\x3f\x23\x5d\x30\x36\xb2\x17\xd0\x58\xfd\xe5\x4f\x71\xa2\x26\xe4\xf2\xdf\x86\xd8\x59\xd3\x0d\xcf\x18\x31\x26\x33\x3c\xa7\xda\x04\x98\x98\xf3\xaf\x4f\xd6\x43\xab\xef\x34\x9a\x68\x59\x60\xd9\x23\x0c\xb3\x14\xb9\x6f\xb8\x84\x13\x05\xb0\xc4\x11\x87\x0c\xb4\x3e\x75\xac\xf1\xb3\x35\x0d\x14\x4d\x8c\x68\xb0\x27\xf4\x6c\x8c\xc7\xa4\x45\xb8\x59\x41\x63\xac\x3b\xe1\x87\x7c\xb8\xb4\xe1\xa3\x2a\x1d\x5e\xd8\x53\x05\x2e\x13\xc6\x11\x99\x4c\x48\x01\x25\x89\x48\x33\x23\x35\x11\xb8\xea\x77\x4d\xb6\xc5\x0c\x61\xf9\xad\xb6\xc0\x85\x3e\xa0\x46\x59\xad\xf1\xc6\xe5\x06\x90\x65\xec\x00\x9b\xba\xa4\x51\x10\x4f\xa3\xda\x04\x8c\xd7\x2f\xde\xb3\x2b\xce\xd5\x3b\x2a\x41\xd3\xb5\x49\x29\x26\xde\xf9\xe2\x78\x8d\x8f\xdf\x7d\xe7\x51\xad\xcf\x47\x50\x44\x29\x15\x1d\xd9\xfb\x36\x0e\xb8\xbe\x36\xf4\x6d\xe8\x23\x90\x16\xc2\xdc\x70\xca\xd4\x4a\x59\x21\xad\xd7\x15\x11\x94\x5b\xfa\xf9\x20\x89\xf4\x71\x3a\xa7\x27\xc6\xb1\x62\x9a\xe7\x1d\x5e\xf8\x3c\x54\x4b\xb1\xbc\xe4\xa4\x32\x71\x54\xfb\xdd\x98\xab\xd9\x8a\x17\x2b\xae\x26\xf5\x88\x97\x4b\x2f\x1a\x74\xec\x89\x7d\xb6\xaf\xe5\x06\x15\xc0\xb3\xb5\x49\x49\x4a\xc2\x36\x2e\x84\x82\x3c\x4b\x07\x56\x69\x58\xec\xdf\xd0\x5d\x0a\x27\xec\x92\x83\x1c\xda\xc6\x19\xbb\x08\xb8\x20\x61\xbe\xc3\x13\x05\x5e\x06\x7d\xf4\x30\x30\xa7\x70\x36\x14\x9c\x43\x84\x3b\x6a\x59\x2f\x26\xb6\x7a\xff\x8a\x9a\x36\xd7\x92\xd9\x95\x48\x87\x92\xa2\x08\x77\x81\x73\xc5\x11\x61\xb2\x15\x76\x4f\x6c\xcc\x88\xaa\x9f\x92\x13\x13\xf2\xb3\xc3\xf9\x70\xf1\x1a\xbd\x44\x87\x50\xf4\x17\xc4\xfe\x04\xd3\xca\x93\x3d\x2d\x17\x39\x85\x52\xf5\xfa\x15\x91\xc3\xf6\x90\x85\x09\xae\x24\x19\xe8\xbb\x13\xae\x46\x3b\x6e\xad\x83\x38\x95\xbb\x21\x02\x88\x2a\xe3\x40\xcb\x5f\x83\xd8\x89\x3d\xbe\x63\xce\x2b\xb2\x31\x88\xc3\x17\x4b\xd9\xd6\x0d\xf7\xe1\x49\x6e\xb8\x30\x2e\xa1\xcf\x6f\x7f\x49\xcc\x91\xab\x89\xc2\x25\x56\xd8\xde\x7c\xee\x07\xbf\xd9\x8d\xb8\xbf\xff\xbe\xec\x49\xb9\xff\x6c\x81\xad\x6d\xdb\x92\x6b\xba\xe1\x6d\xc9\x99\x75\x29\x85\xc5\xe8\xaf\xcf\xe1\xf7\xa6\x62\x2a\xa0\x0d\x8c\xd7\xd5\x79\xb8\x8c\x15\x24\x83\x9c\xdb\x48\xe2\x30\x30\xba\x66\x58\xf6\xcd\x2d\xc6\x4b\x77\x63\x97\x3c\xcc\x8a\xf7\x1d\xd3\xfb\x90\xfb\x6e\xf8\xdb\x6f\xe9\x67\x79\xac\x28\x28\x64\x65\x42\xa0\xd6\x84\xba\xd2\x27\x4b\xd2\x39\x79\x11\x95\xa0\x1b\xfc\x3d\xaa\x09\x66\x12\x09\x02\x33\x0d\x56\xfc\x04\x66\xd8\xb8\xaf\xb8\xa1\xc7\x1d\xf1\xd2\x8f\x75\x39\xca\xe7\xd4\x88\x98\xb1\x1a\x9e\x2d\x03\xa5\x95\x15\xbf\x83\xf3\x5d\x61\x31\x75\xce\x02\x39\x40\xe3\x56\x19\xbf\xa3\x44\x35\xbd\x87\x4a\x00\xbe\x4c\x19\xcc\x46\xcb\x82\x0f\x46\xbc\x94\x3e\xe7\xdf\x33\xfe\x58\xa3\x99\x87\x24\x40\xe0\x14\x8f\x99\xbc\xde\x72\x40\x7e\x05\x38\x46\x11\xa9\xe8\x14\xaa\x51\x87\xb3\x05\xde\xb7\xff\x19\x72\x07\x2c\xfe\x1f\x64\x33\x32\xe0\xef\xa3\xe7\xcc\x67\x81\xdb\xd5\x91\x2e\x10\x86\x2d\xcb\x66\x38\x6c\x1b\x9e\xf5\x1f\xf7\x0e\x57\xe4\x91\xb1\x00\xaf\x86\x4b\x53\x81\x5b\x6b\x76\x6b\x1b\x37\xbc\x0b\x9f\x5b\xb2\x98\x5e\x9c\xbb\xf9\x76\x73\x8d\x01\xc8\x39\x54\x82\x10\xf4\x3d\x1d\x0b\xa2\xc5\x0d\x23\x15\x34\x49\xaf\xcf\xae\x2f\xba\x5d\xa5\x3f\xd2\x73\x17\x7c\x18\xd1\x85\x3b\x80\x84\xeb\x77\x94\x82\xce\x89\x40\xfa\x0e\x69\x21\xfb\xdb\x4d\xb2\x93\x08\xe3\x85\xaf\x12\x60\x0b\x3b\xc2\xf7\xb0\x99\x0c\x4e\xdf\xfa\x88\x69\x4c\x1a\xc1\xd9\xf5\xc5\x6b\xd3\x03\xca\xa4\xc2\x5a\xcb\x43\xef\x81\x8f\x32\x9c\x1c\x0c\xde\x15\x24\xc8\x10\x96\xbe\x22\x25\x12\x4e\x12\x54\x1b\x97\xbd\x40\x2b\x87\xc1\xe8\x00\x01\xb9\x2b\xf8\xe1\xe0\x2a\xb5\xd3\x01\x3f\xef\x31\x0c\x04\xc5\x18\xa2\x8e\xe3\xb2\x13\x09\x56\xf6\x4b\x5a\x1b\x2c\x75\x3e\xc1\xe5\xb4\x79\x1f\x4a\x2a\x3f\xd5\x09\x90\x83\x57\x04\x97\xff\x10\x54\x91\xf7\xac\x20\x81\x4c\x89\xf4\xec\x85\x42\xdf\xe5\x57\xf0\x70\x8b\xa4\x72\x3d\x60\xb8\x3e\x0d\xbb\x4c\x20\x93\xc0\x99\xd9\xbf\xcf\x21\x96\x60\xf9\x52\x2d\x37\xc2\x92\xaa\xc8\xc5\x3a\x05\xd2\x5e\x4d\x21\x5f\x44\x4c\x38\xad\x27\x32\x7b\x92\xd1\xca\x2c\x8b\x27\xe8\x7d\xb5\x46\x83\x09\x8b\x48\x49\x5b\x38\xdb\x00\x43\xa7\x44\x21\xa9\xda\xe2\x56\x8f\xc2\x73\x93\x9e\x39\xb2\x2c\x80\xb9\x3e\x23\xc5\x35\xca\xb7\xd9\x2f\xed\xba\x2d\xeb\xcf\x6d\xbc\xc2\xd9\x20\x3c\x88\xe1\xaf\xc6\x4b\xe3\xfd\x0f\x7d\xa0\xfa\x8a\x76\xe4\xa8\xf3\x0c\x97\x36\xc2\x48\x60\x56\xf2\x7a\xa5\x7f\xfa\x64\x12\x5c\xcc\x22\xfa\xd1\x99\x44\x9b\xda\x87\x31\x21\x99\x07\x2c\xca\x04\xfb\x30\x26\x48\xbc\x64\x51\x3e\x6f\xfb\x30\x12\x77\x96\x08\x02\x23\x73\x52\x65\x40\xe1\x00\xc3\x95\x9e\x04\x2f\xea\xe1\x03\x23\xf0\x97\x41\x0a\xbd\x23\xb2\x15\xec\x91\xe0\x59\xf0\x6e\x57\xdc\xc0\x22\xb1\x1f\xb6\x7e\xf1\xce\x8e\x3a\x13\xe2\xea\xc6\x02\xc8\xba\x51\x03\x94\x6a\x57\x47\xdd\x46\x79\x1f\xd1\xf2\xa8\x3f\x48\x53\x3a\xac\x1b\x35\x38\xfa\x76\x71\xd4\xfd\xa2\xe7\xdb\xba\x7b\x6d\x2f\xf6\x30\xe1\xde\xb3\x87\x09\x3f\x36\x4c\x38\xe0\xf8\xc3\xe0\xc7\xea\x01\x77\x9f\x2b\x58\x18\x98\xe8\xf5\x2c\x12\xc3\xd1\xdb\x60\x35\x1b\x80\xe3\x4e\xd1\xb9\xe3\xfe\x45\xb7\x26\xec\x77\xd0\xab\xc1\xeb\x0e\x62\x87\xa3\x36\x54\x7f\x99\xb0\xc5\xeb\xf0\xc4\xe6\x37\x97\xef\x6f\x42\xa2\x3f\xec\xca\xbf\x45\x17\xef\xd9\x95\x1b\xf0\x71\x30\xc7\xcb\xeb\xf4\x78\x90\xe3\xc8\x37\xad\x47\x1c\x3f\xc5\x79\xfb\x32\x14\xf2\x32\x06\x39\x53\xe3\xcb\x80\xe4\xd5\xb7\x27\xad\x50\xca\x45\x1f\x00\x82\x01\x47\xb4\x15\x43\xfb\xd4\x27\x1c\x03\x26\xb9\x17\xad\x81\xca\x90\x54\x40\x19\x48\x88\xae\x42\x24\x96\x32\x93\x8a\x15\x52\x05\xc5\x98\xa1\x8e\xb0\x66\x45\xe5\x32\x25\x37\x6b\x2c\x16\x00\x71\x02\x04\x82\x45\xee\x1d\x86\x99\xd0\x47\x60\x07\xc7\x08\x92\x19\x41\xd7\x2b\xb3\xef\x4a\x17\x5b\x77\x5f\xe8\x6d\x8c\xa3\x69\x5d\x5d\x60\xd7\x04\x68\x39\x25\x51\x44\xd4\xb6\x88\x17\x51\xb6\x68\xab\x24\xd6\x17\xee\xe7\x27\x0e\x80\xcd\x8d\x3b\x99\xe0\xd2\xe1\x77\x0d\xe6\xbc\x26\xf5\xd8\xc0\x1e\xe5\x6a\xc9\x75\x0f\xea\xa8\xf1\x34\x4a\xc6\x2f\xfb\x53\x18\x0f\x78\x89\xfc\x0e\x13\x44\x7f\x6a\x26\x96\xb7\xd3\xd9\x6a\xd7\x62\x50\x2c\x9f\x1c\x0c\x44\xaa\xa4\xea\x91\x5e\x94\xa4\xb1\xf7\xb1\x91\x79\xd9\x97\xf8\x19\x29\xc4\x4f\xcc\xc2\x9b\x4a\xbd\x94\x12\x56\xcf\x58\x0d\x10\x7d\x62\x0b\x6c\x43\x98\xbf\x0e\xc2\xf2\xab\xf9\x26\xd2\xa1\x66\x8c\x4c\x5f\xc1\xce\xd8\x48\x53\x81\xab\x02\x8a\x5c\x47\xed\xdf\x35\x21\x70\x22\xa6\xc4\x06\xbf\xaf\x95\xa0\x85\x5a\x8f\x1f\xb6\xbf\x4b\x88\xe5\x1c\x9e\x56\xcd\x0c\x1f\xa1\x0f\xd2\x45\x90\xcd\xf1\xf1\x11\xd7\x2f\x12\xfc\x10\xe7\x31\xbe\x66\x7b\x01\x44\x46\x6d\xd6\xab\x39\x60\x71\x78\x8a\xbb\x0e\x9b\x0e\xde\x4f\xea\xf9\xe5\x9f\x91\xec\x88\xd3\x7e\x16\xb2\x50\xd5\x56\x54\x9e\x6b\xd3\x34\xa4\xc2\x23\xec\xf5\x1f\x5f\x5a\xa8\x74\x9d\xeb\xe2\x79\xbe\xfa\x03\x04\x9f\x00\x18\xd0\x32\x5f\x6d\x21\xe6\xe2\xb0\x2d\x1c\x3e\x04\xc9\x38\x42\x35\x9d\xce\x94\xc7\x5e\x56\xb8\x65\xc5\xec\x19\xed\x8a\x6d\xf2\xba\x9b\x15\xf6\x28\x25\x8c\x6e\xb5\xb4\xaf\x50\x83\x05\xae\xb5\xda\x65\xcf\xb7\x24\x51\x91\x8b\x67\xc9\xe2\xae\xff\x14\xc4\x72\xc4\xdf\xee\x0c\x03\xfc\xa5\xaf\x32\x66\xbb\xb4\x00\xf4\x4a\xd4\x32\xa2\x1c\xac\xe6\x30\xa3\x59\x86\xf6\x11\x82\x6c\xbb\x32\xb6\xac\x2a\x92\x95\x24\x5b\x0e\x27\xff\xc3\xf4\xc2\xe9\x1c\x85\x67\x34\x79\xfc\x90\xb2\xf3\xdf\x58\x22\x4c\xdc\xc7\x4b\x2e\x45\x62\x43\x66\xbe\xc8\x0e\x7c\x06\x3a\xbc\x5d\x44\x7a\xfc\x8d\x54\xc5\xe1\x32\xb7\x18\xa1\x9d\xd6\x12\x9f\x09\x02\x55\x4f\x71\x75\xdd\x90\x62\x9b\x0e\xcc\x37\xef\xae\x4f\xfb\xbd\x81\x7b\xde\x96\xa5\x20\xf0\x3d\xc2\xa5\x4b\xfd\xbc\x23\xe3\x19\xe7\xb7\x91\x8d\x1d\x06\x8c\x8c\xb3\x76\x7c\x5c\xf0\x3a\x60\x39\x1d\x4a\x3a\x95\x27\x56\x30\x0c\xf5\x34\x1d\x21\xca\x2a\xb8\xae\x9d\x3e\x44\x98\x72\x26\x4b\xc2\x80\x51\xe1\x47\x0c\x1b\xca\x52\x6f\x5a\xbd\x6b\x75\x4a\x2e\x93\x58\xae\x92\xaf\x94\xd5\x1d\x13\x5b\xf6\x73\x69\xd7\x3c\x30\xd2\xa5\xf2\x9d\x7e\x1b\x2c\xcf\x9a\x09\x00\x6e\x65\x4a\x6c\xcc\x48\x9b\xa8\xdb\x3c\x3d\x3f\x74\xdd\x08\x7d\x77\x74\x12\xca\xf3\xc0\xaf\xec\x93\xc3\x0e\xf4\x5f\x22\xfb\xa7\x07\xe9\xa5\x58\x4e\xab\xca\xe8\x09\x23\x5e\x1e\xc8\x30\x18\xdb\x91\xb6\x79\xec\x9b\x01\xc6\xd3\x39\xe9\xf5\x3f\x56\x11\xd4\xcf\x21\xf5\x10\x62\x87\x15\x55\xdc\x51\xc5\xd5\xf4\x5e\xf7\x2d\x6c\x2b\xe8\x9f\x29\x80\xc9\x86\xeb\xbf\x8e\xca\xbb\x46\x90\xa8\xe7\xbd\x8c\x03\xbd\x1e\xe1\xeb\xf5\xfe\x16\x2d\x31\x45\xd7\xf5\x17\x97\x44\xdd\x71\x71\x6b\xe6\x2a\xc4\x59\x29\x0e\xbf\x4c\xd9\xe2\x71\x69\x56\x28\x4c\xb5\xca\x74\xda\xa3\x77\x39\xa4\x5d\xd9\x7e\xe8\xfb\xdf\x69\x4d\x8f\x9f\x86\x85\x96\x52\xb1\xfe\x7f\xf6\xde\xbd\xb9\x91\xdb\x5a\x10\xff\x7f\x3f\x05\x4a\xd9\x2a\x49\x0e\xc9\x99\xb1\xf3\xda\xd9\xfc\x92\x92\x25\x4d\xa2\xf5\x8c\x46\x77\x34\xb6\xeb\xfe\xe2\xec\x0d\xd8\x0d\x92\xb8\xea\x06\xda\x00\x5a\x12\x7d\x73\xbf\xfb\x16\xce\x01\xd0\x68\x8a\xa2\xc8\x6e\x48\xa4\x26\x42\xaa\x32\x16\xd9\x04\x4e\x03\x07\xe7\xfd\xb0\x13\x3f\x41\x3a\x16\x59\x9e\x92\x75\x57\x44\x1a\x3d\x4e\x52\x16\xd9\x76\x86\x20\xe9\x51\x43\x97\xa9\x6b\x9e\xb1\xa3\x2c\x83\x50\xf8\x8d\x96\xee\x87\xae\x27\xcc\xbe\x32\x35\x2c\xbf\x6c\xc1\x80\x41\x3e\x79\xf8\x96\xd0\x82\x53\xe8\xc4\x49\xda\x0f\x5a\xfc\xde\xbc\xf0\xbb\x9f\x16\x22\x8a\x16\x5e\xdf\xdd\x18\xf0\xb9\x3c\x4d\x05\xe3\x3b\xcb\x3f\x6d\x61\xc9\xbb\x2f\x7f\x57\x96\x58\x38\x1d\x9f\xce\xb2\x50\x37\x7d\xc3\xa5\xd7\xab\x9f\x6f\xa8\xbe\x6a\xda\x75\xb0\x61\x25\xf3\xa6\x3b\x47\xf4\xb9\xdb\xc6\x21\x45\x18\x37\x6b\xdb\xd1\xf9\xe8\x8c\xe5\x45\x76\xa7\x8e\xf4\xbb\x7f\x3b\x39\x7f\xe2\x72\xe0\x9e\x25\xda\xdd\xdf\xd7\x20\x61\xc1\xa9\x79\xdd\x33\x0a\x40\xa1\x3a\x7a\xd0\x82\x3a\x20\x8a\x3a\x6f\x25\x45\x86\x50\x30\x8a\xe6\x53\x72\x10\x15\x77\xdf\x98\x9d\x9f\x09\xd2\x04\x54\xa3\x48\x30\x40\x1c\xc1\x44\x37\x9f\x83\x03\x95\x9f\xfe\xed\xe4\xdc\xbb\xfa\x02\xf4\xa8\x48\x3a\xcc\x73\x26\xbf\x03\x1f\xcc\xd0\x7e\x42\x1b\x55\x67\x86\xd4\x46\xdb\xcf\xbb\x80\xea\x19\xe3\x1a\xc0\x2a\x36\xe5\xda\xa8\xb9\xa3\xe7\x72\x12\x81\xec\x8c\xcb\xe1\x91\x2b\x36\x27\x7f\xfd\xee\xf4\xdf\xff\xe3\xfd\xc7\xe3\xa3\xf7\xff\xf1\xe1\xe8\xf8\xaf\x67\xe7\xa7\x3f\xfd\x74\xf9\xef\x97\x9f\x4f\x3f\xfc\xf4\xd3\x71\xad\x14\x13\xe6\x18\xfb\xf1\x5e\x32\xf3\xd3\x4f\xee\x8e\xe9\x9f\x7e\xfa\x9c\x55\xbc\xfa\xe9\xa7\x0b\x6f\xe6\x04\x3e\x6a\xb7\xaa\x43\x59\x70\x28\x3d\xd6\x64\x47\x82\x7c\x87\xc7\x0f\x6f\xd9\xca\xbb\xec\xd1\x41\x03\xb2\xfe\xbb\x90\xcb\xcd\x65\x2d\x48\x72\x73\x72\xe1\xb9\x37\xf6\x3f\x29\xc9\x84\x2c\x3b\x4a\x34\x17\x53\xa8\xf6\x87\x22\x6a\x70\x3c\x90\x31\x33\x37\x8c\x61\xde\xe6\xa2\x68\xd5\xbd\x1e\xdc\x8f\x56\xf4\x35\xae\x2d\xad\x15\x60\x5a\xad\x59\x5c\x98\x92\x4b\x04\xbc\xe6\xec\x06\xc4\x74\xcd\xa7\x82\x16\x91\x6b\x10\x3a\x15\x62\x04\x58\xf3\xfb\x0d\x21\xe1\x51\x12\x27\xf6\x7c\x76\x6e\xb2\x76\x94\xc9\x9d\x08\x93\x56\x67\x0c\xaa\x2d\x6c\x2c\x27\x17\x67\x27\xe4\xcd\xa6\x9b\x01\xba\x81\x8b\x2a\xb9\x5c\x86\x10\xc1\x10\x65\x45\xbc\x6e\x6d\xe2\xef\x94\x3c\x7e\x6a\x44\xaf\xc7\xb9\x2c\x29\x17\xdb\x6d\x32\x31\xa9\x8b\x62\x4e\x7e\xae\x69\x81\xd2\xeb\x85\xcc\xef\x72\x9a\xbd\x3f\xfa\x8f\xfe\x34\xfa\x63\x00\xfc\x4f\xa3\x3f\x5a\xea\x13\x6e\xc6\x9f\x46\xfa\x3a\x1b\xfd\x31\x2b\x6a\x6d\x98\x22\xee\xa1\x8d\x4b\x9f\x3e\xd0\x99\x22\xd0\x39\xea\x56\x00\x48\x29\xe8\xb9\x4f\x22\xd1\xa1\x51\x01\xe2\x3b\xff\xa2\x68\xc6\x2e\x98\xe2\xa0\x1a\x48\x91\x3f\x69\x87\x0a\x8f\xc1\x24\x77\x8d\xce\xa0\xe9\x36\xc2\x11\xf6\x4c\x30\x96\xa3\xa6\xe6\xc0\x66\x64\x6a\xa1\x86\x73\x1f\x81\x52\x35\xb6\xd2\x40\xa6\x18\xc5\xaa\x6f\x24\x67\x05\x83\x46\x76\x9d\x3a\x8f\xa2\x8b\xc4\x87\xec\x0a\x29\x86\x82\x4d\x31\x84\xd6\x85\x92\x60\x3d\x45\x64\xb3\xbf\x30\x25\xa3\x70\x4d\x6d\x64\x45\x78\x59\xb2\x9c\x53\xc3\x8a\x39\xb9\xe6\x74\xc3\xf5\x41\xac\x80\x3e\x18\x48\x1c\x0f\x84\x24\x12\x7c\xc0\xb5\xe0\xce\x5d\x33\xab\x0d\xc9\xe5\x8d\xd8\x5c\xa4\x70\x5d\x59\x43\x22\xae\xe0\xc5\xa0\xd5\x2c\x07\x36\x97\x54\x80\x13\x2d\x2f\x41\x37\xad\x03\x75\xfd\xd6\xa4\x4e\x80\x5f\x76\xe8\xd0\xf9\xc2\x17\x37\x76\x2c\x41\xd5\x02\xca\x72\x36\xbd\xbd\x20\xe2\x43\x33\xb1\xa9\x9d\x9d\xc6\xa8\xef\xb7\xd7\x33\x07\xcc\xc1\x43\x26\xc6\x16\x82\x55\x26\x52\x65\x7c\x5c\xcc\xc9\x8c\x16\x86\xb9\x8a\x99\x34\x3e\xa5\x4d\x37\xe5\x92\x99\xf8\x20\x0a\x29\xa6\xb1\xac\xcb\x6e\x2b\x96\x19\xe8\xdd\xc4\xa8\xa8\x2b\x84\xce\x8a\x71\x73\x59\x77\xb6\x7f\xc4\x76\x8f\x6f\x5e\xfb\x4d\xef\x42\x73\xba\xc4\x54\x75\x8d\xa6\x32\xb2\x60\x88\x29\x7d\x88\xd3\xd2\xee\x44\xfb\x3a\x9e\xfd\xb9\x34\x5b\xe9\x60\x75\xfb\xec\x2e\x0e\xa0\xdc\xe7\xf0\xca\x60\xc7\x30\x86\x42\x8f\x24\x4b\x62\xf1\x1b\x68\xce\x30\x27\x56\x2a\x32\xe8\x41\x73\x4d\xc5\x36\x77\x8a\xd9\x8b\xa5\x78\x55\x30\xf2\xc7\x2b\x36\x1f\x00\xb6\x0f\x50\x9c\xff\x13\xa9\x43\x04\x15\xcc\x0f\x31\x92\x95\x05\x40\x2a\xf2\x47\xff\x5f\x7f\x7a\xc2\xde\x30\x7d\xdc\x70\xf8\x52\xdb\x6a\xd7\x72\x8a\x95\x69\x78\x54\x4c\x8e\xb9\x03\x74\x45\x6b\x8c\xc4\x5d\x1e\x91\x53\xe8\x9a\x86\x0a\x24\x16\x98\xb7\x9a\x40\xfc\x70\x47\xcb\xea\x8f\xde\x9d\xea\x6e\x99\x37\xdc\x47\x71\x7a\xe7\xd2\xf5\x09\x62\x03\x72\x01\x5d\xf5\x9a\x4f\x80\x14\x9f\xcb\xd3\x5b\x96\xd5\xdd\xb2\xdf\x7b\xb9\x80\xae\x58\x87\x68\xca\x34\xa7\xf7\x1d\x9b\x7b\xae\x88\xc7\x60\xf5\xf3\x50\x0e\xb0\x21\x51\x51\xfe\xe0\xea\x63\xbc\x62\x9b\xf7\x8b\xc4\x71\xe6\xed\x1a\x00\x91\x6b\xcf\x15\x6e\xa5\x97\x8a\x4e\x6f\xb9\x36\xfa\x7f\x23\x3d\xc9\x64\x39\xf6\x4c\x15\xc1\xf1\xb8\x86\x95\x98\xdc\xe9\xbb\x7a\x2a\x5d\x41\xeb\x75\xb6\xfe\x05\xb6\x75\xc0\x1f\xfd\x06\x2a\x56\x29\xa6\xc1\xe7\x4c\xed\x56\xec\x6b\x97\xa0\x25\x05\xd4\x45\x76\x1e\x09\xec\x42\xdc\x69\x29\x9f\xcb\x83\x0b\xe2\xad\xc3\xe3\x82\x23\x38\xb5\x9a\xd2\xa8\x25\x0a\xe0\x47\xdd\xc8\x0e\x4e\x6c\x31\xe5\xe7\x9a\x5f\xd3\x82\xa1\xf9\xf5\x86\x17\x79\x46\x15\x86\x35\x22\xd1\x27\x5a\xba\x1c\x58\x6c\x83\xd6\xc9\x81\x15\xa4\x01\xd6\x20\xbb\x76\xe1\x4c\x54\x19\x9e\xd5\x05\x55\xc4\x52\xc0\xa9\x54\x9d\xea\xd5\xf4\x42\xb3\xe6\xa6\x76\xd2\xa6\x70\xa4\xc0\xb7\xcf\x8b\x80\xc4\x88\x67\x66\x41\x14\x97\x13\x94\x2c\x17\xc8\xcc\x01\x66\x9d\xb9\xdb\xde\x09\x02\x39\xf1\x8c\x27\x50\xf4\xb8\x1a\x4a\x14\x92\xc3\x35\xe1\x53\x21\x15\xcb\x0f\x23\x01\x24\xd0\xc2\x11\xf9\x36\x34\x6f\xec\xd2\xf7\xdb\x4a\x5c\xde\x93\x0c\x65\x65\xdc\xbb\x39\x42\xe5\xb0\xa9\x21\xbd\x13\xa9\xd8\x35\x53\xe4\xc0\xd5\x75\x63\xd7\x3c\x33\x87\x23\xf2\xff\x5b\x45\xaf\xab\xf3\x2d\x68\x90\x8e\x18\x86\xf6\x02\xae\xf8\x3f\xd5\xe4\x35\x39\x80\xa5\x62\xed\xf1\xd0\x07\x90\xe8\xb9\x36\xac\xec\x8e\xcf\xdb\xca\x81\xe8\x1c\xb8\x98\xe2\x12\xfc\xe0\x75\xdc\xe6\x70\x51\xdb\x5a\xc0\xf6\xd0\x31\x57\xf6\x62\x99\x81\x49\x72\xed\xe8\x62\xcb\xbd\x1a\x22\x36\x3c\x4f\x0d\x77\xe1\x3f\x21\x46\x80\x28\x36\x05\xea\x85\xb4\x67\xcb\xcd\xef\x3a\xc6\x61\x1a\x59\xc9\x42\x4e\xe7\x97\x95\x62\x34\x3f\x96\x42\x1b\x05\x34\xfa\x29\xcd\x4a\x9f\xef\x03\xc2\xcd\x3b\x76\xb9\x2b\xd4\x65\x84\xc9\x09\xd6\x65\x92\xf5\x74\x86\xad\x40\xe1\x87\x84\x66\x4a\x6a\x1d\xde\x69\x53\x95\x0d\x6c\x7b\x7a\xe4\xfb\x82\x7a\xfb\x72\xe8\x33\x0a\x6b\x82\xb5\xfd\x86\xce\x1d\x55\xa2\x63\x9e\xb7\x2a\x28\x7a\xd0\x37\x45\x87\x23\xcb\x1d\xef\xdd\x07\x2b\x13\x1c\x9d\x9f\x6c\x1a\xca\xb0\x3d\x95\xf7\xbe\x23\x0d\xda\x86\x2b\x12\x1a\xce\x2e\x28\x94\xb0\xcb\x58\x62\xd0\x6e\xe9\x94\x5f\x33\x11\x76\xe6\x99\xb4\x1d\x2d\xe9\xed\xe5\x15\xbb\xe9\xf0\x4b\xff\xa2\xdf\xb1\xcd\x93\x24\x86\x60\x0d\xfb\x5e\x68\x6a\xb8\x9e\x70\x3a\x2e\x9e\xb2\xf7\x29\x14\x4d\xb9\x64\x05\xcb\xb6\x28\xb6\xbf\x8f\x81\x08\xa5\xf7\x8c\x24\x13\x2e\x16\x70\xac\x1b\xeb\x68\xaa\xcc\xf9\x4e\x6f\x5c\x87\x12\x78\x6e\x59\xc8\x96\x93\xb5\x70\x7d\x74\x43\x50\x20\x46\x41\xd4\xe5\x98\x29\x4f\xc2\xba\x89\x47\xae\xa8\x24\xc9\xa4\x52\x4c\x57\x12\xb3\x55\x3d\xea\x38\x42\xd6\x9d\x1f\x75\x4e\x61\xe9\x9b\x0f\x02\x5b\x7a\x7a\x6b\xe5\x5e\xdd\x2d\x25\x00\x47\x0b\x93\x16\x27\xc5\x50\x20\x9f\xdd\xb5\x70\x74\xee\xd2\x43\x6f\x78\x74\x1a\xc4\x9f\x74\x25\xc3\xcd\xe8\x93\x03\x85\xa3\x73\x26\x14\x8e\x34\xd1\x80\x04\x2b\x04\xdc\xbb\x77\xb8\xc7\xe1\x9b\xb8\x7c\x9b\x33\xa0\xeb\x01\xaa\xd3\xae\x6c\xab\x68\x84\x31\xfb\x70\x0f\xb0\x40\x39\x77\xea\xc8\x15\x9b\xc3\xf4\xb8\x62\xf7\xee\x75\x3d\xaf\x85\x07\xac\x4f\x7e\x17\x8e\xa1\x7d\xa5\x5e\xbf\xf7\xdb\xdc\x79\x92\xbe\x77\x1c\x47\x47\xd3\x5d\x33\x5a\x78\x7c\xd5\x58\xe3\x10\x27\x5b\xd6\xb8\x86\x2e\x37\xb6\xb8\x5e\x6b\xf7\xce\x0e\xc3\xd1\xc7\xc4\xd5\x8c\x74\x17\x3a\x86\x69\x1d\xb3\x17\x85\xa0\x11\x39\xe9\x7d\xbd\x70\x2c\x33\x83\x9d\x89\x01\x39\x97\xc6\xfe\x13\x59\xc4\x4e\x24\xd3\xe7\xd2\xc0\x27\x3b\x71\x92\xb8\x01\xbb\x74\x8e\xce\x6a\x61\xc9\xb0\x40\x76\xe3\xa2\xdb\xac\xa0\xe0\xce\x6b\x99\x1a\x7c\x26\x88\x54\x6e\xcb\x7b\x82\x10\x34\x69\xed\x00\x88\x1d\xf4\xae\xcf\xf7\xbd\x8a\xb8\x85\x22\x3e\xe6\x47\x03\xc6\x01\x02\x35\x8f\xf1\x1b\x28\xc5\x5e\x15\x90\xf0\x9d\xd7\xb0\x61\xd4\xee\x1c\x35\x6c\xba\x71\x8a\xe3\xe2\x28\x99\x9a\x32\x52\x81\x5b\x27\x01\xe6\xf6\x11\x24\x70\xf4\x14\x27\x62\x60\x7a\x5f\xa3\xc4\xe9\xa5\x8f\x38\x29\xc8\x94\xa0\x6b\xa4\x91\x51\x7b\xdc\xf7\x08\x14\x94\xba\x4a\x0a\x06\x92\xff\x0a\xde\xdb\xff\x26\x15\xe5\x4a\x8f\xc8\x91\x8f\x30\x8c\xbf\x73\x41\x1a\xd1\x34\x3d\x40\xa9\xee\x3a\x16\xa8\x20\xcc\xd5\xb4\x90\x93\x3b\xc2\xf8\xc0\xd5\xdb\xb7\x0c\x3b\x18\x97\xf7\xae\xd8\x7c\xaf\x6b\x75\x25\x1c\x31\x45\xd9\x3b\x13\x7b\x4d\x48\x61\x8b\x0a\x04\x99\x14\x0a\x9c\xef\xc1\x77\x7b\x8f\x27\xf7\xf7\x92\x20\x9b\x82\x49\x17\x09\x44\xb0\x9e\x57\xb6\x75\xa7\x4a\x5a\xf5\xbb\x52\x0d\xf2\x7d\xc7\xe6\x5b\x73\xc1\x7c\x68\x41\xe1\x55\x18\xe3\x54\xf5\x46\xb2\xd4\x98\x7f\x5f\x80\x8f\x7e\xe6\xcc\x82\xf2\x9a\x29\x34\x09\x76\x5a\x1b\x8d\x60\x96\xd7\x84\x50\xfb\xa6\xdc\x0e\xe0\x23\x2c\x6c\xf1\xd0\x5b\x34\x0a\x29\xaf\xea\xca\xe3\x33\x84\xe1\x76\xbd\x31\x5c\x64\xb2\x74\x76\x11\x7c\x4f\xb0\x84\xbb\x8b\x39\x74\x11\x4f\x48\x63\xc2\x55\xc0\x98\xaa\x96\xd5\xa7\xa3\x7f\x30\xde\xcc\x60\xe0\x65\x96\xed\x07\x7b\x60\xb3\xbd\x2b\xb7\xaa\x13\x00\x3e\xd6\x3e\xde\x05\xd7\x06\x9a\x96\xc1\xb1\x3e\x91\x6a\xcc\xf3\x1c\x6c\x91\x08\x5c\x48\xf8\x5a\x40\x1c\x4b\x69\x5a\x76\xa8\x6e\x44\x63\x61\xd6\x25\x79\xf0\x8b\xc6\x2e\xb1\x6f\xba\x84\x25\xe3\x80\x45\x5c\x7b\x24\x3b\x51\x78\xc5\xc5\xad\xf1\x88\x60\x77\xbf\xd3\x4a\x63\xe6\xdd\x87\x96\x25\x89\xba\x28\xac\xb4\x07\x82\x18\x9a\x65\xd0\xd3\x07\x24\xd9\x05\x25\x4c\x2d\x91\x36\x6d\x64\xeb\xd4\x28\xc2\x75\xb7\x80\xbb\x3d\x66\x86\xfa\x3e\x17\x62\xa1\x1a\x54\x7b\xf3\xcf\xc4\x85\xcc\xdb\x16\xed\x15\x65\xa1\xc8\x81\xff\x8f\xf1\xbc\x73\xd2\x0b\xe9\x2d\xe3\xf5\x90\xec\x52\x32\x87\xfe\x02\x97\x33\xa6\x6f\x8f\x2d\xc0\xf2\x91\x2b\x0a\x83\x6f\xa7\x8a\x61\x15\x60\xa0\x4a\x40\xa5\x5c\xdb\xab\x5a\xb0\x6b\x66\xb1\x37\xe7\x76\x0f\xc7\x75\xc7\x9a\x69\x2e\x3e\xeb\x1f\x77\xac\xfa\xff\xdf\x89\x3c\x97\xc6\xbb\xa9\xfe\x31\x70\x0e\x73\x94\xe3\x6e\x79\x59\x97\xd8\xb7\xda\x18\xab\xc3\xf0\xc9\x84\xa9\x8e\xcd\xf9\x48\xc8\x3d\x69\xdb\xae\xdb\xde\x1a\x47\x25\x0c\x55\x53\x48\x98\x76\x76\x68\x2f\x72\x4d\x0b\x39\xa6\x05\x29\xb9\xb0\xa0\x75\xdb\x89\xcf\x77\xe6\x09\x6f\xec\xfe\x5c\x01\x1c\xc8\xa0\xae\xb3\x14\x1a\xc7\xbb\x45\x48\x28\x17\x3c\x3e\x59\xd8\x8d\x85\xc9\x81\xbe\x14\x4c\x6b\x0c\x0f\xfe\xc0\xc5\x89\x73\x2d\x76\x5a\xf6\x9d\xa5\x8e\xb7\xb4\xac\x0a\x36\x40\xf7\xe3\x37\xc3\x5f\xa4\x60\xc4\xa5\x3d\x0c\x02\x8a\xba\x3c\x1e\x23\xc9\x1b\x14\x78\xab\x50\x96\xcc\xe7\xd7\x74\x82\xa0\x45\x77\x83\xb3\x55\x93\xaf\x5f\x7d\xfd\xea\x4d\x37\x12\x73\xe6\x52\x8f\x32\xaa\x5d\x77\xdb\xbb\xa7\xbb\x71\x12\x0f\x8e\x7f\x12\xbb\x3b\x6f\xdc\xbf\x5f\xbb\x7f\xbf\x21\xff\xec\x38\x1b\xb9\x20\x17\xad\x7f\xed\x3f\x1d\x67\x1b\x5a\xe4\x89\x8e\xeb\xcd\xa0\xcd\x5b\x33\x2a\x90\xf1\x59\x3e\xef\xee\x37\x48\x7b\xf8\x0a\xc0\x67\x32\x59\x32\xd8\xfa\xaf\xff\x77\x37\x59\x13\xe7\x85\x08\x7d\x43\xa4\x70\xb3\xbf\x39\x80\xed\x3a\x24\x37\x10\xf7\x50\xd2\x2b\x74\x58\x1d\x65\xa6\xa6\x85\x05\xf8\xe0\x9b\xe1\x9b\x43\x22\x45\xeb\xf1\x4e\x20\x5c\x73\x69\xe5\x35\xbf\x13\x07\x6f\x3a\xd6\x78\x58\xdc\xce\xaf\x97\x6c\x67\x6b\x27\xe1\x6d\xa9\x98\xc3\x2b\xa4\xa5\xc9\x9e\x1c\x1f\x89\xf9\x0d\x9d\x07\xa2\xec\xc5\xf5\x29\xbf\x66\x64\xc6\xa7\x33\xa8\x86\xd0\xa3\x5f\x2a\xc1\xb8\x6f\xa0\xb1\xdc\xb7\xb4\x44\x40\xe6\x84\x77\x94\xfe\xce\xcc\xbe\x86\x88\x16\xf4\x51\xb8\x42\x37\x21\x4f\x2d\x24\x9f\xbc\x01\xb2\xf2\x7a\xa1\xd0\xc7\x96\xc3\x9c\xbe\xf9\x7a\x73\x99\x22\xd0\xe4\xad\x89\x15\x01\x82\x56\xc3\x83\xbb\xdc\x6c\x91\xb9\xf4\xc0\xda\x07\xb8\x16\x30\x8a\xc0\x3c\x03\x1b\xbf\x72\xda\x70\xc3\xd1\x9a\xdd\xeb\x66\x97\xbd\x90\x79\x08\x10\x21\x4e\x9e\x86\xc0\x3a\x4d\xf6\xda\x6c\x60\x0f\x02\xed\x82\xf5\xc6\xd5\x70\x76\xfa\x1e\x97\xc2\xbe\x87\xbf\xfc\xbd\xda\x80\x13\x72\x24\xf2\x26\x9b\xa8\xe3\x2e\xb1\x9f\x6b\x5a\x80\xf1\x7a\x0a\x71\x82\x2a\xcd\x7e\x45\x79\x47\x77\xfa\xda\x36\xd4\xbc\xe3\x6b\xe3\xbd\xd7\x75\x01\x91\x96\x0f\xbf\x7f\x52\x4c\xd0\x4d\xa8\x15\x68\x9d\x21\xd6\xaa\x94\xd8\xbb\x5e\x78\xf1\xdf\x45\x5e\x48\x67\x97\xe8\x75\x19\xce\x26\x4b\xd2\xe9\x9a\xd8\x2d\x32\x66\x33\x7a\x6d\xaf\x23\x94\x71\x8a\x6f\xaa\x3b\x62\x10\xb1\xfa\x44\x7b\x47\x09\x16\x8e\x04\xea\x36\xca\xbc\xee\x71\xcd\x9b\x77\x93\x06\xdf\xef\xc7\x45\x6e\x15\xfc\x1f\x2d\x4d\xa2\xa3\x4a\xdd\x45\x40\xfd\x7a\xb0\xb0\xaf\xee\xf3\xdf\x3e\x95\xdc\xfa\x75\x37\xb9\xf5\xd1\x85\x4b\xfc\xb7\xb3\x8e\xd4\x5c\xdc\xa5\xf7\xf5\xb7\x07\xcd\xae\x1f\x42\x84\xff\x1d\x82\x0b\x95\xb1\x9a\x20\xe7\x8e\x37\xcc\x89\xf7\x9a\x9b\x9a\x62\x01\x2e\xc1\x6e\x5c\x4a\x75\x74\xac\x0b\x47\x14\x19\xb9\xbc\xc8\xd6\x8d\xae\x8c\x59\x46\x6b\x6d\x2f\x75\x59\x59\xf5\x9b\x68\x8b\x7e\xde\x60\xf8\xcd\xc1\x37\x64\x48\x5e\x1f\xda\xdb\x2d\x90\xb4\x00\x0a\xc6\x02\x37\x34\xb6\x41\x45\xcf\xcc\xac\xaa\x6f\xcf\xb9\x23\x95\xe3\xae\x7a\xe7\x82\xd8\xfb\xfc\xc4\x26\x21\x73\x76\x34\x99\x70\xc1\xcd\xbc\x6b\x39\xfb\x34\xe2\xd3\xf9\x1d\x48\x22\x31\x6a\x26\x6f\xc8\x8d\xab\x25\x00\xb8\xec\x4a\xe2\xc5\xe0\xbf\xb2\x7f\xf4\x32\x5c\x03\xb3\x0c\xb2\x88\xd3\x38\x82\x3c\xe0\xa8\x8d\xc5\xbb\x91\xcb\x9b\x77\x8d\x7a\xba\xac\x35\x24\x7f\x95\x42\xaa\xb7\xa8\x1c\x62\x2f\xfb\x20\x83\xdc\xfb\x5a\x8e\xbf\x64\x45\x9d\x47\x1d\x30\x1a\xe9\xa9\x23\xfb\x1c\x92\x33\xb0\xdf\xbe\x7d\x68\xe5\x60\xe5\x85\x22\x0a\x79\x60\x78\xab\x00\xea\x1e\xd0\xbf\x34\x49\x1e\x58\x39\x47\x47\x60\xdb\x31\x69\xbf\x85\x4d\x25\x15\xe0\xcf\x93\xe7\x1e\xd9\x1d\xf9\x0c\xe1\xdd\xdb\xbf\x4a\x31\x1c\x2b\x2f\x12\xf6\x3e\xc3\xa0\xf4\xc5\x0b\xd0\x69\xf5\xa7\xb8\x34\x88\x7b\x96\xf1\xc8\xda\x38\xe8\x07\x84\x16\x12\x9c\x48\x96\x1d\xd9\x8f\x58\xee\x1e\x9c\x48\xef\x6b\x5a\xf4\x7d\x74\x02\x63\x06\xd5\x3e\x9b\xf4\x95\x41\xeb\x16\xa4\xb8\x82\xfe\x40\xd6\xb8\x74\x4f\x7c\xc1\x10\xca\x6d\xdd\xb0\x28\x98\x7e\x7b\x79\x7d\x01\x04\x6f\xb0\xbe\x62\x20\x59\xc0\xc1\xa1\x2f\x6d\x04\x77\x30\x6e\xae\x4e\x9d\xbb\xd9\x09\x4b\x5c\x77\x0e\xfc\xb4\xe2\x34\x87\x92\xbd\x19\x2d\x62\xbd\xc3\xea\x3b\x3c\x67\x0a\xc5\x9d\x31\x6b\x55\x61\xea\x9a\x6f\x81\xe3\xc7\x66\x76\xac\xd8\x04\xa5\x04\x70\xf1\x3f\x61\xf1\xdb\xbd\x71\x9d\x5d\x31\xe3\x03\x33\x14\x54\x49\xa9\x6a\x43\xc6\xb4\xa0\x22\xb3\x77\x11\x24\xd9\x6e\x86\xfa\x89\x37\xfd\x1b\x89\x00\xe0\x6a\x9d\xdf\x06\x3b\x46\x84\xfa\x3f\xf8\x0a\x51\xfe\x2a\x17\xda\x58\xa8\x31\xb1\xb5\xdf\xe6\x1d\x15\x5a\x0e\x2c\xd5\xf5\x8b\xde\x71\x5e\xe0\xf2\xee\xbf\x31\x7e\xc6\x49\x04\x8c\x19\x57\x36\x2e\x0a\x5e\x91\x5d\x7a\xa1\x2d\x93\xf5\x5c\x9d\xde\x36\xb7\xe8\xf6\x92\x6c\x34\x85\xe8\xbf\x85\xeb\xb1\xd7\xae\xd7\xe8\x4b\x40\xed\x0d\xf0\x14\xed\x2d\x71\x95\x3c\xf1\xe5\x41\x40\xa7\xa6\xef\x8e\x8b\x1c\xea\x03\x2f\x02\x13\x66\x6d\x43\x65\x15\x01\x0f\x11\xa8\xb9\xe9\x21\x5a\x6e\x8e\x7d\x6a\xf2\x79\xc7\xc6\xbd\x2d\x22\x7a\xd7\x7c\xd1\x16\x51\x20\xc9\x86\x16\xbe\xca\x8f\x15\x29\xf8\xc4\x6a\x5d\xb9\x64\x18\x15\x81\xe6\xf1\x8e\xc6\x37\xe6\xe5\x92\xc6\x44\xd4\x95\x6b\xb7\xcc\x2d\xe4\xc0\x47\x07\x10\xc3\x8a\x02\xb9\x43\x63\x11\xb3\x9a\xb0\x91\x8d\x49\xac\xab\x6d\x7f\x48\xda\xae\x89\xa5\x8b\xc5\x0b\xf9\xa2\x4d\xe0\x39\x9d\x87\xd6\xb2\x5d\x63\x70\xc7\xb5\x21\x53\x7e\x6d\x45\xa8\x3b\xfe\x8f\x65\xbe\x0c\xf4\x3f\xcd\x58\x51\x11\xc5\xf2\x3a\x63\x3d\x22\x01\x75\x47\x35\x9b\x90\xa3\xd8\x20\x08\x35\x33\x02\xbb\xdc\x6b\xe1\xe2\x9e\xeb\x83\xdb\x5f\x50\xe4\x13\xa0\xb0\xa0\xe2\xf1\x09\x61\xd7\x4c\xcd\x49\x25\xb5\x06\xda\x0f\xf2\x02\x16\x39\x84\x68\xca\x89\x4f\xac\x01\xa3\x0a\xec\x99\xb3\x2f\x74\x5a\x7c\xcf\x19\x25\xf6\xc0\xa8\x2c\x7b\xcb\x00\xbb\xeb\xb5\xfe\xe6\xd5\x9b\xae\x5e\xeb\xd4\xd6\xbf\x0b\xf8\x5f\x70\x29\xf7\x72\x2d\x9f\x4d\x96\xd1\xc9\xb0\xb7\x2d\xca\xb3\x8e\xd7\xb9\xab\x6b\x12\x76\x06\x9c\xc3\xdf\x1c\x46\x0e\xeb\x6f\x5e\x7d\xfd\xea\xcd\x81\xdd\xfb\xaf\x0f\xed\x29\x44\x6e\xe5\xaf\x23\xb7\x72\xf8\xa5\x7b\x8b\x0e\x25\xac\x48\x13\xb4\x73\xf0\xe6\x70\x04\x39\x0d\x50\x9f\xf4\x46\xaa\xdc\xa5\xf8\xfb\x8a\x91\xf6\xcd\x43\xfb\x4f\x5e\x7a\xe1\x73\x00\x44\x2b\x50\xc7\x6e\xe6\x21\x70\x68\x80\x1b\x9d\x1b\xf2\x55\x29\x15\xfb\x2a\x5a\xe2\xb9\x0a\x06\x77\x83\xbb\x4a\x5a\x0d\xaf\x3a\xc4\xed\xf6\x49\x76\xee\x9b\xea\x7c\x5f\x88\x5a\x49\xab\x0d\xe6\xb9\x96\x45\x5d\x6e\x1a\x85\xdd\x4f\x20\x7a\xef\xf2\x56\xdd\xd2\x2e\xb5\x12\xc3\x1c\x4a\x97\x73\x3c\x9e\xc7\xa5\x7c\xc7\xac\x90\x62\x8a\xbe\xca\xd0\xb0\x70\xc3\x55\xd7\xab\xac\x9e\x49\x91\xb1\xca\xe8\x57\xda\x48\x45\xa7\xec\x95\x03\x72\xa3\xc5\xb6\x57\xb2\xe0\x07\x80\xb6\x9d\xf9\x86\x4d\x81\xf0\x3d\x42\xa1\x65\x9f\xff\x0d\xf4\x92\x66\x50\x76\x12\x76\xdd\x4a\x4b\x51\x83\x61\xd1\x75\xbb\xb7\x54\xb5\xa0\x43\x07\xc1\x3e\xd9\xa0\xf4\x46\x9f\x16\x54\x1b\x9e\x7d\x5b\xc8\xec\xea\xd2\xc8\x6e\x86\xbe\x14\x1a\xc6\x32\x58\x5a\x98\x20\xc8\xd1\x8f\x97\xe4\x84\xeb\x2b\xa2\x98\x96\xb5\xca\x5c\xab\xb2\x85\x82\x8c\x9b\xd6\x8e\xc5\x61\x2f\x53\xc1\x8c\x2b\xb9\x4f\x4a\x9a\xcd\x50\xf5\x77\x51\x0f\xec\xb6\x92\xba\x69\xbe\xde\x01\xa5\x70\xc4\x9d\x2a\x8e\x7e\xbc\xbc\xfb\xca\x5c\x47\x4d\x32\xd0\x86\x88\xa9\x34\x60\x89\x6d\x22\xe5\x87\x46\xb1\x6e\x52\xd9\xd2\x9d\xb6\x08\x0f\x46\x29\xc5\x72\xae\xb0\x90\xaa\x7b\x57\x36\xd6\xa3\x4c\xf3\x11\xbd\xd1\xa3\x4c\x96\xe4\xf8\xf2\x8c\xe4\x8a\x5f\x77\xed\x93\xd4\x8f\x94\xfd\x8a\xde\x68\x86\xe0\x8f\x2d\xf8\xf6\xeb\x2e\xfb\xb0\xe5\x5e\xa1\xf8\x36\x67\x27\x1d\x7e\xde\x37\xff\x7b\xa2\x3f\xdb\x77\xef\xa8\xcf\xa5\xca\x9a\x43\x28\xbc\x45\x76\xc2\x0b\x86\x05\xbb\x10\x13\x9d\xdf\xd7\x91\x7d\xb8\xe6\x73\x59\x93\x1b\x8a\x86\x6d\xe0\xb3\xdd\xd3\x37\x3f\xf3\xea\x2d\x39\x15\xba\x56\xac\x49\x52\x5f\x04\xc1\x0a\xee\xbe\x8f\xb0\xaf\x2e\x04\xb4\xc1\x5d\x47\x31\xed\x51\x62\x0c\xc7\x29\x6a\x67\xfa\x2d\xd9\x63\xb7\xe6\x37\x7b\x03\xb2\x77\x3b\xd1\xf6\x1f\x61\x26\x7a\x6f\x44\xce\xca\xaa\xe0\x19\x37\x56\x1d\x15\x13\xa6\x1a\x53\x31\xfe\x20\x51\x97\xa5\x5d\xb9\x93\x24\x45\x26\x2b\x18\x85\x01\x3d\xb7\x8c\xe1\x01\x10\x8f\xe4\xd1\x07\xe2\x31\xd1\xfb\x6c\x42\x24\xa6\x1e\xb4\xcb\x94\x73\x1d\x26\xb7\x08\xed\x56\x17\x1d\xfa\x2d\x35\xa3\x41\xe1\x77\x52\xf9\x29\x5f\xe5\xec\xfa\x95\xce\xe9\x9b\x01\xbc\x16\xe2\xe7\x7c\x61\x0f\xa8\x26\x7b\x6f\x36\x6e\x14\xd0\x8c\x4b\x5e\xf2\x82\xaa\x62\x3e\x88\xf7\xb2\x99\xdf\xb2\x4a\x0f\x08\x18\x93\x5f\xef\x91\x03\xac\x06\x0e\xe2\x7a\xc1\x7c\x3b\xbe\xd0\xd5\x17\x32\xa0\x3a\x37\xbb\xeb\x1b\x18\x42\x7a\x07\x87\x10\x60\x4c\x34\xff\x28\x8a\xce\xc5\x3d\x52\x61\xbf\x87\xc3\xd7\x0f\x54\xb5\xf3\x62\x4f\x24\x4a\x6e\xac\x79\xc4\xb7\xe4\xe1\xc2\xa9\x00\x1f\x2c\x8e\xf6\xa8\x67\xb1\x6b\xe4\xac\x7b\xfb\x41\x12\x24\x85\x6d\x1f\xa8\x87\x03\x42\xea\x05\xff\xb9\x66\xe4\xec\xc4\x33\xea\x8a\x29\xcd\xb5\x61\xc2\x90\xbc\x25\xa1\x73\x14\xdb\x0f\x8e\x4a\xfa\x8b\x14\xe4\xf4\xdb\x4b\x37\x51\xe7\x6b\xb6\x7b\xa7\xdb\x91\x59\xd1\x5f\x6a\xc5\xac\x3e\xb3\x35\x95\xcb\x03\xb0\xa8\x67\xd9\xcf\xc9\x09\x35\x14\xd5\x2d\xe4\x18\xb2\xe9\xe9\x05\x6a\xd1\x18\xea\xb9\xf9\xe6\x71\xe9\x94\xa2\x00\xd4\x46\x9a\x50\xf4\x32\xf6\x50\xba\xed\xc7\x52\xf5\xc7\xe2\x33\xea\x3f\x76\x85\x04\x1a\xd0\x96\x35\x0f\xfb\x3e\xe7\x5d\x2d\xfa\xf8\xf3\xef\x3f\x9d\x6d\x41\x6f\xc9\x40\x27\x9f\x7e\x90\x79\x1a\xe5\x65\x3f\x9a\xd0\x8b\x68\xd0\x10\xf8\x18\x3f\x27\xa5\x5d\x89\x9c\x4b\xc1\x06\xe4\x13\xa3\x39\xb1\xcc\xca\xfd\xe7\x8f\x8a\x1b\x36\xda\xdf\x96\x90\xeb\x0f\x31\xc9\x46\xf8\xc9\xfc\x26\x9c\x47\x6d\x22\xa1\x97\x2b\x90\x74\x27\xb3\x8e\x0b\x39\x26\x8e\xa4\x6e\xf3\xed\xbf\xff\x74\x96\xec\xe5\xbf\xff\x74\xe6\xdf\xdd\xfe\xa7\x9c\xec\xe6\x6b\xef\x9a\xe2\xfe\x6e\x41\x63\xee\xaf\xb9\x7c\x70\x39\x11\xf4\x8e\x36\xfe\xf8\xaa\xf8\x68\xcb\x4a\x78\x82\x12\x4e\x4e\xd1\x7b\x4b\x2c\x5c\xdd\xcc\xa0\x5c\x74\x2e\x8f\xd8\x26\xae\x76\xa6\xa6\x27\x53\x14\xf5\x06\xbd\xfd\xf2\xb7\xa4\xac\x0b\x03\x5d\x6e\xe0\x6a\xd9\xbb\x06\x09\x64\xfe\x92\x11\xd7\xf5\xd5\x4a\x07\x18\x69\x92\xbf\xf5\xd5\x93\xc2\x2f\x96\xff\xe0\x03\x15\x74\x6a\x1f\x07\x8e\x4d\x4a\xfc\x33\xba\xd3\x07\xe8\xe0\x17\xe1\x2b\x7a\x4d\x79\x41\xc7\xbc\xe0\x06\xb4\x91\xc3\x91\xdf\x4b\x2c\x35\x03\x20\x6f\x8d\xd8\xef\x9c\x4a\x17\x77\xc2\x80\xee\x89\xe4\xc0\x7e\xf7\xea\xc6\x32\xc5\xc3\x11\x70\x48\x78\x70\xc6\x54\xac\xf5\x75\x5e\xd9\x5e\xf8\x4f\x8f\xa4\x2d\xf6\xd7\xd0\xa2\x8b\x07\xbb\xd1\x4d\x13\xb0\xd4\x74\xab\x9a\x80\x05\x60\xa9\x26\x00\x5f\xb8\x5e\xb6\x5b\x50\x06\x60\xf9\x0e\xca\x00\xfc\x2e\xb1\x32\x60\xd9\xd2\x97\xa4\x0c\x68\x96\x29\x66\x7a\xa8\x03\x40\x1a\x3b\xfe\xbe\xaf\x42\xb0\x73\x74\x31\x7f\xa1\x8b\xf1\x68\x90\x2b\xc9\x09\x35\xd3\x79\x61\x3d\x34\xb4\xc7\xaf\x16\xaa\x5c\x23\xf1\xba\x74\xd2\x81\x6f\x74\x0f\xbf\xb7\x24\xab\x4b\x7d\x7f\x1c\xbd\x19\x7a\xb8\x34\x69\xf6\xc5\xcf\xe6\xb7\x05\xc5\x1e\xf8\x98\x74\xbe\xda\x3d\x5f\x33\x63\xd5\x6c\xb2\xb5\xd2\x0e\x76\xf5\x77\x97\xed\x40\x92\x63\x56\xcd\xc8\xbb\xcb\x25\x0c\x0c\xeb\x77\xd8\xed\xd2\x18\x5e\xb2\xaf\x49\xc1\x27\xcc\xf0\xae\x9e\x91\x98\x87\x1d\x23\x2c\x2d\x06\x16\x0a\x33\x79\x86\x85\xdb\x15\x1c\x8f\x42\xfa\xf6\xa6\x41\xef\x79\x86\xcc\xa5\x94\x82\x1b\xb9\x71\x2f\x72\x92\xa2\x8f\x81\x5b\x7a\xdb\xac\xc1\xc3\x61\x0f\xf5\x93\xdf\x4e\xf2\x21\xfa\x94\x92\x4c\x16\x05\xcb\x7c\x2d\x0d\x40\xd3\x1e\x3b\x87\x63\x89\x89\xdc\x85\x02\xeb\xd1\xd5\x1f\xc0\x48\xee\xcc\xe1\xaf\x10\xf5\x5e\x7d\x3a\x3d\x3a\xf9\x70\x3a\x2a\xf3\x5f\xcd\xe4\xcd\xd0\xc8\x61\xad\xd9\x90\x77\x2d\x95\xba\xf5\x2e\x0b\x09\xb4\xe9\x47\xa8\x5a\x5c\x51\x33\x4b\xa3\x5e\xdb\x99\x2c\xfa\x34\x1d\xed\xbf\xd7\x58\x2f\x00\x2a\xb2\xb9\x38\x44\x25\xa5\x19\x10\x45\x21\xf8\x36\x74\x4a\x9e\xd4\x45\x81\x78\x66\x69\xcf\x20\xf6\x0f\xbf\x7a\x51\x72\xbd\x38\xd5\xda\xdc\x2f\x4a\xe3\xdd\x15\xf2\xd0\x5f\xb6\xec\xaa\x33\x93\x84\x08\xd3\x40\xd2\x46\x99\xcb\xd6\xe7\x18\xfb\x60\x66\x16\x81\xae\xd8\x9c\x40\x55\x7b\xab\xb6\x7e\xaf\x99\x6a\x5f\x41\x66\x32\xd8\xf5\x57\xb5\x66\x6a\x84\xd3\x3f\xf3\x93\xee\x23\x2b\xc3\xfb\x7f\x62\x93\xdd\x38\xe7\x4f\x6c\xb2\xec\x98\xdd\xc7\xd0\x9d\x39\x64\x55\x59\x51\xbc\x36\x33\xcc\xfc\xc5\xfe\xf9\xa8\xa7\x2c\x3d\x77\xec\x83\xf0\xcc\x0f\xba\x57\x7d\xf5\x14\x8d\x6d\x44\x0f\xad\x8a\x24\x6e\x02\x12\xfb\xd1\x1c\x66\xf4\xec\x96\xf2\xb9\xd5\x02\x16\x4b\x90\xf1\x6b\x56\xcc\x83\xac\x8e\x79\x33\x79\x8d\x15\x91\x69\x76\x75\x43\x55\x0e\xfd\xa6\x2b\x6a\xb8\xb3\x70\xf3\xee\x82\xa5\x1d\xbe\x47\xb9\xab\xb9\xec\x1a\x89\xb8\x04\x6c\x8d\x6f\xcc\x9d\x32\x83\x09\xa1\xc2\x15\x97\x76\x15\xd4\x2c\x8f\xa4\x9d\x83\x2e\x3c\x10\xa5\xd5\xdd\x32\xa6\xac\xb6\x5f\xcc\xc9\x8d\x92\x5d\x2b\xb0\xf9\xb1\x61\x60\x89\xbc\x66\xea\x9a\xb3\x9b\x57\x37\x52\x5d\x71\x31\x1d\xda\x97\x1d\xe2\x15\xd0\xaf\x2c\x26\xea\x57\xbf\x82\x7f\x7a\x40\x95\xa8\xb3\x47\xb0\x50\xef\xed\xa5\x10\x87\x7b\x37\x1c\xb0\xc3\xf2\xb7\x6d\x53\x75\x0b\x83\xbd\x4b\x32\x96\xa3\x95\xe7\xd8\x8a\xe6\x52\xe3\x33\xf6\x1c\x5b\xf4\x9a\xe6\x65\xc7\x2a\xc6\x64\x67\xc8\x75\x57\xe3\x0e\x17\x79\xb7\xa3\x4b\x62\xdc\x81\xd5\xdb\xc6\x1d\xf7\x99\x0b\x02\x0d\xe9\x20\xd4\x7b\x25\xa0\xf0\xac\x4f\xf2\x68\xe7\x78\x24\xb0\xf0\xe0\xe2\x9b\xb9\x28\x1c\xc4\x89\xfd\x13\x38\x2b\x78\x28\x64\xc5\x2c\x49\xce\xae\x46\x52\x4d\x1f\x23\x69\x63\x11\x5f\xcb\xb9\xfe\xb9\x18\x22\x04\xc3\x2a\x6f\x10\xf6\xf9\x59\xae\x5e\xb2\x33\x56\x66\x67\x3c\xef\x40\x8f\x1d\xce\xb9\x78\xcc\x2b\x45\xbe\x48\x2b\xcd\x17\xe5\x72\xdb\x22\x4e\xf4\xb7\xc5\xec\x9a\x8a\xde\x48\x74\x95\x84\xda\x6c\xae\x61\x26\x68\xe0\xc8\x59\xbc\xaf\x10\xaa\x30\x50\x45\x4b\x66\x98\x6a\x0a\xc6\x67\x52\x88\x3e\xfd\x66\x8d\x24\x1f\x2b\x26\x2e\x81\x09\xbf\xa8\xd5\x2f\x6a\xf5\xea\xf1\xa2\x56\xbf\xa8\xd5\x29\xd4\xea\x9d\x4b\x18\xf2\xf4\x14\x8b\x20\xba\x44\xc0\xa6\xa2\x83\xd3\x59\x9e\x1f\xcf\xec\xaa\x3d\x4b\x31\xe1\xd3\x0f\xb4\xea\xad\x40\x87\x99\x16\x94\xe1\xf0\xb1\x8b\x6c\x80\xd2\x54\x95\xac\xa0\x45\x9f\x2b\x23\x0a\xdb\xff\xf4\x9a\x59\x5f\x66\xe4\x2e\x5c\xb2\x24\x90\x1e\xf8\x1d\x81\xd2\x96\x37\x4a\xfb\xc9\x98\x9b\x46\x92\xd0\xcc\x60\x3f\x30\xec\xb9\x4a\xa4\x20\x99\xab\xf0\x0e\xfa\x4f\xd4\xa7\x2e\x81\x4e\x25\x88\xcc\x8c\x2f\x35\x1a\xda\x87\xbd\x7e\xfd\xfa\x35\xf6\x8e\xf9\xfd\xef\x7f\x4f\xa4\x22\x94\xe4\x2c\xe3\xe5\xdd\x07\xe1\xa9\xdf\xbe\xe9\xd8\x5e\xc1\x8e\x7f\x3f\xfa\xf0\x1e\xea\xb2\x54\x46\x63\x87\x46\x84\xc8\x4e\xdc\x5a\x54\x0f\xc8\xff\xb9\xfc\x78\xde\xb4\xfe\x6b\x7f\x0b\x56\x93\xb0\x9d\xdd\xe1\x89\xdd\xb7\xaf\x7f\xf7\x9b\xdf\xf4\x98\x09\x0c\x2e\x52\x71\x57\xce\xd8\x97\x98\xa1\x96\x1f\x2b\x86\x3d\x79\x40\x80\xf0\x1a\x2c\x16\x00\x33\x9d\xdb\x83\x10\x2f\xa0\x94\x7c\x3a\x33\xae\x4c\xac\xbd\xe2\x05\xcf\x0c\x0a\x02\x58\x5c\x4b\xba\x6a\xcd\x70\xe9\x11\x86\xa0\xbd\xf7\x08\x60\xc9\xd9\x80\x14\xfc\x8a\x91\x89\xfe\x8b\x92\x75\xd5\x34\xf2\xc5\x9e\x25\xbe\xf6\x11\x02\xd1\xe0\x7e\xe7\x3e\x98\xbb\x92\x49\xdd\x2b\x02\x25\x15\x91\x01\x20\x16\x4c\x0e\xae\xf2\x69\xd3\x18\xb6\xa2\x3c\x14\x3b\x82\xb4\x4d\x94\x65\xdb\x32\x72\xd6\xb1\xa0\x9c\x1d\xc7\x81\xa3\xf8\x06\x0e\x95\x92\xff\x89\x48\x0e\x25\x7e\x23\x8e\x0e\xa5\x71\x2d\xce\xf9\xc2\xb8\x4d\x64\x62\xe7\xf5\xaf\x18\x96\xbe\xb5\xfa\x1a\x13\xa1\xd5\x22\xbc\x3d\x54\xb1\x8d\xf6\xc6\x7e\x51\x70\x6d\x41\x83\x8e\x40\x0e\xe2\xce\x6b\x2f\x79\xd3\xb0\x1a\xdc\x7b\x8d\x37\xa2\x16\x77\x56\xc5\x4e\x1a\x3d\x56\x06\x96\x0e\x2f\x48\x7d\x17\xdc\x66\x6d\x2c\x90\xee\x9a\xcc\xb8\x67\x3d\x16\x84\x03\xeb\xde\xb6\x3f\x3a\x52\xcd\x4c\xed\x8e\x9e\x29\x25\x95\x7d\x57\xa6\xb5\xeb\xaf\x56\x52\x75\xc5\xf2\xc0\xff\x46\xe4\xc2\x6e\x8a\xef\x6f\xd3\xc3\xc4\x53\x50\xab\x85\xa1\x11\x9f\xce\xe1\x35\x9d\xc2\x0e\xc0\xed\x8f\x46\xfb\x48\x78\xa5\x22\xda\x50\xe5\xa8\xa1\xfd\xbc\x1f\xe5\xd9\x62\xdc\x5a\x8b\x6e\x7c\xa0\x15\xb4\xc0\x06\x39\x13\x10\x00\x6c\x18\xf0\xce\x8e\xf9\x50\x77\x46\xdd\x79\x4b\x02\x0b\x43\x5f\x83\x3b\x8e\x61\xe7\x0a\xeb\xfe\xf7\x76\x63\xfa\xdc\xf3\xde\x66\x12\xa0\x54\x7d\x7e\xbe\x80\x00\x57\xed\x9a\xf5\x46\x7a\x6a\xd4\x4f\x21\x4f\xa4\xfc\x96\x3d\x84\x70\x1c\x29\xcd\x42\x08\x4f\x3b\x38\x67\x2d\x49\xdc\xa0\xf5\xa7\xe8\x71\x87\x70\xec\x90\x00\x8e\x63\xd7\xc4\x70\x1c\x67\x13\x20\xe5\x0b\x2c\xdb\xb1\x9a\x58\xa9\xf2\xb2\x86\x3d\xbb\xbe\x8b\x6e\x4f\x82\xc6\xb1\x15\x39\x1a\x47\x0a\x69\x1a\x47\x7f\x99\x1a\x47\x9f\x30\x68\x1c\x69\x09\x87\x0f\xa6\xc6\xc3\x70\x62\x07\x4a\x16\x93\x80\x00\xe0\xf5\x04\x9b\x8a\x27\xc6\xbd\xe9\x85\x13\x6a\x90\x64\xd0\xb1\x96\x45\x6d\x70\xe1\x54\x53\xc7\xf2\x12\xbc\x10\x2b\xa0\x27\x45\x2f\x21\x69\x71\x91\x48\xf6\x02\xe9\x18\xc5\x95\xfe\x2b\xec\x66\x0c\x7f\x1f\x57\x48\x2a\xb4\x4d\xeb\x02\xd9\xbe\xfb\x63\xeb\xae\x8f\xd4\x6e\x8f\x5d\x73\x79\xa4\x2c\x2e\xd1\xd1\xd5\x11\xec\xa3\x29\xee\x8e\x9f\x2c\xd4\x16\xbc\x99\x31\x97\xe4\x12\x29\xbf\x56\xc8\xb2\x2c\x14\x34\x72\xdf\x6f\x15\x9b\xfa\x6c\xcb\x5b\x9e\xd6\xdd\x93\x69\xde\xdf\x89\xa0\x39\x39\x38\x0e\x35\xb3\x7d\xbe\xec\x99\x30\x4c\x4d\x68\xc6\x0e\x63\xe7\x02\xab\x66\xac\x64\xca\x6e\xbc\x7b\xce\x97\x60\x9e\x51\x91\x17\xae\xf4\x39\xde\x22\xc2\x6e\x0d\x53\xf6\x90\x9a\xe0\xb3\x4e\xc2\xe3\xb6\x0b\x66\x01\xe4\xdb\xf0\x75\xc0\xc2\xdb\xe6\x35\x08\x85\x17\x8f\x44\xc4\x79\x9a\x63\xf5\x7d\xd3\x2c\x0a\xe8\xd8\xc1\xd4\x9d\x82\x1e\x4b\x01\x52\x31\x90\xfb\xb9\xac\x15\x06\xdc\x86\x38\xca\x4c\x2a\x65\xe5\x73\x00\x88\x6a\xa2\xd8\x94\x6b\x03\xdd\x61\x7c\x57\x4b\xec\x30\xb1\xb5\x7a\x3c\x3b\x15\xc9\x17\x42\xf6\x56\x54\x3a\xea\xbc\x86\xd3\xe8\x2a\x25\xaf\x79\xee\x15\xba\x98\x3f\x73\x4d\x2a\xaa\xa3\xfa\xe9\x54\x6b\x99\x71\x70\x80\x35\x58\xd4\x79\x7d\xb4\x84\x82\xba\x98\x33\x63\xb5\x7b\xc1\x5a\x95\x6f\xe3\x20\x43\x49\x68\x55\x15\x9d\x33\x6d\x7a\xa3\x85\x90\x39\xbb\xa8\xc7\x05\xd7\xb3\xcb\x5d\x09\x9c\x5a\x06\x13\x26\x27\xdf\xc9\x68\xba\x2f\x80\xaa\x47\xd0\x96\xd0\x1c\x34\x2e\x2b\x2f\x59\x05\x93\x4b\x01\xa6\x2e\xaa\xb5\x5f\x35\x26\x35\x12\xe4\xce\x82\x19\xe6\xbf\xea\x2e\x47\x37\xef\xed\x7a\x4f\x58\x9d\xdc\x7e\xfa\xbd\xa8\x5a\x9f\x67\xb4\x28\x7a\x58\x3e\xda\x22\xb6\x97\x5e\xd0\x04\xe0\xfb\x58\xe0\x85\xe1\xf6\x2e\xf9\x5d\x86\x94\x32\xe4\x5e\x23\xec\x00\xda\x5d\xc4\x5d\x7a\x70\x3a\x6a\xf3\x2f\x85\x3f\xdd\x81\x15\xc8\xfd\x0f\x02\x06\x60\xf9\x2e\xbc\xc7\x2f\xe1\x6c\x2f\xe1\x6c\x0f\x8c\xad\xeb\x74\xe4\x25\x9c\x6d\xd3\xb1\x8b\xe1\x6c\x3b\x17\x72\xee\x0d\xd7\xc8\x1e\x69\x3e\x84\x6a\x82\x18\x74\x55\x63\xba\x4f\x90\x52\xfb\x4a\xc1\x0f\xd4\x1d\xd8\x5a\xc8\x37\xbe\xd7\x91\x31\x8a\x8f\x6b\xd3\x9d\x14\xa7\x8d\x35\x6c\xe0\x01\xf5\x94\x69\x27\x33\x0c\xdd\x91\x65\x11\xf3\x70\x46\xfe\xc0\xd1\x22\x49\xa3\xa7\xaa\x34\x0a\xba\x0b\xa8\x2d\xf8\xe1\xbe\x26\xb9\xcc\xea\x92\x09\xd3\x60\x48\x93\xeb\x82\x7e\x96\x2d\x72\x55\x9a\xe7\x1c\x85\x92\x8b\x04\xfc\xb5\x17\x39\xca\xe5\x8d\xb0\xfc\xe8\xe8\xa2\x53\x85\xdf\x76\x75\xdf\x66\xae\xd8\x8c\xe1\x3f\x26\xf6\x73\x3a\x86\x9e\xf4\xae\xe5\xea\x4b\xc8\xe4\xd2\x29\xd2\x5c\xd3\x65\x9e\x59\x23\x49\xad\xd9\xca\x90\xc8\xc6\xb3\x9a\x74\xe5\x97\xe8\xcc\xdd\x70\x0b\xbf\x44\x67\x76\x5d\xf9\x25\x3a\xb3\xdb\xf2\x2d\x7a\x76\x86\x21\x96\x56\x9c\x2b\x5c\x6f\xcf\x16\x7f\x70\x91\x09\x3d\x0e\x6a\xb7\xa2\xca\x4e\x1a\x9e\x88\xc6\x8d\xc5\xc2\xbf\x0b\x76\x18\xa4\x85\x8d\x1f\x3c\x4a\x9a\xf3\x4c\x13\x94\xcd\x2f\x21\x02\x6d\x07\x22\xc8\x60\x2f\x7b\xd8\x04\x71\xb4\xab\xc5\x35\xa5\x07\xb1\x1b\x37\x86\xe8\x46\x31\xc2\x95\xcc\xdf\x62\x03\x6a\x2a\x84\x44\x11\x55\x0f\xb0\x81\xb7\x1e\xb8\xe2\x17\xa0\xa4\x56\x34\x43\x2b\x59\xcd\x73\xa0\xa9\x4d\x85\xca\xae\xb5\xe3\x70\x24\xc1\x02\x92\x08\x13\x08\x60\x03\x6c\xd1\x45\x1f\x94\x20\xc9\xd0\xc2\x0e\x5a\xf1\x1f\x98\xd2\x3d\x7a\xdb\x35\xa3\xdd\x78\x17\x67\xf5\xd8\xa0\xb3\x19\x2b\x29\xfc\xe7\x3b\xbf\x05\x96\x40\x5a\xad\xd3\x30\x6c\x5f\xc7\x54\xa9\x89\x9c\x0c\x5a\x19\xd8\x7b\xd7\x7d\x3a\xba\xf9\x91\xc8\x98\x41\xfc\x65\xba\xe8\x1d\x6e\x44\x16\x37\xec\xa2\x15\x1c\x64\x2f\x12\xc8\x91\xf6\x6e\x79\xf7\x53\x13\xa8\x0d\x4c\x04\x77\x78\x87\x36\x27\xbd\xa5\x06\xc7\xae\x45\x85\x76\x8d\x06\x1d\x84\x88\x81\xb6\xc8\xde\x13\x9c\x97\x68\xd0\xf6\x78\x89\x06\x7d\x89\x06\x4d\x1a\x0d\x1a\x09\x3b\x9e\x6f\x2d\x09\xec\x8c\xe3\x18\x7c\x74\xe7\x98\x79\xbd\xdf\x59\x1c\x7c\x70\xa6\x8f\xcc\x94\xaa\x9d\x80\xb2\x3f\x1a\xed\x63\x0a\x4a\x63\xa2\xa8\xcd\x64\xf8\x07\xc2\x44\x26\x73\x3b\xcf\x67\x98\x5f\x69\x03\x22\x7c\xe3\xe7\x89\x61\x29\xfd\x5a\x71\x12\x0b\xcc\x9d\x42\xa2\xea\xcd\x2a\x7c\x2f\xc7\x77\xe9\x05\xd3\xde\xc4\xbd\x11\x67\x43\xc7\x49\xb7\xc5\x99\x8f\x68\x72\x72\xad\xff\x5e\x93\x82\x97\x1c\xda\x9b\xe4\x40\xe1\x98\x36\xfd\x1c\x5d\x84\x1c\xe0\x94\xa3\xac\xaa\x07\x6e\xfa\x51\xc9\x4a\xa9\xe6\x83\xb0\x84\xfd\xb2\xb5\xa6\x7b\xe2\x10\x84\xe8\xac\x56\x8a\x09\x53\xcc\xfb\x15\x7c\x6f\xc6\x0e\x4a\xd3\xfe\x04\x76\x44\x98\x0e\x08\xd2\xa7\x11\x43\x33\xda\x34\xa8\x89\xa7\x03\x57\x73\xd8\x45\xe0\x9d\xae\xb0\xdf\xa0\x89\x62\xb4\x9f\x32\x71\x4d\xae\xa9\xd2\xfd\xee\x3c\x49\x2b\x3f\xe7\xfc\x9a\x6b\xd9\x39\x06\x2d\x9a\x28\xde\x9e\xcb\xe0\x41\xb3\x37\x55\xd6\xa6\xaa\x8d\x63\x27\xfe\xfa\xb2\xdb\x4a\x5a\x21\x2d\x5c\xdb\x05\x45\xe3\x4d\x57\x07\x65\x33\x2a\x6a\x0c\x53\xe2\x2d\xf9\xbf\x07\x3f\xfd\xfa\x9f\xc3\xc3\x3f\x1f\x1c\xfc\xed\xf5\xf0\x7f\xfd\xfd\xd7\x07\x3f\x8d\xe0\x3f\xbe\x3a\xfc\xf3\xe1\x3f\xfd\x1f\xbf\x3e\x3c\x3c\x38\xf8\xdb\x77\x1f\xfe\xf2\xf9\xe2\xf4\xef\xfc\xf0\x9f\x7f\x13\x75\x79\x85\x7f\xfd\xf3\xe0\x6f\xec\xf4\xef\x6b\x4e\x72\x78\xf8\xe7\xff\xd9\x1b\x74\x2a\xe6\x1f\x7b\xd2\x61\x1c\xc3\x84\xf2\x40\x7b\xc6\x24\xe8\xb7\xa0\xa5\x70\x61\x86\x52\x0d\x71\xea\xb7\xd0\x53\xba\xe7\x02\x1e\xbd\x52\xdf\xff\x46\x06\x09\x7c\x29\x28\x88\x3b\x74\xc1\x1f\x43\x07\x4c\x9c\x72\x01\x21\x21\x27\x7c\x6b\xd5\x46\xfd\xfa\xed\x12\x2b\x86\x95\x95\x54\x54\xcd\x49\xee\x5c\x0e\xf3\x47\x68\x23\xd3\xb3\xd1\x35\x80\x9e\xf3\x2e\xb7\x7a\xcb\x2e\xcb\x92\xe5\xbc\x2e\xb7\xed\xad\x44\x28\xe2\x83\xbf\xb1\x47\x0c\x11\x4b\x72\x12\x22\xe0\xdd\x63\xce\x67\x3c\xa6\xd9\x15\x1a\x11\x02\x66\xf4\xf1\x2c\xb1\xb8\xe4\xf0\xde\x9e\x0b\x75\x2d\x19\x15\xc1\x73\x0a\x61\xd9\x32\x67\xfb\x3a\x3c\x8b\x20\x25\x71\x56\x62\x48\x96\xcb\xe9\x3a\x70\x0b\x1c\x5a\x55\xe8\x03\xc8\xaf\x5b\x6b\xe3\xde\x03\xbb\x49\x92\xc6\x04\xfc\x17\xf6\xde\xca\xfa\xdb\x46\xd3\x00\x88\x8f\xd1\x37\x12\xcc\x3a\xae\xd1\xd5\x84\x14\x32\x8b\x12\x36\x5a\xa2\x28\x20\xea\xa9\x27\x71\x7d\xa3\x95\x2c\xba\x5a\x68\x50\x07\x02\x97\x5a\xa1\x31\xde\x9a\x67\x74\x5c\x30\x34\x1d\x01\xde\xf4\xc6\x51\xbb\x58\x49\x6f\x79\x59\x97\xa4\xd6\xf6\xcd\xa4\x68\xcf\xdd\xbc\xd8\x0d\x5e\x4d\xbc\x2b\x25\x17\xf0\xa3\x96\x99\xad\xbb\xf3\x6a\xc6\xc8\x65\x38\x81\xc6\xe8\x8b\xe1\x8b\xce\xa6\xa3\x6b\x50\xfd\x1d\x74\x4e\x01\x95\x13\x08\xb3\x0d\x7a\x88\x26\x50\xcf\xa1\x73\xe3\x4c\x72\x97\x60\x08\x5e\xb4\x29\x06\xd0\xaf\x59\x74\x40\xb5\x70\xf9\x50\xcf\xf5\x1e\x3f\x3b\x29\xbe\xa7\xec\x9e\x4a\x62\x4f\x22\xa7\x27\x97\xce\x43\x7e\xd9\xd6\xc4\xbd\x90\xe0\xd6\x92\xf7\x9c\x3d\x7a\x49\xb2\x1b\xf5\x79\x46\x81\xc0\xf6\x29\xb3\xfe\x39\xd8\xbe\x9d\xf0\x98\xcd\x33\xd7\x40\x88\x37\x31\x8a\x21\x4e\x0d\xef\x2e\x14\xe2\x19\xda\xff\xf3\x36\x72\x1f\xbe\x34\x66\x13\x0c\xef\xc7\xdf\x80\x7d\x51\x77\x2b\x09\x84\x5e\x82\x82\x19\xa8\x3c\xc4\x44\x98\x14\x72\x14\x4a\x79\x6d\x49\x48\xa7\x99\xbf\xd7\x2e\xc0\x8e\x77\xbc\x16\xf4\xb0\x55\x51\x52\xa3\xc1\x4f\x30\x96\x63\x95\xa4\xa2\xd9\x01\x55\x8b\x8e\xef\x3f\x3e\x24\x13\x46\x4d\xad\x30\x76\x5d\x48\x05\x1e\x11\x24\x62\x68\xca\x57\xcc\xa2\x00\x34\x76\x52\xb2\x24\x5a\xd0\x4a\xcf\xa4\x01\xb3\x31\xad\x68\xc6\x4d\xe7\xf2\x36\x46\xd1\xec\xca\xce\x0c\x51\x4c\xf0\x66\xdd\x5e\x23\x3b\x74\x39\xfa\x31\xae\xb6\xeb\x4a\x99\x99\x92\xf5\x74\x06\x85\x87\xf0\xa9\xac\xa0\x1a\xab\x5c\x75\x0b\x40\x5c\xba\xa6\x33\x74\x6a\x92\xcf\x05\x2d\x79\xe6\xcf\x0f\xb2\xc8\x34\x97\x2e\xc0\x04\x60\xe9\xba\x6d\x94\x5c\x30\xa5\xb9\x36\x4c\x18\x8c\x75\x39\x2e\x28\x2f\xc9\x81\x66\x8c\x9c\xfa\xab\x8e\xdf\x5c\xa2\x9a\x8e\xce\xad\xee\x69\x07\x71\xf0\x8c\x6b\x32\xea\xea\x48\xdb\x4f\xbc\x53\x2f\x0a\x28\xed\xde\x02\xc2\xdd\xca\xa5\xaf\x78\xd8\xe3\x32\x2e\xdf\x33\xa9\x20\x43\xc8\xd9\xe7\xae\x99\xc8\x65\x13\x58\xdd\x69\xad\xa3\x8b\x33\x1d\x1b\x44\x91\xa6\x55\xb8\x3a\x7c\xe1\x9a\xa0\x86\xce\x85\x81\x22\x76\x5a\xcf\x0a\x5c\x82\x70\x91\xf3\x6b\x9e\xd7\xb4\x40\x51\xab\xf3\x36\x1d\x5f\x9e\x21\x90\x7c\x3a\x33\xc3\x1b\x06\xee\x44\x94\xb5\x1b\x2e\xe2\x5f\x8d\xdf\x49\x99\xe5\x1a\x84\x32\x43\x8c\xec\x46\x90\x98\x73\x63\xdb\x4d\xbb\xa1\x73\xe8\xe6\xed\xd2\x1e\x5b\x91\xe6\xee\xc4\xdc\xb2\x13\xd9\x4d\x66\x28\xbd\x94\xe7\x90\xbb\xe3\xc6\x1d\x01\x19\xce\xa8\x00\xd5\x15\xbc\xd0\x16\xff\x81\xa6\xde\xdd\xb5\xae\x14\xa7\x0a\x18\xdc\x4c\x85\x82\xaf\xa6\xf6\xc6\x75\xb4\xc8\x6c\xd9\x2a\x72\xdd\xdc\xc6\xcf\xac\xac\x0a\x6a\xb6\x1e\xd0\xfd\x63\xe4\x94\x8f\x62\x05\x2d\xeb\xa0\x22\x1f\xd2\xc2\x92\x8c\x8b\x1f\x8e\x5d\xe9\x32\x24\xec\x49\x32\x63\x3e\x7b\xf1\x43\x38\x0d\x07\x55\xd9\xa5\x34\x1d\xba\xeb\x8d\x59\x0e\xf2\x80\x83\xb8\x4f\x2a\xa5\xbc\x11\x4c\xf9\x7b\x75\xf1\xc3\xf1\x80\xf0\x11\x1b\xf9\xbf\xc2\x12\x5e\x5c\x32\x72\x8a\xc5\x29\x7c\x89\x9c\xee\x11\x86\x32\x1f\xe1\xab\xc7\xfe\xeb\x78\xcd\x7f\xfc\xd1\x6e\x8a\xfd\xf6\x4f\xc3\x3f\x3a\x06\x03\x7f\xfd\xc3\x4a\x6d\x3d\xb2\xe9\xfe\xb1\x30\x5b\x5c\x0f\x00\xc4\x1d\xfb\xd7\x3f\x2e\x64\x7e\x59\xb1\x6c\x84\xdb\xaf\xff\xd1\x2b\xe8\x95\x10\x26\x8c\x9a\x8f\xc8\x85\x84\x0c\x19\x9e\x23\x41\x83\x77\x55\xec\x3f\x7d\x40\x06\xa0\x41\xf0\xfa\x66\xd4\x30\x01\xd2\xaf\xe8\xde\xfb\x9c\xf8\xba\x9a\xb0\x2c\x90\x79\x0a\xfb\x7c\x00\xae\x3a\x2c\x2f\x3e\x20\x46\x62\xa3\xee\xae\xdc\xd6\x8e\x23\x41\xd8\x2d\xd7\xd0\x47\x04\x4f\x12\x90\x84\xba\xd2\x06\x5e\xe5\xb0\xc0\x58\xbc\x0b\x7d\x71\x2a\xd9\x3d\xe2\x16\x76\xf0\x2b\x21\xcd\x57\xe1\xf2\xfa\x8c\x35\xd0\x2d\x24\xa1\xd7\x92\xe7\xa4\xd6\x20\x73\x0a\x52\x0b\x08\x59\xe8\x51\x42\xd6\x61\xcf\x78\x4e\x4a\xae\x0d\xbd\x62\x23\x72\x69\xd5\x91\x38\x8c\x18\x71\x4a\x90\x71\x21\xb3\x2b\x96\x93\x5a\x18\x5e\xf4\xb2\xcc\x04\xb8\x61\x6b\x23\x55\x05\x8a\xc6\xd6\x99\x95\x72\x2b\xc5\x86\x5e\x61\xc2\xa7\x7a\x58\x8c\x91\xa1\x87\x5d\x6d\xce\x6a\x10\xae\xea\x8c\xa2\xe9\xb6\xca\x61\x49\x97\xfb\xda\x93\x18\xdd\xc9\xd3\xb7\xfb\x29\xe1\x6f\xf7\x07\x20\x99\x1e\x91\x73\xd0\x5c\x8a\xee\x97\x12\x93\x26\xd0\xda\xed\x22\x64\x04\xcb\x98\xd6\x54\xcd\x31\xb1\x98\x1b\x9f\xd3\x5e\x6b\x36\xa9\x0b\x50\x18\xbb\x6f\x2a\x15\xb5\x05\x98\x28\x96\x49\xa1\x8d\xaa\x33\xc0\x1a\x4a\xc6\x4a\x5e\x31\xd1\x14\xfa\xe8\xc1\x4c\xe2\x8c\xe9\x26\xa9\xd3\x8a\xd7\x42\x92\x6c\x46\xc5\x94\x85\x52\xc2\xa4\xa4\x39\x60\xf2\x77\xc1\xf8\xd1\x7d\x33\x65\xc0\x0b\x3a\x31\x56\x2c\x34\x80\x20\x63\xab\x25\xf8\x68\xa4\xee\x2f\xf6\x29\x24\x7c\x97\x51\x40\x93\xe0\xc5\x16\x53\x0d\xfb\x47\x94\x0c\x41\x5b\xed\x6a\x30\x4c\x10\x41\x52\x32\x43\x73\x6a\xe8\xae\xd4\x10\xf8\x40\xe7\x21\x32\x0d\x63\xf6\x01\x75\xa3\x58\x7e\xa7\x26\x78\xfb\x90\xac\x78\x5c\xd0\xfa\xe2\x87\xe3\x5e\xeb\x83\x41\x08\xb0\x15\xba\x61\x19\x4b\x65\x5c\xe8\x22\xdc\x2a\x2c\x1d\xe1\x2b\x02\x58\xd0\x3c\x24\xc8\xc6\x59\x4e\xf2\xba\xb7\x37\xbb\x11\x11\xfa\xc4\x4e\x25\x89\x9c\xb2\xf8\xb9\x2b\xc8\xf1\xb9\x09\x46\xcf\xda\xd9\xe9\x4b\x15\x7d\x8c\x59\x64\xc2\x70\xc5\xa2\x82\xeb\xbd\x40\x70\xf8\x56\x0b\xa4\xa4\x6d\xcc\x43\xd4\x9c\x32\xa3\x9b\xb4\x4b\x14\x28\x7b\xae\x6a\x9c\x92\x84\x6f\x04\x9a\x9f\xc7\x46\xe7\x6b\x59\xba\x01\xbd\xd6\x44\x3c\xd7\xd2\x09\x8e\x56\xe4\xde\x3a\x32\xa6\x8b\x9a\xa3\x99\xe5\xf3\x1f\x64\xde\x3f\xfc\x2e\x6d\x1c\x68\x0b\xb4\xa6\xb8\x0d\xd6\x80\xd2\xe0\xee\xc4\x07\x20\x94\x5a\xb7\x8a\xdb\xa3\x24\x33\xa3\xd7\xbd\x0b\x40\x77\xf6\x85\x35\xf6\x8a\xa1\x77\x8b\x21\xb8\x43\x00\x77\xf8\xa6\x27\x60\xfd\x13\x10\xfd\xe8\x99\x88\xd8\x06\x28\x49\x8c\xd8\x23\x94\x78\xf5\xc3\xb2\xf8\xcb\x24\xf1\x61\xa9\xb1\xbd\x81\xcc\x89\xad\x2e\x5d\x20\x24\xb6\xb8\xb2\x98\x8c\x5b\x26\xdc\xff\xbc\xbe\x6a\xa9\xa9\xce\xb8\x12\xfc\x1b\x58\x52\xea\xc0\x3b\x3c\x46\x0e\xad\x7d\xf7\xad\xf6\xe3\x87\x89\x81\x01\xad\x7c\xb9\x0d\xbc\xf7\x4a\x67\x2e\x3b\xd2\x5b\xae\x98\x82\x4c\x9d\xa8\xb4\xa5\x25\x35\x4a\x16\x05\x53\x70\x04\xce\xa9\xb1\x90\x00\x66\x4f\x8b\x60\x18\x60\xf7\x7e\x1c\x7e\x78\x37\x5f\x30\xb5\x09\x76\x13\xb4\x6b\xaa\xb1\xd3\xb5\x8f\x80\x07\xf7\xa5\xcf\xea\x5b\x06\x4f\x7f\x92\xf7\xa3\x77\x06\x1e\x89\x39\x6e\xfe\x49\x84\x9c\xe8\x32\x23\x53\x0b\x2a\xd7\x84\x09\x3a\x2e\xac\x3a\x12\x21\x70\x80\x73\x41\x3a\x35\x32\x7a\xea\x13\x9b\xf4\xdf\x3a\xf0\x61\xc6\x53\xae\xb7\x36\x8a\xb7\xad\x1f\x8e\x9a\x5c\x58\x67\x9b\x49\xd0\x10\xd8\x0f\x87\x75\xad\x25\xda\xf9\x51\x0b\xd0\xc4\xdd\x66\x96\xbe\x41\x5f\x98\x92\x65\x13\xa4\xcb\x27\x80\x7e\x21\xbc\xa3\x7f\xa0\x3d\x4d\x2f\x3b\x21\x8e\x74\x69\x09\x90\xe5\x0b\x29\x61\x29\xe2\xbb\x53\xf3\x1d\x82\x6e\x3b\x80\xcf\x9b\x80\xa7\xf0\x87\xd7\x29\x42\xbc\xf3\x98\x59\xea\xdc\x34\x9f\xea\x7f\x2f\x08\xde\x8d\x78\xfd\x25\xa9\x83\x0d\x99\xfb\x8e\x8b\x3c\x24\x71\xfa\xa2\xb0\x56\x40\x3b\xba\x38\x43\xa8\xd3\xc0\xf4\x0e\x78\xc2\xdc\x29\xbc\x66\xc6\x55\x3e\xac\xa8\x32\x73\x74\x6d\x0d\x5a\x10\x87\x7a\x8e\x09\x96\x4e\x1a\x69\x6f\x2f\x53\x72\x94\x83\x23\xf0\x61\x89\x2e\x6e\xf6\x5e\x0c\xd9\xb5\x1d\xe9\x5b\x25\xd2\x8f\xd6\x8e\x9c\x37\xed\xd0\x82\x13\xe7\x99\xec\xc8\x63\x65\x8c\x93\x36\x37\xdb\x5d\x59\xdb\xb2\x5a\xdd\xce\x5d\x42\xd1\x17\xec\x15\xce\x0d\x29\xe3\xb2\x61\x41\xcb\x04\x2b\xbf\x9d\x69\x40\xf8\xc4\x0a\x6d\x52\x0c\x21\xf2\xb1\x37\x78\x4d\xd8\x93\xd3\x74\x47\x2e\xbd\x19\x2d\xf0\x40\x98\x22\x28\xa3\xa5\x1b\x3a\x48\x0e\x84\xec\x6e\xa0\xf7\x03\x68\x2b\xae\x75\x88\x19\xed\xf7\x44\x92\x8c\xfb\xb7\xb0\x22\x8d\xe4\x19\x9b\xee\x23\x5e\xe0\x45\x62\x2e\x72\x7b\xa9\x40\x44\x02\xa3\xbe\xae\xb3\x8c\xb1\xe0\x32\x74\x64\xa9\xbf\x4a\xdb\xe2\x3d\x6e\xcb\x4b\x6a\xb2\x19\xd3\x44\x4b\xe8\x75\xac\x0d\x2d\x0a\x96\x87\x50\x27\x44\x14\x09\x5a\x85\x0b\x83\xea\x0d\x47\xa4\xac\xf4\xdf\xe2\xc8\x31\xe2\xbc\xae\x55\x41\x9d\x53\x69\x52\x8b\x0c\xf3\x17\xb9\x99\x87\x28\x93\x45\xc5\x14\xec\xd0\x1a\x7c\x6d\xfd\x55\x9f\x09\x46\x8c\x44\x36\xe5\x80\xcc\xc0\xfc\xe7\xc8\xee\x67\xf4\x9a\x35\xd1\x1e\xae\x4b\xa4\xe5\xd2\xa1\xd4\x6d\x02\x5c\x8f\x4a\xe5\x0e\x50\x43\x88\x05\x76\xb1\x1f\x07\x83\x73\x91\x5a\x95\x89\xf7\xe1\x20\xda\xf4\x3b\x2a\xce\x61\x50\x6d\x34\x33\xa1\x88\x77\x7f\x89\x97\xb8\xf8\x79\x5a\x1b\x59\x52\xc3\x33\x70\xd1\xf1\x49\x14\x24\x56\x62\xe0\x85\xa5\x34\x3e\x10\x1e\x45\x24\x10\xdc\xdc\xb9\x25\x22\x03\xcb\x95\xa5\x47\xd8\xf8\x68\xaf\xdd\x29\xb7\xb7\xd5\x6f\x4b\x24\x7a\x26\x7a\xcf\xcf\xbe\x22\x32\x31\x33\xc5\x18\xe1\x65\x25\x95\xa1\xc2\x90\x9c\x4f\x42\x8d\x6e\x1f\x61\xb8\x0a\x27\x52\xd8\x83\x7e\x84\xb8\xda\x68\x15\x74\x98\x16\x85\xbc\xd1\xc4\xdc\xc8\xe0\x72\x68\xe2\xbb\x5c\xcd\xe3\x41\x1b\x98\x04\x32\x8e\x5b\xd5\xb2\x3a\x8b\x57\x11\x1f\x1a\x58\xda\x73\xc3\x8a\xc2\xfe\xbb\x8a\x1b\xf5\xae\x63\xb2\x74\x4f\xf8\x54\x60\x19\x5a\xae\xbd\xf3\xcb\xd5\x50\x39\xc8\x95\xac\x2a\x17\xfc\x50\x1e\xa6\xdf\x13\x08\x5e\x57\xd7\x4c\x43\x92\x89\xaf\xeb\x62\x51\x61\xca\x04\x53\xd4\x40\x78\x9d\xeb\xe7\x0a\x22\xc9\x22\x90\x7d\x9d\x3e\x38\x12\xda\x45\x1e\x40\x3a\x0c\xbd\x5c\x8e\x64\xfe\x19\xf7\x6d\x82\xf7\xe2\x02\xf1\xcd\xd3\x9d\x04\x08\x74\xf0\x2d\x33\xf4\x90\x7c\xaf\x11\x2d\x02\xe7\x0d\x75\x78\xd6\xb2\xb2\xb9\x7a\xeb\x68\x68\x4b\x00\xd4\x51\x51\xcd\x22\xa8\x62\xbb\x54\x28\x21\xd7\xde\xeb\x16\xbc\xc7\x4a\x6a\x7d\xee\x7f\xf2\x84\xa0\xbf\xd8\xac\x1e\x18\x2f\x36\xab\x17\x9b\xd5\x8b\xcd\x0a\xc6\x8b\xcd\x6a\x71\x7c\x29\x36\x2b\xd2\xb0\xab\x5d\xa5\x4d\xe7\xb1\xea\xd2\x66\xb0\x8f\xbc\xcf\x84\x9c\x4b\xe3\x42\x8c\x41\x83\xa5\xf7\x3a\x9d\x28\x70\xe8\x1b\x3a\x1f\x09\x66\x5c\x27\x13\xef\xdf\xfd\xe4\x61\xfa\x8b\xb2\xda\x88\x33\x7d\x44\x74\xc3\x13\x32\xdf\xde\x26\x5a\xc5\x48\x14\xcd\x9a\x88\x67\xf8\x7c\x5f\xbb\xb8\x56\xfb\x3d\x94\x2c\x8c\x27\xc8\xd8\x88\x5c\xba\x5c\x97\x85\xc5\xef\x36\x59\xc8\x99\xa1\xbc\x4f\xef\xa6\x78\x78\x69\xe8\xf3\x3d\xd2\xd9\xd6\xa4\x1d\x92\xf2\xda\x84\xa2\x4b\xbb\x66\x8a\x6d\x8a\xb8\x45\xd9\xb9\x71\x4e\x7f\xf3\xc0\x63\x45\xf8\x9c\x4d\xc8\x27\x96\xc9\x6b\xa6\xf0\x74\x4f\x6f\x2b\x2a\x34\x97\xe2\x1d\xe5\x85\x3d\x5b\x7f\xc6\x8d\xb7\x9b\xd4\x9a\xa9\x76\x08\x64\x14\xa2\x11\x2e\xb8\x43\x24\x8b\xbd\xfd\x15\x94\xd0\xdd\xc4\xae\xe7\x32\xe8\x2a\xc5\xae\xb9\xac\xb5\xaf\x7c\x50\x1b\x94\x34\xb4\x71\x16\xa2\x19\x9f\xce\xfc\xc3\x3e\x63\x15\xa2\xae\x55\x1e\x2e\x71\x6f\xc8\xb4\xa1\xa6\xd6\xed\xf2\xd3\x19\x04\x1e\xee\x50\xf4\x55\xc0\xa3\xdd\x51\x42\x52\x8a\xeb\x58\x81\x62\x57\x19\xe2\x7b\xac\x8f\x81\x53\x8f\xdd\x5d\xf6\xa5\x3e\x9a\xb2\x26\x99\x2c\xab\xda\xb0\xe8\xce\xbb\xdb\x95\x86\xd4\x6f\x88\x4c\xad\xfe\x4f\xaf\x4a\x2a\xe8\x94\x0d\x03\x68\xc3\xa6\xca\xc7\xab\x64\x94\x3e\x09\x5a\x91\xe4\xcd\x7f\xe2\xf1\xec\xaa\x73\xb4\x47\xb2\x3a\x7b\xe4\x51\x6a\xed\x91\xf4\xf5\xf6\xc8\xe3\xd7\xdc\x23\xa1\x04\xea\xae\x12\xa0\x4f\x0e\xbe\x45\x12\xe4\x84\x8c\x55\x24\x28\xa5\xaa\xec\x84\x0d\x07\x0b\xd7\x44\x96\xdc\x18\xe6\xd3\x11\x03\x49\x19\x10\x6e\x5a\xd5\x31\x1d\x01\x05\x07\x27\x66\x0f\xb2\xdb\xaa\xe0\x19\x37\x51\xfb\xba\x8e\x05\x24\x16\x07\x18\x10\x6e\xb8\x46\x51\x5e\x10\x5e\x56\x05\x0b\x12\xf8\xd0\x55\x17\xf2\x4e\xb8\xf0\x36\x19\xe4\xa6\x10\x76\x0b\xae\x58\x04\xf8\x85\x6e\x6f\x38\x5e\xe8\xf6\x3d\xe3\x85\x6e\x27\xa7\xdb\x58\xbb\xb4\x7f\x29\xe0\x16\xbd\xf6\x93\xba\xee\x4b\x74\xcc\x0a\xf2\x73\xcd\xd4\x9c\x58\x05\xab\xa9\x0b\x22\x2d\xb1\xd3\x3c\xc7\xfa\x15\x3e\xa6\x63\x87\x3c\x04\x29\x85\x73\x88\x19\x39\xbd\xb5\xfa\x2d\x74\xa5\x48\xce\x25\x17\x17\x68\xf7\xbe\xc2\x53\x08\x27\x13\x6b\xa5\x98\x48\x15\x7f\x02\x2a\xe6\xd1\xf9\x49\x4a\x03\x46\x8a\x34\x15\x92\x2e\x55\x85\x3c\x92\x90\x41\xc8\xd1\x8a\xbd\xc6\x33\x09\xdf\x00\x1f\x0f\x69\x4d\xc1\x9b\x4b\xae\xd8\x7c\xe0\x52\x3d\x89\xc5\x40\xea\x1f\x4e\x04\x22\x66\xcf\xa3\xf8\x73\xc5\x30\x8e\xa3\x5f\xaf\xd2\xf6\x48\xcc\x10\x53\xba\xea\x70\x0c\xed\x6b\x27\x9b\xcb\x1f\x51\x1a\x1e\x9d\x98\xe7\x13\xfb\xaa\xa9\xa6\x5a\xb8\x33\x16\x77\x9c\x75\x1b\x71\xde\x7e\x10\xaa\x51\x06\x34\x87\x4a\xa1\x40\xf0\xd3\xa0\x17\x49\xed\x4c\xc0\xe1\x8f\xf1\x91\x36\x2b\x19\x81\x21\x11\xac\xed\x7a\x86\x57\x6c\xbe\xaf\x5d\x1b\x12\x29\xf4\x8c\x57\x20\xbe\x43\x30\x93\x9c\x24\xbd\xe2\x38\x7e\x80\x74\x58\x0f\x0c\xf2\x8d\x33\x31\x20\xe7\xd2\xd8\x7f\x4e\xa1\x38\x05\x90\x97\x13\xc9\xf4\xb9\x34\xf0\xc9\x4e\x63\x01\x6e\xd2\x73\xc0\x01\x17\x73\xc4\x21\xe2\x07\xd8\x2b\xd6\xaf\x86\x5a\x85\xee\xac\x7d\xd6\x51\xc0\x17\xae\xc9\x99\x20\x52\xb9\x23\x4a\x08\x0e\x98\xe6\x11\x24\x04\xc6\xfb\xbb\x9b\xa0\xc0\x65\xd0\x38\x1c\x91\xaa\x85\x22\x4f\x02\x98\x03\x0a\xbc\x3e\xf8\x0d\x78\xb7\x20\x16\xd6\x97\x2e\x80\xa2\x57\x8a\x1a\x36\x4d\x10\xc4\xdb\x8c\x92\xa9\x29\xf4\x09\xca\x66\xa9\x6f\x43\x2a\x41\x0b\x47\x42\x71\x0b\xc7\x23\x5c\xd9\x47\xcd\x16\x7e\x92\x05\x40\x76\x7f\x0f\x25\x3e\x76\xd5\x7a\x16\x81\x88\x52\x6c\x49\x2b\x4b\x6f\xfe\xcb\x0a\xab\x70\xbd\xfe\x9b\x54\x94\x2b\x3d\x22\x47\x44\x73\x31\x2d\x58\xeb\x3b\xe7\x2c\x8e\xa6\x49\x04\x16\xc4\xb2\x58\xf9\xf0\x9a\x16\x0c\xeb\x34\x51\x41\x18\x9a\xab\xa0\x3e\xf7\x82\x62\x34\x20\x37\x33\xa9\x51\xf2\x0d\x29\x06\x7b\x57\x6c\xbe\x37\x48\xe2\x0a\x23\x31\x7f\xb6\x53\x9f\x89\xbd\xa6\x11\x5c\x8b\x12\x05\xd9\x1f\x22\x1e\xf7\xe0\xbb\xbd\xa7\xd1\xc7\x9e\x81\xb9\xea\x59\x24\x39\x39\x77\xe3\x71\x41\x31\x44\x60\xd7\x9c\xeb\x8b\xf0\x2d\x46\xfc\x40\xa5\xfb\xe8\x99\x26\xbc\xc3\x55\x39\xdb\x39\x2f\x2e\xd4\x2d\x4e\x54\x3c\x23\x01\x72\x21\x58\x47\xc6\x28\x3e\xae\x0d\xd3\x3b\x8b\x09\xf7\x02\x1a\x95\x75\x0b\xfd\x53\xed\xc9\xff\xb0\xec\x07\x51\x05\x3c\xae\x53\x21\xc7\xd9\x64\x31\x76\x32\x2a\xa9\x1b\xd7\x45\x90\xca\x55\xd8\xbb\x93\x85\x67\xff\xa6\x01\x54\x57\x43\xbd\x7f\x38\x55\x13\xac\xa9\x98\xae\x24\x66\x9d\x2d\xdd\x18\x27\x48\xce\xa8\x86\xa8\xfb\x89\x0b\x8a\xaa\x6a\x55\x49\xa8\x85\x4e\xc5\x9d\xcb\x98\xa4\x6e\x84\x2b\x12\xe2\x8b\x30\x61\xc1\xb9\x70\x73\xed\x7d\x0f\xfd\x2f\x8f\x16\x3a\xbf\x60\xc8\x48\xd4\x45\x42\xc8\xe5\x2f\xd7\x1b\x4e\x9f\xae\x84\xb6\x80\x50\xf3\x1e\x41\xc4\xea\x82\xfb\x18\x44\x1b\x05\xd3\x58\xcd\xd6\xc4\x31\xf3\x46\xb6\xe1\x87\x52\x88\xd8\xf2\xa2\x77\x0b\x55\x82\x78\x58\x8b\x26\x6c\xd7\xf3\xec\xe5\x29\x26\xd0\x67\x63\x2c\x6b\xe1\x50\xd6\x77\xe8\x78\xdc\x0d\xb4\x3b\xe2\xeb\x4f\x06\xb0\xdc\x45\x88\xca\x96\xf0\x89\xdd\x17\x57\x1d\x32\xc5\xbe\xb4\x22\xaa\x21\x62\x4f\xe1\x21\x8d\xe7\xcb\x29\x0b\xc9\x25\xc3\x13\x05\x28\x06\x78\x8e\xcb\xb7\xd2\xbd\x5c\x7f\x66\x87\x59\x5b\x94\x5c\x30\xbc\xa9\xda\x50\xc3\x20\x5d\x48\xb1\x49\x81\x35\xe9\xdc\xee\x95\x32\xe7\x13\x97\x75\x71\x19\x45\x2f\x0d\xb0\x40\xa9\xab\x23\x1a\x37\x21\xed\x0d\x5e\xaa\xe3\xe8\xd5\x9b\x65\xd8\x50\xc9\x21\xb0\x52\x96\xc0\x09\xba\x56\x92\xcb\x72\x7e\x72\x7f\xf4\x24\x39\x90\x93\x89\x3d\x2e\xdf\x9f\x2a\x8d\x6b\x28\x19\xcf\xff\xd0\xbb\x27\xfa\x63\x31\x79\x68\xad\xed\xdb\x88\xb4\xda\x9b\x35\x79\xe5\x8f\x24\xe7\xfd\x00\x2c\x45\x4e\xc8\x3b\x5e\x30\x3d\xd7\x06\x13\x46\x79\x89\x74\x1f\x53\x6a\xa5\x21\x5c\x64\x45\xed\x02\x10\x91\x0b\x58\xba\xbb\x63\x27\x9c\x5c\x8c\x6b\xa6\xf5\x72\xb8\xcf\x64\xbf\x53\xea\x77\x91\x52\x42\x9a\x73\xb8\x5e\x49\x4e\xab\xd7\x6e\x4d\x3a\x95\xc2\x6c\xed\xc6\x24\x6b\xdb\xaf\xdf\xf1\xb1\x62\xe4\x78\x46\x85\x60\x45\xd4\x63\xd3\x85\xbb\x50\x63\x68\x36\x43\xae\x43\x89\xa5\x78\x05\xb3\x52\xc3\x4c\x6a\x43\x4a\x9a\xcd\xb8\x08\xcd\xb9\x44\xe8\x35\xdb\x54\x4e\x7e\x86\xcd\x01\x26\xfa\xb3\x05\xa0\xe3\x39\xa7\x22\x2e\x08\x85\xc7\xd8\x49\x73\xb1\x81\xaa\x18\x49\x20\x74\x2a\x41\x63\xc2\x3b\x73\x87\xbe\xd9\x9e\x4a\xc1\x59\xa3\x75\x05\xf8\x3b\x3c\xdb\x7d\xe5\xd3\xdb\x11\xd9\x63\xb7\xe6\x37\x7b\x03\xb2\x77\x3b\xd1\xf6\x1f\x61\x26\x7a\x6f\x44\xce\xca\x10\x5c\xc5\x45\x24\xee\x30\xf7\x03\x2b\x62\x45\xc2\x62\xbf\xd2\xcb\x3d\x28\x56\x51\x8b\x24\xf8\xb1\x5f\xd4\xc2\x1e\xf1\x47\xd7\xbe\xfa\x2d\x79\x77\x4c\x0c\x55\x53\x66\xec\x1a\x44\xd4\xe5\x98\xa9\xae\x6d\x6e\x53\x04\xdb\x60\x97\x12\x98\xe5\x9b\xaf\x3b\xcd\xa1\x18\xcd\x3f\x8a\xa2\xb3\x3f\x34\xd5\x85\xf2\x70\xb4\xf7\xfb\x24\x0a\xf6\x9b\xd0\x42\x33\x72\x60\x1f\x7c\x75\xa3\xb8\x61\x87\x23\xf2\xc9\xff\x0a\x4a\x06\x80\xcc\x3c\x91\x7d\xe4\x52\xcc\xb4\x71\x93\x6a\x66\xb0\xce\xb3\x70\x82\xda\x07\x7b\xa9\x3b\x4b\xab\x78\xe0\x63\x29\x0b\xd6\xb1\x0c\x3e\xe2\xde\x8f\x3f\x9e\x77\x36\x27\xb6\xf1\xbb\x99\xef\x3e\x34\xbf\x91\xaa\xc8\x6f\x78\xee\x92\xb5\xc8\x81\x7d\xf8\xb0\x1f\xca\xf7\x71\xc7\xf4\x74\xbe\xa4\x6e\x05\x98\xc6\xef\x71\x73\xc3\xf3\x34\x27\xda\xe3\x02\x02\x10\x6d\x1c\xf0\xc6\x24\x8b\x03\x04\x90\x80\xe7\x4c\x18\x4b\xdc\x95\x26\x07\xf0\x8b\xee\xb5\x47\x4f\x39\xf6\x8a\x81\x75\xa5\x22\x99\x2c\xc7\x5c\x34\xad\x9c\x1a\xdc\xb4\x02\x8c\xa5\xb7\xde\x4b\xa9\x99\xc1\xfe\x0b\x50\x09\x52\x9a\x19\xd1\xbc\xac\x0b\x43\x05\x93\xb5\x2e\x3a\x97\x20\x79\x41\xcf\x3b\x63\x52\xb0\x5b\xa4\x7d\xdb\x6a\x54\xd9\x40\xd0\x96\x8c\xa1\xba\x47\xd3\x4d\x6f\x51\x34\xee\xb4\x56\x53\x52\x2a\x7f\x15\x44\xeb\xd0\x1b\x86\xdd\xb2\xcc\x55\x9e\xad\x8a\x7a\xca\x3b\x56\xdf\x3f\xb1\x6f\x91\x51\xc3\xf2\xb7\xe4\x5d\xf3\x72\x50\xd7\xcc\x7f\x33\x22\xc7\x3e\x0e\xd4\x2d\x4f\x8e\x2f\xcf\x4e\x5c\x43\x35\xa1\x0d\xa3\xdb\x90\xdd\xfb\x05\x9d\x0d\x9d\xf9\x7a\x0b\x4a\x03\x2e\x9c\x84\xc4\x36\x5d\xed\x16\x7d\x46\xee\x1b\xd7\xad\x3c\x74\x9d\xee\xd7\x00\xac\x37\x49\x78\xd1\x97\xb6\xa6\x2f\xc5\x4d\xaa\x23\xb0\x72\x56\x31\x61\x79\x9e\x88\xef\x3f\xee\xf3\xd6\xd0\x44\xc2\x19\x27\x92\x2b\xdd\x64\x6d\xa1\x32\xb2\x81\xce\x64\x91\x6b\xc2\x6e\x8d\xa2\x96\xed\x97\x96\xc1\x87\xdf\x4c\x08\x15\xf3\x51\x3f\x11\xb3\x97\x2b\x3f\xad\xfb\xbe\xf7\xc9\xec\xb6\x86\x96\xbf\x68\x68\xf1\xd0\x2c\x53\xcc\xf4\x28\x3d\x97\xea\xb4\x02\x20\xed\xe3\x6a\x7d\x7c\xc7\xc0\x8a\xdf\xfa\xc2\x16\x2e\x14\xa7\x8f\xdd\x58\x33\xa1\xb9\xe1\xd7\xad\x8e\xaa\x50\x3a\x96\x6a\x1d\xec\x90\x20\x4c\x39\x02\xa8\x5b\x55\x5d\x3b\x2f\x8c\x3e\x51\x3e\x21\x42\x2e\xbc\x55\x5c\xee\x23\x84\x5f\xb6\x1e\xe9\xbc\x68\x88\x5d\x2a\xb1\x19\x39\x15\x50\x24\x12\x27\x1f\x40\x7d\x3a\xfc\x6f\x0c\x5f\xb2\x7b\x10\x59\x63\x61\x17\xba\xef\xb4\xdb\xbd\xed\x91\xcd\x14\x61\xfa\x7d\xab\xfa\xa4\xf4\x1d\x9d\x47\xa2\x9d\x2f\xe8\xd2\xcf\xbd\xd0\xee\xbe\xc7\x26\x13\x96\xd9\xbb\x01\x1d\xff\x7c\xfb\x3a\xab\xd6\xe6\x35\xba\xfd\x7c\x11\xd7\x76\x11\xd6\xbe\xe5\x0a\xa3\x68\x82\x26\xe2\xf7\x4c\x68\x43\xa1\xae\x26\xbc\xb1\x95\xd3\xac\xf0\xe4\x7a\x36\xba\xeb\x84\xb1\x11\xbe\x3a\x67\x4f\x20\x4a\x2b\x86\x65\x4c\xd9\x1b\x53\xcc\xc9\x8d\x92\x7d\x13\xdd\x36\xf4\x01\xcb\x6b\xa6\xae\x39\xbb\x79\xe5\xaa\xfc\x0c\xed\xcb\x0e\x5d\xe1\xc4\x57\x60\xee\x7a\xf5\x2b\xf8\xa7\x07\x54\x89\xbc\x6f\x8e\xcb\xbe\x25\x7b\x7b\x29\xec\x02\xbd\xc3\xfd\x26\xd0\xb8\xb4\x93\x42\x95\xc6\x26\x00\xcb\x2f\xb8\xca\xdc\x87\xce\x20\xb0\x8e\x6b\xcc\xf1\x9a\x48\x20\xb7\x97\xdd\x4f\xe4\x62\x47\x88\xb6\x78\xd2\x14\xa6\xaa\x85\xe8\x9c\x93\xd9\xd6\xfd\x71\x99\x96\xe2\x1f\x02\x6c\xb8\x18\x1a\xc5\x58\x78\x55\xe3\xd4\x27\x21\x7d\xb3\xf8\xa0\xd8\x3c\x43\x27\x5e\x4e\x0d\xd5\xcc\xf4\x71\x26\xa7\x22\xf5\x11\x28\x76\x7f\x63\xaa\xef\xbe\x82\x18\x35\x06\xd5\xbd\x7d\x3f\x4c\x32\xfc\x93\x53\xfd\x45\xeb\x49\xab\xf4\xbb\x73\xed\xce\xc9\xb1\x8a\x13\x74\xb8\x41\x1b\x10\xae\xdd\x20\xc9\xb6\x74\x44\xf7\x96\xdf\x7f\x7f\x76\x92\xc6\x94\xd2\xcc\xe7\x2d\x03\xf0\xdf\xed\xed\x77\x97\x14\x62\xcb\xf8\xcf\x75\x6c\x84\xb6\x4f\x36\x17\xdf\x3d\xbf\x8d\xdd\x99\x66\xac\x09\x4e\x38\xe1\xfa\x6a\x5b\x94\xf1\x0e\x20\x6d\x1a\xf9\x97\xe3\x53\xe2\x3e\x5d\x15\x49\xd0\x69\xe9\xa7\x89\x3e\x68\xd3\xd0\xbf\x1c\x9f\x2e\xbc\xee\x82\x19\xf5\xa8\x28\xbc\xad\x47\x0a\x1d\x0a\xa1\x3a\xea\x9a\x68\x8b\x81\x36\x5b\x89\x5e\xb1\x9c\x2b\x0c\xa9\xf3\x6f\x99\x8f\x32\xcd\x43\xa3\xb8\xe9\x15\x1b\x71\x19\x85\xf2\x76\xdb\x82\x5e\xd1\x6e\xfa\x57\xd3\x8c\x35\x81\x92\x39\xd7\x57\xcf\xcf\x92\x5c\xe5\xe7\xdd\x0a\x03\x7f\x69\xe1\x27\x8b\xe6\x4e\x47\x3b\x9d\x10\x04\xb7\x7b\x2e\x6b\x72\xe3\xfa\xb5\xf7\x34\xb3\x7e\xe6\xd5\x5b\x72\x2a\x74\xad\x58\x93\xd5\xbc\x08\x82\xd5\xb0\x1f\xdd\xe8\x4a\xcb\xaa\x60\xfa\xed\x96\x43\x55\x76\xe2\x2a\x92\x14\xbc\xbd\xa2\xca\x80\xd5\x73\xdb\xa8\x1d\x00\xf1\x22\x41\xf4\x81\x78\x4c\xdc\x3e\x9b\xf8\xba\x53\xed\xe0\x75\xae\xc3\xe4\x4d\x64\x37\x48\x7f\x29\xf0\xf7\x9d\x0c\x1a\xcb\xab\x9c\x5d\xbf\xd2\x39\x7d\x33\x80\xd7\xf2\x75\x33\xdb\x7b\x40\x35\xd9\x7b\xb3\xd7\x7d\xe5\x4b\x5e\xf2\x82\xaa\x02\xfb\xc8\x84\x06\x3d\x61\x7e\xcb\x21\x3d\x20\x90\xaa\xf7\x7a\x8f\x1c\x48\x05\x10\x65\x54\x90\x82\xf9\x9e\x33\x8e\x92\xce\xd1\x38\xd0\x23\x12\x79\xa7\xae\xd0\xb6\xe3\xb1\x90\xb1\x6d\xfd\x12\xe6\x5e\x1f\x72\x32\x77\xec\xe7\xbc\x38\x69\xc4\x47\x2e\xac\x0c\x36\x22\xdf\x3b\xc9\xce\xc9\xe6\x88\xb5\x39\x08\x64\xf8\xc4\x97\x81\x1d\x5f\x92\x1b\x67\xc1\x21\xf3\xa8\x8e\x15\x72\x37\x92\xef\x0b\xc1\x88\xae\xce\xa2\x29\x37\x9f\x58\x25\xb7\xa6\x27\xe2\xf2\x0b\x21\x35\xdc\xd8\x0f\xa4\xe6\x46\xaa\x39\xa1\x86\x50\xe4\x0c\x59\x5d\x50\x45\x14\xc3\xe0\x98\x04\x6a\x9b\x5b\x7d\x41\x59\xfb\x2c\x9b\x08\x9c\xb8\xee\xa3\x33\x43\x07\xf8\x06\x8e\x1b\x77\xf4\xd1\x9d\x5a\x7e\x75\xc2\x95\xa5\xd2\x90\x19\x7f\x26\xb8\x39\x0e\x8b\x61\x09\xaa\x42\x0a\x97\xa3\x63\x57\x74\x51\x38\x53\x6e\x5c\x5b\x62\x04\xc0\x7e\xed\x67\xeb\x04\x0a\x40\x00\x34\x55\xe6\xfb\xba\x79\xe3\x67\x18\xdb\xd3\x20\xce\x36\xec\x89\xa0\x76\x4b\xb5\x75\xea\x1a\x00\x09\x8d\x35\x30\x8e\xb6\xf9\xbc\x9f\xe0\x08\x71\x2e\x42\x06\xe7\x2c\x91\x8a\x68\x43\x95\xc1\x3b\xb2\x3f\x1a\xed\x8f\x40\x94\xdd\x1f\xed\x7b\x45\xac\x08\x29\xc4\x4e\xda\x6b\x80\xf1\x29\x94\x7d\x8a\x3c\xb4\xa9\xc6\x88\x90\x8f\xbe\x52\x2a\xb4\x00\x5d\xc8\x62\x0e\x09\xca\x45\x11\xde\x01\x1a\xd5\xb4\x69\x4f\x0f\x4f\x28\xf8\x73\xeb\x71\xfc\x92\x2e\x19\x7a\xca\xaf\x5d\x07\xbd\xad\x85\xd9\x34\xaf\x98\x04\x53\xe3\x1d\x73\x06\xd4\x4f\xef\xb7\xf7\x6e\x48\xba\x13\xbd\x99\xe3\x03\xee\xbd\x32\x59\x96\xdc\x90\x19\xd5\xb3\x60\xc5\x6b\xd2\x92\xfb\xb1\xa6\xbe\xc6\xdf\xa2\xd6\x86\xa9\x49\x27\xda\x95\x84\x99\x7b\x00\x16\x8c\xbd\xe1\x63\x57\xc7\x59\x34\xa6\x18\x60\x72\x7a\x46\x15\xb3\x4f\x56\xc0\x7d\x0a\x3e\x61\x86\x77\xbd\x1c\x2d\xfe\x1e\x56\x5e\xed\xdc\x6a\x00\x4f\xec\xde\x5a\x2a\x24\x32\xa7\x74\xfb\x76\x2e\x4e\x20\x7c\x15\xa0\x78\xf5\xe9\xf4\xe8\xe4\xc3\xe9\xa8\xec\xe2\x61\xd9\x32\xfb\x65\x22\xaf\x24\xef\xda\x51\x63\x48\x2a\x6a\xba\xf4\xad\xed\xcb\xb8\x03\xd8\xdb\x66\xdc\x01\x10\x4f\x70\xfc\x07\xa8\xfa\xc2\x7d\x71\x1d\x76\x22\xf4\x36\xb2\x92\x85\x9c\xf6\x68\x7a\xda\x0f\x4f\x7f\x85\x75\x2c\x86\x74\x58\xc9\xad\xb9\x05\x2d\xea\x6c\xfb\xf8\x2c\x0c\xfe\xe4\x9a\xe3\x09\xd6\x2d\xd3\xa3\xa6\xdc\x17\x70\x42\xcf\xc2\xf6\x70\xe7\xd8\xd0\x5e\x0f\xbc\x8b\xe5\x28\xc5\xd9\x09\x86\x50\x19\xac\x62\xaa\xe4\x58\xbd\x6c\x57\x8d\x12\x5b\xc1\x92\xae\xf6\x08\x2b\x15\x5c\x74\xbc\xc8\x29\xd0\xc3\xaf\xdf\x16\x61\x2a\xc5\x86\x50\x22\xc4\x6a\xdf\x13\x5e\x40\xb9\xa3\x46\xb2\x8f\x24\x9a\x4e\x8b\x7a\x1f\xb5\x77\x82\xe3\xcc\xc5\x7c\xd1\x57\xdd\xe8\xe5\x21\x16\x01\x9b\x0b\x17\x45\xb7\x4c\x31\xa8\x18\x65\xc5\x58\xe7\x37\xa3\x53\x78\x61\xa9\x5c\x9f\xca\x4a\xf1\x6b\x5e\xb0\xa9\x05\x61\xc6\xc5\x54\x37\x7d\xae\x5c\xf8\x5e\xa7\x65\xa1\x92\x15\x6b\xa4\xc0\x10\x06\xf5\x01\x82\xf1\x42\x0b\x08\xbc\x9a\xe7\x1f\x3f\x13\xc1\x10\x84\x8e\x97\xac\xa7\xa9\xce\x02\xd9\x51\x30\xd9\xb6\x7f\x7a\x3b\xe2\xd4\xce\xb0\x62\x1f\xc2\xb3\xec\xaa\xf6\x72\xd1\xa1\x37\x0c\x99\x3d\x25\x7a\x5e\x16\x5c\x5c\x41\x63\x18\xc7\x4e\x5c\x93\x45\x46\xec\x17\xfe\x02\x2b\x46\x8b\xf4\x62\xc0\x13\xa1\x32\x49\x21\x02\x98\x1d\x88\x5a\x00\x25\xcf\x52\xbd\xbf\x7a\x62\x8f\xbe\x85\x24\xfc\xbb\x73\x64\xec\xb3\x3e\x5a\x5e\xd2\xe9\xd6\x52\x73\x61\xf1\x16\xc3\x16\xe4\xe3\xf1\x99\xcf\xb4\x38\x88\x4d\xf8\xf8\xac\x54\x84\x2a\xc3\x27\x34\x33\x87\xa4\xaa\x8b\xc2\x19\x05\xbc\x90\xe7\xa8\xc4\x3d\xd1\xba\x9d\x80\xfc\xdc\x18\x1d\x21\xe5\x45\xcb\xe2\xda\xae\x6a\x48\x25\x73\xb4\x9d\xd6\x95\x0b\x01\xc6\x02\x7a\xe4\x66\xc6\xb3\x19\xb9\xa8\x8b\xe2\x42\x16\x3c\xf3\x81\xef\x5c\xa3\x7b\x22\xb7\x6c\xa1\x23\x5f\x38\x2a\x6e\xe8\x5c\xbf\x8d\xdf\x92\x50\xf8\x8c\x50\x63\x58\x59\x21\x32\xdb\xad\x59\x6c\x04\xdb\x78\x28\x40\x58\xe4\x16\x50\x20\x79\x94\x17\x81\x32\xd6\xee\x83\x8e\xfc\x7a\x48\xce\xd9\x35\x53\x6d\xf8\x84\xfd\x08\xa6\xd6\x6d\x98\xe0\xe8\x40\x1a\xaf\x35\xd8\x91\x0a\x99\xd1\xe2\xee\x51\x3f\x00\x3b\x9f\x2c\x4c\xcb\xb5\xd8\x37\xc4\x61\x55\xd7\x17\x39\x9b\x9c\x4b\x73\x81\x73\xb4\xdf\x07\xdf\xe4\x9e\x55\x69\x61\x75\x8c\xb9\x5f\xdd\xa2\x43\xce\xf5\x55\xaf\x57\x08\x76\xaf\xf8\x78\xfa\x22\xf3\x94\x19\x8b\xce\xc3\x80\xd1\x0e\x06\x8b\xd5\xf0\x5d\x6e\x5f\xd6\xdd\x2f\xc5\x5c\xc1\xcb\x81\x43\xee\xb8\xc0\x25\xbb\x21\x8a\x95\xd2\xa0\x9c\x6b\xe1\x75\x6e\x81\x4c\x96\x8c\xd0\x6b\xca\x0b\x3a\x2e\x20\xd6\xd9\x4e\xee\xe6\xea\x6c\x6d\x3d\x82\x1d\x80\x08\x32\xe9\xef\xa3\xc5\x96\x80\xf3\x88\x3f\xae\xd8\x7c\x7c\x49\x11\xac\x42\x66\x57\xb1\xac\x3a\x51\xb2\xc4\x47\x30\x4f\x3f\x87\xdc\x31\x9a\xe7\x44\xf3\xa9\xe0\x13\x9e\x51\x61\x48\x41\x0d\x13\xd9\x7c\x44\x5c\xfb\x5a\x1d\x7c\x1f\x8a\x19\xc5\x43\x9e\xbf\x90\xaa\xa4\x85\xdf\xe4\x31\xcd\xae\xe4\x64\x02\xb3\x36\xcf\xbb\xd0\x36\x47\xac\x70\x4f\xa8\x96\x02\x17\x67\x5a\xd3\x69\x0f\x62\x05\x7d\xe9\xad\x00\xe5\x52\x51\xf0\x94\x5c\x41\x5a\x4f\x28\x7d\xb5\x59\x9f\xec\xa0\x7c\x71\xbb\xa6\x78\x5d\xc0\x57\x55\x0b\xc3\x2d\xf9\x6b\x75\xac\x23\xe0\x63\xbd\x13\xaa\x6b\x97\x72\xed\xff\xa0\xdc\x86\x2b\x4a\x07\xc9\x6b\xd7\xd0\xdb\x02\xe1\xbb\x13\xe1\xb7\x48\xea\x21\xcf\xa9\xfb\x2e\x44\x7c\x04\xb0\xd9\xbf\x38\xb7\x50\xbb\x62\xea\x8d\x74\x79\x00\x95\xf2\x1a\xa4\xf8\xdb\x57\x7f\x1f\x5d\xc7\x71\x0b\xf0\x73\x2b\x72\x1c\x5a\x78\x4b\xa6\xa6\x58\x37\x8e\x91\x92\x0a\x3e\x61\xda\x62\xc8\xdc\xa2\x93\xf3\x47\x69\x5a\x32\x72\x63\x11\x09\xa3\x86\x17\x5e\xaf\x23\x7d\xfd\xbc\xe0\x01\x8b\x4e\xb4\x31\x6d\x1c\x28\x79\x08\x67\x01\x6d\x22\x6e\x59\x56\x1b\xb8\x7f\x10\x67\x49\x0e\x84\xb4\x9f\x75\x8c\xb7\xba\xac\xc7\x28\x3e\xc3\xb2\x0b\xaf\x86\x69\x89\x42\x9a\xe8\x74\x1f\xdc\x59\x5d\x8f\x2b\xdc\x57\x36\xb1\x72\xd4\x9b\xd1\x37\xdf\x74\xdf\x1c\xcc\x8e\x83\x35\x35\xcb\x6a\xc5\xcd\xdc\x12\x5e\x76\x6b\x46\x13\xfd\x17\x25\xeb\xea\x18\x8a\xfa\x3a\xc6\x3c\xa3\xe0\x32\xc0\x54\x3a\xbc\x90\xcd\xa5\xb0\x88\xfa\x0c\x73\x63\xaa\x20\x77\x6c\x5b\x5e\x77\x9b\x3c\x71\xc4\xd9\xde\x98\xe6\x5a\xea\x11\xb9\x90\x5a\x73\x8b\x99\xa1\x82\x7f\x8f\xe4\xcd\x1d\x97\x8c\xec\xf8\x42\x64\x23\x02\x9a\xf4\x6e\x4b\x47\x5d\xdf\x2b\xd6\x08\x11\xa3\xec\xea\x6f\xa1\xb9\x9b\x21\x86\x4e\x5b\xf9\xdf\x03\x7b\x12\xf1\x56\x34\x5d\x5e\xb7\x18\x21\xe0\x76\x69\xdb\xb7\xff\x93\x37\x81\x91\xb3\x45\xa4\x6d\x57\x0e\x70\x75\xf2\xbb\x1f\xda\xb7\x6c\x46\xaf\xd9\x52\xd6\x5b\xc9\x7c\xb4\x84\x03\xc1\x35\xea\xbe\xa0\x55\xed\x42\x2a\x7e\xa8\xc3\xae\x35\x2b\xa1\xc8\xf2\x3d\x22\xc0\x32\x29\x67\x3c\x27\x85\x94\x50\x84\xb6\xae\x88\x90\x39\xb3\x17\x00\x82\x60\x69\xa1\x07\xe4\xf2\xc8\x3d\x58\x45\x4b\x62\xeb\x13\x90\x6c\x2b\x96\x2d\x79\xe0\xc9\xac\x54\x51\xd7\x5f\x14\x6b\xba\x67\x86\xb4\x72\xdb\xa5\x2b\x38\x01\xd9\x64\x60\x91\x9b\xf1\xe9\x8c\x29\x52\xb0\x6b\x06\x81\x3f\x13\x3e\x25\xd8\x84\xb8\x74\x2d\x6a\x7c\xbc\xbd\x54\xd0\x14\x55\xf1\xbc\xbb\x61\x68\x51\x5a\xb3\x47\x7a\x23\xd5\x55\x21\x69\x1e\xd5\x84\xd7\xa4\xe0\x57\x8c\x9c\xb0\xaa\x90\x73\xd7\x57\x46\xe4\xe4\xd2\x50\xc3\x26\x75\x71\xd9\xe3\x28\xfa\x59\x75\x74\xa6\xf9\xd6\xac\x3a\x76\xf1\x05\xab\xce\xd9\xe5\xf1\xe5\xd9\xb3\xcf\x1c\xdc\xc0\x47\x07\x9b\xf0\x9c\xe3\x41\xf8\xcf\xdd\x22\xe8\x86\xa4\xa8\xbb\xfe\x12\x63\x1d\x2f\xa4\x32\xb4\xd8\x82\xe0\x9c\xcd\x68\x75\x54\x9b\xd9\x09\xd7\x99\xa5\x20\x69\xe4\xe7\x3b\xb3\x46\x55\xe4\x19\x38\xeb\x9c\xb2\x44\xb8\xbf\x24\xee\xb9\xe3\xbf\x1e\x5d\x10\x5a\x5b\x14\x36\x3c\x03\xa1\x68\x2b\xae\x5d\x12\xed\xcd\x25\x76\xfc\x4a\xba\x33\x6e\xce\x07\xf6\xc5\x3f\xb5\x4b\xbb\xb2\x6b\xc9\x9c\xcb\xb2\x29\x5f\x12\x3a\x9f\x55\x42\x27\x30\x8e\x6d\xe9\x0e\x5c\x70\xc3\xa9\x91\x6a\x17\x72\xc8\x5a\xc0\x84\x30\xde\x5a\x1b\x59\x3a\x92\x70\xe6\x9f\x80\xaa\x1b\xbd\xdc\xc2\x77\x16\x6b\x62\x83\x21\x70\x08\x8e\xe5\x4c\x18\xa6\x26\x34\x63\x0b\xf5\x82\x07\x60\x03\x47\x98\xb8\x7f\xa6\x33\x34\x7f\x74\x21\xff\x15\xf0\xc1\x3f\xbd\xfd\x63\x94\x31\xfa\xa7\xa0\x6d\x38\x7b\x7c\xac\x58\x08\x96\x75\xb7\xaa\xa7\xc0\x9e\x9f\xd3\xf0\x05\xfe\xb3\x58\xc8\x7e\xc0\xad\xfd\xb7\x9a\x16\x78\x24\x7d\x8e\xbb\xff\x6b\xb6\x50\x61\xeb\xb7\xa4\x8d\x98\x6e\xdf\x02\x16\x62\x3d\x1a\xa0\xcc\x68\x47\x12\x6e\x33\x8d\xa2\x42\x5b\x14\x4b\x63\x2b\xd9\x77\xda\xd7\x3e\x39\x30\x59\xd5\x39\x99\x37\x41\xb9\xab\x50\xea\xca\xfd\x47\xa7\x69\x52\x75\x80\x28\x6a\x11\x6b\x42\xb8\xf5\x9f\x11\xa9\xdf\x87\x0e\x10\xfd\x76\x6b\xeb\x19\xc7\x40\xa7\xb6\x1e\x80\xed\xc0\x08\x37\x20\xde\x6a\x54\x29\xc8\x7b\xae\x0d\x56\xd5\xc5\x87\xa1\x8a\x1e\x56\x91\xb7\x3a\xea\x05\x91\x8a\xf0\xea\x3f\x68\x9e\xab\xb7\x28\x79\x7a\x97\xa8\xea\x5e\xd4\x91\x6b\x17\x93\x07\xf5\x1c\xbd\x91\xe2\xc0\xcc\x2b\x9e\xd1\xa2\x98\x93\xcf\xc7\x17\xb0\x82\x26\x7f\xf8\xdd\x6b\x50\x5a\xbf\xf9\xfa\x77\xaf\x7b\x5e\xa1\x97\x22\xf4\x0b\xe3\x59\x84\x30\x3f\x83\xf4\xe9\x5d\x2b\x71\xdb\x2a\x48\x0b\x6d\x4e\xad\x7e\x78\x89\xf5\x58\xad\x70\xe4\xd8\x1d\x12\x02\x7b\xbb\x82\xa8\x97\x52\x8b\x7c\xa9\x7c\x1a\x8d\x97\xca\xa7\x2f\x95\x4f\x5f\x2a\x9f\xde\x3f\x62\x3b\xe7\xb6\xf9\x51\x0c\x0b\x74\x95\xbc\x2b\x37\xa1\xc8\x74\xf1\xa5\x8b\x4c\x1d\x51\xad\x2b\xe1\x4d\x71\x80\x71\x55\x9d\x3e\x6d\x42\x9a\xee\x17\x27\xe7\x97\xff\xf1\xfe\xe8\xdb\xd3\xf7\xb0\xab\xae\x78\x8f\xbd\xde\x5c\x24\xf7\x9d\x6c\x8d\xc4\xf4\x3b\xef\xed\xe5\x69\x8b\x85\x0c\x6d\x41\xce\xdf\x5d\x6e\x98\x9c\xfd\x14\x87\xb7\x68\xd3\x14\x93\xee\xa7\xf4\xdc\x32\x70\xec\x4f\x35\x53\xdb\x69\x53\xb4\x33\xe9\x3b\xde\xb7\xcb\x6e\xdb\x56\x7f\x8b\xaf\xb8\x3b\x5b\x33\xb0\x77\x43\x46\xf2\x2f\x93\x46\x6b\x8f\x08\x8f\xed\xd9\x27\xd0\x3e\x25\x5a\xf4\xd3\x88\x55\xaa\xee\x62\xbd\x3a\xbe\xa8\xa8\x31\x99\x65\x24\x28\x5e\x28\x2b\xe6\x59\x01\x8f\x69\xed\x85\x8d\x7f\xdd\x7b\x5c\x2d\xf4\x10\x3f\x2e\x28\x2f\xb7\x25\x10\x2c\x05\x06\xff\xf3\x12\x83\x6c\x5a\xd9\xd0\xad\xa8\xbb\x6e\xa1\x36\x8b\x2d\xd4\x61\xc5\x56\xc0\x1b\x08\x65\x15\xcd\xba\x8a\xa2\xdd\xb0\xa2\xd9\x89\xa1\x47\x90\xe6\x23\xfc\x04\xfa\xbb\x3f\x43\x41\x04\xe0\xde\x52\xb5\xea\xb0\xf6\xb6\x89\x53\x00\x64\xb1\x71\x22\xdd\x04\x25\x09\xd5\x21\xe5\x06\xd3\x75\x12\x74\x58\xdc\x49\x9c\x25\x5f\xa4\xbc\xf2\xe3\x13\x9b\xcb\xb7\x69\x2a\xaf\x66\xd2\x48\xb1\x1b\x5d\x21\x96\xc1\xd2\x66\x2d\x17\xf0\xc4\x71\x88\x8c\x8d\x58\x13\x96\xf1\x0d\x51\x9e\x0b\xe9\xba\x2e\x76\x33\x45\xa6\x6e\x5c\x41\xec\x62\x19\xc4\xab\x8b\x89\x2d\x7d\xc9\xdd\x6a\x9b\xd3\xbf\xeb\xc1\xd9\xc9\x16\xb8\xc8\x73\x08\x93\xfb\x42\x5b\xc8\x3e\x51\xd8\x5b\xff\x1a\x60\x79\xa2\x9e\x40\x76\x22\x7f\xc6\x67\x27\xce\x10\xe1\x1b\xfe\x68\x47\x17\xc8\xfd\x84\x6a\x2b\x3a\x85\x54\xe6\x46\xaa\x2d\x37\x4a\x6f\x43\xb1\x50\x47\xc9\x7d\x77\xa7\x39\xda\x13\x51\xf3\x36\x68\x1b\xf5\xe8\x59\x7c\x2f\x7b\x52\x9d\x00\xba\xa7\x41\xcf\x6d\x3e\xf2\x2b\x8c\x32\x59\x46\xbd\x79\xc8\xcd\x8c\xa1\x14\x7a\x7c\x79\xf6\x81\x4f\x11\x40\xff\x2e\x64\xc2\xa8\xa9\x15\x1b\x4e\xa9\xe9\x06\x10\xd7\xa4\x5b\xb4\xdf\x96\xb9\x10\xe2\xd0\xbf\x32\x27\xba\x04\x4e\x14\xdd\xb0\x55\x1c\xe9\x4b\x60\x48\xcf\x87\x11\xed\x9c\xce\xf3\xd2\x20\xbb\x35\x3c\xf1\x48\x72\x3e\x7e\x32\xe7\xe8\xb4\xb8\xd9\x88\x0a\x34\xb0\x1d\xf7\xdc\x56\x44\x03\x25\xff\x13\xf8\x4d\x6f\xa9\x20\xcc\x84\xf1\x7d\xc0\x26\x69\x51\xd8\x93\x95\x82\x85\xb4\x3c\xdd\x24\x99\x62\x96\x65\x49\x2b\x97\x70\x9a\xcb\x1b\x71\x43\x55\x4e\x8e\x2e\xce\x9e\x9e\xeb\xf4\x2e\xf1\x8f\xf7\xe8\x83\xcc\xb7\x4e\xff\x23\x50\x40\xaa\x80\x32\x22\xf6\x8f\x31\x37\x1a\x6b\x3b\x42\xa5\x45\x13\x3b\x59\xac\x78\x15\x82\xfe\xa1\x92\xc7\x38\x10\x87\x04\x4a\x8b\x20\x32\x33\xb4\x70\x91\x4a\x63\x66\x6e\x18\x13\xe4\xf5\xeb\xd7\x18\x5f\xf1\xfa\xf7\xbf\xff\x3d\x64\x70\x93\x9c\x65\xbc\xbc\xfb\x20\x3c\xf5\xdb\x37\x6f\xba\x83\xf2\xef\x47\x1f\xde\x13\x9a\x81\x8d\x8c\x8c\xa5\x99\x39\x88\x00\xf5\xe2\x45\xf5\x80\xfc\x9f\xcb\x8f\xe7\x5e\x0e\xd1\x0b\xdf\x02\x66\x87\xed\xec\x61\x03\x72\xd5\x61\x38\xd4\xfa\x69\x22\x20\xa8\x99\x85\x3a\x27\x14\x22\xd1\xa2\x7a\x3a\x8e\x5e\xf6\x48\xa8\x82\xe6\xf5\x7c\x3a\x83\x63\xe1\x02\x6e\x61\xc1\x33\xd7\xa0\x01\xe3\x62\x30\x3d\xda\x17\xf5\xc4\xe2\x25\x5e\x84\xe8\xbc\xb2\xdd\xb2\x01\x26\x34\xbb\x52\x29\x83\x60\x23\x51\x4c\xd7\x85\x81\x06\x5e\x63\xe6\x80\x68\x30\x56\xb3\xce\x18\xb8\x1b\x21\xec\x8e\xf4\x6d\x9b\x2e\x78\x0a\xec\xd4\xd7\x82\x5b\xa1\x6c\x12\xaa\x50\x23\x01\x07\x87\x2b\x39\xa5\xd9\x8c\x30\x61\xa0\xd5\x05\xa2\x9e\x7d\xbc\xf3\xd2\x33\x2a\x72\x4b\x53\x2c\x2b\x40\x30\x9e\x6d\xfc\x79\xba\x48\xd6\x8b\xb0\xe3\xad\x1a\x5a\x0d\x27\xa5\x85\x14\xd3\xf8\x62\x36\x82\x75\x54\x43\xa8\x07\x0d\x82\xc4\x46\xa8\x28\x6c\x0f\x06\x9d\xaf\xda\x55\x39\xd2\x58\x60\x6b\xcc\xfa\xdc\xbf\x24\xf1\xcb\x69\x22\x98\x09\xc9\xb0\xb0\xf5\x67\x55\x6b\xf3\x6d\x6d\x11\xb2\xcf\x6c\x69\x63\x9a\x09\x39\xbe\x03\x1d\x06\x04\xbb\x18\x2b\xf0\xa9\x66\x19\xd3\x78\x79\xff\x81\x65\x47\x4c\xf3\xf4\x3f\xf0\xd8\x7a\x42\x21\x27\xcb\x00\xf1\xa5\xde\xb8\xb0\x9c\x9c\xd6\x46\x0e\xeb\x2a\xa7\xa1\xec\x75\xc7\x72\x81\xcd\x38\x2a\xaa\x19\x1d\x90\x29\x8d\x94\xc6\xbb\x70\x44\x17\xc6\x59\x37\xe0\x17\xbd\x57\x5f\xf1\xc6\x96\x25\xb9\x80\x54\xb8\x09\x45\xe0\xc7\x82\x96\x0c\x0a\xf4\x20\xb8\x3d\x41\xc8\x64\x39\xe6\xc2\x55\xbe\x9b\x40\x69\x40\xa6\xd0\x0b\x09\x65\xef\x48\x41\xc7\xac\x70\x00\x48\xd5\xfb\x95\xbf\xf3\xe5\x94\x98\xb2\xfc\x4d\x13\x3a\x9d\x2a\xa6\x35\xbf\x66\xae\xc6\x20\xff\x25\x40\x03\x1d\xc0\x4e\x3f\xf8\xfa\x8b\x9a\x58\xe5\xd0\xb0\xee\x3d\x90\x70\x84\xee\x62\x16\xbd\x1b\x1b\xc2\x88\x90\x53\x2d\x0d\x53\x3c\x83\x55\xdd\x51\x6b\xa2\xeb\x6c\x46\xa8\xc6\xec\xc3\x21\x14\x5a\xec\xbf\xeb\x4d\x59\x15\xac\xdc\x38\x63\x34\xf7\xa5\xe6\xac\x52\x55\x55\x2c\x1f\x11\x72\x6c\xc9\xcf\x84\x67\xd4\x60\x21\x31\x92\xb3\xbc\xae\x0a\x8e\x36\xc2\x9e\x60\x7c\x9e\x31\x22\x55\xce\xa0\xa2\xa4\x9c\x40\xf0\x7d\x58\x2c\x92\x0d\xa1\xc2\x3c\xb7\xeb\x8f\xb9\x51\x54\xcd\x51\x82\x72\x67\xd9\x13\x08\xcb\x7d\x32\x28\x5e\x07\x6b\x01\x3c\x50\xe9\x86\x74\x6f\xba\xe3\x47\x12\x26\x40\x7a\xdb\x06\x9b\xd1\x23\xfe\xd2\x8f\x34\x3c\xc9\x0e\xb8\xda\x97\xee\x66\xf7\x9d\x2c\x35\x5b\xb2\x03\x61\x03\x75\xfe\x2e\xa9\x0c\x05\x40\x4d\x36\x73\x92\x62\x9b\x54\x11\x82\xf6\x23\xda\x2f\x3b\x06\x87\x2b\xa5\xc8\x3d\x89\x0c\xf9\xf4\xcc\x8c\xac\xba\x69\x6a\x5a\x14\xf3\x21\xbb\xb5\xcc\xde\x12\x33\x90\x9e\xa0\xa7\x1a\x24\xe2\xd7\x42\x33\x33\x48\x00\x08\x10\xa1\x4a\x61\x09\x5b\x4d\xf6\xf0\xfd\x85\x84\x7e\x08\x7b\xb8\x98\x55\xb1\xc7\xb5\xc1\x24\x9d\xc1\xf2\x9f\xa4\xd8\x93\x6b\xa6\xe6\x6e\xdd\xde\xd3\x25\xbb\xaa\x24\xe9\x1d\x21\x40\xa1\x4c\x36\x3b\xbd\xad\x14\x96\x6a\x49\x32\xe7\xc2\x75\x59\x5c\x02\xcb\xf8\x7b\x4d\xa9\x8d\xd8\x9e\x18\x01\x07\xc1\x24\x96\xf8\x13\xe0\x12\x47\xe7\x27\xfd\xd9\x03\x8e\xfe\x8a\x4f\x7b\xf4\x54\x83\xda\x23\x3d\xcd\xc1\x71\xb4\x62\xcf\x5d\x8b\x05\xff\x0d\xf6\x45\xc5\xc2\x6a\x3a\x58\x72\x28\xb9\x62\x8e\x4d\x52\xe1\x5c\x10\xee\xe1\x64\x40\x2a\x06\xf5\x1b\xb1\x4c\x25\x9b\xc3\x62\xb8\x7e\x9a\x93\x4f\x7c\x29\x71\xa4\xe2\xa4\xcd\x18\xda\x97\x4f\x38\x9b\x3f\xac\x44\x53\xa6\xa5\x45\x38\xae\x58\x67\x47\xce\xb2\xd1\xba\x45\x16\x93\xbc\xa5\x06\xee\x80\xfd\x20\xd4\x40\x0a\x68\x4f\xa1\x81\xaa\x26\x46\xa6\x42\x36\x92\x2e\x3b\xb2\x3d\xfc\x81\x3e\xda\x96\x25\x24\x3c\x24\x82\xb7\x1d\xab\x70\xc5\xe6\xfb\x1a\xef\xbc\xe5\x10\x33\x5e\x81\x6a\x0e\xcc\x5e\x4e\x12\x5f\x7c\x1c\x3f\x40\x61\x73\x0f\x0e\x72\x96\x33\x31\x20\xe7\xd2\xd8\x7f\x4e\x6f\xb9\x76\x3a\xcc\x89\x64\xfa\x5c\x1a\xf8\x64\xe7\xf1\x01\xb7\xea\xb9\x60\x83\xb3\xfe\x73\x48\x8c\x03\x36\x0c\x8a\x3a\x6c\x89\x3f\x75\x5f\xcd\x39\x60\x0e\xd7\xe4\x0c\x9a\x20\xe3\x51\x25\x05\x08\xb2\x32\x7d\x65\x6b\x0b\x8e\xb7\xd7\x41\x5d\x76\x97\x3d\x7e\x17\x1e\x87\x2d\x52\xb5\x90\xe5\x89\x40\x73\x60\x81\x17\x02\xbf\x81\xa6\x27\x55\x41\x33\x96\xfb\x9e\x0a\xd4\xee\x2a\x35\x6c\xda\x31\xff\xf9\xbe\x51\x32\x35\x05\x07\x4b\xd6\xa3\xcf\xd2\xdd\x91\x5a\x30\xc3\x91\x54\x3c\xc3\xf1\x28\x97\xf8\x51\xaa\xa9\x3c\xf9\x12\x20\xf7\xbf\xb7\x6c\xf6\x31\xb4\x8a\x64\x94\x28\x02\x13\xa5\xdf\x92\x56\x96\x0a\xfd\x97\x15\x72\xe1\xc2\xfd\x37\xa9\x28\x57\x7a\x44\x8e\x7c\x17\x8a\xf8\x3b\x67\x47\x8a\xa6\x49\x06\x58\x05\xf9\x98\x3f\xd7\xfc\x9a\x16\xae\x62\x32\x15\x84\x61\x47\x0f\x0b\xe3\xa2\x6a\x35\x20\x37\x33\xa9\x51\x62\x0e\xa5\x37\xf6\xae\xd8\x7c\x6f\x90\xc0\x9e\xea\x47\x4c\xf9\xf6\xce\xc4\x5e\xe3\x73\x6c\xd1\xa7\xa0\x37\x40\xee\xe1\x1e\x7c\xb7\xf7\x54\x3a\x5d\x42\xb9\x9e\xe6\x39\xc7\xd2\xd6\x17\xc9\xc5\xdd\xa4\xe4\x23\x7d\xd5\x8b\x66\xf4\xad\x55\x83\xe3\xf1\xcc\x68\xfe\x66\x2e\x71\x3b\x8c\xe7\xbe\xab\x8c\x33\x59\xdd\xb5\x68\x25\x00\x04\x6c\x62\x91\xfd\xcc\x5e\x89\x96\x11\x32\x95\x19\x29\x09\xb2\xf8\x62\xed\xbb\x78\xa4\x56\xbe\x52\x35\x1b\x90\x5c\x8a\x7d\xe3\x5c\x08\x71\x4f\xa8\xc5\xde\x12\xf9\x92\x53\x3f\xd0\x87\x09\x40\xa1\x8a\x41\x0b\x0c\xdf\x0f\xcb\xd9\x3b\xb1\x6b\x14\xf8\xaa\x8c\x8f\x17\xb6\x7f\x2e\x03\xa4\x6f\x01\x23\x07\x88\x2b\x63\x24\x24\x70\x01\xe8\x8f\x1b\x03\xd3\x20\x5e\x04\x52\xdb\xff\x95\x00\x8a\x55\xe8\x0d\xbc\xb3\x29\xb6\x84\xa6\xdb\x5f\x98\x92\x09\xd6\x5d\x62\x20\x4f\x75\x9b\xfa\xc4\x35\x36\xa3\x4f\x11\x87\x66\xb4\xae\xd2\x27\x50\x86\xaf\x5d\xf0\x12\x34\x3c\x8b\x6a\x42\x2b\x89\x88\x00\x11\xa5\xf0\xc5\x18\xf6\x65\xa7\x88\x4c\x83\x2e\xbb\x48\x66\x36\x74\xc0\x44\xde\xe3\x14\x72\xca\x03\x5e\x95\xcf\x33\xd6\x78\x86\xe5\x04\xa0\xf4\x8e\xf2\xc7\xb9\x50\xa1\x4a\x71\x2d\xb0\x60\x2f\xc6\xf0\xa5\x73\xc8\x26\x43\x2d\x8c\x71\xfd\x40\xab\x84\x91\x26\x61\x4e\xc8\x09\x56\x25\x12\x4d\x3a\x96\xb5\xf1\xa5\x9a\xdd\xf7\x39\x35\x14\x9a\x52\x61\xdc\xc4\x6e\xb8\x70\xd3\xd9\x61\x13\xa9\xc8\xe9\xaf\x2b\x46\x40\xb7\x33\x0e\x06\x84\xd1\x6c\x66\xb5\x9d\x21\x86\xb6\x5a\x3d\xcd\x2b\x64\x27\xf6\xa0\x50\x09\x92\x8b\x02\x43\x8a\x2b\x14\x30\xc2\x5f\x9c\x28\x5a\xdb\x07\x61\xf8\xd4\x2b\xed\x12\x3a\x9c\x7a\x26\x9a\xa4\xf8\x04\x90\x78\xf7\x88\xef\xe4\xe9\x0c\xdc\xb0\x23\x60\xad\x8a\xf6\xcb\xc7\x28\xb2\xdc\xfe\x2c\x5c\xfa\x04\x50\x2c\x79\xfb\xa6\x1e\xbb\xe5\x61\x2e\x22\xbd\x16\x77\xd6\xb7\x42\x4d\x22\x18\xb0\x45\x9a\x7d\x69\xea\x8d\xfd\x51\x55\x78\x68\x83\x0a\x99\xc1\x4d\x27\x32\x87\x2d\xe1\x38\x53\x18\xed\xa2\xa3\xd7\x2c\x74\x31\x65\x4a\x49\x65\xdf\x9f\x69\x4d\x38\x9c\x53\x49\xd5\x15\xcb\x83\x34\x3e\x22\x17\x76\xa3\xbc\x65\x2f\x01\x24\xca\x4b\x11\xbe\x47\xaa\x7d\x75\xa7\x98\x03\x98\xfb\xa3\xd1\xbe\x6b\xdf\xae\x50\xc0\x46\x3e\x64\x3f\x4f\x45\xf1\xd3\x98\xf1\x92\x19\xef\x5a\xb4\xe9\x03\xad\x34\x1a\x47\xad\x18\x0d\xee\x20\x49\x28\xee\x88\x8b\x12\xa2\xbd\x8b\x4d\x34\x23\xb1\x71\x22\xad\xc3\x31\x9d\xb3\x31\x41\x28\x10\x8e\xd4\x0e\xc6\x84\xce\xc5\xfb\x1c\x8b\x0e\x87\x1c\x3d\x4c\xeb\xad\x4e\x68\x67\x2e\x7b\x24\xd5\x2c\x8e\xc7\x72\x11\x41\xba\x02\xd7\xe4\xa3\xb7\x56\xac\x97\x72\x63\xb0\xf2\x70\x0a\x6d\xc8\x8f\x1d\xca\xb9\x59\x1c\xbb\x96\x83\xb3\x38\xce\x26\xd8\x5e\xb8\x2d\x84\x38\xf6\x18\xa7\x55\x05\x05\xa4\x57\x63\xc9\xc5\xb1\xbd\xe4\x9c\xc5\xb1\x95\x64\x9d\xc5\x91\x22\x79\x67\x71\xf4\x4f\xe6\x59\x1c\x69\xec\x29\x38\x1e\x8b\x38\x81\x88\xc0\x7d\x0b\xe0\xd8\x58\xe3\xd4\x0d\x10\xf8\xc1\x14\x56\x45\x8c\x21\x21\x4d\x72\xe2\x1c\x92\x25\x3a\xd6\xb2\xa8\x0d\x82\x90\x7e\x91\x58\x66\x84\x97\xf4\x5e\xa8\x34\x82\xe2\xe2\x72\x91\x24\x0a\x9a\x04\x8a\x67\x29\xd7\x7a\x3c\xcf\x4b\x6a\x5f\xea\xae\xba\x5e\xd2\xb7\x0c\xc0\xb1\x1b\x8d\x03\x70\xec\x44\xfb\x00\x0f\x4a\xfa\x26\x02\x38\x76\xa9\xce\x77\x7b\x24\xbd\xa4\xfd\xdb\x0a\xf8\xf1\x48\xde\xb3\xd0\x41\x19\x65\xa5\x79\xe8\xaa\xd9\x32\x50\x40\xf9\x7e\xa3\xd1\x7e\xe2\x63\x80\xb0\x0f\x67\x7f\xbb\x56\x3a\xa7\xc8\x63\x39\xa3\x7d\x45\x83\xa3\x8b\xb3\x84\xf6\xdf\x68\xd6\x7b\x2c\xc0\xf1\x13\x2f\x36\xe0\x75\x46\x6b\x83\xcf\xd0\x7c\x1b\x47\xfe\x9f\x34\x3b\xea\xea\x3c\x25\x11\xb7\x77\xdf\xe6\x74\xe7\xc5\xdf\x59\x49\x31\xee\x39\x17\x61\xa0\x91\xae\x84\x44\x23\x53\x3a\x59\x0c\x6b\xa1\xfa\x4c\xbf\xfe\x69\xaa\x64\xf7\xed\x53\x3b\x6a\x55\x82\xdd\xef\xd1\x1d\x6b\x71\xb4\xb0\x65\xff\x93\xdf\x44\xe7\xb2\x44\x67\x42\xe4\xd7\xa8\x64\xfe\x16\x83\xac\xa8\x10\xd2\x60\x0c\xf5\x00\xdd\xf3\x7a\xe0\x02\x15\xa2\x82\xba\x22\x27\x35\xcf\x31\x1b\x33\x54\xc6\xdc\xff\xd7\x4a\xab\x80\x0d\xbc\x48\x83\x4e\xe4\x91\x32\x21\x68\xc5\x7f\x60\xaa\x4f\xef\xee\x65\xa3\x85\x5c\x6e\x7e\x8f\x49\x3a\x9b\xb1\x92\xc2\x7f\xbe\xf3\x1b\x64\x89\xb6\xcb\x4d\x06\x67\x09\x53\xa5\x15\x7c\x07\xad\x2a\x57\x7b\xd7\x6f\x12\xe4\xc9\x35\xe3\x51\xc2\x6a\xc3\x99\x3f\xda\x76\x5e\xb4\xd4\x7f\x7b\x45\xc1\x42\x09\x81\x06\xbe\xba\x75\x70\x47\x59\x49\xe2\x1a\xf7\x7f\xc7\xb7\xee\x31\x03\x0b\x71\x3c\x07\x6b\x74\x57\x2b\xf4\x20\x48\xe9\x6d\xeb\x71\x32\xc0\x5e\xac\xd0\x0f\x8f\x17\x2b\xb4\x1b\x2f\x56\xe8\xb5\xc7\xa3\x59\xa1\x23\x91\xce\x73\xd8\x25\x66\xe4\xb8\x53\x9c\xb7\x25\x37\x5d\xe4\x47\xe8\x93\xf2\x06\x60\x6f\xfd\x95\xaa\xed\xde\xdf\x1f\x8d\xf6\xd1\xc1\x3f\x0a\x4e\xac\xda\x4c\x86\x7f\x20\x4c\x64\x32\xb7\xf3\x7c\x86\xf9\x95\x36\xa0\xee\x34\x16\xbd\x18\x96\xd2\xaf\x15\x87\x08\xc0\xdc\x69\xe5\xc6\x84\x6c\xcb\x57\x47\x7c\xf7\x98\xc2\x79\x42\xf6\xd2\x08\xf7\x1e\x72\x7f\x14\xee\x40\x99\x72\x52\x7e\x53\xf7\xb1\xe0\x25\x77\x59\x8a\x96\x9e\x32\x6d\x52\x25\x9f\x10\x72\x80\x93\x8f\xb2\xaa\x1e\xb8\x85\x46\x25\x2b\xa5\x9a\x0f\xc2\x62\xf6\xcb\xd6\xea\xee\x89\x43\x50\x2e\xb2\x5a\x29\x26\x4c\x31\xef\x57\x80\x7f\xd9\x78\x26\x5a\x86\x3f\xa9\x1d\x56\x32\x02\x72\xa5\x89\xd3\x6d\x46\x9b\xe2\x1d\xfb\x65\xd0\x9d\x11\x76\x1b\xf8\xbd\x6b\xa5\x32\x68\x2c\xa0\xf6\x53\x26\xae\xc9\x35\x55\x3a\x15\x85\x21\x8f\xa5\x57\xe4\xfc\x9a\xeb\x47\x4c\xc1\xbe\x74\x42\x0b\xfa\x1a\x65\x6d\xaa\xda\x38\x76\xe7\x49\x04\xbb\xad\xa4\x15\x45\x03\x69\x58\x50\xcf\xde\xf4\x35\x79\xc7\xa3\xa2\xc6\x30\x25\xde\x92\xff\x7b\xf0\xd3\xaf\xff\x39\x3c\xfc\xf3\xc1\xc1\xdf\x5e\x0f\xff\xd7\xdf\x7f\x7d\xf0\xd3\x08\xfe\xe3\xab\xc3\x3f\x1f\xfe\xd3\xff\xf1\xeb\xc3\xc3\x83\x83\xbf\x7d\xf7\xe1\x2f\x9f\x2f\x4e\xff\xce\x0f\xff\xf9\x37\x51\x97\x57\xf8\xd7\x3f\x0f\xfe\xc6\x4e\xff\xbe\xe6\x24\x87\x87\x7f\xfe\x9f\x09\x5f\x82\x8a\xf9\xc7\x64\x3c\x01\xc7\xf0\x51\xe4\x9a\xf6\xdc\x8f\x9b\x69\xca\x85\x19\x4a\x35\xc4\x45\xde\x42\x1a\x4e\xb2\xa5\x3c\x6a\x3e\x1e\x8d\x69\xa4\xaa\xc0\x41\x83\xfa\xbd\xe3\x44\xe4\x71\x35\xec\x47\x73\x4f\x63\xdd\xe9\x84\x7e\x18\x9c\xf0\x1e\x17\x8c\xfb\xf2\xc5\xfb\xb2\xce\xf8\xf2\x23\xf0\x2f\x11\x1d\x5e\xc2\xef\xc9\xf3\x0f\xbf\xc7\xb3\x7c\x89\xbd\x7f\x89\xbd\x7f\x89\xbd\xef\x3d\xd3\x8e\x7a\x49\x5f\x62\xef\xfd\x78\x0e\xde\x8e\x97\xd8\xfb\x35\xc6\x8b\xd7\x63\xe5\x78\xf1\x7a\xb4\xc6\xbf\xb8\xd7\xe3\x25\xf6\xbe\xe3\x22\x2f\xb1\xf7\xab\xc6\x4b\xec\xfd\x4b\xec\xfd\x4b\xec\xfd\x4b\xec\x7d\x07\x98\x96\xc5\xde\x23\xf2\x2f\x8b\xc0\x77\xf6\xa6\x26\xfc\xfe\x5f\x30\xfa\x5e\x5b\xf4\xcb\xd8\x51\x96\xc9\x5a\x98\xcf\xf2\x8a\xf5\x8c\x4d\x5c\xb0\xfe\xde\x99\xdd\x92\xa1\xfb\xac\xc1\x77\x1f\xde\x49\xd3\xf0\x17\xd9\x5f\x83\xd6\x39\x67\x22\x85\x37\x27\x3d\x73\xf4\xb0\x79\x09\xd1\x4a\xdc\x22\x67\x79\xf3\x85\xe3\x9c\xc6\x22\xcd\x88\x1c\x11\xc5\x32\x5e\x71\x57\x54\x93\xe2\xe7\x09\x00\x01\xfa\xe0\xda\x93\xce\x2d\xd5\x60\xc5\x24\xb0\xaa\xd0\xb6\x54\x45\x36\x52\x27\xe5\x2d\x00\x9a\xc2\xf8\x65\x5f\x09\x75\x1e\xd0\x70\x6e\xb8\x66\x44\xcf\x64\x5d\xe4\x44\xb1\xff\xf4\x4a\x97\xdb\x91\xcf\x31\x0c\xb1\x23\x39\x0d\x30\xd1\xab\xbb\x93\xa0\x15\xb7\xf7\x99\xed\x56\x95\x44\x76\x5b\x71\xec\x00\x7e\xc9\x32\x29\xf2\x9d\x74\xcb\xdc\x01\xb2\x51\x8c\x20\x26\x07\x6b\x40\x87\xbe\x53\xd7\xb4\xe0\xb9\x95\xd1\x7c\xc8\x37\x92\xd1\x14\xd7\x0e\x29\x71\xb8\x55\xba\xc1\x28\x42\xab\x4a\x49\x9a\xcd\x98\x8e\xe0\x45\x6b\x84\xeb\x3f\xdf\xaf\x61\x6f\x3c\xaa\xa2\x9e\x72\x81\x26\x0d\x58\xd5\x4b\xb0\xd2\xf8\x34\x1a\xf7\xd2\x8b\x20\x7f\x8e\xc0\xb1\x3f\x4f\x00\x0c\x2a\x53\x46\xcd\x21\x5b\x47\xc6\x40\xe0\xce\xf0\x49\xfc\x87\x26\xb2\xc8\x41\xde\xa0\x82\xfc\xe1\x35\xa9\x98\xca\x90\x2c\x25\x71\xe0\x69\xe8\x3b\x65\xe1\x28\xac\xc6\x6c\x45\x99\xfb\x97\xff\xfa\x37\x64\x26\x6b\xa5\x47\x27\x11\x01\x78\x03\x9f\xa5\xc0\x16\x91\x37\x71\xd1\x86\x14\x8c\x6a\x43\xde\xbc\x26\x25\x17\xb5\x49\x57\xdf\x31\x95\xb5\x25\xb2\xb3\xfc\xee\x37\x3d\x67\x7b\x84\x6a\x91\x49\x28\x49\x6c\x55\x81\xff\x0e\xa6\x15\xe7\x51\x84\xde\xf6\xa4\x92\x5c\x98\x45\x43\x8b\x93\xb8\x52\x72\x2b\xf0\x64\xee\x04\x3f\x48\x6c\x62\xf8\xb9\x96\xe3\xb9\xe9\x24\x3a\xa5\x38\x74\xb7\x7c\xbb\x03\xc7\xbf\xb9\x0f\xf1\x88\x25\x8a\x21\x33\xab\xf4\x82\x5d\x56\xcf\xa8\x62\xae\x6b\xe6\xbe\x26\x05\x9f\xb0\xee\x1d\xec\x4e\xec\xc2\x50\x53\xf2\x6d\x58\x97\x6b\x92\x87\x8f\x83\x69\x96\x8b\xa1\x51\x8c\x05\x90\x41\xd7\x07\x0f\x32\x29\xa4\x98\xc6\xdd\x5b\xbb\x80\xd2\x53\xc4\xef\x27\xd8\x0f\x89\x62\x53\xae\x8d\xea\xe6\xf6\x1b\x76\x67\x98\x7d\xb5\x80\xa9\x92\x75\xe7\xe2\x9b\xa9\xc8\x16\x00\xe1\x4d\xbc\x3e\xd0\xc3\xf5\x72\xed\x5e\x73\xd8\xb1\x3a\x87\x63\xb0\x46\xc7\xb9\x7a\x93\x1d\xc5\x68\xfe\x51\x14\x9d\x7d\xa6\xa9\x36\xda\xc3\x81\xf6\x34\x90\xaa\x26\x12\x62\xeb\x66\x2c\x5c\x5f\xdf\x3a\x19\x4c\x75\x40\x43\x58\x8e\x9a\x8e\xfd\xf9\x10\xc2\xd6\x23\x4f\x61\x8f\x0e\xef\x91\x2c\x32\xa1\x85\xee\xd9\xf3\xba\x8f\xad\xc5\x5f\xdf\xed\x1f\x10\xc2\xd1\x26\xe8\xae\x1e\xbe\x54\xa4\xac\x0b\xc3\xab\xa2\x39\xac\x4f\xfe\x07\x4e\x0c\xee\x6e\x2b\x6c\x14\x57\x1a\x45\x72\x50\x0d\x9c\xe3\xad\x25\xcc\x18\x10\x76\x10\x60\x60\xc2\x40\x77\x7e\x48\x3e\x66\x15\x55\x34\x60\x4a\x26\xcb\x92\xf6\x28\xdb\x8e\xf1\x45\x14\x72\x28\x50\x88\xb1\xa2\xb3\xa2\x45\xb3\x43\x51\xb0\xf9\xb6\xae\xb5\x61\x82\x8a\xce\x21\x93\xa9\x70\x06\xa1\x20\xf2\x26\x54\x11\x98\xf2\x6b\x26\x16\xef\xb3\x33\x47\x7c\x4b\xb3\x2b\x26\xba\xdb\x37\xbf\xd7\xfe\x8c\xf3\xb9\xa0\x25\xcf\x68\x61\xe9\x81\x92\xd7\xdc\x92\x03\x96\x2f\xac\xab\x07\xce\x84\x8f\x4d\x48\x7d\xf3\x6a\x54\xec\xb6\x75\x70\xb5\x66\x9d\x43\xfc\x53\x1d\x9b\x85\xe1\xb1\x78\x9e\xc6\x88\x0e\xc5\xaf\x33\xe6\xf5\x62\xbb\xde\xb6\xf6\x1b\xdf\x2f\xc9\x8e\x7b\x6c\x8e\x68\x14\x48\xb5\x21\x1c\x15\xfb\x8f\x15\x96\x57\xcd\x7d\x82\xdd\xe2\x5d\x70\xed\xc9\xfb\xf1\x9b\x8e\xfb\xa1\xc6\x9d\x84\xcc\x14\x68\xa7\xc6\x79\x9b\xb1\x7c\xa2\xb9\xd4\xe4\x5b\xe8\xca\x71\xc2\xc0\x8c\xf2\xd4\x4a\xc3\xa7\x6f\x4f\x1e\x50\x18\x2c\xd4\x89\x95\x85\xa5\xbe\x3a\x76\x4b\xcb\xaa\x60\x7a\x74\xf5\x07\xf0\xd6\x39\xfa\xf5\x4a\x8d\xf3\x57\x9f\x4e\x8f\x4e\x3e\x9c\x8e\xca\x2e\x74\x73\xcb\x9a\x09\x2f\xe9\xb4\x9b\x1e\x3f\x24\xa5\x14\xdc\x48\xd5\x85\xc1\xf6\x55\x4c\x26\xfa\xb3\xdd\xb7\x2d\x13\x69\x84\xc2\x1b\x52\x9a\x1e\xfc\x88\x90\xce\x6e\xe2\x05\x66\x7b\x4f\xe6\xb2\x26\x37\x14\xfb\x7b\xc1\x55\xea\x2e\x1e\x7f\xe6\xd5\x5b\x72\x2a\x74\xad\x58\xd3\xd7\x74\x11\x04\xcb\x55\xfd\x4d\xf0\xbc\x15\x6e\x2d\x36\xf6\x82\x7e\x32\xf0\x78\x77\x38\x4e\xdd\xbd\x78\x4b\xf6\xd8\xad\xf9\xcd\xde\x80\xec\xdd\x4e\xb4\xfd\x47\x98\x89\xde\x1b\x91\xb3\xb2\x2a\x78\xc6\x4d\x31\xb7\x37\x8a\x29\x15\x1c\xfd\xf8\x83\x85\x3c\x83\xee\x90\x6c\xe8\x60\xd7\x46\x2a\x3a\x65\xfe\x22\xff\x4a\x8d\xbb\x8a\x3d\xbd\x19\x20\x5c\xc2\x6d\x23\x33\x00\x11\x3c\x0a\x40\xfa\xf1\xa3\x7e\x8d\x50\xba\x92\xd2\x5f\xcd\xe4\xcd\xd0\xc8\x61\xad\xd9\x90\x77\x75\xcb\xf6\x3e\x99\x2b\x36\x87\x04\xb9\x2d\x9f\x8d\x03\xa3\x65\xb2\x35\x12\x22\x13\xe0\x73\xab\xed\x7c\xfa\xf6\xe4\x7b\xdd\xc7\xad\x16\x59\x44\x5e\x31\x93\xbd\xca\x58\x35\x7b\xe5\x56\xfe\x57\x3d\xff\x28\x9e\xe5\xce\x9e\x74\x9a\xd0\xf3\xcc\x6d\x63\x94\x87\x03\x45\xe5\x4c\x16\x05\xcb\xbc\xe3\xf0\x98\x55\xb3\xf0\xc0\xb3\x3e\xf9\x3e\x39\x31\x3d\x33\x61\x76\xcf\x19\x61\x47\x25\x65\xe7\x78\xaa\x54\xa8\x67\x61\x68\xf3\x19\xf8\xa4\x1f\x9b\x89\x88\x97\x1a\xa7\x15\x22\x9e\x27\xb9\xea\x2a\xce\x3c\x0b\x63\xf4\x27\xff\xa5\x66\x06\xa4\x58\x2e\x08\x16\xd8\xfc\x60\xa5\xea\x5d\xb0\x3a\xef\x04\x2a\xf5\x31\x7a\x63\x0e\x76\x8f\x72\x3a\xa9\x30\x21\x00\x02\x2a\x7e\x14\x0e\x4d\x6b\x33\x63\xc2\xf0\x0c\x43\x5e\x5c\xd2\x78\x2c\x0b\x91\xb3\x09\x1a\x1f\xf3\x1e\x31\x9b\xf2\x9a\x29\xc5\x73\xa6\x49\x6f\x61\x28\x76\x3a\xf1\xe2\x59\xa3\x56\xaf\x70\xc9\x14\xd1\x89\x7d\x03\xf6\x53\x46\x55\xa4\x0f\xd2\xdf\x8d\xf0\xfc\x9d\x08\xcc\x7f\x8c\x90\xfc\x5d\x0c\xc6\x4f\x14\xce\xd8\x3f\x00\x3f\x7d\x48\xf9\xce\x78\x54\x5a\x62\x27\x7c\x92\x4c\xec\xa4\x79\xc9\x7b\x94\x77\xdd\x01\x92\x9e\x46\xf0\x84\x7d\xd8\x78\x12\x9d\xd1\x82\x9d\x7d\xdc\x96\xef\xc3\x2d\xdf\xf6\x7f\x5c\xba\x0f\x2b\xa6\x34\xd7\x50\xf2\xc3\xbb\xe2\x8c\xa1\xd9\xcc\x79\x23\x7c\x10\x84\x14\xe4\xbb\x70\x6f\x88\x90\x79\xd7\xd8\xc6\xd8\x01\xe2\x61\x58\xed\x04\xf1\xe0\x7f\x59\x51\x53\x53\x6a\xd8\x4d\x47\xfd\x7d\xd8\x88\x8d\x5d\x7f\x0f\x86\xf1\x17\xdf\xc6\x52\xc7\x42\x7f\xff\x45\xc8\xf5\xbf\x33\xf7\xe3\x7b\x2c\x46\xf7\xf8\x2a\x52\xb0\x01\x98\x71\x2b\xae\x63\x1c\x81\x0e\xdf\x4e\xba\x09\x23\xee\xd6\x25\xc1\x3f\x37\x97\xc7\x22\x38\x48\x9a\xe7\x8a\x69\xed\xc5\x65\x4f\xe0\x8e\x2e\xce\xc8\x5f\xf0\xf1\xad\xed\x5e\xa5\xa4\x41\x33\xe8\x89\x2c\x29\xef\x9c\xf0\xd6\xda\x83\xc5\x49\xfd\x66\xc4\x9a\xac\xdf\x84\x8b\xf0\x2c\x71\x0f\x5b\x6d\xb6\x69\x4b\x5e\x2b\x96\x13\xe7\xb8\xda\xda\x2e\xed\x9c\x85\xe8\x8e\xcd\x86\x1c\xd8\xef\x5e\xdd\x28\x6e\xd8\xe1\xa8\xb1\x16\x2d\x98\x92\xba\xdb\x76\x1f\xd1\x04\xf5\x45\x1a\x6e\xa2\xf0\x1b\x5f\xb2\xac\x31\xd6\x78\xe4\x07\x71\x3c\xa4\xad\xf5\x58\x55\x68\x0e\xb9\x0c\x51\x36\x29\x58\x82\x40\x57\x0d\x55\xc9\xd0\x2a\x34\x20\xef\xe5\x94\x0b\xcf\x5e\xa4\xcb\x26\x9a\xd0\xee\xe6\x99\x17\xfb\xc8\x9d\xf1\x62\x1f\x79\xb1\x8f\xbc\xd8\x47\xee\x1f\x5a\x17\xa7\x82\x8e\x8b\xee\xa9\xe3\xed\xec\xfa\x30\x1d\x79\x57\xd0\x29\x61\xf0\xc7\xab\x9c\x6b\xfb\x2f\xb9\xbc\x7c\x0f\x21\xd8\xb5\xf0\xa6\x73\xc0\x4d\x27\x7d\x85\x7a\xd2\xc8\x4b\xb7\xc7\xc6\x50\xcc\xf9\xd0\xa3\x82\x5a\x32\x46\xd6\x80\x42\xb8\xc8\xed\xae\x31\xdd\xaa\x18\xe1\x9e\x00\x7e\x46\x43\x55\x4a\x4c\xba\x1e\x33\x4b\xad\xb2\xab\x8b\x28\x0a\x5a\x2a\xfb\x99\x88\x3e\x4a\xa2\x7c\x24\x9a\x33\xa5\x1a\xb2\x00\x52\x1f\x54\xb8\x48\xe5\xbc\x8e\xe6\xf3\xd2\xb8\x17\x42\x2e\xdd\x41\xc2\x77\x54\x6b\x99\xf1\x26\x6f\x01\x62\x6f\x1a\x11\x3d\x07\x11\x7d\x6b\x9b\x8c\x7a\x70\x9a\x0d\x41\xf5\x7b\x89\x66\xe2\x11\xdb\x3d\x41\x75\xac\x89\x70\xe1\xf7\x6d\x6b\x9b\x80\x57\xad\x4f\x47\x83\x54\x44\xa2\x81\x64\x71\x1f\x03\x41\x58\x8c\x3b\xf7\x25\x71\x1d\xee\x75\xb6\x38\xe1\x80\x28\x50\xae\x97\x60\x2d\xd7\x81\x24\x41\xb1\xf4\xad\x9c\x56\xf7\x0a\xe2\x49\x0c\xbc\xa8\x6f\xb4\x13\xa7\xf0\x33\x17\xc1\x0e\xb4\xba\x92\x55\x5d\x60\xda\x7e\xd8\xb4\x64\x21\xe4\x9b\x44\xa3\x22\x6c\x4f\x6f\xb3\xed\xab\x79\x44\xa5\x26\xb7\x7d\x21\xe3\xaa\x97\x9b\x97\x37\xf5\x77\x14\xac\x93\x64\x3c\xf7\xd3\x25\xb0\x78\x6e\xbf\xba\x69\xaa\x6a\xa6\xdd\xad\xcb\xad\x2a\xa8\x2d\x0b\xce\xeb\xdf\xfd\xe6\x37\x3d\x84\x21\xae\x58\x66\x24\x64\x1e\xba\xca\xd2\x21\x62\x96\x2a\x06\xba\x3f\x96\x1e\xf5\xf6\x65\xcc\x3c\x33\xbd\xe2\x3a\xb6\x57\xfe\x74\x2b\xe5\x4e\x53\x14\xdc\xe8\x5f\xce\xb4\x57\x80\x66\xb2\xa8\x79\x68\x95\x70\xb6\xe5\x56\x09\x5b\x6d\x90\xb0\xcd\xb6\x08\xdb\x6b\x86\xb0\xc5\x16\x08\xdb\x6e\x7c\xb0\x95\x76\x07\x5b\x0f\xe8\x7e\xfa\x86\x06\x49\xea\x12\xa6\xa8\x49\xd8\xb7\x65\x41\xcf\x7a\x86\x69\x6a\x19\xf6\x6e\x4a\xf0\x14\xad\x08\x12\xd9\x38\xfb\xb7\x1d\x48\x5b\x73\x6a\xdb\x2d\x06\x76\x48\xf4\xc6\xb1\x9b\xed\x04\xb6\xd2\x44\x60\xdb\xad\x03\xb6\xd8\x30\x20\x5d\xe1\xba\x54\xcd\x01\xfa\x17\xac\x4b\x4b\x38\xb6\x54\xfe\xff\x11\x8b\xfe\x3f\x49\xa9\xff\xc7\x2e\xf0\xbf\x9b\xc9\x6d\x7d\x0b\x86\xf7\x2e\x13\xae\x13\xd5\x09\x4f\x15\x03\xb2\x0b\x66\xf1\x06\x92\xa5\xee\x05\xdf\x05\x12\xef\x01\x54\x0f\x01\x3f\x71\x45\xb1\xa7\x67\x9d\x38\x03\xeb\x49\x6c\xb0\xa4\xb7\xad\x1c\x21\x91\x9d\x04\xde\x24\xe6\x72\x04\xe0\xe3\xe5\x42\x44\x74\xf8\xf8\xe9\x03\xa1\xc3\xd2\x0f\x84\x42\xfb\xad\xdb\xb1\x60\xe8\x97\xa8\xe0\x75\xc6\x2e\x46\x05\x3f\x55\x05\x93\x2f\x2f\x30\x33\x7f\x09\xcc\x8c\xc7\x0e\x06\x66\xea\x56\xc3\x79\xef\x10\x05\xb6\x0b\xaa\xa5\x1c\x5b\x21\xd5\x57\x0e\x6c\x68\xf0\xd1\xc5\x59\xe7\xd5\x33\xc5\xa0\x2b\x00\x2d\xf4\x68\x99\xce\xe9\xc3\x8f\x9c\x86\xeb\x75\x4d\x6a\x0c\x2b\xab\xce\x25\xbd\x5e\xe2\x32\x97\x8c\x97\xb8\xcc\x97\xb8\xcc\x97\xb8\xcc\xfb\xc7\x2e\x47\x17\xcd\xea\x92\x8a\xa1\xe5\xa7\x10\xd4\xd9\x4a\x27\x59\x10\xd3\x47\xc4\x71\xc0\x5e\x44\x0b\x4b\xf9\x42\x81\xe7\x5a\xf0\x9f\x6b\xd6\x78\x3a\x82\xca\xb6\x03\x71\x60\x00\xc7\xee\x1c\x17\x6a\xb2\x0b\x7c\x36\x93\x77\xea\x03\xba\xbd\x0c\x47\xe7\x59\x63\xbf\x23\x83\xc5\x5b\x8e\x49\x33\x63\xa8\x6c\x5f\x2c\x28\xdb\x2d\x9b\xae\x23\xe4\x40\x47\xfb\x79\x87\x63\x4d\xd0\xa2\xa8\x7d\x77\xd7\x21\x65\xcc\x48\xc9\x95\x92\xca\x45\xaa\xc5\xaf\x8f\x89\x4f\x7c\x3a\x33\x4c\xa1\x85\x14\xd3\x33\xba\x93\xcf\x4b\x66\xdc\x2d\x80\x5b\x64\x24\xa1\x02\x0b\xbd\xda\xff\xf6\x45\x3e\x60\x6b\xbc\x04\x32\x66\x33\x7a\xcd\x65\xdd\xa3\xa8\xda\x25\xca\x53\x7b\x6e\x4a\xd0\x15\xe6\xb2\x0e\xb1\x28\xb5\xb6\x9b\x11\x4e\x41\xdf\xc5\x83\xce\x4b\x9f\x37\x93\x82\xd9\x3c\x97\xde\x19\x3d\x64\xb7\x5c\x9b\xbb\x7b\xee\x51\xc0\xc5\x3e\x6d\xe5\x32\x5f\xeb\xca\x72\xdf\x1f\x3a\xd7\x04\x4e\x71\x85\x5b\x40\xb4\x4d\x20\xd7\x97\xf0\xd5\x43\x06\x10\xd7\x5c\x08\xeb\xa3\x93\x92\x66\x33\x2e\x12\xd4\xc3\xfd\xa1\x05\x58\xcb\x12\x32\x22\x47\x45\xd1\xe4\x31\xe9\x90\x3a\xe8\x2d\x23\xed\x97\xb2\x87\xd4\x09\x1c\x8b\xb9\x8a\xe5\x10\x67\x85\x22\x16\xe4\x27\x6a\x3e\x72\x0b\x8c\xae\xcb\x1b\xaa\xd8\x28\x93\x25\x39\xbe\x3c\x23\xb9\xe2\x1d\xdb\x7d\x6d\x39\xff\x1c\x8f\xf8\xa2\x9b\xeb\xfa\x4b\xb3\xf7\xbc\xd8\x7a\x76\xca\xd6\x13\x52\x18\x0a\x9e\xcd\xcf\x4e\xd2\xa6\x45\xe0\x9c\x5e\xd0\xd4\x21\x25\xc2\x7e\x4e\xbe\xa5\x9a\xe5\xe4\x03\x15\x74\x8a\x0e\xab\x83\xcb\x8b\x6f\x3f\x1c\x5a\x84\x07\x67\xdc\xd9\xc9\xd2\xbc\x89\xcb\x78\xf2\xf3\x6d\x95\x57\x27\x8b\x5b\x97\x4c\xb6\xbf\x33\x6b\xc7\xed\xdb\x5a\xe5\x79\x12\xc4\xd6\x8b\x1e\x4e\xe0\x25\xd5\xf8\x2f\x16\x9b\x8d\x61\xa2\x82\xef\x0c\xa9\x17\x59\xea\x75\x99\x5f\x3d\xf5\x06\xdc\xf5\x46\x5a\xfd\xf1\x8a\xcd\x37\xa6\xde\x43\x38\xc1\x9e\x8b\xe3\x7b\x94\xf4\xfe\x96\x44\x51\xa4\xcc\x2a\x08\xd7\x8b\x9a\x5b\x23\x32\xae\x75\xae\x97\x46\x51\xc3\xa6\xf3\x13\x56\x15\x72\x6e\xb1\xf8\x22\x0a\xdc\xc1\x47\xc7\x28\x4a\xab\x31\xcd\x88\xaa\x0b\x68\xbc\x90\xdf\x69\xc7\x28\x18\xcb\x1b\x32\xcf\x85\x36\xb4\x28\xec\x01\xc2\xfc\x2b\x21\x5a\x5b\x38\x58\x57\x0c\x18\x22\x9c\x0f\x3e\xd5\x6e\x47\x7c\xfe\xd0\x69\xaf\x2f\x08\xc0\xf2\x0f\xe3\xdb\x26\x91\x90\x6b\xc7\x3c\x76\x11\x18\x90\xa2\x7d\xaa\x0b\xcb\xa0\x8b\xbc\xdd\xbe\x19\x55\x0e\x87\x0a\xd8\x1a\x02\xe8\x9f\x7d\x49\x67\x02\x94\x4c\xb7\x42\x21\xa2\x9f\xaf\xb5\x3e\x76\x88\xbe\x99\xa1\x04\x6a\x27\x26\xb4\xaa\x0a\x8e\x55\x06\xa4\x72\x41\xb8\x91\x3f\xf9\xee\x63\xeb\x90\xda\x0d\xc5\xd0\xcd\xc4\xce\x21\xb9\x66\x6a\xbc\x8e\xfd\x6d\x53\x89\x92\x56\x1c\xc2\x99\xd6\x26\x61\x5d\x85\xc6\xa3\x8b\x33\x5c\x68\x99\x87\xdf\x7f\x89\x08\xe1\x8e\xda\x07\xf4\x60\x3a\x9a\x73\x03\x84\xce\x51\x47\x17\x67\xd8\x90\xcd\x35\x8f\x6a\x5c\x03\x56\x63\xa7\x98\x7c\xd9\xf4\xbc\xa5\x53\x3b\xa3\x21\x52\xb0\x4d\xba\xa7\x5a\x08\x98\xa8\x4b\x86\x8d\xa9\x02\x30\x84\x0b\x58\x27\x40\xd1\x78\x20\xd0\xaa\x3c\x22\x7b\x7b\xb1\x4e\x88\xe5\x59\x54\x04\x37\x90\xba\xbd\xaf\x5a\x4f\x59\xba\xd6\xbc\xd8\xba\x1c\x7e\xf3\xa8\xe7\x0d\xa3\x9c\x3b\x70\xcc\x04\x91\x3b\x42\x8a\x4f\x6e\xbf\xbf\xff\xf4\xfe\xd1\x11\xf4\xbc\xbd\x9c\x6b\x0f\xc4\xa0\xb5\x69\x45\x95\xe1\xb4\x20\xb5\x2a\x7c\x78\x21\x56\x22\x71\x19\x81\x33\x7a\x1d\xb5\x5e\x1a\x11\xf2\x15\x62\xa5\x43\x06\x24\x65\x60\x14\x75\xad\xc8\x26\x75\x51\x0c\xc8\x84\x0b\x6a\x19\x19\xab\x48\x14\xe4\xb5\x36\xc4\x97\x5c\x64\xcc\x6e\xd3\xd0\xe3\x25\x01\xc8\xbd\xd9\x28\xd0\x34\x88\xd1\x8c\x5d\x2e\x08\x8a\xa5\x6f\x19\xd8\x85\x27\x52\x91\xe3\xa2\xd6\x86\xa9\x4f\xd2\xb2\xe1\x26\xdd\x84\x4c\x94\x2c\x09\x8d\xbf\xfe\x96\x8b\x7c\xa3\x4c\xa8\x4f\xc0\xda\x33\x2a\x08\xe3\x10\x18\x65\x97\x86\x78\x68\x8b\xec\xcd\xa5\x3a\xd0\x75\x36\xb3\x5b\xb4\x57\xc9\x5c\xef\x59\xea\xbc\x87\xee\x46\xbd\x77\x68\xff\x5a\x7c\x57\xcc\xde\x88\x7e\xf7\x8a\x56\x7c\xef\x70\x40\x60\xc3\x21\x38\x4f\xae\x1f\x8d\xf7\x85\xde\x23\xbf\x61\x60\xea\xeb\x74\x8b\x3e\xc5\x33\xc0\xc5\x10\x4d\xe8\xdb\xcd\x8c\x1b\xcc\xd7\xb1\x37\x05\x7d\x00\xa1\xd7\xcc\x22\x23\x25\xe4\xc8\x3b\xd1\xec\xd5\x2a\x19\xf5\xf1\xba\xec\x9a\xa9\xb9\x99\xb9\x06\x16\x9e\x8a\xbe\x9c\x1c\xdc\x8c\x5e\xa7\xe6\x48\x99\x3f\xa1\xe6\xba\x01\x4d\xb8\x73\x42\xfb\x5f\xed\x2f\xb2\xa4\x86\x07\xff\x6b\x9f\x07\x08\x61\x9d\xce\xe2\x07\xfb\xcb\xf6\x39\xe0\x47\xc8\x4c\x02\x39\x7c\xff\xde\x85\xa7\xe0\x86\x7f\xc7\x05\x78\xbd\x41\x1e\xf2\xb5\x00\xdc\xa1\x2d\x3d\x29\x80\xf0\x5f\xf6\x94\xee\x2a\x5d\xeb\x2a\x4a\x2b\x60\xf4\x7a\xe6\x7d\x53\xad\x9c\xc0\x29\xab\x1f\x64\xbe\xfc\x12\xb7\x90\xe4\x2c\x7a\x38\xc4\x12\x37\x66\x4e\x37\x97\xd3\x9c\xe6\xd5\x52\x2d\x74\xf5\x99\xae\x38\xbf\xfb\x20\x69\xec\x74\x40\xf6\xa3\x6f\x3e\x37\x81\x11\x64\x52\xd0\x69\x83\x8b\x40\xc4\x51\xb2\x3f\xbe\xfc\xc1\xbf\x82\x26\xf7\x94\x1e\x7e\x50\x75\x7a\x48\x59\x1a\x36\xbb\x74\xef\x13\xf7\xba\x32\x1e\xd6\x98\xc2\xe4\xf7\x63\xd3\x3a\x71\x5f\x66\xa5\xa9\xfe\xbe\xfd\xf7\xa6\x75\x1a\x61\x82\xef\x1c\xe7\x4d\x21\x90\x6d\x02\x32\xdc\xe5\x0f\x2d\x34\x79\x00\xde\x7b\x90\xf6\x8a\xcd\x6f\xa4\xca\x1f\x46\xd8\xa3\x40\xcc\xfc\x4f\xbc\x32\xef\x83\xc1\xd0\x1c\x2f\x97\x3a\x76\x3a\xa3\xea\x4a\xe0\x0b\x3a\x66\xc5\xc3\xa0\xdf\xa3\x18\x7c\xa0\x95\x7d\x9d\x26\x65\x13\x2d\x52\x2e\xca\x0c\xb5\x53\xcc\xf3\xf1\x19\x69\x52\x4d\xa9\xe0\xbf\x60\x9e\x6b\x66\x29\x85\x54\xfc\x97\xe5\xa8\x76\x80\x3e\x7d\xb4\x71\x15\x2c\x33\x87\x0e\xeb\x97\x92\xec\x07\xae\x05\xcd\x73\x8e\x22\xd8\xc5\x03\x18\xbc\x7a\xbf\xb8\xb8\xda\xe4\xa4\xe1\x79\x4c\xb3\x69\x1c\x7b\x8f\x78\xcc\x2b\xc8\xc2\xc3\x37\x77\x75\x18\xdd\x1a\xec\xa9\x56\x2b\x12\x45\x56\xfe\xbe\xa4\x1c\xb9\xf6\xf2\x36\x5e\xf7\xec\xae\xc3\x26\xea\x64\x6b\x4b\x4b\xed\xfb\x85\xd9\x9e\xe0\x5e\xf5\xda\x70\x56\x52\xde\x75\xc7\x70\xf4\x38\xb2\x92\x9a\x5a\x71\xb3\x94\x53\xaf\xfe\x21\x17\xdf\xd5\x63\xf6\x03\x53\xda\x9e\xc7\xa6\x3f\x17\x90\x71\x76\x74\x71\xb6\x74\x5b\xd2\x70\xe4\x7b\x0d\x19\x60\x37\x73\x90\x5b\x71\x91\xd4\x82\x96\x63\x3e\xad\x65\xad\x8b\x79\xec\x41\xa1\xe4\x8a\x8b\x7c\x44\xc8\x19\x9a\x55\xc5\xbe\x21\x54\x48\x31\x2f\xdd\xa3\x22\x2b\xea\x9c\xb5\x66\xbc\x8f\x95\x49\x42\xaf\x25\xcf\x09\xad\x8d\x2c\xa9\xe1\x19\xc9\x24\x53\x19\x14\x51\x8d\xe7\xaf\x35\x23\xb4\x35\x63\xf3\xdb\xac\xd6\x46\x96\xa4\xa4\x4a\xcf\x68\x51\xdc\x87\x12\x09\xa4\x03\x30\xa7\xdd\xfb\xad\xdd\x95\x7b\xbf\xbc\x5e\xb1\x0f\x0f\x5f\x07\x58\xb8\xd7\x75\xb0\xc0\xf5\x9a\xe0\xfa\x7e\xa4\x5e\x63\x0e\x57\x01\x77\x69\x5f\x8e\x16\x7e\x7e\x9e\x31\x52\xd5\xe3\x82\x6b\x50\xe1\x81\x70\xcd\xc9\x98\xcd\xb8\x4b\xbd\x79\x98\x62\xdd\x7b\xc4\x0f\xed\xf3\x2a\x92\xf1\xe0\x0e\xad\xa0\xf0\x2b\x7f\xeb\x38\xe0\x59\x49\xa7\x6b\x88\xf6\xf7\x5c\xdf\xf7\x96\xec\x53\x31\x0f\xfc\x14\x9a\xa9\xea\x01\x91\xca\x25\x12\x7b\xdd\x4f\xb9\xaf\x42\x8b\x60\x45\x3e\xba\x1d\x75\x79\xd1\xee\x1a\x40\x95\x01\xa6\x26\x52\x95\x76\xdf\xb9\x22\x93\x5a\x80\x35\xfc\x1e\xbd\x10\x62\xf8\x80\xff\x38\x63\x26\x2d\xb4\x0c\xc4\x00\x8e\x4d\x78\xc0\x08\xd5\xe4\x86\x15\x05\x86\x11\x61\xe7\xd7\xa8\x6c\x73\x53\xcb\xb2\x09\x25\x1c\x2f\xd7\x2d\x73\x3e\x65\xda\x90\x83\xcb\xbf\x1e\x1d\x82\x40\x04\xc6\xba\x39\x31\x74\x3a\x5a\x88\x0f\xc7\x60\x52\x2b\x6e\xe5\x35\x88\x65\x19\x35\xb4\x90\x53\x8c\x40\xb3\x24\xc5\xfe\xbe\x2a\xe8\x1c\xd2\xb8\x2a\xaa\x20\x57\x30\x43\x83\x25\x51\xb5\xb8\xaf\xcd\xf8\xe3\x71\xca\x87\x69\xd2\xaa\x9e\xda\x2b\xdc\xc3\x0f\xd3\x9c\x07\xfa\x04\x3f\x2e\x0b\x56\xac\x2a\xe8\x3d\x06\xab\x3b\xf4\xa2\x29\x7d\x68\xf5\x16\x30\x6c\x48\xc1\xc2\x1c\x23\x72\x89\xf8\x54\x52\x93\x61\x7c\xc8\x3f\x4a\x66\x68\x4e\x0d\x1d\x59\xe5\xfe\x1f\xed\x12\x49\xb2\xc8\xed\x44\xf7\x1f\xf4\x3d\x30\xa3\x28\x2e\x1f\xa6\x71\xef\xad\x6a\x11\x1e\x07\x85\xcb\xdf\xdb\x95\x16\xb2\x9e\xe4\x0d\x5e\xff\xf4\xd6\xea\xd6\x2b\x5d\xf9\x2d\x58\x17\x7f\xd4\xb6\x3d\x15\xed\x37\x71\xd8\x5a\x32\x61\xf4\x08\x8e\x26\xfe\x04\xfc\x09\x47\xe7\x27\xf7\x9b\x63\x1f\x36\x24\x3d\x60\x38\x5a\xdf\x67\x73\xb4\x02\x76\xef\xb2\x71\xdf\xb4\x7d\x89\xbe\x50\x06\x94\x61\xc2\xe2\x0d\x54\x04\xae\x04\x0f\xaf\x58\x16\xcf\xb9\x29\xe5\xd2\x28\x85\xf7\x1b\xdb\xd6\xf2\x08\xaf\xe3\x07\x7e\xa8\xb2\xce\x30\xbc\xc6\xbd\x0f\xad\xe7\x16\x7e\xb0\xfa\xcd\x7d\xd5\x6d\xf0\x4c\xa0\xac\x82\xb7\xfc\x87\x63\x58\xd7\x8d\xbe\xa6\xb1\xd0\xbf\xea\x06\x80\x3e\xe8\x04\x0c\x58\xd0\x0a\xe2\xbd\x62\xf3\x7d\xa7\xe9\xda\x1b\x34\xe3\x15\xd6\x6f\x72\x3e\xc1\x87\x8e\x1f\xc7\x0f\xb4\xe0\x79\x58\x00\xef\xd2\x99\x18\x90\x73\x69\xec\x3f\xa7\xb7\x5c\x1b\xb4\x31\x9c\x48\xa6\xcf\xa5\x81\x4f\x92\xec\x14\x02\x98\x72\x9f\x9c\x19\x04\x1d\x40\x70\xdd\x23\x63\x89\xdb\x0f\xec\xa1\xd0\xc8\x7b\xf6\xe9\x33\x61\x05\x1a\x7c\xe5\x07\x96\x08\x45\xe1\xb4\x5b\xc0\x17\x4b\x10\x52\x0c\x7d\x8e\xd6\xdd\x15\xdc\x3e\x4a\xd5\xda\xc6\xce\x8b\xb9\x85\x30\xbd\x01\xbe\xe1\xda\xf3\xa5\x20\x86\x50\x6f\x1a\x7e\xd0\x2e\x5d\x32\x35\x05\xdf\x6e\xf6\x80\x2f\x72\x5d\x8b\xfc\x5a\x76\xf8\xb5\xad\xef\x9d\x6c\xee\x1d\x7e\x04\x3c\xe9\xfd\xbd\xf6\x39\xb2\x01\x3e\x46\x53\x21\xd5\x2f\xd1\x70\xf7\x5f\x96\xb8\xc3\x91\xfe\x37\x14\x54\xd4\x23\x72\x44\x34\x17\xd3\x82\xb5\xbe\x73\xee\xf6\x68\x9a\x15\x4b\x55\x90\xa5\xf8\x73\xcd\xaf\x69\x61\xd9\x0c\x64\x85\x84\x52\x2c\x72\x72\x87\xd9\x0e\x5c\xe1\x44\x4b\x10\x83\x18\xbb\x77\xc5\xe6\x7b\x83\x95\x69\x32\x31\x46\xef\x9d\x89\xbd\xa6\xc6\x50\x0b\x4b\x03\x4f\x03\xc9\x78\x0f\xbe\xdb\xeb\xce\xb7\x57\x72\xa8\xf5\xad\x8c\xe4\x61\x94\xdb\x2c\xf7\x4e\x5f\xf1\xe5\x61\x49\xeb\x20\x89\x97\x2f\x0f\xf4\x21\xd8\xd5\x04\x23\x50\x04\x4b\x81\x4b\xc2\x7e\x1a\x57\x74\xb6\x1a\xcb\x15\xaf\xaa\xa6\xdc\x76\x5d\x4d\x15\xcd\x19\x99\x2a\x5a\xdd\x73\x69\x37\x93\x4e\x51\xc4\x5d\xb6\xe4\x0a\xb5\x6c\xf7\x75\xa0\x7b\xce\x7a\x85\xd5\x61\xe5\xef\x6e\xd8\x78\x26\xe5\x15\x54\xc6\x01\xbc\x7b\x44\x93\xda\x8f\xb8\xd6\x49\xf3\x99\x37\x77\x68\x92\x33\x43\x79\x01\x21\x82\x1f\xdf\x7f\x70\x41\x84\x5e\x56\xf3\x50\x2e\xa7\x19\x09\x74\x43\x9a\xbb\x38\xd9\x4f\xec\x9a\xb3\x1b\x67\x39\xbb\x8f\x44\x0d\xc9\x94\x09\x08\x50\x5b\x11\x66\x3a\x24\x9a\xe7\xec\x14\x52\xad\xef\x9f\xa8\x87\x93\xec\x1e\x98\x1f\xa2\x15\xab\x79\xdd\x83\x7c\x6e\x0d\x1e\x17\x2c\x28\x17\x52\xad\xa8\x2c\xbf\x5e\x99\xb5\xf5\x4a\xa8\x85\x2c\xe5\xdf\xfc\xe6\x9b\x15\x7c\xe5\x96\x97\x75\xf9\x96\xfc\xee\xb7\xbf\xfd\xe6\xb7\xf7\x3f\xc6\x05\x3e\xf6\xe6\xfe\xf7\x73\xb7\xed\xf8\xd3\xc9\x0e\xec\x77\x1e\xe2\xbd\x57\x3b\xe0\xd7\x98\x6a\x42\x79\x51\x2b\x97\x2e\xb1\xa6\xf6\xf8\x2e\xfe\x0d\x38\x4f\x9b\xb4\x5a\xea\x67\xf4\x71\xc6\x2e\xfe\x78\xc2\x05\xd3\x64\x26\x6f\x48\x2d\x14\xcb\xe4\x54\xf0\x5f\x58\x8e\xc5\x72\x35\x06\xc0\x41\x2b\x79\x8f\xe2\x84\x89\xbc\x92\x5c\x18\x60\xb1\x33\x2a\xf2\x62\x55\xac\xd2\x1a\x6f\x1a\xdf\xe0\x5e\x5b\x06\xdc\x68\xa3\x0d\xfb\xd0\xfc\x62\x61\xbb\xec\x3b\x7b\x57\x33\x72\x39\xdc\xb6\x5e\x6f\x8a\x84\xf1\x72\x85\xcd\x65\x09\x8c\x9b\x99\x04\xd0\xd4\x01\x9f\xfd\x5c\x33\x35\x87\xbc\xdd\x46\x71\x8b\x22\x8a\x3f\x37\xe5\x1b\xfd\x3b\x3a\xa1\x92\xde\xeb\x13\x20\x4b\x4c\x32\x91\xa8\xd5\x04\xb8\x2d\x40\x05\xbf\x61\x18\xa6\xe3\xbd\xbe\xe4\x88\x88\xba\x28\x56\xac\x74\xcf\x24\x42\xae\xf2\x1c\xe3\x58\xcb\xfe\xb0\x9e\x61\x60\x5d\x13\x14\x8e\xed\x19\xa2\xe2\x17\x4f\xa4\x45\x6d\x1a\x4e\xbc\x25\x03\x15\x8e\x2e\x66\x2a\x1c\x1b\xa4\x2f\xac\x9f\xba\xb0\x5e\x49\xe8\x35\xcc\x57\x38\x36\xc9\x6d\x58\xb3\x90\xf3\x63\x1a\xb4\x70\x6c\x14\x03\xb7\x9e\x71\x6b\x09\xe8\x6b\xc6\xb9\x3f\xa2\xa1\x0b\xc7\x63\x98\xbb\x70\x6c\xb4\x8f\xeb\x98\xbe\x70\x74\xd9\xc5\x27\x30\x83\xb9\x77\x7e\x4a\x63\xd8\x03\x4b\x26\x36\x89\xe1\x58\xdb\x30\xe6\x80\xdb\x28\x60\x75\x83\x60\xd5\x0d\x03\x55\x7b\x04\xa9\x76\xfe\xe9\x1a\xc6\x33\x1c\x9b\x61\xf4\x13\x1a\xd2\xfc\x82\x4f\x66\x4e\xc3\xf1\xd4\x46\x35\x1c\x6b\xf3\xd3\xcd\x0c\x6c\xf1\xe4\x0f\xa0\x6b\x97\x42\x57\x8a\x71\x71\x2d\xb1\xdf\xe7\x46\x4a\xc4\xa7\x3b\x3f\x5c\xd0\x25\x6e\x80\x8d\x3a\x65\x22\x68\x5f\xb1\x4e\x35\x93\xf2\x8a\xd4\xfa\x61\x8f\xda\xca\xf7\x7e\x20\x3d\x36\x89\x12\xbc\xc9\x0d\xfb\x54\x17\xec\x47\x6e\x66\x1f\x9b\x92\x2b\x70\xcd\x4c\x5d\x15\xb0\x17\xd1\x17\x16\x2f\x3f\x35\xca\xc9\x99\x41\x12\x9b\xc9\xb2\x64\x22\xc7\x68\xcb\x92\x5e\xad\x46\x78\x6d\xd5\x5b\xcc\x2a\x28\x0a\x54\xe1\x60\x29\x76\x5b\x51\xd1\x28\x2b\xd7\x96\x51\xaf\x42\xe1\x35\x11\x78\x5d\x99\x6c\xed\x3c\xd3\x8d\xe5\xed\xc5\xbc\xd2\x28\x31\xb4\x95\x3f\x4a\xc6\xac\x90\x50\x53\x0a\x33\x27\x30\xcb\x68\xed\x54\xcb\xb3\x89\xff\x95\x93\x9c\x5c\x9f\x22\x26\xa6\x4d\xa1\x79\x5d\xf0\x8c\x05\x96\x29\xd7\x29\xe6\xf3\xc9\x49\xd3\xeb\x09\xe8\xeb\xf0\xbe\x35\xf9\xde\x06\x3c\xaf\x07\xbf\xa3\x15\x7f\xd8\x14\x88\xa3\xc3\xc9\xfb\xa9\xe3\xb3\xbf\xf6\x9f\xad\x73\xfa\xfe\xe1\x97\xf3\x5f\x35\x7a\x9c\x7f\x53\x6a\x2a\xf5\xf1\xb7\x29\x6a\x23\x03\x87\xb3\x5f\x60\x2d\x19\x55\x96\xd9\x83\x25\x7f\x48\x8e\x3f\x9d\x1e\x7d\x3e\x1d\x90\xef\x2f\x4e\xe0\xdf\x93\xd3\xf7\xa7\xf6\xdf\xe3\x8f\xe7\xe7\xa7\xc7\x9f\xad\xf0\xfc\xd5\x83\x20\x40\x23\xe7\xa2\xc0\xd3\xb7\x12\x8a\x6c\x13\x73\x2a\xe6\x64\x52\x1b\x4b\x91\x1b\x60\x5a\x50\x52\x34\x21\xd2\x3c\x5f\x27\xd9\xf1\x8b\xc3\xc1\xd6\x99\x87\x03\x5d\xb4\xda\x46\x7b\xe6\x7a\x67\xbb\xbc\xfe\x87\xdf\xec\x69\x90\x7c\xed\x3c\xcd\x4d\x71\xbc\x5b\x0a\xe7\xff\x78\x70\xde\x77\x52\x11\x76\x4b\xcb\xaa\x58\x23\x43\x6e\xbf\x92\xb9\xde\x77\xb9\xba\xf6\xbf\x1f\xde\x76\xf8\xc9\xab\x42\x4e\xf7\x43\x8a\x2f\x23\x85\x9c\x12\x5d\x8f\x43\xfe\x36\x08\x82\x6b\xcd\xf6\x95\x9f\xa6\x95\x8c\x3a\x08\x49\xde\xd1\xac\x6b\x03\xd7\x9a\x33\x9e\x60\x13\xb8\x5e\xe9\x8c\x16\xac\x35\x93\xfd\x60\x53\x80\xbe\x7a\xb5\xfc\x0d\xbd\xa6\xc2\xd5\xc2\x8c\xeb\x50\x8a\x1b\x5e\xe4\x19\x55\xf9\x1d\x72\x01\xa2\x1f\xde\x26\xc0\x1c\x6c\x0c\x28\x40\x70\x6c\x96\xc6\x42\x90\x0f\x5b\xac\xae\x99\x2a\x68\x85\x79\x80\xd0\xd1\x12\xe2\x96\xd7\x00\xf1\x84\x55\x0c\xea\x08\x60\x13\x2f\x46\x98\xc8\x0a\x09\x95\x2e\x51\xea\x1c\xb4\x8f\x05\xa3\x9c\x7d\xc3\x9d\x75\xf3\xc3\xbf\x70\xf6\x0a\x09\x65\xa9\xa9\x0e\x66\xa9\xdd\x5b\x8d\xd6\xe7\x1f\x3f\x38\x0f\x1a\x03\x83\x96\xcd\xc8\x9e\x2b\x22\xb1\x37\x20\x7b\xa1\xf0\x68\xee\x34\xf2\xbd\xaf\x1e\x2e\xe9\x1c\x26\x88\x2b\x07\x80\xc2\xee\x22\x1d\x86\x00\x67\x5c\xa8\x05\xb0\xdb\xc7\x68\xac\x0d\x7a\x53\x94\xd7\x8a\x94\xce\xd5\x02\xef\xd0\x5e\xe8\xe1\x99\xe2\x17\xbd\x03\x75\x53\xa1\xa3\x37\xc4\x7b\x5f\xb5\xa6\x37\xbe\x3a\x39\x11\xd2\x1d\x9e\x62\x16\x1b\x57\xa5\x02\xc4\xe3\xb2\x75\xf7\x42\x8c\x4b\x5c\x95\x98\x2b\x52\x51\xc5\x84\x09\xc0\x3f\x3c\xad\x6b\xe2\x0c\xc6\x98\xaf\xf6\xd6\xbb\x95\x2b\x2f\x51\x14\xd6\xb0\xa6\xad\xe2\x32\xfc\xe2\xb8\xa0\x5a\x2f\x71\x78\x02\x0f\xb0\x13\xbb\xda\xf4\x96\xf7\xba\x98\x0f\x68\x65\x3a\xa3\xd7\x2b\x5e\x75\x0d\xa0\x0d\x55\x53\x66\x56\x07\x24\x50\x31\xff\xb8\xb2\x09\xc4\x70\xed\xd6\x70\xc3\x0e\x16\x23\x2e\xcc\x50\xaa\x21\xfe\xe4\x2d\x31\xaa\xbe\xcf\xee\x60\x78\xc9\x64\x6d\x2e\x59\x26\xc5\xf2\xa4\x61\xf7\x5c\xb2\x08\x8b\x0d\x32\xa9\x5d\x90\xcf\x91\x17\xbf\xe3\xce\x34\xde\x1c\xd5\xc8\xe6\x3e\xb0\xa7\x5d\x5c\xf4\xe3\xfb\x0f\x7d\x0e\x9b\x40\x05\xa9\xd5\x27\xf9\x83\xe3\xc9\x62\x1a\x20\x75\x90\xaf\xfc\xd9\x87\xda\x6c\xfe\xa3\xe3\x10\x30\xb2\xfa\x69\xb7\x19\xab\x0b\x3d\xde\xfb\xfe\xda\x50\x53\xdf\xc1\x86\x87\x58\x91\xa3\xef\x97\x58\xc8\xc1\xa9\xf7\x97\x30\x55\xec\xb3\x8a\x6b\xc8\xa1\x46\x87\x45\x34\xe1\x39\x9f\x51\x32\x22\xee\x87\xf6\xca\x1a\x45\x39\x9a\xc3\x68\x66\x6a\x7a\xd7\xe5\x6e\x7f\xec\xb2\x51\x96\x57\x8e\x5d\x61\x10\x5b\x65\x04\xcb\x98\x32\xfa\x3d\xd5\xe6\xfb\x2a\xa7\xf7\xd4\x10\x58\xc8\x32\xd1\x06\xee\x14\xea\xb4\x37\x82\xe5\x96\x09\xb9\x2d\xc1\xf9\xc8\x8d\xa5\xee\x35\xce\xb8\x64\xc2\x07\xb0\xd2\xdf\x31\xfb\xf3\xa1\x5d\x6a\x39\xd4\x9f\xa4\xdd\x93\xa3\xa5\x34\xaa\x9d\xcc\xf3\x10\xb4\x96\xa3\x29\x98\x8d\x08\x76\xbb\x4c\xaa\xec\x0f\x71\xc1\xa8\x58\x9e\x6c\xd9\x82\xf5\x18\x9f\xdb\x1c\xa7\xdc\x02\xe4\x66\xc6\xad\xba\x85\xb5\x16\x34\xf1\x42\x6c\xce\x0a\x76\x4f\xc9\x85\x9e\xf9\x3f\x6e\x85\x13\xb7\x40\xdf\xd0\xe9\x8b\xf6\x74\xc1\xe3\xed\x74\x4b\x97\x95\xdb\x68\x69\x4e\xf6\x09\xb6\x8a\xc5\x17\x06\xe1\x6d\x5c\xc8\xec\x0a\x8b\x9a\x43\x51\x33\xfe\x0b\x53\x2b\x84\x0c\xf0\x22\x72\x91\xf3\x2c\x84\x2b\x54\x4a\x4e\x15\xd3\xad\xad\xc6\x1a\xb0\x1a\x67\xb7\x6b\xda\x3d\x0f\xeb\x4a\xd5\xf8\x76\x6a\xe1\xca\x5e\x3c\x4d\x8a\x92\xd7\xcb\x21\x7f\xb3\xe5\x4b\xbf\xab\xa2\x63\x7d\x49\xe8\x8a\xe1\x0c\x34\xb4\x74\x49\xd6\xaf\xbe\xbb\x3f\xf5\x38\x69\xfe\xd0\xaa\x04\x68\x7c\x82\xfb\xbe\x37\x2b\x9f\x5a\x91\x2a\xbd\xae\x2b\xe0\x81\x94\x68\xb2\xbe\xea\x14\x40\x5e\x67\xb6\xa4\x39\x15\xc9\xc3\x64\xd6\xa8\x06\xbc\x49\xf0\xcb\xba\xdd\xa3\x36\x72\x7b\x8b\x4d\xda\xa6\xb4\x6e\x4b\xa3\x4c\xb9\xda\x29\x18\x1f\x37\x91\xea\x5e\xb5\x2d\x1d\xf0\xab\x13\xe8\x1f\x9c\xc8\xca\xb4\xf7\x07\xa2\xb7\x19\xb7\xa7\xa0\xe1\x27\x03\x42\xc9\x8c\x6b\x23\x95\x8b\x10\xb1\x0c\xd0\x28\x2a\x34\x7e\x7f\x2f\xaf\xe8\x1b\xda\x7e\x1c\x40\x20\xb4\xaa\x18\x55\xde\x4f\xef\xd8\x19\xd5\x60\x44\xcd\xa4\xca\x97\x02\xe6\x4d\x32\x4b\xc5\xb1\xa5\xcb\x27\xa8\x1d\x52\x50\x6d\x3e\x07\x18\xac\x4c\xb1\x26\x35\x6e\x4b\x4c\xee\x15\x9b\xb7\xf1\x35\x2c\xa5\x68\xbe\x94\x84\x0a\x67\xa8\xba\x6f\x89\xb5\xf0\xeb\x61\xb9\xa4\x79\x37\x14\x00\x3b\xbd\xd7\x4d\x10\xf6\xa2\x57\x7c\x1a\xc8\x4b\xa6\xf5\xca\x84\xf2\x85\x4a\x36\xd0\x71\x8a\x84\x8e\x53\xee\xe7\x9e\xd9\xa3\xe0\x80\xb9\x15\xbe\x32\xf3\xfc\x7e\x54\x23\x20\x26\xa0\x19\x24\x5c\xab\x5e\x47\x56\xcd\xa8\x5e\xf7\x65\xc2\x2d\x0a\x39\x3c\x6b\x5f\x87\x35\xa1\x51\x8c\xea\x55\xb5\x39\x36\x09\x82\x1e\x2b\xce\x26\xe4\x98\x96\xac\x38\xa6\x3a\xe5\xce\x03\x79\x58\x65\xaa\x61\xa3\xe9\x88\xec\x7f\x8a\xc2\x64\xce\xa5\xf9\xc0\xcc\x7e\xb7\xbd\x59\x8f\x10\x3c\x2a\x09\xe8\xad\x8e\x3c\x7c\xe1\x7b\x5e\xf5\xde\x10\xae\xb8\xd8\x3b\x71\xa5\x57\xd7\xa5\xb9\xef\x1a\xb7\x2f\x70\xad\xc0\x3c\x99\x75\xbd\xc8\x0f\xd4\xba\xb8\xef\xf2\xae\x73\x6d\xb7\x74\x61\x37\xb9\xaa\x0f\xbc\x7d\x98\xe2\x72\xa9\xa9\xe7\xce\x46\x7c\x6e\xa9\xd3\xe0\x2b\x8a\x63\xe3\xb1\x13\x15\xd7\x56\xc9\x4b\x29\x18\x6d\xb7\x7e\x94\x3b\xd4\x7b\xbf\x5f\x21\xf9\x0f\x57\xf3\xf9\xbe\xb5\xa9\x72\xf0\xbf\x59\x0c\x78\xca\x70\xb9\x13\xbf\xaa\x33\xc0\x84\xfe\x37\xf0\x17\x7a\xf7\x03\x64\x2d\xfc\x38\x30\x92\x54\x8a\x5d\x43\x1e\x85\x80\xfc\x50\x46\x04\xd3\xf6\xa2\x1c\xae\x58\x7e\x4d\x95\x6d\x3d\x75\xed\x61\x55\xfa\x41\x35\x99\x3c\x7c\xb4\xfe\xa1\x55\x07\x8c\x63\x5d\xad\x70\x0d\xad\x7b\x03\x75\xf0\x61\x9d\x6a\x83\xc9\x1e\x14\x30\x37\x9c\x6f\xb9\xe1\x79\x71\x2c\xb4\xaa\xb1\x3f\xf9\x04\xf4\x1c\x23\x2d\x32\x4b\x95\x33\xe8\xc2\x84\x64\x3e\x34\xca\x8b\x8d\xcc\x9f\x16\x69\x20\xc4\xdc\xb7\x31\x3c\xd5\x6b\xd5\x35\x4f\xb7\xe7\x0f\x16\x85\x5b\x7b\xbe\x1d\xa8\x70\xf7\x20\x02\x3d\x6e\xc9\x2b\x1c\x0f\x61\xdd\xf6\xf1\x6d\x9d\x6a\xa7\x2b\x71\xec\x91\x8a\x0d\x6a\xa6\xae\x59\xde\xf2\x30\xba\x6e\x68\xed\xcf\x22\x7f\x74\x33\xbf\xdb\x76\xf2\x5f\xff\xfd\x3f\xfe\x5f\x00\x00\x00\xff\xff\x2f\x1f\x27\x6b\xc4\xcb\x0b\x00") +var _operatorsCoreosCom_clusterserviceversionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\x23\xb9\x95\x2f\xf8\xbf\x3f\x05\x42\xf6\xac\xa4\x31\x49\x55\xd9\x63\xef\x4c\xdd\xd9\x71\xe8\xaa\xd4\xdd\xda\xee\x52\x29\x24\xb9\xbc\x8e\x9e\xbe\x36\x98\x79\x48\x62\x94\x09\xe4\x00\x48\xaa\xe8\xdb\xf7\xbb\x6f\xe0\x00\xc8\x07\x1f\x12\x99\x80\x44\x56\x75\xc2\x11\xee\x12\x99\x04\x4e\xe2\x71\x70\x9e\xbf\x43\x0b\xf6\x09\xa4\x62\x82\xbf\x23\xb4\x60\xf0\x59\x03\x37\x7f\xa9\xd1\xc3\xbf\xaa\x11\x13\x67\xf3\xb7\xbf\x7a\x60\x3c\x7d\x47\x2e\x4a\xa5\x45\x7e\x0b\x4a\x94\x32\x81\xf7\x30\x61\x9c\x69\x26\xf8\xaf\x72\xd0\x34\xa5\x9a\xbe\xfb\x15\x21\x94\x73\xa1\xa9\xf9\x58\x99\x3f\x09\x49\x04\xd7\x52\x64\x19\xc8\xe1\x14\xf8\xe8\xa1\x1c\xc3\xb8\x64\x59\x0a\x12\x3b\xf7\x43\xcf\xdf\x8c\xde\xfe\xeb\xe8\xcd\xaf\x08\xe1\x34\x87\x77\x24\xc9\x4a\xa5\x41\x2a\x90\x73\x96\x80\x7b\x4c\x8d\x44\x01\x92\x6a\x21\xd5\x28\x11\x12\x84\xf9\x4f\xfe\x2b\x55\x40\x62\x06\x9b\x4a\x51\x16\xef\xc8\xda\x67\x6c\xbf\x9e\x26\xaa\x61\x2a\x24\xf3\x7f\x13\x32\x24\x22\xcb\xf1\xdf\xee\x5d\xed\xf0\x77\x76\x78\x37\x41\xf8\x7d\xc6\x94\xfe\x7e\xf3\x33\x3f\x30\xa5\xf1\xb9\x22\x2b\x25\xcd\x36\xbd\x08\x3e\xa2\x66\x42\xea\xeb\x9a\x2c\x43\x46\xa2\xe6\xcd\x7f\xbb\x07\x19\x9f\x96\x19\x95\x1b\x7a\xfb\x15\x21\x2a\x11\x05\xbc\x23\xd8\x59\x41\x13\x48\x7f\x45\x88\x1f\xcb\x76\x3e\x24\x34\x4d\x71\xbd\x68\x76\x23\x19\xd7\x20\x2f\x44\x56\xe6\xbc\x1a\xdc\x3c\x93\x82\x4a\x24\x2b\x34\xae\xc9\xfd\x0c\x70\xd6\x88\x98\x10\x3d\x03\x72\x71\xf7\xa9\x7a\x94\x90\xff\x52\x82\xdf\x50\x3d\x7b\x47\x46\x66\x01\x46\x29\x53\x45\x46\x17\x86\x84\xc6\x53\x76\x35\xdf\xdb\xef\x1a\x9f\xeb\x85\xa1\x57\x69\xc9\xf8\xf4\xa9\xf1\xdd\x4b\x6c\x47\xc2\xbc\xb1\x4e\xcd\xe1\x3f\xad\x7c\xbe\xed\xf0\xfe\xf5\xa9\x19\x99\xe8\x19\xd5\x44\xcf\x98\x22\x82\x03\x91\x50\x64\x34\x01\xf5\x04\x41\x6b\x1e\xb1\x14\xdd\xae\x7e\xb1\x81\xa4\x66\x97\x9a\xea\x52\x8d\x8a\x19\x55\xab\x53\x7c\xb3\xf4\xe9\x9a\xee\xec\x83\xf3\xb7\x34\x2b\x66\xf4\xad\xfb\x50\x25\x33\xc8\x69\xbd\x07\x44\x01\xfc\xfc\xe6\xea\xd3\xef\xef\x96\xbe\x20\xed\xd9\x59\xbb\xfb\x09\x53\x66\xaa\x90\x51\x10\xcf\x29\x70\xed\x16\x05\x90\xbf\xaf\xfd\xcd\x5d\x01\xc9\xdf\x47\x2b\x94\x8b\xf1\x7f\x41\xa2\x1b\x1f\x4b\xf8\xef\x92\x49\x48\x9b\x14\x99\x09\xf2\xdc\x67\xe9\x63\x33\xff\x8d\x8f\x0a\x69\xd8\x82\x6e\x1c\x79\xdb\x1a\xec\xaf\xf5\xf9\xd2\xdb\xfe\x3c\x5c\xfa\x96\x10\x33\x49\xee\xad\x53\xc3\x0b\x41\xe1\x0e\x75\x7b\x10\x52\x37\xb3\x76\xe7\x32\x65\xb6\x8b\x04\x05\xdc\x72\x47\xdc\x54\xdc\xbd\xe5\x68\xa5\x73\x33\x45\x20\x95\x61\x11\x65\x96\x1a\x26\x3a\x07\xa9\x89\x84\x44\x4c\x39\xfb\x47\xd5\xbb\x22\x5a\xe0\xb0\x19\xd5\xa0\x34\xc1\x73\xcd\x69\x46\xe6\x34\x2b\x61\x40\x28\x4f\x57\xfa\xce\xe9\x82\x48\x30\xe3\x92\x92\x37\x7a\xc4\x9f\xa8\x55\x5a\x3e\x08\x09\x84\xf1\x89\x78\x47\x66\x5a\x17\xea\xdd\xd9\xd9\x94\x69\x7f\x3d\x24\x22\xcf\x4b\xce\xf4\xe2\x0c\x39\x3d\x1b\x97\x86\xf5\x9e\xa5\x30\x87\xec\x4c\xb1\xe9\x90\xca\x64\xc6\x34\x24\xba\x94\x70\x46\x0b\x36\xc4\x97\xe1\x78\x45\x8c\xf2\xf4\xd7\xd2\x6d\x13\xb5\x34\xf0\xda\xf3\x40\x3c\x87\xde\x71\xb1\x0c\xc7\xb6\x9b\xd3\x76\x68\x5f\xb6\x5e\x13\xf3\x91\x99\xc6\xdb\xcb\xbb\x7b\xe2\x29\x72\x47\x1d\x97\xa8\x7e\x74\xcd\x0c\xf9\xd5\x32\x33\xcb\xf8\x04\xa4\xfd\xe5\x44\x8a\x1c\x7b\x05\x9e\x16\x82\x71\x8d\x7f\x24\x19\x03\xae\x89\x2a\xc7\x39\xd3\x0a\xb7\x35\x28\x6d\x16\x72\xb5\xe3\x0b\xbc\x4e\xc9\x18\x48\x59\xa4\x54\x43\xba\xfa\xc8\x15\x27\x17\x34\x87\xec\x82\x2a\x78\xf5\xb5\x33\x6b\xa4\x86\x66\x41\xb6\x5e\xbd\xa6\xb0\xb0\xfa\x83\x95\x53\x4f\x88\xbf\xdd\x77\x59\xee\x8d\x8c\x86\xa4\x90\x64\x54\x5a\x01\x85\x68\xc8\x32\xf2\xf1\x87\x0f\x64\x26\x1e\xcd\x41\x62\x5c\x69\x9a\x65\x78\x30\x9d\x10\xb1\xd2\x35\xde\x01\x09\xe5\x24\xa7\x9c\x4e\x81\xd0\xa2\x50\x64\x22\x24\xa1\x64\xca\xe6\xc0\x3d\x03\x58\x5e\x8b\x8d\xef\xb7\x89\xb3\x11\x7b\x23\xad\xbd\x55\xfd\xb7\x8e\xe0\xa5\x6f\x36\xf1\x3a\xd3\x56\xe4\xb3\xdd\x26\xd6\xb4\xf3\xba\x0b\x3c\x52\x9c\x94\x5c\x69\x59\xe2\x2e\x49\xc9\x03\x2c\xdc\xe9\xca\x69\x41\x94\x16\xe6\xc3\x47\xa6\x67\x84\x36\x4f\x16\xd5\x78\x5c\xc6\xab\xaf\x65\x9a\x02\x4d\xc6\x0b\x62\xa4\x51\x64\x67\x5a\x88\x0c\x79\x1d\xf6\x67\xd8\x1a\x91\xa0\x25\x83\x39\x10\x2a\xc7\x4c\x4b\x2a\x17\xd5\xde\x5a\x3d\x07\x4f\xce\x3f\xce\x4b\x43\x38\xda\x3c\x7b\xe4\xa9\x9d\x4d\xec\x75\xe2\x64\xb3\xb4\x92\x8f\xbb\x4f\xf4\xcd\x95\xdb\xc1\xb5\xb0\xad\xdc\x0e\x06\x45\xcc\x4e\x75\x62\x51\x25\xb5\x23\x01\x6e\x6b\xa6\x44\xc8\x6a\x6f\x91\xf1\x62\xed\x18\x8d\xad\x4e\xc6\x60\xd8\xa0\xa4\xdc\x4c\xfd\xda\x23\xd4\x61\x62\x9f\xda\x8c\xa6\x89\x47\xbe\x6e\xe7\x37\xfb\xa6\x52\xd2\xf5\xd4\x13\xc2\x34\xe4\x1b\x7a\x26\xcb\xd3\xdc\x9c\xcf\xea\x63\x43\xe0\x9c\xa5\x60\x26\x56\x53\x66\x77\x99\xe1\x09\x74\x2c\x4a\x6d\xe7\xd3\x3d\x92\x92\x39\xa3\x84\x4e\xa7\x12\xa6\xb8\xff\x37\x0e\xfb\xcc\x9c\xd8\xb6\xf9\xd8\xd7\x6d\x68\x95\x9a\x27\x9f\x30\xec\xf7\xc9\x07\xf8\x3a\xe6\xd1\x7c\x60\x55\x6e\x6e\xb7\xe7\xd6\xd0\x36\x9a\x98\x39\xf1\x53\x2b\xe4\x93\x0f\x6f\xb3\xb6\xb6\x3d\xb3\xc2\xb6\xb5\xd7\x79\x89\x10\xf7\xed\xd8\x9c\x99\xfa\x02\x30\x9c\x03\x1f\xac\x59\xfa\x18\x48\x01\x72\x22\x64\x6e\x0e\x0f\x27\x94\x24\x56\x94\xad\xf8\x16\x32\x5c\x9e\x3c\x35\x9d\x64\xdb\xf5\xb7\x6d\x9b\x5d\x60\xdb\x90\x14\x54\xcf\x9e\x79\x6c\xbb\xa5\xb2\xad\x39\x69\xcf\x3e\xfc\x0c\xe3\x5b\xe9\xbb\xbe\xb7\xa2\xf7\x6d\xa6\x21\x7a\xa7\x78\x65\x6d\xd3\xeb\x36\x9c\x7b\xb9\xdd\xd2\xc7\x0f\xa0\x94\x91\x17\x50\x08\x95\xf4\x91\x00\x4f\x84\xe1\x29\xff\xef\xdd\xc7\x6b\x3b\xfa\x3a\xee\xba\xda\xae\x34\x61\x79\x91\x41\x6e\x64\x51\xf2\xe3\x07\x2a\xd5\x8c\x66\x20\x7f\xc2\x5b\xf1\xc7\x3f\xf3\xbc\xfd\x49\x42\x37\x1f\xec\x66\x33\x42\xa6\x82\xd4\xb0\xbf\x14\x32\xba\xb0\x84\xa5\x90\x88\xd4\x5c\x0b\x42\x92\xc2\x28\x0b\x79\x51\x6a\x20\xd4\x7e\x8b\xef\xc0\xf8\x74\x1b\xca\x77\x5a\x0d\x62\x44\xaa\x9c\xea\x77\x64\xbc\xd0\xcf\x9d\x36\x42\x3e\x0f\xd3\x6d\xd9\x4e\x93\x98\xe7\x99\x8f\x6d\x5b\xb1\xa0\x66\xc7\xcf\xbe\xa5\x91\xb7\x29\xe3\x20\x6f\x84\xd4\xdb\xf0\x49\xa3\xd8\x4d\x61\x55\x1c\x6d\x36\x3f\x65\x8c\xeb\xdf\xff\xee\x89\x27\x53\x28\x32\xb1\x30\xfb\xe7\xf9\xe3\xb9\xe5\xfb\x6c\xcd\x4a\xb6\xed\x6f\x5b\xf6\xb1\x65\x7f\xd6\x34\x18\xa3\xa7\x75\xda\x67\xa7\x8e\x78\xac\x77\xab\x14\xe8\xbd\xdd\xb7\x37\x57\xde\xd6\x73\x0b\x13\x90\xc0\x13\xcf\xe7\xaa\x3f\xb5\x20\x94\x7c\x5f\x8e\x41\x72\xd0\xa0\x1a\x9a\xc0\xa2\x00\x6f\x58\x03\xfb\x03\x09\x92\x94\x9a\x65\xec\x1f\xeb\xcc\x11\xeb\xde\x2a\xfa\x4d\xfb\x8c\x4c\xe5\x1f\x7b\x46\xb2\xf2\x8f\x3d\x27\x5f\xd9\xb6\xcb\xd5\xfd\xfc\x2e\xb4\xad\xb5\x4e\x68\x04\x71\x1a\x43\xb5\x32\x69\x7b\x29\xa2\x73\xf2\xe7\xb7\xf9\x1a\x4a\x6f\xd0\x78\xde\x32\x3e\x6f\x22\x98\x9c\x6c\xf2\x4b\x8c\x8c\xc2\x3f\x42\x93\xf8\x8f\x3f\x8d\x6c\x97\xa7\x23\x72\x99\x17\x7a\xe1\xcd\x40\xec\x99\xce\x99\x22\x5c\xe8\x55\x41\x30\xfa\x34\xcd\xd7\x1b\x21\x9f\x9d\xa9\xf3\x9b\x2b\x6f\xde\x7e\xc5\xa5\x55\x05\x24\x07\x20\xe8\xdf\xb5\xc8\x68\x89\xf9\x13\x06\x59\x4a\x98\x91\xe1\x0d\xb1\x64\x9c\x89\xe4\xc1\x59\xf2\x6f\xdf\x13\x25\x2c\xcf\x31\x8a\x9e\x91\xfc\x13\xc1\x55\x99\x03\x61\xcf\x31\x91\x5e\xb2\xef\x25\xfb\x66\xeb\x25\xfb\x5e\xb2\x6f\x35\xeb\xa4\x3b\x04\xe6\xb8\x44\xc8\x46\xf6\x88\xcf\xf5\x0c\xf2\xa9\xd6\x33\x48\x6c\x3d\x83\xec\x19\xe4\x73\x1d\x3f\xfb\x96\x5b\x49\xba\xcf\xf6\xf5\x1c\xef\xe8\x3d\x07\xbd\xe7\xa0\xf7\x1c\xb8\xd6\x5f\x9f\xae\xf5\xd7\x67\x7f\x7d\xb6\xdb\x17\x77\x7d\xf6\x9e\x83\xde\x73\xd0\x7b\x0e\x7a\xcf\x41\xb3\xf5\x9e\x83\xde\x73\xd0\x7b\x0e\x7a\xcf\xc1\x86\xd6\x4b\xf6\x1d\x3b\xed\x25\xfb\x5e\xb2\xdf\xd4\x7a\xcf\x41\xef\x39\xe8\x19\x64\xcf\x20\x7b\x06\xb9\xa1\x1d\xa2\xe7\x20\xc9\x80\xf2\xf5\xea\xfc\x52\x72\x23\x3e\x87\x02\x20\x9b\x30\x97\xda\xe7\x7e\x4d\xc6\x30\xa3\x73\x26\x4a\x49\x1e\x67\xc0\x7d\x5e\x2a\x99\x82\x56\x66\x17\x80\x86\x75\x1a\xe0\x33\xec\xed\x69\x96\x36\x24\xc0\xe9\x38\x5b\xdb\xf1\x73\xdc\xcb\xfd\xf2\x69\x4f\xc9\x58\x08\xf3\x76\xab\x33\x86\xda\x8b\xd7\x06\x22\x24\xb5\x6c\xd2\xb9\xd6\x27\xb6\x5c\xdc\xbe\x7f\xd1\x74\x96\xb5\x9d\x5c\x55\x63\x13\x74\xe1\x60\xda\x9f\xb9\xf2\xcc\xa7\x1f\x1f\x39\xa4\x98\x05\x3e\x20\x4c\x9b\x07\x0c\x63\x61\x09\xd3\xd9\xa2\x22\xef\xcb\xce\x93\xb9\xb8\x7d\xbf\xbd\x9b\xcb\xaf\xd2\xc6\xae\x23\x7a\xb4\x7a\x7f\x55\xef\xaf\xaa\x5a\x2f\xb4\x75\xec\xb4\x17\xda\x7a\xa1\x6d\x53\x8b\x2f\xb4\x1d\xba\x7f\xa7\xf7\xca\x90\xde\x2b\xe3\x1f\xeb\xbd\x32\xcf\x3e\xde\x7b\x65\x7a\xaf\x4c\xef\x95\x79\xba\xf5\xf2\xab\x6b\xbd\xfc\xda\xcb\xaf\xed\xf6\xc5\xc9\xaf\xbd\x57\xa6\x67\x90\x3d\x83\xac\x5b\xcf\x20\x7b\x06\xd9\x6a\x5f\x62\x3e\x47\x6f\xe1\xee\x2d\xdc\xbd\x85\xbb\xbf\x00\xfb\x0b\xb0\xbf\x00\x9f\xeb\xb8\xb7\x70\xfb\xd6\x5b\xb8\x7b\x0b\x77\xab\xf5\x16\xee\xde\xc2\xdd\x5b\xb8\x7b\x0b\xf7\x86\xd6\xcb\xaf\x1d\x3b\xed\xe5\xd7\x5e\x7e\xdd\xd4\x7a\x0b\x77\x6f\xe1\xee\x19\x64\xcf\x20\x7b\x06\xb9\xa1\x1d\xa2\x85\xfb\x99\xc3\xbb\xcd\x2e\x6d\xda\xab\x9d\xd8\xec\x23\xdd\x47\xe4\x82\x72\xc2\x78\x92\x95\x29\xe0\x37\x13\xa0\xba\x94\xa0\x06\x24\x63\x39\xf3\xc5\x3a\x84\x34\x9b\x66\x98\x50\x05\xca\xf5\xb1\x76\xa8\xaa\xdf\x35\xdf\x3e\xfd\x9a\x4f\xf3\x91\x27\x8b\x8b\x55\x61\xfb\x8c\xfb\x7e\xdc\xb6\xda\x99\x0c\x96\x6c\x31\xcd\x66\x7c\xf3\x20\xd6\x6e\xb1\x85\x7e\x9e\x7d\xed\x4d\x5b\xf0\x89\x2d\xf7\xec\xe5\xf2\xdc\x95\x32\x24\x63\xaa\xe0\x8f\xff\xb2\x52\xe2\xaa\xf9\x48\x0e\x29\xa3\x66\xa8\xb5\x4f\x3c\x7f\xcd\xd4\x43\x6c\xde\xe4\x5b\x1c\x96\x8a\x8c\x8e\xbd\xb8\x72\x36\x5d\x8f\x88\xd9\x77\xe9\x95\xed\xe3\x4e\x4b\xaa\x61\xba\x68\xd4\x6d\xc2\x6d\x56\x0b\x0d\x7c\x43\x09\x33\xaf\x81\xae\x1d\xe2\x71\x06\xd2\x1e\x31\x5f\x2b\x48\xf9\x81\x98\xaa\xd2\x85\xba\xe4\x7f\x3c\x97\xff\xe3\xc7\x59\xf3\xf5\x73\xeb\xbb\xae\x82\x92\x6f\xdb\x5e\x90\x7e\x3e\xdf\x5b\x0f\xd9\xfb\x0a\x08\x66\x79\x82\x0b\x2a\xcd\xc5\xe4\x3d\x69\x28\x9e\xd5\x4f\x6f\xec\x7f\x69\xd9\x36\xdd\x51\x5b\xc8\x6a\xcf\xcb\x68\xc3\x06\x8e\xcd\x26\xaf\xde\x36\xa2\x99\x2b\xc6\x78\x03\x32\x67\x4a\x6d\x4a\x8a\x6a\x93\xfe\xdc\x2d\xb6\xc5\xed\xb5\x24\x33\xfb\x75\xf1\x6f\xd4\x20\xa7\x12\xa0\xad\x95\x65\x4c\x13\x22\xcb\xcc\x88\xd3\x3c\x25\xae\x4e\x11\xa1\x49\x22\x4a\xae\x09\x07\x48\x31\xb1\x6a\xed\xf6\xde\xe2\xee\xdb\x42\x82\xde\x56\x7e\x1e\x5a\x3a\x9f\x7d\xca\xbd\xc3\xb9\x7d\x85\xb5\x45\xb2\x9a\x6d\x7b\x79\x1b\x87\x7f\x5e\x88\xd8\x45\x32\xd9\x5a\x2e\xe9\x22\xb3\xde\x88\x8c\x25\x8b\xdb\x32\x03\x32\x13\x59\xaa\xb0\xe6\x9b\xb9\x3c\x2b\x9f\x68\x53\x97\x2a\xf0\x69\x7c\xc9\x01\x19\x97\x9a\xa4\x02\xac\xd9\xd0\xa1\x4b\x35\x7f\xbe\xd5\xf8\xd6\x53\xfe\x38\xb3\xc5\x08\x4d\xc7\x84\x16\x45\x86\x99\x93\xc2\x08\x1e\x8f\x33\x96\xcc\x6c\x0d\xd6\x82\x26\xb0\xee\xb1\xed\xe5\xd2\xad\x74\x35\xb2\x93\xbe\x46\xbc\xd9\x7b\xfc\xdc\xae\x23\x3b\x2a\x6e\xc4\x96\x05\xfb\x56\x8a\xb2\xd8\xf2\xf1\x6e\x7b\x80\xd8\x92\x61\x76\x20\x73\x1d\xe9\x25\x11\xcb\x7f\xe9\x9c\xe4\x76\xa9\x95\xb3\xc0\x3a\x8f\xcc\x08\xd3\x1f\xf3\x32\xd3\xac\xc8\xf0\x27\x16\x01\x4b\x11\x2a\xa1\xbe\xe0\x06\x84\xf2\x85\xf7\xb9\xbb\x12\x86\x90\x12\x3a\x35\x3d\x6a\x2c\x8f\x2a\x26\x5b\x53\x6d\x6b\x24\x96\xb9\x91\xbf\x1a\x36\x60\x85\xea\x3e\x5f\xd4\x54\x90\x47\x96\x65\x46\xf9\xa1\x59\x26\x1e\x21\x1d\x91\xa3\xa3\xe5\x0b\x28\x11\xb2\x41\x37\xb2\xba\xa3\x7f\x6e\x3d\x65\xf8\x5a\xfd\x62\xdb\x29\x72\xbb\x6a\x21\x64\x37\x4d\x84\xec\xae\x73\x11\x54\xa5\x1e\x2a\x07\xd5\x30\x63\x4a\x0f\x1d\x95\x5a\xe4\x2c\xd9\xaa\x13\x2e\xb8\x77\x44\xfc\xf9\xf6\x87\x17\xdf\xa0\xd7\xed\xe1\x5c\x4d\x4e\xd0\x66\x8f\x16\x54\x6a\x46\x33\x52\xca\x4c\xd9\x3d\x4a\x8d\xc2\x22\x7d\x15\xd4\x19\xc5\x38\x8f\x04\x14\xb2\x0b\x42\xfe\xd9\xee\x4a\xb7\x19\x2c\x2b\x13\x3c\x5b\x10\x6a\xb7\xc2\xa4\xcc\xb2\x01\x99\x30\x4e\xcd\x45\x06\x85\xcf\xe1\xdd\xc2\x34\x53\xb7\x3b\xc6\x13\x30\xd3\x34\xac\x7c\x13\x48\xb9\x19\xd9\xb0\xcc\x8a\xa7\xa5\x03\x57\xf6\xd3\x5a\xaa\x94\x23\xc5\xf0\xb7\x84\x8e\x33\x40\x4d\xc3\xc9\x9c\xb7\x22\x43\x97\x62\xe5\xf7\xc0\x5a\xa1\xb4\xf9\xf5\xff\x64\x7c\x5b\x6d\xdd\xb6\x5b\xbc\xda\x13\xca\x09\x30\x3d\x03\x89\x43\x2f\x0c\xff\x35\x9b\xbd\x3e\x54\x27\xaa\x4c\x66\x66\x8a\x8e\x0a\x91\xaa\x23\xc3\x9d\x8f\x14\x24\x12\xb4\x3a\x3a\x35\x7f\x2d\xbf\x2b\xce\x57\xf3\x77\x67\xb4\x60\x47\xa7\x03\x82\x13\x8e\x05\x4a\x85\x9e\xfd\xc2\xcf\x91\x9f\xb0\x56\x3d\xef\xe7\x5a\xeb\x14\xdd\x36\x7b\x70\x95\x35\x45\x61\x8b\x52\x9a\xfb\x53\x03\xa6\x9d\x9b\x93\x82\x7b\xae\xe1\x83\x5e\xba\x48\x09\x39\xe7\x04\xac\xd7\x10\x34\xc9\x81\x72\xf7\x34\xcc\x41\x2e\xf4\x0c\x1d\x89\xaa\xe2\xa2\xfd\xca\x6d\x11\x8d\x50\xb7\xb5\xab\xe6\x58\x99\x5f\xa1\xfa\xb8\xd9\xe2\xcf\xcb\x2b\x74\xfc\xcf\xc7\xcb\x57\x52\x7d\x07\xff\xb2\xd7\x03\x85\xb0\x4e\x6b\xf1\xc9\xfc\xb2\xbd\x0e\xf6\x23\x7b\x99\x54\xec\xf0\x87\x1f\x6c\xb1\x67\x37\xe1\xdf\x33\x9e\xaa\x0a\x58\x35\xb5\xb7\x84\x5b\xb4\xb5\x2b\x85\x14\xfe\x62\x57\x69\x55\xe9\xda\x56\x51\x7a\x86\xc6\x86\x56\x7e\x08\x8a\x34\xd6\x8b\x6e\x49\xc9\x86\xed\x0e\xac\x77\xde\x88\x95\x19\x1d\x43\xa6\x9c\x01\x11\x1a\xe4\x93\xf3\x1f\x3e\x54\xa5\xdb\x25\xd0\x67\x8c\xe2\x2f\xa0\x3e\x6f\x11\xe6\xb3\x52\x22\x7f\xb5\x6d\xaf\xe6\xe0\x54\xec\xe6\xc4\x22\x77\xa0\xed\x59\xcd\x69\x61\x8e\xaa\xed\xc3\x3a\x57\x96\x1c\x27\x3f\xe0\x4c\x3f\x7f\xe2\x76\x52\x0f\xb7\x2f\xf9\xbc\x6e\x90\xad\xce\xdb\x76\xa1\x44\x3b\x74\xf8\x94\x29\xaf\x6e\xad\x69\x5e\xda\xd0\x4e\x2f\x74\x9a\x5c\x42\x9b\x0e\x85\x14\x94\x05\xd7\xb1\x00\x47\xd2\x7f\x5e\x77\x11\x79\x09\x76\xd1\xcf\x87\x44\x41\x06\xc9\xba\x9a\xec\xeb\x1e\xd6\x90\x17\xd9\x73\x27\x8f\xec\xac\xcb\xe7\x8c\xdf\x02\x4d\x17\x77\x90\x08\x9e\x6e\xc9\xa5\xbb\x29\x4b\x1f\x18\x67\x79\x99\x13\x5e\xe6\x63\xc0\xb5\x50\x76\x50\xe4\x38\xd6\xa0\x42\x09\x87\xc7\x6c\xe1\xb8\x4c\x4a\x0a\x91\x7a\xc6\x33\x36\x5a\x3d\x4d\xb7\xbd\x74\x1e\x99\x9e\x61\xd9\x0a\xbe\x30\x43\x31\x5d\xdf\x88\x92\x24\x92\x2a\x23\x34\x0e\x70\x68\xa6\xcd\x2d\x3a\x06\x74\xb1\xb3\x14\xcc\x96\xa1\x73\xca\x32\xa3\xe5\x6c\x7b\x2d\xbe\x87\x09\x2d\x33\x8d\xf6\xa1\x37\xe4\xc4\x10\xee\x95\xfb\x75\xdd\x1a\xbd\x43\x09\xc1\xcd\x7f\x2d\xec\x12\xbe\xdc\xe9\x0e\x7e\xbe\x6d\x80\xd0\x7d\xdb\x16\x10\xdd\xb7\x82\x96\x6a\x5b\x33\x53\x6b\x37\x5c\xf1\xd4\x1c\xc2\xa6\x34\xdf\xb8\x47\x98\x72\x3d\x6f\x37\xab\x4f\x43\x79\xad\xa1\x5a\x8a\xa9\x04\xa5\xde\x03\x4d\x33\xc6\xe1\x15\x36\xf5\xfd\x0c\x48\x4e\x3f\xe3\xc6\xd6\x2c\x07\x23\x6c\x35\xb7\x35\x6d\xbe\xbe\x16\x24\xa7\x0f\x50\xd1\x49\xc6\x30\x11\x72\x8b\x90\x0e\xdf\x98\x6a\x6e\x26\xbb\x69\x27\x94\x65\x90\x8e\x90\x92\xc6\x58\x66\xb3\x4b\x91\x65\x20\xed\x3e\x34\x7f\x33\x5e\x02\xd1\x62\xcb\xc1\x0a\x29\xd0\x34\x61\x07\x68\x4a\x33\x28\x2d\x50\xd3\xa5\xbd\x71\xf0\xb0\x11\x4a\x6e\x96\xe6\xff\xf2\x73\x82\x46\xf8\x2d\x07\x94\x40\x15\x76\x66\x8f\x8d\x2a\xe5\x84\x26\x5e\x7e\x6d\xbd\x9c\x8d\x98\x19\x91\x6b\xa1\x5d\xe8\x72\x35\xa5\xe6\xd7\x5b\x8e\x87\x9a\x3e\x10\x50\x9a\xe5\xc8\x6d\xd2\x12\x43\x52\xcd\x60\xb8\x96\x74\xfd\xde\x6d\x9d\xf5\x3f\xbe\x79\xb3\xa5\xe8\xfc\xf2\xa7\x56\x02\xda\x66\x5e\x74\xc3\x5f\x57\xdc\xdb\xdf\xae\x85\x48\x95\xd9\x7e\xcc\xa9\x2a\x85\x30\xef\x28\x31\x96\x83\x29\xcd\xf8\xb4\x64\x6a\x46\xc6\xa0\x1f\x01\x38\x81\xcf\x16\x5e\x6e\xcb\xf1\xfe\x01\x52\xe0\x7e\x33\xab\x55\x3b\x24\x5b\x6b\xf0\xf6\x70\x16\x60\xce\x14\x13\xfc\x3b\xa6\xb4\x90\x8b\x1f\x58\xce\x9e\xa9\x69\xe1\x5b\x77\xee\x53\x5f\xa7\x22\x4b\xc9\xad\xdd\x02\x77\x60\x67\x46\x02\xba\x3f\xb4\xb0\xb6\x11\x62\x38\xc2\x98\x26\x0f\xdb\xde\x6a\x3b\xaf\xea\xa6\xf5\xea\x70\x8b\xbe\x7d\x73\x28\xcb\xea\x05\xb5\x97\x5c\x4a\x54\x09\xaa\x91\xf0\xee\xb0\x07\xeb\xf2\xb3\x9d\xee\xd6\xd2\x3e\xce\x84\x02\x7c\x80\x50\xf9\xbc\x4c\xd8\x7c\x0d\xef\x13\x65\xaa\xe2\xb4\x18\xaf\xc2\x41\x11\x3a\x99\xb4\x9f\x48\x77\x90\x94\x6d\xbb\xd2\x24\x2f\x95\x26\x39\xd5\xc9\xcc\x5a\xa7\x45\x5a\x49\xaf\xc7\xca\x69\x99\xbb\x2c\xed\xd6\xee\xb1\xdd\x1d\x59\xc4\xd2\x79\xf9\xb9\x30\x97\xc7\x73\x2e\xef\x76\x6b\xad\xf3\x72\x37\x6d\xab\x4d\xd6\x5e\x5c\xa7\x26\xe0\x5d\x6a\x2f\xee\xe6\x27\x68\x89\x3f\xbf\x7e\xbf\xfd\xa9\xe9\x62\x94\xd9\xd9\x2c\xd3\xdd\x47\x62\xda\xf9\x13\x73\xe0\x9d\x26\xee\x9b\xb6\x37\x0f\xf5\x67\x35\x20\x94\x3c\xc0\x62\x60\x25\x8f\x06\x28\xaa\x79\x78\x27\x42\x24\x64\x4e\x3c\x05\xd3\x23\x76\x68\xc7\xd8\x7e\xb6\x3b\x6c\x4c\x3f\xf8\x2e\xfe\x5b\xdf\x86\x86\xd0\x1d\x7f\xe1\x27\x68\x87\x9f\xed\x7e\x76\x6c\x7b\x80\xc5\x6e\x3f\x58\xda\x49\x66\x15\x9c\x16\x6f\xf7\x88\xf9\xa0\xd2\x1e\xaa\x6d\xb1\x9b\x63\xbd\xd9\x3a\x18\x14\x6d\xf3\x93\x18\xf4\x7a\x3b\x1e\x94\xe6\xb8\x2d\x3b\xad\x99\x96\x63\x65\xf7\xaf\xe1\x30\x33\x56\xd8\x9c\x3e\xe7\x6d\xdc\x7d\x13\xdb\xf6\x89\x66\x2c\xad\x86\xb4\xdc\xe7\x8a\x0f\x8c\x6c\x6d\xfe\x83\xd7\x8f\x95\xf8\xdf\x0b\x50\xd7\x42\xe3\x27\xaf\xb6\x06\xf6\xb5\x5e\x7b\x05\xec\xa8\xce\x69\x85\x6c\x15\xed\x15\x36\x65\xcd\xcd\xb4\xc7\x55\xae\x23\x3d\x15\xb9\xe2\x44\x48\x37\x75\x3b\x0f\x6a\x3a\x73\x03\xdb\x21\xf1\x22\x1d\x5b\x67\x2d\xba\xbf\xd6\x8e\xe9\x56\x48\xc8\xd6\x02\x45\x1c\xde\x0d\x8d\xb2\xa0\xfd\x06\xcd\x15\x45\x86\xda\x99\x53\x9a\xa8\x0f\xad\xda\xd2\x2b\xd2\x6c\x39\xc8\x29\x7a\xb1\x93\xad\xbd\xae\x15\xd1\x1d\x2e\x3e\xdb\x76\xbe\xfe\x9a\x03\x76\xd8\xc8\x51\x7c\x49\xd1\xba\x41\x79\xc5\x9a\xa1\x3b\x4a\x3c\x3b\x9d\xaa\xc6\x70\x2d\x1b\xf9\xff\x36\x97\x3a\x6e\xba\xff\x43\x0a\xca\xa4\x1a\x91\x73\xa2\x18\x9f\x66\xd0\xfa\xce\x99\x00\x1a\xdd\xec\x34\x78\x61\x06\x35\x77\xef\x9c\x66\xce\x10\x43\x39\x01\x6b\x8e\x37\x74\x2c\x8b\x6f\x03\x27\x61\x9b\xab\xa8\x8a\x7f\x38\x7a\x80\xc5\xd1\x60\x63\x98\xf9\xfa\xd6\x3c\xa9\x47\x57\xfc\xc8\x8a\x30\x2b\x67\xad\x92\x77\x30\xc8\xe2\x08\xbf\x3b\x8a\x29\x1b\xee\x28\xab\x74\x75\x26\xb4\x07\xdd\xe1\x98\xb4\x76\x75\x4e\x8b\x5d\x37\xb5\x0f\xec\xec\xa0\xa3\xdd\x2f\x1b\x97\x5c\x04\xb4\x16\xa4\x54\x60\xd5\x68\x64\x76\x04\xbc\x2e\x86\x9a\x17\x5a\xbd\x38\x3c\xa2\xee\x74\x30\x0a\x8d\x51\xf1\x19\x9f\xfe\xb9\x48\xa9\xde\x2a\xa7\xc8\xb6\xee\x67\xfb\xd6\x0e\x48\x4a\x1c\xd1\xec\xe4\x09\x9b\x92\x82\x4a\x9a\xab\x11\xb9\x71\xe5\x06\x70\x5f\xb3\x49\xd3\x7d\xe3\xe6\xf9\x7e\x51\x00\xf9\x7f\x76\x1f\xd0\xbe\xe1\x0b\x9f\x83\x6e\x42\x71\x4e\x3f\xdf\x95\x72\xba\xc3\xf4\x93\x60\xa1\xa5\x69\x89\xae\x6d\x42\xb8\x51\x9b\x20\x42\x2a\x99\x41\x5a\x66\x90\x12\x3a\x16\x73\x68\xf9\xc9\xaa\x9f\xed\x38\x34\x1a\x2a\x76\xfc\xcd\x27\xc3\xe1\x3c\x51\x46\xc8\x1a\x2b\x91\x95\xba\xb2\x67\x9d\xc0\xe7\x77\xe4\x0f\x18\xbf\x45\x49\x01\x32\x01\xae\xe9\x14\x96\x0d\x8f\xf6\xb9\xb7\x6f\xfe\xe9\x74\x57\x02\x50\x9c\x31\xe3\x3b\x33\xf0\x1b\xb3\x3b\x3f\xd0\xcf\x7f\xe6\xb5\x93\x86\x29\xb2\xa5\x11\xaa\x6e\xe7\x4b\x2f\x82\xa3\x64\x49\x99\xa1\x89\x19\xe3\xe2\x1a\xaf\x33\x5e\x10\x29\x4a\x8c\x8c\x23\x65\xb1\xeb\x58\x4d\x73\xd9\xef\xfe\xf0\x4f\xbb\xfe\xfc\xf2\x33\xcd\x8b\x0c\xde\xf9\xba\x2f\xd6\xd6\x67\xf4\x09\x2d\xc8\xef\xdf\xfc\xd3\xc0\x46\x09\xc0\x63\xc3\xf6\x54\xef\x23\x6a\x36\x51\x59\x10\x96\xdb\x3c\x19\xc8\x16\xd8\xd1\xae\x12\x9c\xb9\xe2\xda\x2c\x44\x69\x2a\xb5\x1a\x10\x0c\xd0\xab\x34\x41\x2d\x34\xcd\x96\xcc\x9d\x68\x68\x84\x47\xbb\x15\x52\x81\x6b\x09\xe8\x75\xd8\x91\x8a\xb7\xbf\x7f\xf3\x4f\xab\x46\xed\x8f\x3c\x01\x1c\x07\xfb\xc7\x78\xcd\x31\x00\x27\x0f\x2c\xcb\x20\xdd\x55\xc4\x7e\x6e\x22\x27\xa5\xd4\x33\x90\x03\x02\x5c\x79\x4f\x84\x79\xf7\xa5\xf7\x46\x5a\x64\xc9\xf9\xee\x12\x28\xb5\xfe\x50\x74\x6e\x34\x9c\x1d\x6e\xda\x8d\x60\xa6\x49\x2e\x94\x5e\x3f\x1d\x3b\x0d\x46\xf9\xe2\xe3\x64\x57\xf1\x7a\xd8\xc1\x98\xbb\xfa\xeb\x0e\xc2\x79\x4b\xfa\x60\x5c\x0f\x85\x1c\xda\x6e\xde\x11\x2d\xcb\x5d\x04\xbe\xbc\xc5\x42\x0e\xf0\x06\x28\x1b\x0c\x6e\x65\x13\x7c\x71\x6c\xbc\x3b\xbb\x4d\xc5\x23\x8f\x75\x69\xe0\x6d\xdf\xe9\xba\x78\x15\x16\xde\xf6\x0c\x2d\x71\x1e\x33\x0f\xe6\xe9\xff\x7b\xf5\xc8\xef\xaa\x52\x2f\xdd\x04\x9b\x79\xbb\x63\xad\x15\xeb\x36\x6a\x0d\x06\x40\x0c\x96\x68\xdd\x91\x82\x35\x6f\x56\x71\xd5\x89\xb0\xe1\xc1\x66\x13\x98\x07\x2c\x51\x6b\xae\xb8\x9a\x01\xef\x7c\x95\x6d\xb8\xaa\xec\x3b\xd6\xb1\x1f\x1a\xc3\x2e\x0d\x1b\x56\x9b\xf8\xf0\x8e\x43\x67\x40\x95\x5e\xb7\x84\x3d\xd7\x7e\xb6\x3d\x9d\xe1\xbb\xdc\xda\xaa\xa3\xd1\x5d\x70\xc6\x2b\x3f\x19\x26\xaf\x8f\x81\x1c\xdd\x82\x8d\x62\xb2\x19\x09\x2d\xa5\xe5\xa8\xf2\x5f\x9b\xc5\x0e\xd2\x67\xb6\x9e\x36\xef\x82\x7b\x51\x7f\xb4\x1b\xa3\x91\x9d\xe7\x3c\x80\xee\x0a\xaa\x42\xa2\x6c\x7c\xd7\xf6\x6e\x68\x70\xd9\x27\xee\x08\xfb\x97\x19\xa9\x02\x92\x91\x04\xe4\x2a\x36\x69\xd0\xda\x55\xd0\xdc\x72\x9e\x3d\xd2\x85\x3a\x3a\x18\xd5\x3c\x07\x4d\x9f\x4e\x4a\x5f\x6e\xdd\x05\x82\x3b\x4d\x79\x4a\x65\xea\xde\xe8\x58\x55\xa3\xef\xc2\x11\x3e\x60\x78\x12\x9f\x88\x77\x64\xa6\x75\xa1\xde\x9d\x9d\x4d\x99\x1e\x3d\xfc\xab\x1a\x31\x71\x96\x88\x3c\x2f\x39\xd3\x8b\x33\x8c\x36\x62\xe3\x52\x0b\xa9\xce\x52\x98\x43\x76\xa6\xd8\x74\x48\x65\x32\x63\x1a\x12\x5d\x4a\x38\xa3\x05\x1b\x26\x82\xcf\x81\xa3\xff\x62\x94\xa7\xbf\xf6\x24\xbd\xac\x0e\xdf\x62\x13\xe8\x50\x91\x73\x18\x96\xfc\x81\x8b\x47\x3e\x44\xf3\x9e\xda\x89\x61\x6c\x17\xb5\xea\x5b\xc0\x1a\xee\x12\xd4\x5a\x88\x1d\x6c\x82\x2f\xbe\xb2\x66\x8a\x86\x94\xa7\x43\x1b\xaa\xf5\xb2\x0b\xdc\xc5\xad\x3a\xac\xc3\x41\xb7\xa7\xae\x9b\x35\x88\x26\x9a\xcd\xa1\x53\x50\xa2\x6f\x61\x8a\xc1\x47\x9f\x75\x95\x96\xd2\xee\xa5\x46\x94\xa2\x0f\xd1\xc8\xe9\x02\x65\x78\x24\x96\x08\x2b\xbc\x71\x91\x82\x73\x39\xce\x77\x08\x1d\xf4\xed\xce\xb0\xe5\x7b\xa3\x6d\xba\x48\x47\xf4\xe8\x2e\x94\x86\xdc\x5e\x05\x76\xb4\x6c\x41\xb4\x5c\xd8\xf0\x48\xf9\x40\x98\xf6\x31\x87\x46\xbd\x7f\xc0\xe7\x94\x12\x09\x43\x91\xbe\x5e\xb6\x6e\xba\x8a\xf7\x6a\x51\x52\x08\xc5\xf0\xbd\x9c\xe0\xb2\x5b\x7f\xdd\x65\x9e\x46\xf8\xd1\x1f\xff\x65\x97\x7d\x34\x41\x60\xcd\x1d\xbd\xed\xed\xf0\xdc\x49\x33\xe7\xd9\x2d\xfd\xb1\xf2\x56\x41\x23\x88\x26\x82\x2b\x2d\x29\xdb\x8c\x25\xb1\xbe\x75\x0c\x89\xe8\x1e\x77\x40\x70\x77\x9e\x77\x9a\x14\xb2\x9a\x55\xe0\x05\x16\xdc\xf2\x7e\xaa\x9b\x13\x63\xa1\x26\x7c\x76\xcc\x8e\xec\xd6\xb6\xce\x73\x44\x82\xe6\xc9\xfe\xda\x02\xfb\xa6\xef\x51\xdf\xb8\xab\xde\xeb\x6a\xca\x45\xf5\xf1\xe5\x67\x48\xca\x6d\x31\xd9\x56\x5b\xa8\xdb\xdd\x36\x23\xed\x79\x33\xb5\x8b\x5e\xb6\xd4\x1b\x0e\xe1\xbf\x70\x42\xa5\xc0\xf5\x72\xd2\xa5\xa2\x9a\xa9\xc9\xae\x8e\x60\xdf\xcc\xaa\x56\xeb\x0e\x8d\x50\xae\xea\xc4\x54\x61\x71\x28\x33\xd8\xfc\x6c\xa6\x91\x73\x26\x33\x21\xd4\x2e\x66\xa2\x66\xa3\x76\xd3\xe1\x3b\xcc\x99\xb0\x01\x4a\x88\x39\x20\x49\x6e\xd8\xa6\xbb\xe2\x1b\x44\x59\xd7\x60\xfd\x33\xb6\xab\xae\xee\x1b\x9a\xfb\xaa\xcd\xe1\x03\x71\xcc\xe0\xe8\xde\x32\x7f\x4c\x51\x58\x57\x9a\xa8\x32\x37\xa4\x3c\x02\x9b\xce\xb4\x1a\x10\x36\xda\xd9\x5e\xe4\x9b\x39\x46\x40\x93\x59\xe3\x15\x72\x00\xdd\x2a\x96\xdd\x3c\x7b\x4d\x1f\xe8\xc9\x93\x90\x46\xcf\x37\x87\xef\x30\xa8\xe4\x86\xe5\x23\xb1\x76\x1b\x0c\x08\xe8\x64\x74\xba\x7b\x5c\x85\x6d\x35\x78\x9d\x99\xc5\xf1\x82\x30\x0d\xe6\x32\x46\xd5\x5f\x8a\x72\x6a\xe7\x1a\x7c\x8a\x18\xce\x41\x95\x7d\x8f\x61\x6f\x69\xba\xbb\x49\xc2\xb7\x23\xbb\x68\x47\xe6\xc4\xe0\xdc\x96\xb9\x87\x5e\xc6\x15\x40\x07\x38\x54\x88\x13\x12\x54\x21\xac\x99\x6c\xd9\x35\xfe\x3f\x76\x74\x80\x37\x9b\x19\xea\x44\x9d\xd6\x5b\x6b\xc6\xa6\x33\xbf\xb3\xa8\x93\x0f\xda\x3b\xb2\xdb\x06\xeb\x1e\x16\x62\x5b\xc7\xe0\x10\xdb\xe2\x70\xc1\x46\xd2\x7b\x7d\x3c\x1b\x47\x42\x83\xcc\xab\x65\xc3\x53\x83\xd7\x8a\x73\x4b\xfb\x22\xee\xee\xb0\x92\x37\x9d\xa9\x38\x31\xa7\x9c\x30\xa3\x41\x1a\x3e\x35\x14\xc5\xe9\x88\x9c\x13\x5e\x56\x6c\xf9\x29\xc2\xb8\xa8\xe8\x72\x1d\x19\x62\x95\xa8\xfb\xea\xca\xad\x43\xae\x52\xdb\xba\x45\x63\x36\xdb\xd0\xcd\x00\x3c\x5f\x76\xe5\xa9\x4e\xec\x1a\x75\xec\x20\x4c\x2c\xf0\x7d\xf8\xb7\xe8\xde\xc7\x32\x2c\xba\xe5\x2b\x75\x54\x2f\xc8\x7c\xd0\x94\xe3\x2b\x1e\xd0\x66\x37\x76\x2e\xba\xee\x0a\x12\x67\x67\x90\x48\xf3\x4a\x82\x02\xcc\xd7\xb7\xa5\x59\xae\x20\x34\x5a\xb3\xdd\xba\x2f\xc7\x0b\xfc\x76\xc7\xd8\xfb\xcd\x2d\x94\xb9\xd6\x2d\x88\xcd\xd6\x2d\x16\xc3\xad\xdb\xf2\xee\x8d\x13\xad\x1e\x81\x30\x1c\x2e\x4e\x0c\xfb\x86\x01\xe2\x9c\x1e\xdb\xc2\x39\x6c\xdd\x76\x8f\x82\xdf\xd4\x4f\xb4\xe5\x88\xc5\x22\x6c\xeb\x10\x47\xbf\xbe\xad\x04\xb7\xbd\x4c\x58\xfd\xfa\x16\x10\x1f\xbb\xae\x75\x0d\xc1\x5f\xdf\xe2\x33\x0a\xd3\x6e\x5f\x21\x4a\x7f\x7d\xdb\x2a\x76\x7f\xd0\x0e\xdc\x27\xdf\x6a\xcb\x98\x7e\x08\xba\x65\xeb\x16\x79\xc5\xbb\x05\xfc\xaf\x6f\x2f\xb3\xde\xe7\xaf\x97\x12\xb0\xbe\xed\x39\x51\x60\x47\xa2\x36\x13\xf4\xad\x36\xc4\xfc\xa0\x07\x8d\x1f\x47\xa2\xa6\x41\x82\x85\xd9\xf3\x51\xe5\x4e\xc1\x1e\x38\xc0\x09\xef\x90\xc4\xe4\xd6\x42\x02\xa2\x3e\x62\xd6\x47\x27\xa3\xf0\xe6\xb6\x75\xf6\x44\x48\x36\xc4\xfa\x16\x4f\x5e\xb3\x2d\x92\xd4\x66\x5b\x64\xee\x11\x2d\xcb\xe2\xd5\x3b\x47\x3d\xe1\x1b\xeb\x8c\xdc\xa3\x8a\x60\xdd\xa1\xbd\x8a\xf0\x6c\xeb\x55\x84\x5e\x45\x78\xbe\xf5\x2a\xc2\x6a\xeb\x55\x84\x5e\x45\x08\x6a\xbd\x8a\xf0\x6c\xeb\x55\x84\x67\x5b\xaf\x22\xd4\xad\x57\x11\x0e\x5f\x45\x08\xcd\x90\x5d\xdf\xac\xbf\x25\x9a\xdb\xe7\x2f\xd6\xdd\xb8\xec\xe7\x41\xe5\xc6\x87\xb9\xb7\x1d\x3e\x46\x8a\xbe\x73\xa2\xc6\x3d\x3a\x89\x5c\xb2\xb7\xa4\x7c\x0a\xe4\xed\xf0\xed\x9b\x9d\x93\x2a\x9a\x2d\x24\x36\xbd\xd9\x76\x05\x8d\x5a\x6d\xd1\x77\xc6\xa6\xf8\x85\xc3\x0b\xe9\x71\x9c\xbd\x8a\xab\x68\x29\x9f\x1b\xe2\x6b\xaa\x8a\x04\x39\xe8\xdd\x13\x22\x7c\x6b\x3a\xa6\x59\x0e\x55\xd0\x9b\x65\xeb\x2e\x8d\xa7\x4e\x8a\x15\xdc\x05\x48\x98\x6d\xd9\x75\xdb\x75\x7a\xdb\x04\xa8\x4d\x36\x1f\x83\x79\xe3\xae\xa1\x44\x9a\x28\x91\x83\x85\x6b\xf3\x57\x87\x79\x5d\xf0\xdb\x80\x9c\xc0\x68\x3a\x22\x69\x09\x0e\x06\xc1\x66\x9d\x9c\x0e\x1a\xc1\x99\x5d\x63\x89\x8c\xc0\x23\xf1\x3f\x66\x62\x5d\x4c\x27\xcc\x81\xeb\x92\x66\xd9\x82\xc0\x9c\x25\xba\x5a\x01\x4c\xce\x62\x5a\x05\xcc\x75\xb0\x2a\x1a\xaa\x7e\x0e\x57\xf8\x57\x37\xf1\x24\x5c\x4f\x5c\xa1\xa3\x3b\x4f\x5f\x2a\x08\x60\x67\x68\xb4\xd1\x92\xa4\xcd\x68\x36\x20\x0d\xff\x89\x07\xf7\xe3\x6d\xd7\xd8\x1d\x12\x49\x1e\x09\x96\x41\x62\xaa\x06\x2e\x60\x46\x48\x17\xd2\xb3\x3a\x83\x6b\x42\x66\xd6\xe0\x7f\xec\x9c\x9b\xdf\x6e\x7a\x06\x79\x17\x0c\x91\x75\xcd\xd0\x76\x2f\x0a\x91\x89\xe9\xa2\xb9\xf1\x5c\xdd\xfe\x1a\xed\x9c\x12\x55\x8e\x9d\x72\x6b\xce\xfe\xf5\xd2\x4e\xed\x83\x3d\x36\xb6\x3e\xd8\x63\xa5\xf5\x96\xdc\xde\x92\xbb\x43\x3f\xbd\x25\xb7\xb7\xe4\xf6\x96\xdc\xde\x92\xdb\xb5\xf5\x96\xdc\x9d\x88\xea\x2d\xb9\xa4\xb7\xe4\x6e\x6c\xbd\x25\xd7\xb5\x3e\xd8\x63\x6d\xeb\x55\x84\x5d\x5b\xaf\x22\x84\xf7\xd3\xab\x08\xbd\x8a\xd0\xab\x08\xbd\x8a\xd0\xb5\xf5\x2a\xc2\x4e\x44\xf5\x2a\x02\xe9\x55\x84\x8d\xad\x57\x11\x56\x3b\x8e\x16\xec\xf1\x02\xe4\xc6\x24\xb4\x10\x69\x74\x38\x97\x42\xa4\x4f\xa0\xb9\x58\x5f\x78\x22\x86\x99\x48\x28\xd6\x12\x64\xf6\x27\x2e\x06\x45\xd1\xdc\x86\x02\x0c\xc8\x3f\x04\x07\x8b\x01\x61\x6b\x77\xe6\x40\x84\x9e\x01\x96\xe9\x3a\x51\xa7\x1d\x12\xd9\x7b\x34\x98\x6d\x5a\x8f\x06\xd3\xa3\xc1\xf4\x68\x30\xaf\x8b\x06\x33\xa3\xca\x95\xb8\x40\xa1\x68\x33\x38\x4c\x83\x63\xdf\x83\xcc\x7b\x6c\x98\xe7\xda\x8a\x2e\xee\x8e\x8f\x59\xe1\xc6\x66\xb7\x33\x9e\xba\x70\x4a\x48\x6f\xda\xf3\xec\x0c\x77\x38\x2d\x34\x4d\x21\x25\x05\xc8\xa1\x3d\x3c\x82\x4c\x98\xab\x30\xb3\x74\x9a\xdd\x0c\x77\x65\x88\x07\x02\xb8\xd2\x9e\x89\x80\x9e\xf6\x8f\xba\xd2\x7e\x95\x68\xa1\x4a\xcd\x88\xad\x96\xf8\xf3\xc5\x61\xb0\xc4\xb1\x17\x0e\x89\x76\x61\x4a\xdf\x07\x59\x0c\x63\x99\xf7\xd0\xfc\x76\xb7\x53\x4d\xd9\xcd\x2d\xb6\x49\xc3\x17\xea\xfc\xef\x12\xe4\x82\x88\x39\xc8\xda\x58\xe5\x6f\x5a\xe5\x62\xb4\x11\x0b\xdf\xd5\xa1\x0d\x57\x4d\xaf\x26\x16\x65\x8a\x97\x59\x36\xb0\xbd\x2f\xb3\x3d\x7f\x11\xd9\xca\x4b\xc2\x7c\x1f\xc9\x7b\x11\xc5\xc0\x1d\xd3\xfe\x1b\x3b\x92\x8c\x1c\x58\xc5\xda\xcd\x2d\xae\x79\x22\xa2\x71\xe2\x85\xac\x87\x87\x52\x19\x77\x73\x7b\x49\xff\x12\x89\xed\x63\x22\x91\xfd\x4c\x24\xa2\xaf\x89\xc4\xf5\x37\x91\xe8\x3e\x27\x12\xd3\xef\x44\x5e\xbd\xd2\xef\xe6\x16\xdd\xac\x18\xdb\x15\x45\x5e\x8c\xc1\x90\xd7\xae\x28\xbc\xb9\xbd\x4e\xad\xe1\xcd\xed\x05\x76\x41\x4c\xf7\x14\x79\xd1\x3d\xb0\x97\x9a\xc6\x9b\xdb\x41\x3a\xad\x9e\x24\xec\xc5\xeb\x20\x6f\x6e\xd1\x7d\x40\xe4\x05\xfc\x40\x24\xb6\x2f\x88\xbc\xcc\x91\x7d\x61\x9f\xd0\x2b\x0c\xd0\xa9\x7a\xf3\xe6\xf6\x12\x3c\x67\xaf\x15\x9f\x9f\x22\x6b\x8f\xb5\xa0\x37\xb7\xfd\x57\x89\xde\xdc\x22\x4b\xe7\xa1\x95\xa5\x9f\x23\x34\x0a\xab\x78\x19\xf7\x2b\x69\x9d\x8b\xef\x61\x11\x37\xf8\x33\xc2\xc9\xfd\xd0\xa2\xce\xab\x9f\xda\xd5\xb0\xab\xa5\x76\xf4\xb5\x59\x81\xdd\xf9\x08\x5c\x45\xec\x2c\x0b\xa6\x61\x0c\x44\xd3\x07\xc0\x88\x0b\x81\xe5\x48\x58\x0a\xb6\x6e\x8d\xdd\xea\x38\xbe\xd9\xe2\xa5\x82\xd4\x10\x92\x09\xf1\x50\x16\xfe\xa8\x60\x5a\x71\x8c\x83\xc9\x78\x22\x72\x9f\x3f\x6d\xb3\xe9\xcc\x89\x77\xbc\x60\x68\xeb\x8c\xd9\xcf\x91\x1c\xbc\xa4\x9d\x51\xf5\xef\x2d\x23\xdf\xdf\x09\x55\xe4\xef\xa8\xfe\x70\x72\x82\x3f\x3c\xfd\x7b\x78\x68\x66\xb5\x04\xd6\x2f\x27\x4a\xe4\xb0\x4b\x45\xca\xdb\xab\xf3\xd4\xec\x06\x13\xe4\x6b\xa3\x34\x27\xee\xd8\xfa\xd3\x4f\x28\xd7\xec\xb4\x32\x45\x8f\x08\xee\x2f\xd4\xfd\x52\xc1\x8f\xb5\xa5\xda\x73\x7d\xdf\x41\x78\x44\x66\xb5\x72\x75\x64\x8f\xf5\x70\x8f\x5c\xd9\x77\x5b\x85\xaf\xaa\x19\x67\x65\xbc\xe0\x71\xef\x7d\xec\x80\x53\x79\x27\x42\x8e\x59\x9a\x02\x16\xda\xac\x5e\x75\x2c\x3c\x34\x46\x7d\xe4\x0c\xdf\x6f\xed\x9d\x70\x62\xce\x33\x25\x06\xcb\xe3\x24\x94\x7b\xf0\x03\xd0\xb6\x5a\x67\x6b\x58\xc2\x94\x59\x16\x05\xc1\xea\xd7\xc1\x85\x87\xbf\xd4\x3d\x11\x39\x45\x80\xa9\x03\xbf\x2b\x96\x09\xec\xaf\x8b\xe8\xd7\x05\x17\xba\xbf\x31\xfa\x1b\x63\xe9\xc6\x58\x39\x78\x2f\x77\x69\xac\x0c\xd5\xdf\x1b\x07\x7e\x6f\x70\x9a\x83\x2a\x68\x02\x5f\x90\x87\xd9\x9a\xff\x6d\xde\x9a\x27\x5f\x35\xca\x69\x83\xcc\xa3\x7a\x05\x3c\x54\x0d\xde\x58\xd8\x6f\xea\x43\xa1\x4a\xde\xa8\xb5\xda\x20\xc6\xf2\xcd\xe5\xa8\xbf\x60\x4a\xbc\x9a\x2f\x38\x28\x74\xbe\x42\x15\x7b\xda\x18\x1c\xc7\x0a\x7f\x6d\x84\xa0\xa9\xdd\x2c\x3c\x5d\x06\xa5\xa9\x47\x44\x3f\x70\x0e\x94\x2b\x72\xe4\x83\x62\x8f\x55\xfd\xc4\x96\x45\x95\x9f\x6a\x55\x79\xab\x8a\xa2\x93\xff\xfd\x7f\x4e\x5b\x25\xad\x6a\x82\x7a\x2f\xff\xd6\xad\xf7\xf2\x07\xb5\xde\xcb\xdf\x7b\xf9\x63\xf4\xd5\x7b\xf9\x7b\x2f\xff\xda\xd6\x7b\xf9\x7b\x2f\x7f\xef\xe5\xef\xbd\xfc\xab\xad\xf7\xf2\xf7\x5e\xfe\x46\xeb\xbd\xfc\xdd\xc9\xea\xbd\xfc\x3b\xb6\xde\xcb\x1f\xd3\xcb\x5f\x1b\x2e\x0e\xcd\xfa\xd6\x34\x69\xb9\x4c\x56\xd4\x3e\x35\xd5\x2c\xa9\xd1\xa3\xfc\x53\xf6\x5f\x87\x65\x8a\x6b\x9a\xc9\x5e\xc6\x10\xd7\x34\xf6\xad\xd8\x53\x23\xd9\xe1\x36\x5a\xdd\x2a\xbb\xdc\xca\xc8\x2f\x6a\x90\xeb\xcd\xed\xdd\xa8\xac\x53\xcb\x0e\xed\xa8\xdf\x7b\x30\x03\x35\x13\x65\x96\x1a\xe1\xb6\x42\x3a\x48\xc9\x89\xf7\xac\x9d\x9a\xad\xc8\x85\x6e\x7f\xc9\x35\x1b\xd6\x4f\x54\x89\x82\xe8\x16\xf4\xd5\x3c\xc2\x97\xd8\xdb\x08\x6a\xef\x91\xc3\x5d\xa8\x92\xec\xeb\xd3\x61\x6e\x68\x90\xad\x77\x60\x8a\xa4\x30\x61\xdc\x82\xb4\xc8\x92\x73\x23\x9c\x0b\xee\x72\xe8\x83\xe9\xb3\x22\x81\x75\xf5\x39\x3e\x64\x4d\x1a\x38\x1f\x68\xd7\xa8\x97\xbf\x91\x26\x4d\x91\x89\x52\xee\x70\xde\x05\x77\x4e\x55\xf3\x89\xed\x27\x98\xb4\x8a\x45\xe1\x8a\xb0\xea\xed\xc3\xb9\xd3\x25\x72\xa5\xe6\x8b\x31\x85\xfb\x83\x66\x99\x78\x0c\x97\x36\xa2\x9c\xeb\xc8\x65\x6b\x02\x4f\xdb\xe3\xce\x55\x6f\x96\x72\x7f\xc3\x34\xdb\xbe\x60\xce\x96\xad\x2f\x98\xf3\x7c\xeb\x0b\xe6\x3c\x5d\x30\xa7\x11\xd9\xd4\xac\x9c\xd3\x75\xb6\xb1\xde\xce\x1e\x2a\xe7\x10\xf2\x97\x19\x20\xdf\x90\x60\xc3\x91\xca\x4c\xb3\xa2\x46\x44\x53\x76\xe5\x33\x6b\x88\x9b\x38\x64\x9d\x36\x17\x33\x34\xd2\x64\xd6\x91\x80\x25\x1e\x88\x54\x20\xee\x9a\xc2\x9b\xcd\x22\xca\xa0\x1f\xd8\x96\x95\xf1\x16\x3a\x0b\xec\xc3\xbe\x7c\xfc\x8f\x80\x5b\xe7\x3d\x8a\x3d\xed\x78\x3b\x45\x4e\x8c\xb4\x94\x2d\x5c\xd4\x59\xeb\xfa\x69\x89\x59\x9d\x87\xb5\x5e\x84\x39\x78\x15\x6d\xca\xe6\xc0\x6b\x19\xed\x44\x9d\x9e\x7a\x5d\x71\x59\xf6\xec\x3c\x66\x88\xcc\xda\xfd\x5e\xdd\x55\xd6\x5c\x92\x15\x3b\x8f\xbb\x46\xc6\xfc\xf7\x86\x2c\xf6\x1f\xcf\x4b\x99\x9d\x87\xb6\xac\xcd\xc3\x2d\x35\xb6\x55\x2d\x5d\x76\xec\xfb\x40\xb0\x63\xc2\x61\x40\x62\xf8\x61\xa3\xc1\x7f\xc4\xad\x4f\xb5\x0f\xd8\x8f\x3d\x40\x7e\xfc\x92\x0a\x46\x1d\x64\xf0\xcf\xc1\xd9\x99\x5e\x02\x2d\xfe\xa0\x83\x7d\x7a\xb8\xf8\xa0\x7e\x7e\x51\x70\xf1\x7b\x0a\xe6\xf9\x05\xa2\xc6\x1f\x40\xf0\xce\x3e\x03\x77\x7e\x71\xa8\xf1\x07\x14\xa8\x73\x90\x41\x3a\x87\x16\xa0\xd3\xc3\xb0\x07\xb5\x2f\x13\x86\x3d\x6a\x10\x4e\x6c\x3e\x72\x80\xc1\x37\x07\x18\x78\x73\xa8\x41\x37\x11\x25\xe5\x97\x09\xb6\x89\xc4\x02\x5e\x26\xc8\x26\x5e\x6a\x74\xcc\x53\xb9\x6f\xf8\x8c\x83\xc8\x85\x3e\x64\xd8\x8c\x83\x4a\x80\x3e\xac\xe4\xe7\x7d\x24\x3e\x1f\x0c\x4c\xc6\x1e\x21\x32\xe2\x88\x81\x11\x84\xbf\x97\xe0\xf7\xf1\x64\xb1\xa8\x70\x18\x51\x79\xfe\xfe\x61\x30\xbe\x5a\xb6\x1f\x11\xfe\xa2\xe7\xfc\x1b\xdb\xa1\x73\xfe\x97\x86\xbb\xd8\x2f\xd4\x45\xcf\xff\xb7\x6a\x51\x61\x2d\x5e\xd8\x73\xfa\x9a\x70\x16\x87\x01\x65\xf1\x6a\x30\x16\x87\x03\x61\xf1\x6a\xf0\x15\xbd\xc7\xba\xf7\x58\xb7\x5b\xef\xb1\xee\x3d\xd6\xbb\xf4\xd3\x7b\xac\x7b\x8f\x75\xef\xb1\xee\x3d\xd6\x81\xad\xf7\x58\x77\x24\xaa\xf7\x58\xaf\x6f\xbd\xc7\xba\xf7\x58\xf7\x1e\xeb\x95\xd6\x7b\xac\x83\x08\x3c\x50\x8f\x75\x1c\x48\x88\x98\x27\xf2\x90\xa0\x20\x0e\x01\x06\xe2\xb5\x20\x20\x0e\x0e\xfe\xa1\x37\x41\x6f\x47\x5d\x1c\xa8\x87\x98\x47\xf8\xb0\x21\x1e\x0e\x19\xde\xe1\x40\xa1\x1d\x5e\x06\xd6\xe1\x25\x21\x1d\x82\xcf\x6c\xd4\xd3\x5a\x88\xf4\x9c\x6b\xe6\x53\xc8\x76\x3f\xa7\xad\xd3\xf9\x1e\xff\x18\x83\x3d\x63\xad\x03\xd3\xcc\x93\x97\x65\x06\xca\xa5\x89\xd3\xb9\x60\x29\x29\x4a\xad\x6d\xe6\xad\x3b\x9f\x7e\xe3\xd3\xdc\x66\xca\x0f\xc8\x3f\x04\x87\x01\x01\x9d\x8c\xcc\xe6\xc6\x1c\x74\xa1\x67\x20\xcd\xe3\x27\xea\xf4\x74\xf7\x35\x09\x92\xcf\xc2\x4c\x7b\x85\x84\x09\xc8\x2f\x02\x59\x01\x3d\xcf\x0e\xbe\x40\x5a\x87\xb7\xa5\x1e\x43\x04\xdc\x17\xf6\xf8\x69\xe1\xb2\xde\xf1\xd8\xdb\xb4\xf3\xae\x37\x24\xe2\x1b\xb4\x36\x10\x34\xdc\x1c\x1b\x30\x0e\x06\x64\x5c\x6a\xc2\x34\x02\x03\x24\x33\x21\x54\x57\xee\xe2\x92\x94\xf1\x45\xe6\x4c\x58\x73\xba\xe0\x80\xa8\x03\x42\x56\x3c\xb0\x41\x94\x55\x25\xea\x9f\xb1\xae\xca\x56\x2e\x94\xae\x77\x88\x37\xce\x9a\xc1\xab\x3b\x67\x2a\xc1\x50\xa4\x89\x2a\x73\x43\x8a\x05\x54\x51\x16\x02\xa0\xe3\xb0\x13\x23\x62\xd1\x64\xd6\x78\x85\x1c\x40\x5b\xd7\x9c\xcf\x72\x6e\x1c\xe2\xa6\xce\x74\xe2\x73\x5e\x3b\x8e\x6d\x3a\x03\xa5\x07\x1b\x11\x47\x36\xef\x05\xcb\x13\x4e\xbb\x1a\xa5\x12\x91\x17\xa5\x06\x23\xc7\x97\xb9\xd9\x4d\x4c\x63\xc4\x0a\x32\x23\x29\xca\xa9\x9d\x70\x0f\xf2\x60\x27\xa2\x46\x10\xe1\x29\xea\x66\x9d\x2f\xfe\x23\xbb\x72\x47\x5e\x78\x37\x44\xb0\x49\x05\x10\x42\x66\x54\x35\x43\x6d\xea\x7b\xf5\x19\x80\x9c\xff\x11\x70\xb3\x9a\x81\x4f\x54\x43\xc2\x99\xb1\xe9\xcc\x6f\x36\xa3\x1d\xa3\x4d\xa1\xb5\x49\xbf\x74\x64\x09\x73\x72\xdd\x19\x42\x71\xa5\xde\xf1\x76\xc6\x53\xf2\x17\xfc\x16\xd2\xe5\x7c\x6b\xdc\x07\xd6\x68\x40\xd3\xd4\x08\x22\x20\x87\xf6\x04\x09\x32\x61\x4e\x45\x5a\x3a\xd2\x6e\x86\xbb\xb2\xc6\xc3\x40\x07\x58\xda\x71\x01\x3d\xd9\x99\xef\xd8\x41\x0c\x1f\xdb\xd2\xab\x44\xd3\x56\x6e\xdd\x34\x8f\xc8\xb9\x95\x88\x3c\xff\x32\xaa\xfb\x60\x05\xff\x6a\xf5\x54\xdb\x99\x39\x80\x68\x88\x38\x8e\xda\x18\x90\x12\x24\xa2\x5f\x35\x1a\xb4\x04\x79\x9d\xba\x3f\xaf\x00\x31\x41\xf6\x03\x33\x41\xfa\x9a\x33\x87\x15\xc4\x43\xfa\x9a\x33\x07\x16\xd4\x43\xfa\x9a\x33\x7d\xcd\x99\xee\xed\x10\x82\x7e\x48\x5f\x73\xe6\x00\x82\x80\x48\x5f\x73\x66\x9b\xd6\xd7\x9c\xe9\x6b\xce\xac\xb6\xbe\xe6\x4c\x5f\x73\xa6\xd1\xfa\x9a\x33\xdd\xc9\x3a\xb8\x40\x22\x72\xc0\xc1\x44\xa4\xaf\x39\x13\xb9\xe6\x4c\xbc\xf4\x68\xf2\x02\x27\x77\xdf\xd0\x18\xe4\x50\xf2\xa4\xc9\x81\x43\x64\x90\x43\x4b\x96\x26\x07\x97\x30\x4d\xf6\x94\x34\x4d\x0e\x09\x32\x83\xec\x17\x36\x83\x1c\x62\x62\xde\x97\x51\xb2\x28\x2a\x94\x06\x79\x89\xbb\x62\xff\x90\x1a\xe4\x6b\xbf\x2e\x22\x42\x6b\x90\xfe\xc6\xd8\xa6\x7d\x09\x37\xc6\x4b\x43\x6d\x90\xbd\xc3\x6d\x90\xfe\xde\xe8\xda\xa2\x42\x70\x90\xd7\xf1\x30\xbf\x26\x14\x07\x39\x18\x38\x0e\xf2\x9a\x90\x1c\xe4\xa0\x60\x39\xc8\x6b\x42\x73\x90\xde\xcb\xdf\x7b\xf9\xb7\x6e\xbd\x97\xbf\xf7\xf2\xc7\xe8\xab\xf7\xf2\xf7\x5e\xfe\xb5\xad\xf7\xf2\xf7\x5e\xfe\xde\xcb\xdf\x7b\xf9\x57\x5b\xef\xe5\xef\xbd\xfc\x8d\xd6\x7b\xf9\xbb\x93\xd5\x7b\xf9\x77\x6c\xbd\x97\x3f\xa6\x97\x3f\x0e\x8c\x08\x79\x81\x53\x7b\x48\x70\x22\xe4\x40\x20\x45\xc8\x2b\xc2\x8a\x90\x43\x84\x16\x21\xbd\xb9\xbd\x33\x95\x71\xe0\x46\xc8\x0b\x1c\xf5\xc3\x86\x1d\x21\x07\x0e\x3d\x42\x0e\x17\x7e\x84\xbc\x18\x04\x09\x79\x61\x18\x12\x12\xeb\x5c\xdb\x14\xd5\x43\x01\xf8\xb1\xd4\xac\x64\xd6\xb6\x4a\xfb\x3f\x99\x38\x1f\xa6\xd9\xba\x43\x23\x29\x9f\x02\x79\x3b\x7c\xfb\xe6\x4d\x78\xee\x2e\xe3\x1a\xa6\x10\x62\xbd\x9c\x08\x99\x53\x8d\x3d\xfd\xfe\x77\x9d\xfa\x89\xce\xb6\x37\xe1\x3c\x1c\x1e\xfe\x89\xb3\x89\xb4\xf1\x27\x5a\xd2\xff\x06\x30\x12\xd4\x0a\xcc\x69\xcd\x41\x93\xce\xbe\x81\x06\xe2\x86\x66\x39\x0c\x3c\xef\xb7\x31\x11\x3e\x00\xc0\xc1\xb0\xa4\x44\x70\x27\xb2\x19\x76\xd7\x75\xef\x75\x7f\xe5\x04\xa8\x42\xe4\x83\x31\x98\xd7\xee\x38\x3e\xd5\x16\xdf\xa7\x10\x8c\x6b\x6f\xe8\x31\xef\x0c\x7e\x43\x38\xf0\xa0\xb4\x04\x6b\x41\xad\x63\x9c\xca\x22\xa5\x1a\x4e\x43\x54\x45\xb5\x50\x1a\x72\xc4\x90\x31\x92\x1e\xc5\xe0\x1f\xa2\xe5\x02\x03\x40\xe6\xc0\x75\x49\xb3\x6c\x41\x60\xce\x5c\xfc\x8e\x19\x1e\xa3\x97\x98\x56\x41\x33\xff\x97\x19\x20\x07\x91\x60\x03\x93\xca\x4c\xb3\x22\xab\xe1\x47\xec\xf2\x67\xd6\x24\x37\x71\x68\x3b\x6d\x7e\x66\x68\xa4\xc9\xac\x23\x01\x4b\xdc\x10\xa9\x30\x0c\x48\x2a\xbc\xe3\x2c\xc0\x0c\x7a\x84\x8d\xaa\xa0\x2a\x5b\x9d\x05\xfb\x61\x5f\x3e\x12\x48\xc0\xfd\xf3\x1e\x05\xa0\x76\xe4\x9d\x22\x27\x46\x6e\xca\x16\x2e\xfe\xac\x75\x11\xb5\x04\xae\xce\xc3\x5a\x7f\xc2\x1c\xbc\xb2\x36\x65\x73\xe0\xb5\xb4\x76\xa2\x4e\x4f\xbd\xd6\xb8\x2c\x85\x76\x1e\x33\x44\x7a\xed\x7e\xc3\xee\x2a\x75\x2e\x49\x8d\x9d\xc7\x5d\x23\x6d\xfe\x7b\x43\x2a\xfb\x8f\xe7\xe5\xcd\xce\x43\x5b\xd6\xe6\xd1\x97\x1a\xdb\xaa\x96\x33\x3b\xf6\x7d\x20\x28\x32\xe1\x80\x20\x31\x3c\xb2\xd1\x80\x40\x5e\xb8\x52\xd2\x2b\x00\x80\xec\x01\xfc\xa3\xaf\xd8\xd3\x57\xec\x69\xb7\xbe\x62\x4f\x5f\xb1\x67\x97\x7e\xfa\x8a\x3d\x7d\xc5\x9e\xbe\x62\x4f\x5f\xb1\x27\xb0\x1d\x50\xc8\xce\x41\x86\xeb\x1c\x5a\xa8\x4e\x5f\xb1\x27\xa8\xf5\x15\x7b\xfa\x8a\x3d\x7d\xc5\x9e\x46\xeb\x2b\xf6\x84\x1c\xcd\x78\x49\xd2\x31\x4f\xe5\xbe\x81\x34\x0e\x22\x2b\xfa\x90\x01\x34\x0e\x2a\x15\xfa\xb0\xd2\xa0\xf7\x91\x02\x7d\x30\x80\x19\x7b\x04\xcb\xe8\x0b\x3c\x6d\xd5\xa2\x02\x63\x44\xe5\xf9\xfb\x07\xc4\xf8\x6a\xd9\x7e\x44\x20\x8c\x9e\xf3\x6f\x6c\x87\xce\xf9\x5f\x1a\xf8\x62\xbf\xa0\x17\x3d\xff\xdf\xaa\x45\x05\xb8\x78\x61\xcf\xe9\x6b\x02\x5b\x1c\x06\xa8\xc5\xab\x01\x5a\x1c\x0e\x98\xc5\xab\x01\x59\xf4\x1e\xeb\xde\x63\xdd\x6e\xbd\xc7\xba\xf7\x58\xef\xd2\x4f\xef\xb1\xee\x3d\xd6\xbd\xc7\xba\xf7\x58\x07\xb6\xde\x63\xdd\x91\xa8\xde\x63\xbd\xbe\xf5\x1e\xeb\xde\x63\xdd\x7b\xac\x57\x5a\xef\xb1\x0e\x22\xf0\x40\x3d\xd6\x71\xc0\x21\x62\x9e\xc8\x43\x02\x85\x38\x04\x40\x88\xd7\x02\x83\x38\x38\x20\x88\xde\x04\xbd\x1d\x75\x71\x40\x1f\x62\x1e\xe1\xc3\x06\x7b\x38\x64\xa0\x87\x03\x05\x79\x78\x19\x80\x87\x97\x04\x77\x08\x3e\xb3\xd1\x4e\x2b\x2d\xb5\xc8\x45\xc9\xf5\x1d\xc8\x39\x4b\xe0\x3c\x49\xcc\x5f\xf7\xe2\x01\x76\xcc\xea\x6f\x1d\xd1\xf3\x27\xba\x25\x8c\xa7\x2c\x41\xdb\xe4\xe3\x0c\xf4\xcc\xa5\xcd\xe1\x73\x84\xda\x07\x89\xc6\x27\xeb\x13\x8a\x74\x9a\x3b\x16\x33\xbb\xb1\xeb\x5d\x97\xc0\xce\xd0\x58\x88\x0c\xe8\x2e\xae\x68\x27\x33\x82\xdc\x91\x51\x87\xf1\xac\x1f\x9c\x28\x51\x8f\x4e\xc6\x90\x09\x3e\x75\x39\xe4\x8e\xeb\xec\xba\x0b\x2f\xea\xee\x9c\xab\x36\x29\xa5\x04\xae\xb3\x05\x4e\x73\x9a\x42\x4a\xd0\x3c\x95\x8b\xf9\xee\x9b\xfc\x1e\xd9\x91\xd7\xe1\xa9\x26\x19\x50\xf3\x1e\x1c\xea\x17\x31\x0c\x8d\x92\x9b\x0e\xb4\x57\xbe\x65\x0b\x22\xd0\x69\xfd\x77\xbf\xb1\x3b\xdd\xd1\xed\xd3\xe0\xf5\x32\x94\xd2\x12\x34\xf2\x35\xe6\x03\x19\xe4\x42\x94\xe4\x91\x5a\x55\x4a\x96\x1c\x59\x2a\x4e\x54\x87\x45\x0e\x50\x3a\xba\x1b\xe3\x87\x78\x2f\xed\xf8\xb3\x10\xe3\x38\x95\xd3\x4e\xa2\x53\x0c\x59\xe2\x5c\x4e\x4b\xab\x29\xba\xa3\x08\x5c\xcb\x05\xe2\x61\x74\xbb\x17\xee\x67\xad\x13\x92\xd3\x29\x1c\x2b\x72\xf1\xe1\xbd\xb9\x75\x30\x02\x89\x4d\xac\xcc\xee\x6e\xa1\x42\x8a\x39\x4b\xbb\x5e\x43\x9f\xa8\x64\x74\x9c\x19\xad\x77\x02\x12\xb8\x91\xa4\x7f\x73\xf2\xe9\xfc\xf6\x6f\xd7\xe7\x1f\x2e\x4f\x51\xff\x85\xcf\x05\xe5\x86\x1d\x94\xaa\x46\xe6\x71\x14\x1e\x2b\x02\x7c\xce\xa4\xe0\x66\x16\xd0\x6e\x48\xc9\xdc\x75\xda\x89\xa2\x3a\x70\x44\x82\x12\xd9\x1c\x52\x8b\xa5\x51\x11\x58\x87\xef\x14\xa5\xf6\x16\x54\x1f\x7b\x53\xf2\x64\x46\xf9\x14\xd2\x11\x79\x2f\x4a\xf3\x62\xbf\xf9\x0d\xbe\x84\x84\xb4\x4c\xa0\x9b\x8e\x63\x4d\xf0\xf6\xe4\xfe\x66\xe0\x65\x16\x73\xfb\x63\xec\x0d\x01\x95\xd0\xc2\x4f\x4d\x73\xf6\xd4\x82\x6b\xfa\xf9\x9d\xc5\xe2\x38\xfa\x4d\xe3\xab\xa3\xee\x81\x6b\x85\x14\xe6\x55\xac\x2c\x68\xdf\x3e\x63\x1a\x24\xcd\xc8\x51\x73\x84\x11\xb9\x34\x74\x41\xda\x5c\x5b\x0b\x46\x03\x73\x90\x68\x5b\x75\x2b\x3b\x20\x12\xa6\x54\xa6\x19\xa8\x6e\x46\x21\x31\xa9\xae\x70\x6b\x6a\x71\xbb\x0a\x2a\x9b\x31\x17\x7a\x14\xca\xb8\x7d\xfb\x20\x10\xec\x64\x22\xde\x91\x99\xd6\x85\x7a\x77\x76\x56\x4b\x41\x23\x26\xce\x52\x91\xa8\x33\x4d\xd5\x83\x3a\x63\xdc\x30\xbf\x61\x4a\x35\x1d\x36\xb8\xee\x99\x95\x8d\x87\x89\xc8\x73\xca\xd3\x21\x75\xe7\x78\x58\xed\xec\xb3\x5f\x3b\xe9\x71\x48\xab\xa7\x18\x1f\xd2\xa1\x9a\x41\xa7\x95\x0b\x53\x14\x03\x14\xc4\x40\x21\x33\xb2\x42\xe8\xe6\x72\x5f\x0c\xfb\xb2\xe2\xcf\x76\x29\x46\xe4\x5a\x68\x87\x57\xe4\x22\x2a\xf1\xb6\xc5\x55\x8e\xc9\xc2\x2f\xaf\xef\x6f\xff\x7a\xf3\xf1\xea\xfa\xbe\xe7\xe4\x3d\x27\xc7\xd6\x73\xf2\x9e\x93\x77\x18\xf8\x50\x38\x39\xf0\xf9\xbe\xb8\xb8\x57\x8a\x1b\x1c\xab\xda\xaa\x2e\x51\xa0\x0a\xf3\xae\xf6\x41\xb7\x2d\x1a\x65\xa7\xef\x6d\xc7\xb4\x26\xfb\x92\xcf\x3f\xd1\x76\xc4\x09\x5f\x3b\x85\xc4\x3d\x60\x35\xf4\x8b\xb0\x09\x0c\xf6\x7c\x85\xc6\x85\x75\x52\x48\x6d\x0b\x8f\xd9\x32\x43\x77\x37\x78\xb7\x96\xef\x9a\xe6\x95\xb9\x75\xdd\xaa\x8d\xc8\x07\x6f\x6f\x21\x17\x7f\xbb\x7a\x7f\x79\x7d\x7f\xf5\xcd\xd5\xe5\x6d\x77\x03\x65\x04\x97\x02\x1a\x89\x23\x4d\x40\x90\xbd\x7f\x17\xf9\x28\x60\x98\x5a\xb2\x2a\x24\xcc\x99\x28\x55\xb6\xa8\x0c\xf1\xeb\xd9\xd5\x32\x9f\x22\x94\x87\x50\x40\xf9\xa2\xb2\xa2\xae\x1d\x70\x49\xb6\x5b\x27\xa7\x85\x98\xb4\xf7\x2b\xe1\x39\x22\x62\xc8\x79\x01\xe3\xaf\x91\x10\xb7\x97\xf6\x02\xc6\xed\x24\x27\x6e\x92\xf9\x02\xe8\x68\x4b\x8b\x01\x1d\xbd\xb7\xe9\x53\x78\xa7\x1f\x05\x4c\x4d\x2c\x4e\xf6\x8d\x14\x79\x24\x6e\x76\x87\xb8\x80\x55\x3a\xdb\xba\xa3\x7a\xec\x62\xc4\x5b\xf2\xb6\xd3\x1c\xab\x84\x32\xf3\x79\x60\x52\x59\x94\xe0\x94\x38\xf1\xcd\x89\xe0\x13\x36\xfd\x40\x8b\xef\x61\x71\x0b\x93\x30\x97\x78\x7b\xbe\xd1\x3b\xe8\xa2\x6c\xd1\x0f\x69\x24\x1b\x3b\x58\x98\x87\x30\x5a\x6c\x4f\xac\x08\xf8\xf0\xe8\xf7\x78\xc1\xea\x51\x02\xd5\x5b\x0b\xe9\x92\x72\xeb\xac\xd4\x58\x79\x0c\x51\xe2\x1f\xc3\x04\x3e\xdf\xe2\x07\x21\x37\xa5\x47\x77\x3d\x44\x89\xe5\xbe\xaf\x41\xc5\x99\x22\x30\x99\x40\xa2\xd9\x1c\xb2\x0a\x88\x3c\x1d\x90\x71\xa9\x3d\x04\xf8\x98\x26\x0f\x8f\x54\xa6\x8a\x24\x22\x2f\xa8\x66\x63\x96\x31\xbd\x20\x2c\x46\x19\x2b\xe7\x91\x77\xb8\xe6\x3e\x94\x99\x2b\x4d\xf1\x2a\x14\xce\xde\x66\x56\xdb\x86\x2a\x50\x9f\x87\x66\xb9\xa9\xc7\xf3\x8e\x42\x4a\x2e\x94\x26\x09\x48\x23\xd4\x65\x0b\xf2\x28\x45\x8c\x52\x13\xdb\xda\x4c\x12\xc1\x13\x28\xb4\x3a\x13\x73\x23\x0b\xc2\xe3\xd9\xa3\x90\x0f\x8c\x4f\x87\xe6\xc5\x87\x96\x59\xa9\x33\x0c\x21\x39\xfb\x35\xfe\xe7\x90\x4e\x11\xf1\x89\xd3\xef\xc8\xd1\x51\x60\x5f\xa2\xb0\xd1\x92\x91\x4f\xe5\x1d\xc6\xe1\x2c\x5a\xa2\x53\x75\xa1\x18\xd1\x87\x69\x85\x7c\xca\x7b\xc1\x9d\x16\x10\x69\x9a\x77\x8f\x5f\x58\x6d\x2f\x55\xcd\x0b\xd9\x41\xdc\xdb\x3b\x98\x07\xd6\xd7\xbf\x65\x56\x8e\x15\x16\x22\x7d\x47\x54\x59\x14\x42\x6a\x45\x72\xd0\x34\xa5\x9a\x8e\xcc\x81\x18\xb4\xff\xc4\x48\xab\x01\xf9\x7b\xf5\xa1\x4d\xfb\xff\xf1\xf8\xdf\xbf\xbf\xfc\xeb\x7f\x1c\xff\xf4\xf7\xe6\x77\x28\xae\xd9\x24\x9e\xc6\x03\x81\xaf\xa0\x0a\x48\x46\x5c\xa4\x70\x8d\xd4\xe1\x9f\xaa\x15\x57\xe3\xbe\xd0\x54\x97\x6a\x34\x13\x4a\x5f\xdd\x54\x7f\x16\x22\x5d\xfe\x2b\x30\x95\xe8\x00\xe5\x1e\x5c\xdb\x1b\xaa\xbb\x03\xb9\x93\xa8\xd2\x0f\x2d\xd8\x27\x90\xaa\x73\x69\x94\x66\x6b\x9d\x07\xd7\x6b\x85\x38\x9f\xcc\x20\xa7\xf8\xcf\x6f\xfc\x14\x98\xfb\xf8\x51\x32\xad\x31\xd4\xca\xd5\x81\x10\x93\x81\x67\xad\x56\xa9\x9a\xbf\x0d\xae\x83\x16\x95\xf3\x57\x2b\x18\x79\xc2\x70\x46\xdc\x6c\x59\x0e\x50\xa3\x9a\xac\x44\x56\x9e\xdf\x5c\x91\xb9\x9d\xe1\x03\x9a\x9c\x97\x62\xd7\x1e\xa3\xfe\x9b\x83\x66\xdb\x9e\x4a\xbf\x88\x95\xbd\xec\x9d\x4d\xe2\xa8\x90\xf6\x49\xc6\x72\xe6\x32\x17\x0d\x67\x01\xa5\x43\x65\x9b\x13\xdb\xe5\x28\x29\xca\x81\xeb\x7e\x94\x43\x2e\xe4\xa2\xfa\x13\x8a\x19\xe4\x20\x69\x36\x54\x5a\x48\x3a\x85\x41\x35\xb8\xfd\x59\xf5\x97\xfd\x61\x8b\xbc\xd5\x5f\x5b\x83\x64\x1d\x93\xe7\xae\xa8\xd0\x44\x94\x03\x64\xd9\x7e\xdd\x0e\x84\x63\x57\xdb\xea\x3a\xbe\x22\x77\x5c\xb9\x52\xac\x9a\x58\xcd\x22\x5a\x81\xe6\x22\x2b\x73\x50\x83\x4a\x60\xb5\xa6\x4a\x3e\x27\x73\x2a\xd5\xf1\xe1\xf0\x21\x42\x52\x36\x67\x2a\x46\x82\xf5\x1a\x89\x9a\x39\xac\x02\x51\xea\xa2\xd4\xae\x26\x5a\xe5\xf7\xf8\x5c\x08\x85\x06\xce\xaa\xac\x46\xeb\x36\x7b\x1b\xaa\x2c\x10\x52\x50\xad\x41\xf2\x77\xe4\x7f\x9d\xfc\xe7\x6f\x7f\x1e\x9e\xfe\xe9\xe4\xe4\xc7\x37\xc3\x7f\xfb\xe9\xb7\x27\xff\x39\xc2\x7f\xfc\xf3\xe9\x9f\x4e\x7f\xf6\x7f\xfc\xf6\xf4\xf4\xe4\xe4\xc7\xef\x3f\x7c\x7b\x7f\x73\xf9\x13\x3b\xfd\xf9\x47\x5e\xe6\x0f\xf6\xaf\x9f\x4f\x7e\x84\xcb\x9f\xb6\xec\xe4\xf4\xf4\x4f\xbf\x09\x26\x9d\xf2\xc5\xc7\x40\xee\x6d\xdb\x30\x5a\x49\xbb\xe5\x1e\x23\x69\x87\xad\xab\x90\x71\x3d\x14\x72\x68\xbb\x7e\x47\xb4\x2c\x43\x35\x78\xbf\xbd\x62\x9f\xff\x5b\xcf\x35\xeb\xdb\xac\x92\x42\x0e\xe8\x80\xbf\x94\xa0\xa1\x20\x91\xa0\x5f\xc3\xb2\x6b\x47\xf2\x82\xdd\x52\xbe\xd7\xd7\x76\x83\xfe\x12\x8c\xbd\x55\x65\x2d\x5c\xd7\x5a\x74\x9f\x48\x91\x8f\x48\xc3\xf3\x3d\x47\x54\x0b\xf7\xdc\x03\x04\x42\xed\x91\xde\x38\x1c\xd2\x7a\xe3\xf0\x06\x52\x7a\xe3\x70\x50\xfb\x22\x8d\xc3\x77\x96\x27\xfd\x22\x2d\xc3\xab\xa1\x87\xa6\xd3\x87\xce\x50\xc4\x9d\x63\xba\x36\xc5\x40\xe6\xb4\xe8\x12\x00\xd9\x35\x1e\x20\x66\x10\xa4\x37\x7b\x68\x41\x0a\x51\x94\x19\xd5\x1b\x02\x7f\x22\x45\x44\x56\xa0\xc8\x3e\xac\xa9\x0e\x9a\xb7\x22\x6d\xbe\x3e\x0c\x8d\x9c\x67\x19\x61\xdc\x5e\xd0\xa6\x83\x4e\xa3\xfb\xe8\x21\x09\xd6\x1e\x42\xa8\x0d\x63\x9c\x9b\x57\x7d\x74\x65\x79\x9b\xf1\xf7\x8a\x28\x4d\xa5\x66\x7c\x3a\xb2\x65\x7b\xad\x98\xe8\x42\x54\x18\xaf\x8a\xf7\x76\x22\xa7\x52\x43\x2b\x88\x91\x95\x9a\xe6\x36\x3d\x5a\x69\x3f\x3d\xf8\x06\x9a\x3e\x60\x88\x58\x02\x29\xf0\xa4\x63\xb0\xd1\x27\x0b\x69\xe2\xd7\x61\xbc\x30\x33\x71\xc9\xe7\xee\xfe\x22\x69\x69\xc3\xa4\xad\x08\x15\x6f\xdc\xaf\x2b\x26\xd6\x9c\x61\x17\x8c\xd3\x08\x8d\x45\x69\xb3\x32\x38\x56\x10\x6c\x95\x87\x0f\xa3\x9b\x2c\x4b\xef\xb6\x91\x83\x15\x89\x70\xb1\xbd\x0a\xb6\x09\xd2\xc7\x56\xe4\xf5\xda\x0b\xda\x96\xd3\xbf\x86\xf8\xa4\x70\x09\x3e\xae\xf4\xfe\x12\x92\xfb\xa1\x48\xed\x07\x22\xb1\xbf\x8c\xb4\x7e\x98\x92\x7a\x34\x29\x3d\x8e\x84\x1e\x47\x3a\xdf\x21\x6c\x23\xa6\x44\x1e\x47\x1a\x7f\x09\x5b\x5c\x21\x61\xc2\x3e\x47\xe2\xf8\x1f\xbd\xb7\x42\xc3\x67\xb4\xcc\x14\x12\x0a\xe0\x15\x04\x15\x77\x1c\x0a\x68\x32\xfb\x72\xf2\x16\xac\x01\x29\xee\xbd\x78\xb7\xce\x78\xd5\x5f\x8a\xa4\xbf\x14\x77\x68\xfd\xa5\xd8\x5f\x8a\xaf\x72\x29\x3a\x6e\xf5\xf5\xdf\x88\x91\xd3\x62\x31\xe1\x7f\x5f\x36\xa1\x8b\x36\xee\x00\x72\xe6\x97\x4c\xcd\xae\x8e\x62\x0d\x4f\x75\x86\x23\x77\x3b\x71\x6d\x26\x5b\xc5\x41\x68\x61\xd9\x1e\x99\xb1\xa9\xd9\x9e\x19\xcc\x21\x73\xda\x2b\xc9\x29\xa7\x53\x8b\x37\xab\x45\x55\x6f\x49\x48\x2c\x27\x23\x59\x47\xa8\xbb\x25\x00\x07\x34\x14\x19\x2e\x93\x09\x9a\xe2\x97\x52\x64\x19\x48\x45\x32\xf6\x00\xe4\x3d\x14\x99\x58\x38\xc8\x58\x9e\x92\x3b\x4d\x35\x4c\xca\xec\x0e\x74\xa7\x18\xcb\x20\x8e\x83\x04\xdf\x94\x59\x76\x23\x32\x96\x74\x72\xc8\xc5\xd8\x8a\x57\xb8\x01\x8b\x32\xcb\x48\x81\x84\x74\xdb\x87\x1f\x39\x5e\xe5\xe7\xd9\x23\x5d\xa8\x01\xb9\x86\x39\xc8\x01\xb9\x9a\x5c\x0b\x7d\x63\x6d\x35\xdd\xfa\x6d\x66\x96\xd9\xce\x09\x9b\x90\x77\x58\x2b\x43\x13\x4d\xa7\x68\x39\xf4\x11\x81\x03\xb3\xa1\x9a\x83\x12\x61\x18\xe5\x23\x53\xfb\x34\xa1\x85\x9f\xd2\x5f\xe3\xe8\xe6\xea\xec\x7c\x6a\x83\xf6\x6a\xc6\x26\x90\x2c\x92\x6c\x6f\x0c\xf3\x3c\xc1\x20\xed\x1a\x99\xb7\xc1\x4e\xd4\x42\x69\xc8\x3d\xf8\x20\x5a\x4e\x19\x27\x12\x54\x21\xb8\x42\x29\xaf\xe6\x12\xd5\x8b\x58\x4b\x74\xc7\xc8\xea\x88\x86\xd5\xce\x8a\x41\xa8\x4a\x50\x08\xa5\xef\x34\x95\xba\xab\x7c\x12\x4b\x17\xb8\xf1\x84\x98\x93\x9c\xd0\x2c\x83\x94\xb0\x3c\x87\x94\x51\x6d\xe4\x76\x3a\xd1\x08\x39\xd9\xf2\x15\x24\x12\x70\xde\x7d\x05\x84\x19\xe5\x69\x06\x92\x4c\x28\xcb\x54\xf7\x00\xfe\x15\x9f\x84\x06\x99\x33\x8e\x4e\x02\x1b\x08\x8a\x4e\x0a\xf3\x57\x92\x08\x99\x3a\x70\x47\xa6\x95\xff\x2a\x88\x89\x9a\xf6\x11\x25\xbb\xc6\xf6\x5e\x8e\xa3\x25\xe3\x4c\x24\x0f\x8a\x94\x5c\xb3\xcc\xbe\xbc\x10\x0f\xa8\xbf\x64\xc8\x4e\x3a\x0f\xdd\x9d\x4b\x55\xff\x1c\x56\x07\x6c\x68\xa8\x52\x67\xbf\xae\xbf\xc2\x0f\x3a\x12\x17\x41\x8b\x8e\xa1\x43\xc3\x67\x48\xa2\xe1\x22\x5f\x7e\x86\xa4\x85\x4a\xee\x50\x6f\x6c\x79\x48\x44\xba\x8a\xe4\x0a\xb4\xed\xc0\x8a\xac\x05\x20\x8c\x35\x5b\xec\x28\x9b\x0b\xb7\x08\xae\xbe\x92\x5f\x93\x8c\x71\x68\x2f\x8c\x62\x29\xb4\x17\xc7\x7a\x17\x9d\x92\x4b\x52\x26\x11\x10\x7a\xe1\x73\xc7\x83\x49\xf3\xb4\x20\x66\xb2\x10\x9a\x9c\x1c\x9f\x1d\x9f\xae\xec\x91\x63\x23\x9b\x67\x60\xaf\xc5\x91\xc3\x39\xab\x5e\x4a\xb1\xbc\xc8\x16\xf8\x1e\xc7\xe9\x80\x30\x1d\x23\x6c\xc7\xdc\x86\xb2\xe4\x7e\x56\x1c\x2e\xdb\x80\x28\x41\xb4\xa4\xbe\x0e\x82\xfd\xd4\x3c\xa4\x65\xe9\x2e\xf4\x93\xe3\x9f\x8f\x07\x04\x74\x72\x4a\x1e\xb1\xf6\xab\x99\xbe\x11\xb9\x17\xa4\x54\xe1\x33\x56\x11\xb2\x10\x25\xe1\x00\xee\x6c\x15\x19\x4b\x98\xce\x16\x78\xdd\x10\x51\x6a\x6b\x04\xa5\x3a\x04\x4f\xae\xd9\x2e\x3f\x33\xed\x52\xb8\x0c\xff\x7e\x83\xbb\xc9\x5e\x59\x84\x1a\x65\x64\x0e\x67\x33\xa0\x99\x9e\xd9\x04\x03\x2e\xf8\xf0\x1f\x20\x05\x62\xce\x71\xf7\xcd\x57\x57\xd3\x2f\x62\x6c\xd1\x0b\xc1\xdf\x9b\x6b\xef\x5b\xe8\x2c\x12\x91\x65\x7e\xf4\xdd\xfd\xfd\xcd\xb7\xa0\x9b\x5c\x9e\xe3\x87\xe4\xdb\xcb\x7b\x9f\x56\x82\xc6\x78\x90\x13\x21\xf3\x03\x60\xef\x71\xe2\x5d\x87\xa4\x10\xf2\x10\x6e\x99\x99\x50\x41\xcb\x49\x5e\xe0\x8a\xf9\x4e\x28\x6d\xfd\x2d\x56\x37\xe1\x58\xb2\x5b\xb4\x73\x24\x5c\x40\x34\xb9\xba\x19\x91\xbf\x8a\xd2\x4c\xc8\x98\x8e\xb3\x45\x85\x3a\xad\x20\xbc\x96\xe3\x91\x21\xe5\xc8\xdc\x20\x66\xe7\x7f\x07\x34\x05\xa9\x90\x41\x03\x8d\x54\x4b\x27\xc2\x71\x6f\xd0\x16\x75\x29\x2f\x4a\xa5\x45\x4e\x66\xee\xb5\xdb\x78\x74\xee\x70\x8e\xec\x71\x75\xa0\x44\x12\x0a\xcb\xc4\xdd\x6f\xbe\x3a\x16\xbd\xc2\xbd\xec\xbc\xbb\xcf\xc7\x56\x4c\x6d\x4e\x9b\x73\x70\x58\xb8\x1b\xc7\xdb\xcc\x56\x8d\x16\x8a\x7a\x90\x55\x4b\x3b\x23\xd5\x2d\x77\x84\xce\x9e\xe0\x9e\xe2\xd6\x2c\x8d\x13\xfd\x4e\x5e\xac\x46\xa3\x11\x68\xdd\xe6\xb3\x36\xe8\xee\xd6\xf3\x75\x9d\x33\x55\x05\x2f\x26\x94\x0b\xce\x12\x9a\xb1\x7f\x40\x4a\xca\x42\x70\x97\xee\x86\x92\x6d\x42\x15\x0c\xd1\x3b\xce\xb5\x2b\x1c\x55\x63\xa6\x19\xee\xa0\x85\x40\x71\x0f\x63\xd4\x0c\xbb\xb7\x54\x1f\x6e\x69\xce\x17\x58\xf5\x95\xc5\x8a\xb3\xe3\xc9\x17\x21\x4e\x12\x9b\xa7\x18\x9c\x23\xbf\x9a\x21\xaf\x05\xa1\x49\x82\xa8\x70\xf6\xba\x42\xc6\xab\x40\xce\xc3\xf7\x57\xb4\x79\x35\x22\xe0\xa1\xc9\x5e\x36\xe6\x40\x12\x5e\xe6\x63\x90\x35\xbc\x88\xd4\xab\x73\x1a\xc5\xea\xe2\x86\xb5\xc3\x79\x2f\xad\x97\x31\x28\x9f\x02\x79\x6b\x46\xfe\xe3\x1f\xfe\xf0\xfb\x3f\x44\x18\xc7\xbc\x5e\x15\xd8\xcd\xc9\xd5\xf9\xf5\xf9\xdf\xee\x3e\x5d\x20\x68\x61\x68\xf7\x91\xf2\x56\x63\x67\xad\x46\xcd\x59\x7d\xd1\x8c\x55\x84\xff\x08\xe6\xb2\xb1\x8f\xc4\x1d\x52\x65\x36\x61\xa9\x2c\xd0\xa1\xd3\x49\x1a\xa5\x8b\x8c\x1a\x15\xbe\x3b\x9b\xce\x3c\xc3\xb0\x0e\x82\x53\xa9\x0c\xa0\x88\xa6\xf1\xdf\x99\xde\xda\xd5\xc2\xd3\x52\xda\x12\x42\x95\xf3\xaa\xb6\xe5\x3b\xa7\x15\xd2\xf0\x15\x29\xff\x0a\x12\xc1\xd3\x10\x15\x20\x96\x48\xeb\x28\x89\x7a\xe6\xee\x6c\x9f\xde\x44\x5c\x5f\x25\x6e\x30\xd4\x24\x43\x57\x94\x54\xab\x1a\x87\x4f\x5a\x80\x06\xec\xed\x8f\xff\xd2\xdd\x41\x96\x14\x77\x22\x79\x88\x68\x22\x0b\x64\x60\xef\xcd\x49\x4b\xac\x2f\xf0\xfe\xe2\xc6\x12\x67\x56\xe6\xfa\xe3\x7d\x8d\xc6\x82\xd9\x47\xe4\x07\xef\x9b\xfa\xce\x79\x0b\x29\x4f\xc9\x03\x14\x61\xda\xa5\x61\x98\x3e\x8c\xb0\x1d\x45\x38\x72\xf5\xd5\x10\xfd\xd5\x66\x3c\x5b\x46\xe0\xa3\xff\xac\x44\x1c\x86\x23\xdd\x70\xce\xa3\x23\xd0\x29\x21\x13\xca\x32\x42\xd1\x2a\xaf\x59\x0e\x36\xe5\x0a\x8d\xfd\x75\xb4\xc4\x57\xc4\x70\xbe\x56\x6b\xe3\xb1\x0f\xdb\x7e\xb7\xb3\xd5\x30\x14\xa8\xe2\xeb\x56\x03\x1c\xcf\x96\x55\xdc\x7b\xaf\x06\x6c\xdb\x7a\x35\xa0\xa3\x1a\x50\x48\xb8\xd3\xa2\xb3\xac\x19\x2d\xe0\xc6\x92\xb1\x21\xdc\x66\x0c\x13\x21\x61\x39\xde\xa6\x11\x07\xe3\x22\xe7\x03\x22\x83\xcf\x6f\xae\x2a\xdf\x97\x68\xc5\xba\xd8\xf4\x60\x55\x26\x33\xef\x26\xe5\xa0\xd4\x19\x46\xd6\x94\x85\x35\x2c\xe3\xd5\x56\x4a\xe8\x1e\xe5\x53\x48\x80\x1c\xe7\x71\x50\x03\xfc\x98\xd7\x05\x6e\x3f\x04\x9d\x58\xbf\xb9\x0f\x2b\x72\xf8\xed\x7e\xba\xc2\x6a\x20\xd7\x13\x9b\x48\xaa\x66\x80\x29\xaa\xf0\x99\x69\x65\x07\xbd\x41\x18\x1c\x3f\xe3\x46\x5e\x98\x4a\x9a\x00\x29\x40\x32\x61\x44\x8c\x92\xeb\x54\x3c\x72\x32\x86\x29\xe3\xca\xaf\x58\x08\x49\x7e\x4b\x60\x24\x11\x53\x55\xa1\xb5\x11\xb9\x6d\xd5\x1f\x70\x80\x5f\x89\xa8\x79\xa6\x9b\xa2\x41\xa4\x29\x41\xe1\x05\xb7\x41\x89\xa5\x83\xab\x8d\xe7\xd3\xd7\xf5\xe6\x19\xea\xbe\x21\xec\xcc\x9e\x94\x1c\x5f\x34\x85\x8c\x2e\x6c\xa2\xf6\x84\x71\xb4\xfe\x4a\x75\x3a\x0a\x0f\xcd\xea\x4c\xa0\x90\x8d\x3e\x37\xee\x0c\xa6\x88\x04\x9a\xcc\x42\x24\xbb\x3e\x06\xec\xb9\xd6\xc7\x80\xf5\x31\x60\x7d\x0c\xd8\x6a\xeb\x63\xc0\xda\xad\x8f\x01\xdb\x4c\xd0\x21\x3b\xed\xfa\x18\xb0\xde\x2a\xb3\xda\xfa\x18\xb0\x4e\xad\x8f\x01\x7b\xb6\x1d\x1c\x8b\xee\x63\xc0\xb6\x68\x7d\x0c\xd8\x96\xad\x8f\x01\xeb\x63\xc0\xfa\x18\xb0\x3e\x06\x2c\xa0\xf5\x31\x60\xbb\xbf\x5e\xef\xfc\xe9\xde\xfa\x18\xb0\x3e\x06\x6c\xc7\xd6\xc7\x80\x2d\xb5\x3e\x06\xac\x8f\x01\x7b\xaa\xf5\x31\x60\x7d\x0c\x98\x6b\xbd\xb5\x71\xa5\xf5\x31\x60\x6b\x5a\x1f\x03\xb6\xdb\x38\xbd\x1a\x10\xd6\xd9\x8b\xa8\x01\x4a\x8b\xe2\x8e\x4d\x03\x70\x21\x63\x1d\x83\xbb\x8a\x12\x07\x1a\xa9\xc8\xe3\x8c\x25\x33\xa2\xec\x87\xde\x8e\xa5\x1c\x64\x5f\x33\x22\xac\x71\x93\x8c\xc1\xa8\x08\xe6\xb5\x8a\x90\xdb\xe4\x6a\x82\x0e\xe4\x06\x92\x9b\x39\x15\x1e\x26\x90\xb5\xaa\x27\xb4\xc5\x67\x7f\xbb\x31\x6e\x74\x97\xee\x14\x34\xe6\x23\xa1\xdc\x16\x2b\xc5\xd7\xc7\xe2\x86\xe4\x46\xa4\xca\x17\x6c\xe0\x82\x0f\x2d\x58\xeb\x08\xab\x3b\x0b\x35\x0a\xb0\x06\x07\x22\xb3\xd9\x18\xb9\x1b\x29\xc6\x7b\x43\x67\xbb\xc1\xf8\x23\x96\xb8\x00\x3d\x31\x69\x21\xae\x59\x02\x3b\x22\xad\xb5\x03\xc3\xb0\xa0\x88\x87\xe0\x62\x8e\x61\x57\x41\x81\xfb\x44\x73\xdb\x39\x72\xca\xa3\x54\xaa\xb3\x42\xd8\xff\xab\xe3\xa6\x1a\x01\x53\x9d\xfd\x28\x7b\x86\x97\x0b\x89\x92\xda\x5b\x84\xd4\x81\x44\x98\x45\x88\x8a\x8a\x29\x2b\x1d\x68\x34\xd4\x61\x46\x42\x1d\x62\x14\xd4\x3e\x22\xa0\xf6\x1e\xfd\x14\xc7\xad\x1e\xc1\xa5\x1e\x49\x22\x7d\x01\xf7\x94\x0b\xa4\xbf\x9f\x49\x50\x33\x91\x75\x66\x38\xb1\x98\xcd\x07\xc6\x59\x5e\xe6\xe6\xec\x2a\xc3\x53\xd8\xbc\x0a\xf6\x57\x9e\x65\xb8\xeb\xde\x46\x1c\x98\x07\x59\x0a\x58\x99\x9b\xb2\xcc\x6c\x2d\x04\x0b\x9d\xd1\x39\x0a\xa5\x65\x92\x00\xa4\x21\x62\x69\xd3\x5a\xfd\xfb\x51\x45\xa1\xc5\xe8\x67\x8a\xbc\x0d\xbb\x6a\xc2\xf4\x9e\x86\x39\xef\xf7\xbf\xeb\xd4\xc7\x54\x16\x71\x6e\xe9\x6f\x6f\x6f\x2e\x5a\xb7\x34\x7e\xf0\x1d\x1e\xe3\x8b\x19\x24\x0f\xb7\x2e\x94\x66\x7f\x37\x73\xb8\x99\x29\xc8\xc4\x14\x43\x30\x08\xb5\xa2\xb4\x7d\xc8\x42\xea\x25\x17\xe8\x14\x57\x11\xe4\x9c\x25\x30\x7a\x05\x43\x45\x2c\xe5\x3f\xfc\x20\x10\x74\x13\xe0\x8b\x1f\x8a\xd8\x75\x67\xc9\xa9\x3c\x0c\x0d\x1b\x95\xa3\x14\x83\x46\x33\x9a\x54\x6b\x33\x5d\x7f\xe8\x82\xc8\x38\x51\x00\x95\x42\x33\x65\x7a\x56\x8e\x47\x89\xc8\xcf\x0c\xeb\xb0\xff\x37\xce\xc4\xf8\x2c\xa7\x4a\x83\x34\x3a\x8e\xbb\xd6\x87\x89\xa1\x80\xf1\xe9\x28\x4f\x4f\x47\xbf\x0a\xa2\xe1\xca\xd9\xca\x5d\x1a\xd6\x06\x23\xc1\x18\x0c\xdf\x17\x72\xc9\x5a\x60\x26\x25\x7c\x93\x06\xdf\xdf\xa1\x45\x45\x02\xc3\x92\xf7\x12\x92\xdc\x73\x6d\x12\xc1\x21\x10\x93\xa9\x1c\x46\xd8\xf1\x8b\x85\x1c\x47\x39\xab\x91\x42\x8d\x0f\x28\xcc\xf8\x60\x74\xa1\x43\x09\x2d\x8e\x16\x56\x1c\x2b\xa4\x38\x4a\x38\x71\x8c\x50\xe2\x78\x61\xc4\x71\x42\x88\xe3\x87\x0f\xbf\x58\xe8\xf0\x17\x11\x36\x1c\xd1\x3f\x16\x29\x5c\xf8\x35\x42\x85\x0f\xd7\x06\x43\x22\x84\x07\xbf\x5e\x68\x70\x94\x79\x8c\xaa\xc5\x06\xb2\x84\x3d\x84\x02\xbf\x86\xff\xff\xc5\x7c\xff\x11\xfc\xfe\x31\x7d\xfe\xd1\xfc\xfd\x2f\x16\xf2\x1b\x1e\xee\x1b\xd5\xa6\xf0\x2a\x61\xbe\x31\x43\x7c\x83\xd7\x97\x71\xa6\x19\xcd\xde\x43\x46\x17\x77\x61\x81\xa0\xb1\x56\xe2\x7a\x25\x58\xd4\x9a\xad\xdb\x71\x0d\x33\xaa\x88\x77\x75\x3b\x88\x17\xef\x4b\x77\x22\x30\xa1\xe8\x71\x36\xef\xd7\xd9\x6b\x4d\x0e\xcf\x73\x4d\x0e\xc6\x3c\x6e\x71\x55\x0e\x64\xd7\x7c\x27\x1e\x89\x98\x68\xe0\xe4\x84\x71\xbf\x73\x4e\x1b\x56\x9a\xda\x3d\x12\xec\xef\x30\xbd\xbe\x7d\xe3\x07\xf9\xfa\xfc\x1e\xe8\x19\x52\xea\xa0\x3d\x5f\x8e\xc6\xe7\x5d\x5f\xee\xc1\x49\x99\xb5\xdd\x5f\xd6\x25\x16\xc7\xf7\xf5\xb6\xae\xfe\xfe\x16\xe9\xa9\x58\x11\xe5\x29\x71\xf8\x5c\x5f\xdf\x3e\x09\x0e\x75\x6f\x2b\x37\x55\x6c\x7a\x3b\x9e\xc5\xde\xc0\x46\xca\x14\x84\x9a\xa7\x50\x00\xed\x8d\xae\x07\x63\x74\xdd\x53\x04\xf6\xd7\xa7\x6d\xbd\x7e\xc4\x75\xaf\x6d\xfd\x52\xb4\xad\x06\x2c\xde\xb7\x92\x26\x70\x73\x48\xc2\x9b\x67\x20\x75\x22\x60\x2d\xc3\x55\xec\x82\x03\xd8\xc4\xb1\x1a\xf4\x10\xf1\xfd\x26\x65\x96\x2d\xac\x0d\xb1\x85\x80\xd9\x7d\x6b\xdd\xcf\x60\x05\x3a\x10\x5d\xa9\x6b\xa8\xab\x75\x93\x42\x0a\x27\x91\xc8\x92\x73\x23\x62\xb8\xe3\x64\x88\x37\xba\x88\x02\xde\xdd\x9c\x4e\x5b\xc0\x86\x2e\x08\x1d\x03\x3d\x67\x40\xea\xfc\xa5\x36\x21\x66\xd4\x89\x90\x09\x1b\x67\x0b\x32\xa3\x99\x51\x96\x5c\x90\xf6\x03\xcb\x32\xd7\x4d\x40\x50\x38\x68\xeb\x7a\xb6\x12\x4d\x26\xf8\x14\x27\x83\x5a\x42\xe0\x73\x01\x89\x19\x33\xc9\x80\xf2\xb2\xb0\x74\x1a\xf9\x68\x21\x4a\xe9\xe9\x0c\x8a\x8a\x6f\x8c\xce\x14\xe1\x2c\x1b\xf8\x29\x6f\x43\x60\xae\xee\xf9\xda\xa4\xac\x20\x75\xe8\x95\x8f\x4c\xc1\x00\xfb\xec\x4c\x93\xa5\xc5\x57\xed\xb7\xfb\xc6\x7e\x56\x48\x31\x67\x69\x1d\xa3\x6f\xb6\x05\xc6\xc7\x77\x1e\xeb\x13\xf6\xeb\x59\x2b\x17\x7c\xc8\x61\x4a\x51\x3c\x76\x0c\xcd\x46\x74\xda\xf1\x6d\xfc\x20\x4f\x59\x42\x35\x28\xcc\x49\x68\x41\xdb\xce\x19\xed\x4c\x89\x79\x9f\xc6\x8e\x22\x27\x5c\x10\x81\x99\x85\x25\x67\x7a\x81\x1e\xbd\x59\xa9\x49\x2a\x1e\xf9\x69\xc8\xc1\xb4\x61\x0e\x94\x8c\x41\xd3\x3a\x39\xd0\x8b\x64\x8a\x00\xa7\xe3\xcc\x9c\x3d\x8c\xf8\xbf\x5f\xbb\x01\xc8\x04\xa8\x2e\x25\x90\x29\xd5\x01\x5c\x62\x8d\x34\x6f\xd7\xf3\xe9\x6d\xc7\x94\xf3\xd7\x4d\x48\xc9\x15\x04\x0a\xb2\xd1\x54\x80\x8e\x19\xaf\xe6\x44\x8b\x52\x1f\xc8\x3d\xb2\xc9\x74\x64\x33\x77\x1a\x4a\x22\xcb\x41\x11\x51\x06\x58\xf2\x5a\xea\x9f\x1b\x2e\xa6\x86\xd7\xdb\x9d\xd6\xb6\xae\x6e\xd3\x18\x3b\xec\xba\x21\x95\x37\xf0\x09\x7c\xb8\x95\xcd\xa0\x7e\x7f\x7d\xf7\xb7\x1f\xce\xff\xe7\xe5\x0f\xdd\x16\xfe\x92\x26\xb3\x26\xb6\x38\x27\x14\x2f\x0a\x64\xf2\x33\x3a\x07\x42\x49\xc9\xd9\x7f\x97\x2e\xe4\xed\xa4\x1a\xaf\x23\x5b\x8d\x92\xde\x13\x24\xf8\x9a\x5b\xa2\x13\xe7\x88\xb1\xa6\x3f\x30\x85\x40\xd5\x48\x84\x0b\xfc\x17\x0a\xc8\x44\x8a\x7c\x49\xd1\x22\xd7\x55\x70\xdd\xc2\xdc\x30\xd4\xaa\x66\x33\x90\xdd\x24\xf2\xf7\x1f\x2f\xef\x30\x07\xbf\x90\x16\xd8\x1d\x93\x0b\xb0\x4f\x1c\xdd\xa6\x0e\x5a\x7a\xd2\x11\x39\xe7\x0b\xfb\xa5\x65\x66\x1d\x45\x94\x8c\x29\x0d\x28\x9c\x3a\x45\xd2\x87\x07\x1e\xbd\x19\xe1\xff\x8e\x08\x4d\x53\x69\x34\xcd\x2a\x47\x23\x59\xce\x32\xeb\x34\xb2\xd5\x5f\xd9\x38\x6b\x4c\x2e\x07\x8d\x69\x1c\x9d\x3a\xfc\x20\x52\xb7\x12\x28\x04\x62\xfc\x8e\x95\x6e\x95\x96\x54\xc3\x94\x25\x24\x07\x39\x05\x52\x50\x9d\xcc\x48\x4e\x17\x24\x11\x52\x96\x85\x85\x18\x49\xa9\xa6\xdd\x46\xfe\x46\x48\x92\x7b\xee\x6c\xb8\x99\x11\xc9\xef\xd6\x07\x82\xd6\x2c\xbb\xf9\x4f\xa6\x54\x09\xea\xec\xed\x9b\x7f\xfd\xdd\x1f\x3a\xaa\xd7\x11\x0f\x6e\xd7\xd0\xa7\x80\x90\xa7\x76\xf8\x97\xdf\x60\x18\x74\xdd\x42\x86\x71\x3b\xc4\xee\x7c\xe4\x86\x8a\xf1\x69\x16\x6c\x00\x09\x36\x03\x86\x1a\x01\x87\xf5\x1b\xdc\x74\xb5\x05\x86\x5b\x02\x5b\x34\x74\x37\xa5\xc4\xb3\x82\xd5\x12\x9c\xb7\x7b\x39\x86\x2c\x78\x43\xb1\xbb\xba\xf1\x5c\x2a\xc4\x7e\x84\xda\x44\x65\x98\xb2\xe8\x23\x76\x58\x1b\xef\x30\x20\x6f\xc8\xbf\x93\xcf\xe4\xdf\xd1\x0a\xf6\xc7\xee\x43\xc5\xb1\x31\xc5\x08\xe3\x9f\x09\xa5\xaf\x6e\x22\x2d\xf4\x5f\xcc\x7d\x65\x7a\x34\xeb\xa1\x05\x19\x33\x67\x8e\x80\xcf\x1a\xa4\x51\x03\xdd\x1a\x86\xce\x5c\x90\x45\xcd\x10\xf8\xa5\xec\xee\xd0\xe0\x82\xab\x49\x3b\xfa\xff\x95\xf6\x37\x0e\xfc\x9d\x50\xfa\xda\x71\xeb\x26\x84\x4e\x93\x8e\x1c\x2f\xe2\x16\xbb\x0f\x19\xf5\x83\xd9\x7b\x75\x8d\x0d\x92\x0a\x4c\x80\xb0\x39\x9c\x33\x16\xc0\x1c\x0e\xe7\xc4\x86\xc5\x89\xc6\xdb\xba\x4f\x6d\xad\x25\x9b\x3e\x5a\x64\x9c\x92\xd2\x28\x4b\x53\x88\x74\x84\xfa\x4d\x00\x15\x66\x36\xd2\x86\x30\xf0\x84\x6a\x34\xb2\xfa\x5a\xe5\x1d\xc6\x03\x67\x38\x56\x42\x79\x57\x19\xd6\x36\x09\x13\x90\xd2\xe6\x09\x8f\x17\x3e\xdd\x28\x78\xb7\x05\x71\xb9\x42\x0a\x2d\x12\xd1\x19\x36\x25\xe6\x56\xb9\x71\xb4\xe0\xdc\xa3\xaf\xb6\xf2\x8e\xff\xf9\xfd\xcd\x80\xdc\x5f\xdc\x0c\x88\x90\xe4\xee\x22\x2c\xf8\xa9\x69\x82\x39\xba\xbf\xb8\x39\xda\xeb\x0a\x34\x72\x98\xee\x2f\x6e\x3a\x74\xb2\x1a\x3e\x9b\xd3\x62\xf8\x00\x8b\x8e\xd2\x5d\x0c\x09\x73\x58\x6d\xac\x28\x2f\x64\xa7\x39\xa7\xc5\xce\xbd\x49\xa0\x29\x3b\x68\x24\x17\x9f\x75\x58\x51\x1a\x0f\xd2\x25\x17\x73\x48\xad\xd6\xec\x47\x01\x9e\x16\x82\x19\x1d\xa9\xc7\x79\x79\xaa\xf5\x38\x2f\xbb\xb7\x1e\xe7\x65\x5d\xeb\x71\x5e\x76\x68\x3d\xce\x8b\x6d\x3d\xce\x4b\x9b\x90\x43\xcc\x31\xea\x71\x5e\x9e\x6d\x3d\xce\xcb\xc6\xd6\xe3\xbc\xec\xd4\x7a\x9c\x97\xd5\xd6\xe3\xbc\x3c\xd1\x7a\x9c\x97\xaa\xf5\x38\x2f\x3d\xce\xcb\x97\xcb\xb5\x7b\x9c\x97\xe5\xd6\xe3\xbc\xf4\x38\x2f\x3d\xce\x4b\xb3\xf5\x38\x2f\x1b\x5a\x8f\xf3\xd2\xe3\xbc\xf4\x38\x2f\x4f\xb7\x1e\xe7\xa5\x73\xeb\x71\x5e\x76\x6b\x7d\xe6\xe1\x8e\xad\xc7\x79\xe9\x71\x5e\x96\x5b\x8f\xf3\xf2\x6c\x3b\x0c\xf3\x78\x8f\xf3\xd2\xe3\xbc\x3c\xd9\x7a\x9c\x97\x1e\xe7\xe5\xc9\xd6\xe3\xbc\x74\x68\x07\x67\x74\xed\x71\x5e\x7a\x9c\x97\xa7\xc6\xe8\xb5\xad\xdd\x5a\x8f\xf3\xd2\xe3\xbc\xac\xb4\x1e\xe7\x65\xb5\xf5\x38\x2f\x3d\xce\x4b\x8f\xf3\xd2\xe3\xbc\x54\xad\xc7\x79\xf9\xda\xed\x4e\x12\x14\xfb\x07\xdc\x88\x8c\x25\x8b\xe0\x6c\x9f\x5b\x50\xa2\x94\x89\xb9\xb1\xb1\x5b\x52\x60\xbf\x95\x45\x21\x48\xc8\x3e\x30\x08\x85\xdb\xc6\xc4\x35\xa1\x14\xa4\x9b\x83\x97\x98\x82\x83\x80\x53\xf0\x2f\x78\xdd\x3d\x82\x60\xe8\xcb\x67\xdb\xe9\xeb\x66\x2c\x0d\xd6\xda\x9b\x2f\x72\x08\xe9\x9c\x4d\xd8\xa3\x6a\x17\x69\x51\x31\x5b\xb6\x71\x73\xd1\xa2\xc8\x58\x48\x62\x2c\x21\x77\x25\x4a\x17\xe0\x5c\xe0\xea\x1d\x49\x8a\x72\x40\x72\xc8\x85\x0c\x48\x8c\x88\xa0\xc1\xb5\xb6\xca\x21\xac\xd3\xad\x25\xc8\x4f\xbe\x16\x38\xff\x0b\xab\x2f\xd4\x28\x55\xd5\x5a\x31\xcf\x0e\x83\x62\xcd\xae\x26\xcb\xc1\xa8\x4c\xb7\xac\x40\xd7\x42\xdf\xba\xc3\xbd\xb7\xf5\x8a\x1c\xb1\xe0\xa7\x70\x6f\xa8\x55\x17\x22\x2f\x4a\x0d\xad\x8b\xcd\x4e\xb1\x55\x3a\x98\x0a\x65\xe8\xfb\xc9\x06\x4d\x04\x9f\xb0\xa9\xd3\xbe\xcf\x72\xca\xe9\x14\x86\xd5\x6c\x0f\x6b\xa8\x87\xb3\xce\x17\xf5\xde\x52\x41\x93\x8c\xb2\xee\x81\x83\xb1\xd8\xc4\x05\x52\x81\x30\x60\x75\x40\x3d\xe6\xa6\x55\xd3\x3c\xa8\xc2\xc6\x99\xe5\x1b\x23\xff\x95\xfd\xf1\x20\x40\x7b\xa4\x1a\x6d\x15\xa8\x18\xad\xd9\xa9\xe1\x0a\x23\x27\x34\x2b\x66\x4f\xab\x8c\x21\x29\x97\xef\x17\x9c\xe6\x2c\xf1\x07\xef\x3c\xcb\x44\x62\x4d\x35\x6d\x65\x33\xec\x4d\x2c\xf5\xe6\x95\xf2\xbc\xd4\x74\x9c\xc1\x88\x5c\x59\xe4\x0a\xc1\xb3\x85\x39\x96\x0a\xb4\x8f\x5c\x70\x67\x22\x4c\xc1\x0c\x09\x8b\x0d\x0c\x89\x5d\x2b\xab\xe3\x5e\xb3\x50\x1b\xc0\x0d\x87\x13\x1c\x08\x70\x2d\x17\x66\x5b\xde\x88\xf4\xce\xec\xcc\xd6\xd3\xc1\x08\x1c\x81\x91\xb0\x31\xa2\x60\x03\x23\x60\xe3\xc4\xad\x86\xc7\xac\xc6\x8d\x57\xad\x3d\x0b\x16\x40\xa8\x99\x08\xd4\xda\x16\x85\x48\x47\x6b\x38\x16\x11\x93\x40\x0a\xcc\x88\x37\x22\x35\xb2\x94\x04\xcb\xb6\xaa\x33\x6a\xed\x8a\x57\x86\xb8\x07\x34\x04\x52\x5d\x0b\x59\x74\x4e\x59\x66\x0e\x70\x20\x01\xab\x60\x8c\x61\xce\x9a\x48\x2e\x0c\x17\xb3\x7f\x48\x9b\xc5\x65\x7b\xb5\x12\xc6\x92\x99\x50\xc0\x91\x5f\xd2\x2a\xb1\xa7\x4a\x3b\x70\x2c\x26\xb5\x57\x74\x68\x70\xf1\xd5\x84\x40\x5e\xe8\xc5\x80\xc0\x1c\xe4\x42\xcf\x30\x08\xa1\x82\x13\x45\xb6\xc6\x14\xc9\x69\xda\xd8\x1d\x03\x22\xbc\x5d\x3a\x70\x78\xbc\x1f\x9c\xaa\x56\x66\xda\x2a\x6e\x4c\x55\xd9\x15\xfb\xde\x35\xb1\x51\x6e\x48\x28\xd3\x8c\x89\x52\x43\x10\x61\x35\x67\xdd\xf0\x6c\x49\xc4\xb3\xf0\x03\x52\xd1\xc8\x28\x31\x5b\x22\xa7\x9f\xd1\x6a\x49\x73\x51\x72\x6d\xe1\x6b\xac\x22\x51\x09\x7f\x36\xef\xe6\x15\xc3\xe8\x5e\x54\xe4\x27\x71\xae\x76\x9a\x7a\xc4\x8a\x9b\x18\xe9\xcb\x54\x6b\x90\xfc\x1d\xf9\x5f\x27\xff\xf9\xdb\x9f\x87\xa7\x7f\x3a\x39\xf9\xf1\xcd\xf0\xdf\x7e\xfa\xed\xc9\x7f\x8e\xf0\x1f\xff\x7c\xfa\xa7\xd3\x9f\xfd\x1f\xbf\x3d\x3d\x3d\x39\xf9\xf1\xfb\x0f\xdf\xde\xdf\x5c\xfe\xc4\x4e\x7f\xfe\x91\x97\xf9\x83\xfd\xeb\xe7\x93\x1f\xe1\xf2\xa7\x2d\x3b\x39\x3d\xfd\xd3\x6f\xba\x3b\x25\x43\x3d\xf0\xf1\xfc\xef\x91\xbc\xef\x2f\xe2\x7b\x77\x3c\x76\xef\x87\xdf\x5d\x81\x2b\xc7\xdf\x39\x2d\x9e\x3a\xfe\x32\xd8\x54\x73\x35\xa9\xc7\x67\x8a\x88\x9c\x69\x0d\xa9\xbb\x7b\x1b\x90\x38\x4b\x66\x22\xc7\xb0\x10\xcd\x8a\xe2\xed\xdd\x80\x66\xa9\xad\x4b\x9d\xc9\xaa\xee\x57\x34\x8c\x71\xc2\xf2\x22\x83\x1c\xb8\x46\xc6\x33\xf4\x2a\x2f\x5a\x19\x47\xf5\x1b\x24\xd6\x0e\x02\x9f\x13\x80\xd4\x11\xd9\xf3\xc6\x46\xeb\x79\x63\xcf\x1b\x9f\x6b\xc1\xa6\xf2\x18\x8c\xf1\xb6\x49\x84\x33\x71\x29\x2f\x29\xa3\xe1\xbc\x42\x4e\x10\x13\x8c\x9f\x98\xb3\xb4\xa4\x59\x13\x60\xd6\x63\x8e\x76\xe3\x00\x0d\xd3\x4e\x4e\x17\x2b\x96\x1c\xc6\x59\x13\xcd\x76\x50\x45\xfd\xe0\x83\x4e\x2e\xab\x3d\xce\x47\xe7\xd9\x23\x5d\xa8\x8e\xa0\x97\xdf\x08\x89\x81\x24\x4b\x83\x12\x21\x7d\x7c\x51\x53\xc5\x6d\x5b\xf8\xbb\x79\x08\xd7\x4d\x74\x1b\xa2\xc2\x29\xd9\xc7\xaa\x7a\xd0\xfb\x91\xdc\x44\xd4\x59\x21\x66\x9f\x77\x7b\xf1\x3b\xd0\xda\x19\x01\x97\xb6\x04\xad\xe7\xb4\x72\x8b\xb6\xa7\xc7\x86\x12\x21\xd4\xac\xf9\x72\x22\xcc\x9a\x60\x91\x86\xc9\x04\x92\x8e\x5a\xb0\x85\xf4\x58\x33\x8e\x0d\x6f\xd7\x8c\x97\x34\xcb\x16\x7e\x4e\x20\x25\x82\x77\x1a\x08\x3e\x33\x4d\x4a\xae\x59\x66\x36\x13\x91\x30\x2d\x33\xda\x34\x20\xba\x37\xf3\x51\x77\xe9\x88\x7c\xe4\x09\x34\x1f\xee\x66\xf8\x5e\x1a\xc0\x08\x1d\x19\x68\x48\x07\xd8\xf5\xf2\x0e\xc4\xb8\xb5\x16\xc7\xa8\x96\xa5\xd3\xf0\x7e\x2e\xab\xb8\xa4\x91\x3d\x88\x55\xd0\x04\x49\xd9\x64\x62\x46\x46\x25\x9d\x0b\x99\xd3\x55\xaa\x28\x4f\x3b\x8d\x6e\x24\x20\xcc\x56\x69\x82\x06\x63\xa1\x98\x23\xc5\x52\x48\xa8\x3c\x6a\x96\x18\x39\xcf\xf4\x4c\x94\xd3\x59\xbd\x2b\xc2\xa6\x9c\x28\x8d\xd1\x5a\x66\x32\x95\xb7\x78\x2c\x6d\x36\x65\x64\x1d\x9e\x80\x15\xc9\x04\xd8\xe3\xfe\x48\x3b\x8e\xbd\x12\x51\x60\x43\xc4\xed\x9a\xfb\x14\x2e\x0c\x09\x84\xb4\x91\x6f\xc7\xe1\xb3\x8e\xf0\xc2\x23\x72\x65\xf1\x33\x06\xed\x5e\x5b\x53\x62\x27\xa3\x11\x12\xe7\x83\x3b\x3b\xc6\x03\x2e\x0d\xc0\xaa\x8c\x35\x84\x39\xb6\x9d\x53\xbe\xf0\x09\x22\x18\xb2\x66\x13\xdb\xaa\x9c\x95\xac\x9b\xed\xbd\x3a\x4b\xaf\x5e\xb5\x47\x41\x52\x4a\xa6\x17\x17\x82\x6b\xf8\xdc\x89\xf7\xc5\xb8\xd5\xef\xda\x64\xb4\xee\x75\x4f\x22\x11\x85\xc5\x96\x5c\x2a\xdc\x34\x13\x65\x96\x22\xc2\x6e\xc9\x91\xed\x74\xbb\x51\xae\x26\xe6\x0a\xb7\xfb\x0d\x6f\x4c\x74\xa7\x2d\x13\xe6\x23\x45\x6d\xc0\xec\x7f\x97\x6c\x4e\x33\xe0\xba\xf1\x8b\x1b\x8c\x1d\x6c\xfe\xe8\x25\x7d\xae\x9a\xaa\x87\x5a\xc3\x80\x61\x21\xd2\x5a\xa1\x38\xf3\x53\x87\x1f\xc1\x67\xfd\x05\xfa\x5b\x51\x60\xba\x91\x6c\xce\x32\x98\xc2\xa5\x4a\x68\x86\x7a\xd4\xbe\x95\xf3\xf3\x0d\x74\xe1\xce\x94\x22\x53\x46\x00\x33\xca\xaa\x11\x35\x6d\xe4\x34\x3a\xfe\xa6\x94\x71\xac\x3a\x14\xe0\x1c\x72\x83\x2a\x1b\xba\x6d\xf4\xed\x82\x4a\xb3\x0b\x7d\x88\xb6\xbd\x1a\xc7\x42\x64\x0e\xa6\x36\x5b\xd4\x74\xb1\xee\x5e\x14\xe4\xc5\xe2\x6f\x1c\x1e\xff\x66\xa8\x50\x64\x92\xd1\x69\x7d\x35\x83\x5e\xc9\x77\x09\x8f\x1a\xdf\x38\xd1\x88\xc1\x5a\x1a\xc1\xc6\x48\x15\x75\x3c\x7d\x93\x83\x77\x57\xe8\xde\x9e\x22\x3f\xa1\x8a\x54\x63\x77\x13\x1d\x4c\xfb\xdd\x29\xde\x13\x17\xe7\x37\x7f\xbb\xfb\xeb\xdd\xdf\xce\xdf\x7f\xb8\xba\xee\x1e\x35\x2b\x34\x58\xeb\x4a\x43\xba\x4f\xaa\x40\x0f\xb3\x0a\x55\xac\xd0\x48\xa8\x11\xba\x4e\x10\xcc\x85\xa7\xe2\x31\xd0\xbf\x6c\xf6\x14\xd0\x6e\x92\x2b\x2d\x8a\x73\x99\x0b\x79\x23\xc5\x84\x65\x9d\x5d\x93\xb1\x4e\xf0\x12\x39\xde\xd3\x74\xee\x3e\xae\xaf\x1b\x8b\x2f\xb0\x1a\xe7\xd0\xb8\x32\x18\x66\xb1\x9b\x6e\xba\x5b\xb6\x5a\x39\x08\x36\x23\x62\x89\xc4\xee\x87\x68\xaf\x7b\x66\xef\xd9\x9b\x86\x8c\x8e\x3f\x8f\xe1\x89\xcf\x44\x42\x33\xac\x5f\x14\xb6\xf1\x49\x64\x27\xeb\x32\x5d\x8d\x6c\x13\xea\xb7\x33\xc9\x04\x4d\x51\x59\x75\xcc\x3f\x05\x8f\xaa\xed\xc5\x2e\x74\x9c\x07\x11\x72\x6f\x23\xfd\x71\x3c\x9f\x1e\x53\x48\xa8\xa4\x9a\xa5\xe1\x05\xe9\x5e\x6d\xd0\xb7\x0f\xed\x30\x04\xf7\x96\xad\x44\xce\xd0\x33\x57\x0d\xe3\x0e\x18\x9b\xa0\x05\x04\xcd\x40\x6c\x82\x9b\x12\x0d\x40\x3f\xf8\x65\x08\x28\x7c\x12\x29\x12\x00\x3b\x39\x90\xdd\x69\xe7\xa7\xda\x91\x36\x4c\xf9\x81\x99\x19\x9c\xd4\x4c\xda\x6f\x1b\x2f\x83\xd8\x58\xe5\xc0\xfd\xf8\x09\x4b\x6c\x79\xfe\x4f\x65\x30\x2e\x58\xb5\xc4\x64\xd8\x38\x5a\x85\x84\xe1\xea\xf1\x0a\x0d\x5c\xb8\x2d\xb9\x66\x39\x78\xec\x8b\xe1\x92\x4c\x24\xed\xd7\xc7\xaa\x42\x9a\x8d\xb2\xd1\x09\xf9\x33\xc7\xf3\xca\x21\x25\x43\xc2\x45\xbd\x44\xc0\x27\x42\x26\xe8\xa4\xd9\xeb\x06\x4f\x68\x41\xc7\x2c\x63\x21\xcc\x3c\xd6\x06\xc7\xc2\x0d\x0d\x7a\xd0\x9c\x94\xa6\x67\xa9\x14\x85\xbd\x89\x7d\x52\x6a\x78\x60\x60\x3b\xf9\xa9\x89\x31\x8c\x02\xfb\xa4\x4d\xc8\x54\x52\xae\x6b\x43\xee\xca\xc6\xf9\x25\xca\x20\x31\x84\x00\x9a\xc6\x2b\x81\x72\x9e\x1a\x9e\xd1\x5c\xb6\xe0\x73\x75\x68\x70\xaa\x17\xfe\xe5\x1a\xd9\x4f\xe4\xe6\xe3\xdd\xd5\xff\xb7\x74\x6e\xba\x8b\x76\xb6\x1d\x36\x98\xa2\xe1\x07\xd1\xb6\xcd\xad\xab\x40\xd5\x6f\x9c\xaf\x7b\xe3\x54\x06\xa2\xbd\x23\x41\xdd\x96\xbc\x5d\x05\xbf\x26\x8d\xe4\x41\xb2\xce\x4d\x05\x9a\xd0\xee\xb5\xe9\xeb\x91\x40\xcc\x23\x5c\x33\xf4\xbc\x35\xac\xb5\x5a\xd8\x22\x4b\x51\xea\xb5\x36\x6f\xd7\x09\xcd\xd4\x97\x7a\x45\x86\x98\x76\x0a\x29\x92\x0f\xa2\xe4\x71\xa0\xa5\x02\x76\x5c\x45\x08\x49\x81\x0b\xed\xac\x29\xa8\x4b\x88\x09\x7e\x4b\x6c\xd8\x54\x03\x35\xb2\x25\xe7\x04\x88\x59\xf7\x0d\xd1\xaa\xf2\xef\x7b\x39\xdc\xea\x2f\xa5\x82\x65\xff\x85\x93\xab\xea\x28\xaa\x89\xe8\x1e\x3c\x22\x81\xa6\xa8\x60\x16\x54\xcf\x2c\x9c\x59\x4e\xd5\x03\xa4\xf6\x83\x40\x28\x87\x2a\x07\x07\x5d\xfc\x7e\xa6\xef\xcd\xe4\xfa\xb4\x19\x34\x08\x5b\x50\x37\x4c\xd4\x09\x51\xc5\xf6\x7a\x1a\x02\x18\xbb\x59\x84\x8f\x3c\x5b\xdc\x0a\xa1\xbf\xa9\xaa\xb5\xed\xfb\x64\xfc\xc5\xb9\x23\xda\x46\x4c\xb4\x4b\x53\x24\x79\x88\x1b\x07\xf9\x62\xa3\xc6\x5c\x28\x5b\x34\x0b\xf2\x4b\xe5\x8a\xb2\xe4\xe7\xea\x5b\x29\xca\xce\x32\x5c\x4c\x7d\xf3\xdb\xab\xf7\x78\xf1\x95\x0e\xed\x87\x6b\xb9\xc0\xe2\xa3\xde\xe2\x15\xd1\x69\xf3\x67\x87\xab\xd4\xe4\x6c\xc1\x10\x2a\x84\x7c\xa0\x0b\x42\x33\x25\x2a\x93\x1a\x5f\xe7\x6e\xf5\xbe\x5c\xf3\xf5\x58\xe8\xd9\x8a\x13\xb7\x6b\x14\x88\x69\xab\xe3\x0d\x1a\xa0\x41\x75\x7e\x36\xe3\x2b\xc3\x6a\x4c\x2c\x2a\x24\x24\x90\x02\x4f\xbe\xd4\x13\xb1\x6f\x0c\x1b\x3c\x55\xd7\x82\x1b\xf6\xba\xef\x73\x75\x55\xd9\x27\xdd\x6a\x34\x4f\x11\x9a\xb2\x9d\x13\x91\x62\x98\x1e\x32\xd7\x52\x85\x64\x7d\x5d\x4d\xd0\xeb\x69\x37\xdd\xf7\xe5\x18\x32\xb3\xd8\x2c\xcb\xcc\x0e\x64\x29\xd5\x36\x34\x81\xe5\x74\x0a\x84\xea\xea\x10\x6a\x41\x80\xab\x52\xba\x7d\xd3\x31\x40\xc7\xb4\x2a\xb6\xc8\xbd\xda\x9f\xaf\xde\x93\x37\xe4\xc4\xbc\xdb\x29\x4a\x1c\x13\xca\x32\x84\x90\xc2\xe0\xbf\x25\x97\xec\xc4\x87\x27\x05\x4d\x01\xf2\x11\x22\xa4\xbd\x5a\x06\x84\x0b\xa2\xca\x64\xe6\xe7\x80\x09\x5e\x59\x84\x1d\x9e\x70\x50\x2e\x4c\xcf\x76\xe2\xdd\x87\x7f\x56\x20\xf7\x7d\x6c\xcd\x75\xf8\xe7\x57\xbc\x0e\x9b\x2a\xa2\x39\xfe\xed\x05\xb3\x67\x35\x07\x4d\x53\xaa\xa9\xbb\x26\xfd\x03\xfd\xae\xed\x2f\xcb\x80\xcb\x52\xc1\x0f\x8c\x97\x9f\x2d\x62\xe7\x41\xb8\x3d\xee\x2e\x91\x22\x92\xf8\x85\x16\x0d\xbf\x9d\xf7\x50\x44\x48\x8f\xbe\x6a\x1d\xa3\xc1\x06\xad\x1b\x6f\x09\x6a\xe1\x1f\xc0\x28\x42\x94\xa7\x22\x5f\x21\x72\x22\x24\x01\x9a\xcc\x3a\x53\xd3\x88\x1a\xe9\x0f\xa6\x6b\xbf\x6c\x87\x50\x06\x73\xc8\xa2\xd9\xf6\x7f\x30\xbd\x99\xc9\xf1\x3b\x17\xbb\x27\x19\x1d\x43\xe6\x00\x5b\x2c\x8a\x57\xc4\x13\x16\xc9\x06\x2e\x45\xc4\x90\x98\x5b\x61\x23\xb9\x68\x35\x11\xa6\xfb\x2f\x62\x1e\xa2\x06\x5f\xdc\xbb\xe8\x92\x7a\x1e\xd0\x06\xfa\x25\xcc\x43\x19\x20\x20\x92\xe5\x79\x30\xd2\x66\x7b\x1e\x50\xfe\x3a\xf4\x79\x50\x90\x24\x22\x2f\x0e\x24\x52\xf2\xde\x46\xe1\x1b\x8a\xb6\x8d\x8a\x6c\x3f\x4c\x83\xc2\x9d\x1d\x0e\x33\xd5\xf6\x1e\xf4\x60\xcc\xff\x57\xe3\x3a\x47\x6e\xb7\x7c\xc7\xbb\xd1\x83\x23\x32\xab\x11\x5d\x87\xbf\xc4\x1b\xaf\x0f\xc3\x6c\xb5\x57\x0f\xc3\x6c\x60\xb9\x51\x34\xcf\xb7\x42\x22\xbf\x86\x60\x4c\xa3\x04\xe0\xbc\x02\xc7\x84\xb2\x82\xea\xd9\x80\x48\xc8\x2c\x42\xba\x63\xcf\x0f\xd6\xe2\x75\x8c\x1c\xc7\x13\xe4\xd9\x4d\x1d\xb3\x6a\xc1\xdc\xa2\xc6\x6e\xae\x8b\xd7\xb4\xcf\x5c\x7f\xbc\x6f\x26\x00\x53\xbe\xb0\x30\x05\x01\xe9\xad\xb6\x1d\x9e\x58\xf1\x92\x31\x9d\xcb\xab\xf8\xd2\x21\x9d\x41\xfd\xad\x8f\xe8\x7c\xbd\x53\xba\x5d\x94\xe7\x72\x8c\x67\x54\x12\x96\x03\x3e\x57\xc7\x88\xb0\x72\xc1\x47\xc0\x5d\x9d\x07\x64\x00\xf9\x8b\xa5\xc8\x6b\xd9\x89\x61\x1c\x9a\xf1\xa9\x6a\x1a\x41\x68\x96\x45\x89\x49\x58\x67\x05\xf1\xa7\xa0\x42\x33\x5b\xb5\x06\xb4\xab\x6d\x84\x8c\xfe\x8c\x05\xe3\xcb\xb6\x44\x64\x46\xa3\xf8\xc2\xed\x10\xd3\x5c\xd1\x0b\x69\x66\x50\x33\x9a\xdd\x15\x90\x1c\xca\x6d\xf1\xed\x87\xbb\xf3\x36\x65\x28\x0b\x3b\xec\x46\xc0\xef\x09\x4d\x73\xa6\x14\x3a\x7c\x60\x3c\x13\xe2\x21\x68\xc8\x13\x9f\x6a\x3b\x65\x7a\x56\x8e\x47\x89\xc8\x1b\x59\xb7\x43\xc5\xa6\xea\xcc\x71\x94\xa1\x99\xb8\x53\xc2\x78\x56\x65\x2a\xa3\xb5\x90\x6b\xe5\x3c\x08\xc1\x2f\x4f\x92\xea\xed\x71\xeb\x61\x7e\x4a\x15\x9a\xbd\x3a\x3d\x08\xb0\x89\x9b\x77\xef\x52\xc7\xea\xae\x0a\xc3\xc1\x5f\xda\x59\x1b\xde\xbd\x09\x16\xe9\xbc\x38\x6b\xe7\xd1\x2a\xaf\x7b\x9f\x24\x27\xf4\x27\xa0\x82\x22\x60\x63\x9e\xb9\xef\x6a\x92\x48\x0a\x16\x44\x04\x10\xcf\x8b\x6e\xcc\xb9\x47\xf7\xf6\x31\xd6\x12\x74\x3f\x3d\x8e\x85\x6f\x7a\x9e\x65\x66\x21\xa9\x03\x94\x69\x44\x77\xa2\x6a\x52\x61\xb8\x28\xb3\xe2\x16\xbe\xc5\x28\x0b\xcd\xb7\x08\xaf\xb9\x7f\xc2\xb4\x47\xcf\xf1\xf0\x3d\x5a\xd8\xb1\x29\xc9\xd9\x67\x43\x61\x73\xc4\x36\xde\x08\x3a\xfe\xd7\x7f\x1d\x50\x5a\x89\x60\xf0\x41\x05\xdb\x35\x30\x2b\xd4\x1c\xc4\x27\x47\x6b\x73\x6d\x99\x2f\xae\x41\x1b\x45\xcd\xce\x5b\xd3\xfb\x60\x14\x2b\x59\x46\x38\x0c\x21\x9e\x61\xd2\xf4\x0e\x47\xe5\x14\x81\xe7\x01\x3d\xc5\x8e\x26\x23\x83\x78\xe1\xed\xb5\x3c\xc7\x64\x4d\xfa\xce\xab\x79\x90\xc9\xf6\x5e\xe4\x17\xf4\x55\x91\x43\xf1\x57\x85\x42\xad\x34\x60\x63\xf6\x86\xb3\xd2\x84\xae\x61\xab\xc1\x4b\x37\x22\x5d\x41\xb4\xf1\x45\xe7\xbb\x97\x18\x31\x9b\xa3\x56\x41\xb8\x70\xe6\x91\x46\xdd\x77\xf8\x0c\x49\xa9\x21\x75\xc0\x56\xce\xa4\x6c\x41\x71\xda\xd4\x74\xa6\xc0\x27\xe9\xbb\x8a\x93\x6a\x50\xa3\x81\x3b\x5d\xa7\x82\xe6\x1a\x90\xff\x42\x2e\xe9\x70\x2c\xeb\x52\xf5\x37\xd5\xcf\xbb\x4e\x05\xc6\x51\x27\x94\x7b\xdd\x0a\x2b\x9e\x5b\x0b\xb7\x03\xb0\x72\x38\x1e\x63\x20\x05\x95\x34\x37\x77\xb0\x22\x6e\x79\xc6\x30\x65\x36\x2d\xb0\x71\x29\x56\x08\x58\xdd\x10\xdd\x50\xb1\x61\x9a\xe4\x6c\x3a\xb3\xa7\x85\x50\x2c\x0d\x49\x7c\xdc\x58\x26\x68\x4a\x90\xb1\x08\x49\x1e\xa9\xcc\x8d\x2c\x40\x93\x19\x06\xa1\x51\x4e\xd2\xd2\x9c\x07\x82\x78\x4d\x8b\xa1\xd2\x54\x1b\x1d\x13\x64\x80\x0d\xce\x4f\xd3\x1e\x8a\x97\xbc\x74\x61\xb6\x3d\xe3\xe9\x98\x93\x16\xc5\x0a\x72\xf9\x19\x92\xa5\xd2\xdf\x79\x8e\x10\x7f\xc2\x1f\x67\x8f\x54\x16\x2c\x0c\x1e\x88\xaa\xec\xde\xf0\x50\x64\x93\x0b\x37\xe1\xcc\x6b\x9f\xf6\x4f\xa3\x8f\xb6\x17\x41\x79\x27\x56\x03\xb7\xd7\xfc\x69\xb6\xba\x39\xb9\x16\x23\x48\xc8\xaa\x8e\x5c\x10\x59\x9e\x0e\xac\x4c\x25\x84\x26\x27\xc7\x67\xc7\xa7\x2b\x7b\xe1\x58\x35\xd3\x0c\x6c\x46\x74\xfd\x42\x8a\xe5\x45\xb6\xc0\x77\x38\xb6\xc5\xa8\x02\x8a\xbc\x9a\xe6\x03\x56\xab\x0a\x0c\x6a\x06\x59\x36\x20\xca\x88\xbf\xd4\x83\xdf\xda\x4f\xcd\x43\x5a\x96\x89\x35\x93\x9d\x1c\xff\x7c\x3c\x20\xa0\x93\x53\xf2\x28\xf8\xb1\xb6\x0e\x0f\x72\x8f\x3a\x64\x10\x4d\x15\x11\x0b\x51\x62\xbd\x64\xbb\x6c\x15\x5e\x72\x42\x8d\xfa\x53\x5a\x19\xdd\x82\x6e\x40\x16\x50\xff\xd7\xb4\xcb\xcf\x4c\x1b\x51\x44\x97\x68\xa6\x78\x63\x35\x05\x30\xec\xd5\x5c\x78\xe6\xa6\x3b\x9b\x01\xcd\xf4\x6c\x51\x69\x2f\xb6\x14\xad\x22\x25\x77\xdf\x84\xcb\x50\x07\x90\x36\x7a\xb8\x09\x9c\xae\x22\xf6\xfd\x4c\x82\x9a\x89\x6c\xef\x69\x9c\xbe\x4c\x6a\x22\xb8\x32\x3c\xc5\xa8\xd8\x8e\x46\x55\x65\xd0\xb9\x52\xad\xc2\x01\x9e\x9a\x53\x26\x21\x75\xc2\x92\x43\x4f\x9c\xd1\x39\x4a\x0a\x46\x9e\x83\x34\x44\x35\x69\xea\x44\xbf\x8f\x59\xc8\x75\xff\x35\x53\x4d\x9b\xca\x22\xce\x2d\xfd\xed\xed\xcd\x45\xeb\x96\xc6\x0f\xbe\xc3\x63\x7c\x31\x83\xe4\xe1\x36\xac\xa0\xc8\x81\x84\x16\x14\x42\xee\x53\x30\x30\xc3\x47\x93\x0a\x6e\x84\xd4\x84\x57\xa5\x91\xcd\xd9\x9a\xe2\x2a\x82\x9c\xb3\x04\x46\xbe\x6c\xb2\x77\xce\xfb\x02\x38\x94\x4f\x81\xbc\x35\x07\xe2\x8f\x7f\xf8\xc3\xef\xff\x10\xce\xa3\xc3\x91\xcc\xc3\x0f\x02\xc1\x60\x28\x7c\xf1\x43\x11\xbb\xee\x2c\x39\xeb\x8c\xcd\x8e\x52\x54\xea\x32\x9a\x54\x6b\x33\x5d\x7f\xe8\xc2\xac\x92\x0a\x80\xac\x71\x57\x18\xd6\x61\xff\x6f\x9c\x89\xf1\x59\x4e\x95\x06\x69\x74\x1c\x77\xad\x0f\x13\x43\x01\xe3\xd3\x51\x9e\x9e\x06\x54\xb8\x23\x0d\xb5\x7a\x05\x5b\xbc\x05\x33\xb3\x01\x27\xdc\x4c\xca\xde\x4d\xf0\xc4\x53\xf9\x8e\x1c\x75\x03\xa6\x36\x4b\xf0\x2d\xc4\xc9\x44\xfb\xee\xfe\xfe\xe6\x5b\xd0\x4d\x86\xcd\xf1\x43\xf2\xed\xe5\x7d\x55\xf1\xca\xec\x2e\x9b\xd4\xd4\x73\xed\x10\xae\x3d\x13\x61\x25\xcf\x62\xfb\x5d\x2c\x2b\x41\x98\x6d\xce\x21\x31\x0b\x3d\x68\x15\x57\xf1\x71\x88\x57\x37\x23\xf2\x57\x51\xa2\xc8\x45\xc7\xd9\x82\x3c\x52\x8b\x68\xa0\x20\x8c\xa7\x1c\x19\x32\x8e\x0c\xd7\x32\xbb\xfa\x3b\xa0\xa9\x2d\x97\x80\xa6\x9d\xbd\x9f\xd5\x06\x4d\xd1\x96\xed\xa2\x54\x5a\xe4\x64\xe6\x5e\xd5\xce\x61\x5d\x53\xce\xca\x46\xf6\x08\xa2\xef\x47\x11\x09\x85\xd5\x96\xdc\x6f\xbe\x0a\x5d\x68\x85\x0b\xd9\x79\x6e\x54\x1e\xa2\x24\x69\x4e\x95\x13\xf4\xd1\x84\xc9\x1c\x8f\xea\x6c\x12\xab\x5b\x94\x02\x9e\x24\x52\x11\x4f\x12\x5e\xc8\xd3\x77\x12\xee\x84\x8c\x53\x12\x94\x44\x29\x0b\x4a\xa2\x57\x7b\x24\xce\xd5\xe6\x36\x97\x0d\xc0\x31\x84\x86\xa2\x12\x12\x6f\x4c\xae\x6a\x71\x50\x2e\x38\x4b\xac\x3b\x83\x94\x85\xe0\x44\x94\xba\x28\x35\x9a\x82\x12\xaa\x60\x38\xa7\x92\x19\x86\x6a\x6b\x2a\x57\x91\x50\xdc\x9c\x76\x2d\x04\xda\x49\x2a\xa7\xb3\xa5\x38\x9c\xcc\x48\xd2\x8c\x69\xb8\xd9\x22\xaf\xf0\xca\xe2\x84\xef\x68\x72\xd0\x36\x18\x62\xcb\x58\xcd\xe2\xa9\x75\x54\xcf\x30\xb2\x0f\x7d\x59\x3e\x30\x14\x19\xa7\x51\x1b\x0e\x20\xf1\x26\xaa\x16\x1b\xc8\x12\xd0\xdf\x2e\xe4\x92\x1e\x6c\x28\x5c\x9d\xc3\x48\xb1\x26\x2f\xaf\x56\x37\x4b\x20\x8f\xc1\xc8\xf6\x57\xe7\xd7\xe7\x7f\xbb\xfb\x74\xf1\xb7\xeb\xf3\x0f\x97\x21\x5d\x07\x97\x2f\x8b\x59\xc0\x2c\x5a\x09\xb3\x17\x2a\xf0\x68\x9a\x4a\x66\x70\x38\x61\x26\x77\x48\x4d\x13\x94\xcc\xe9\x00\x8d\xd2\x3a\x61\x28\x75\x64\xc9\x68\x6a\x18\xcf\x5e\x39\x8e\x8b\x2a\x78\x0f\x19\x5d\xdc\x41\x22\x78\xba\xf7\xe8\xec\xeb\x8a\xd9\x28\x4b\x50\x55\x51\x08\x96\x10\xb3\x7c\x0d\x2f\x57\x07\xc9\xc7\x07\x34\x43\x1a\xec\xfb\x75\xf6\x5a\x93\xc3\xf3\x5c\x93\x83\x31\x8f\x17\x20\x19\x46\x04\x1d\xc2\xae\xf9\x4e\x3c\xba\xe2\x60\x27\x8c\xfb\x9d\x73\xda\xb0\xd2\xd4\xee\x91\x70\x34\x35\x2d\xc8\xdb\x37\x7e\x90\xaf\xcf\xef\xe1\x22\x7d\x0e\xda\xf3\xe5\x68\x7c\xde\xf5\x55\x87\x2d\xb5\xdd\x5f\x21\xf1\x43\x64\x89\x8d\xbf\x1d\x55\x79\x6a\x6f\x91\x9e\x8a\x15\x51\x9e\xfa\x90\xb3\xaf\x6f\x9f\xe8\xa4\xb8\x13\xc9\x43\x24\xb3\xeb\xfd\xc5\x8d\xed\x6d\x29\x9e\xc5\xde\xc0\x46\xca\x14\x84\x9a\xa7\x50\x00\xed\x8d\xae\x07\x63\x74\x3d\xb6\x69\x5d\x34\x7b\xb7\xb3\x01\xf5\xb8\xd7\xb6\xea\xe6\x05\x1f\xd9\xae\x80\xd2\x6b\x5b\x1b\x5a\xaf\x6d\xed\xd0\x7c\x25\x5a\x26\xf8\xb7\x92\x26\x70\x73\x48\xc2\x9b\x67\x20\x24\x75\xf5\xd9\x49\x2d\xc3\x55\xec\x82\x03\xa4\x96\x7f\xf8\xa2\xba\x64\x6a\xde\xc4\x86\x47\xa3\x0d\xb1\x0e\x2c\x2e\x65\x80\x98\x77\x3f\x73\x5d\x3b\x11\xd7\x3b\x99\xd7\x51\x57\xeb\x26\x45\x05\x86\xee\xab\x86\xb8\xe3\x64\x88\x37\xba\x88\x02\xde\xdd\x9c\x4e\x9b\x2b\x48\x14\x9b\x9a\xe9\xf2\xb5\x9c\x2d\x88\x96\x2f\xbd\x57\x13\x62\x46\x9d\x08\x99\xb0\x71\xb6\x20\x33\x9a\x19\x65\x09\x4b\x02\x53\xf2\x80\xa5\x6c\xb1\x9b\xee\x13\x75\x07\x2e\x57\xd3\x4a\x34\x99\xe0\x53\x9c\x0c\xea\x72\x32\x3e\x17\x90\x98\x31\x93\x0c\x28\x2f\x0b\x4b\xa7\x91\x8f\x16\xa2\x8c\x90\x96\xe1\x1d\xdf\x95\x3c\xc5\x99\x83\x1f\xb1\x85\xdb\x9e\xdc\xf3\xed\xe4\x5a\xf2\x51\xcf\x40\x3e\x32\x05\x83\xee\xa5\x6b\x89\x37\xfb\x2e\x95\x91\xb3\x9f\x55\x10\x2a\x2e\x73\xd0\x6c\x0b\x4c\x65\xed\x3c\xd6\x27\xec\xd7\xb3\x56\x2e\xf8\x90\xc3\xd4\x02\x35\x38\x86\x66\x23\x3a\xed\xf8\x36\x7e\xb0\xca\x36\x50\x5a\x14\xad\xba\xbd\x73\x46\x3b\x53\x82\xa0\x10\xf5\x8e\x22\x27\x5c\x10\x51\x98\xab\xab\xe4\x4c\x2f\xd0\xa3\xe7\x4b\x46\x07\xe4\x5b\xdd\xbb\x30\x07\x4a\xc6\xa0\xa9\xb3\x81\x9b\x43\x50\x61\xa2\x23\xdc\xb9\x39\x7b\x98\x24\x70\xbf\x76\x03\x54\x30\xe9\x53\xaa\x03\xb8\xc4\x1a\x69\xde\xae\xe7\xd3\xdb\x8e\x29\xe7\xaf\x0b\xc4\x61\x3e\x0c\x64\x43\x73\xa2\x45\xa9\x0f\xe4\x1e\xd9\x64\x3a\xb2\x10\x17\x0d\x25\x91\xe5\xa0\x88\x28\x23\xd5\x9b\x78\xeb\x86\x8b\xa9\xe1\xf5\x76\xa7\xb5\x4d\xe9\x94\x75\xaa\x3a\x1c\x63\x8b\x6d\x00\xef\x77\x79\xb8\x0d\xfc\xca\x71\x39\x99\x80\xc4\x9b\x0e\x09\x5e\x09\xbb\xaf\xea\x78\xf9\x3b\xac\x9b\xf1\xd6\x05\x7c\x81\x1e\x60\xed\x00\x07\x26\xb1\x61\x48\x07\xb2\x89\x65\x7a\x25\x28\xc4\x82\xe7\xe4\xf2\xe3\x37\xdd\xb6\x68\x8c\xca\x02\x61\x29\xab\xf8\x9e\x1f\x79\xb7\x98\xc4\xb8\xfb\x61\x1d\xea\x8b\xdb\x16\x49\x26\x94\x4b\x8f\xc6\x75\x49\x66\x94\x73\xf0\xc6\x28\xa6\xd1\x92\x3d\x06\xe0\x44\x14\x60\x83\xf2\x3a\x11\x43\x89\x62\x7c\x9a\x01\xa1\x5a\xd3\x64\x36\x32\xd4\x71\xbf\x17\xea\x3c\x64\xf7\x89\xd2\x12\x68\x6e\xf7\x84\x84\x9c\x32\x3b\x3c\xa1\x89\x14\x4a\x91\xbc\xcc\x34\x2b\xaa\xce\xba\x59\x11\x01\x11\x21\x94\x4d\x4b\xf5\x6b\x85\x69\x25\x75\xc2\xf3\xa0\xa6\xd0\xbd\xbe\x68\x16\x2b\x42\xd3\xd9\xc0\x7c\x0b\x79\xa1\x17\x55\x62\x62\x37\x1d\x68\xc2\xa4\xd2\x24\xc9\x18\x70\xed\xde\xcc\x42\x0e\x22\x0d\x03\x2f\x4e\x73\x37\x23\xca\x4d\x09\x4f\x51\xf9\x2e\xb4\xb2\xf9\x77\x15\x11\xbe\xab\x94\x29\x67\xeb\x50\xdd\xb2\xff\xa8\xaf\x4c\x63\x37\x8e\x9f\x11\xdc\x3a\x5e\xc0\xb1\x14\xb9\x8f\x1a\x24\x34\xea\x6c\xd7\xb9\x93\x61\x7c\x05\xcb\xc7\xf8\x73\x3d\x68\x61\x0e\xd4\xba\x05\xa6\xc2\xac\x70\x1d\xdc\x50\x1c\xe6\xe6\x1c\x40\x02\x46\x14\xa5\x11\x99\xcc\xab\xf3\x98\x86\x2c\xf7\x01\x94\xa2\x53\xb8\xe9\x18\x8e\x10\x83\xe1\xd4\x86\x36\x8c\x63\xa8\xb7\xcd\x0c\x2c\xd0\x95\x16\x8d\x4f\x9a\x49\x5e\x4d\xe5\x31\xb7\x2f\xd2\x89\x02\xaf\x34\x3d\x4a\xa6\x35\xe0\x2e\xc5\x4a\x4e\x18\x80\xb6\x0c\xde\xd9\x4e\x2e\xeb\x34\x9e\x9b\xf4\xe6\x78\x46\xfc\xe0\xa9\x4d\xd3\x1a\x03\x19\x4b\x06\x13\x32\x61\x98\x37\x86\x19\x55\x03\x5b\x85\x80\x62\xdc\x2e\x55\x0a\x24\xbe\xb6\x33\x0b\xf8\xd7\xef\x46\xcf\x5f\xdc\xfb\x6b\x59\xf2\x84\x36\x4a\x74\x22\xb6\x18\x9b\x90\x29\x66\x71\x39\x25\xf8\x5f\xde\xfc\xdb\x1f\xc9\x78\x61\xe4\x35\x54\xc4\xb4\xd0\x34\xf3\x04\x90\x0c\xf8\xd4\xac\x22\xb2\xdc\x6e\x7c\xa3\x85\x4f\x55\x2d\x4e\xc6\x72\xa6\xed\x04\xbd\xfd\xdd\xc3\x38\xe8\xe8\x21\x7f\x3c\x4b\x61\x7e\xd6\xd8\x42\xc3\x4c\x4c\xbb\xf5\x7a\x11\x23\x9b\x38\xc8\xce\xb6\xe6\x44\x8b\x8c\x25\x8b\x7d\x9d\x69\x5f\xbc\x84\xcc\xc4\xa3\x35\xe6\xac\x1e\xd5\x06\xd4\x4b\x21\x8a\x32\xc3\x89\x23\xdf\x54\xf8\x7c\xa5\x82\x65\xe8\xa3\x50\x23\x61\x83\xdb\xa1\x13\xd5\x0d\xbb\x74\xe7\xb8\x14\x46\x4f\xa6\x70\xc0\x13\xce\xe7\x56\xd5\x21\xe9\x6c\x8d\xfb\x86\x66\xd9\x98\x26\x0f\xf7\xe2\x07\x31\x55\x1f\xf9\xa5\x94\x42\xb6\xdf\x39\xa3\xe6\x4e\x9f\x95\xfc\x01\xab\xe8\xd6\x60\xb4\x62\xea\x62\x0a\x3d\x7e\x40\xe3\xed\x3a\x11\xe3\xdf\xd2\xc2\x83\x7a\x91\xc4\xdb\xe0\xea\x91\xe1\x33\xab\x0d\x6d\x9c\x80\xa1\xb9\x6b\x02\x3e\xb4\xde\x43\x35\x8f\xf6\xef\xde\xfc\xcb\xbf\x5a\xe6\x42\x84\x24\xff\xfa\x06\x53\x8e\xd5\xc0\x5e\x00\x78\x03\x1b\x51\x2b\xa7\x59\xd6\xd5\x4b\xd0\x64\x01\xdf\x74\x2e\x4e\x7d\x00\x47\x5e\xef\xed\x74\x6f\xad\x32\xde\xdf\xff\x15\xf5\x45\xa6\x15\x64\x93\x81\x45\x7b\xa9\xcc\x5a\xc7\x28\x5d\x1d\xbb\x2b\xaf\x3b\x52\xd0\xfe\x95\xb6\xb9\xc8\xca\x1c\xde\xc3\x9c\x25\xdd\x1c\x98\xad\x55\x69\xf5\xe6\xcd\xf4\x19\x53\x08\x02\x34\xce\x44\xf2\x40\x52\xf7\x65\x23\x54\x7e\xb9\xaa\x76\xf7\x59\xe8\x9a\x34\x10\x90\x2c\xb0\xf1\xfd\x5b\x69\x02\x39\x2d\x8a\x0a\xa1\x44\xd2\xc7\xd6\x64\x20\x6b\x42\x74\xd4\x40\x37\x62\xb0\x33\x3d\xd4\x95\x3e\x74\x6f\x64\xae\xa9\xce\x5d\x74\xce\x2d\x08\xf7\xc4\xd7\xd4\x77\xf7\x63\xb6\x36\x44\xdd\xa1\x3f\x0d\x05\xfe\xdb\xe2\x2d\xac\x20\x63\x55\x90\x43\xd5\xc6\xb0\x12\xa4\xd9\x3e\x78\xcb\x74\x37\x5f\x46\x70\x86\x86\xe5\x48\xb4\xe6\x85\x57\x4e\xe8\x9c\x6a\xa7\x1f\x79\x2f\x3b\x25\x05\x48\xc5\x94\x11\x9d\x3e\xe1\x81\xba\xc8\x28\xcb\x1b\xee\xbb\x7d\x4d\xc2\x6a\x44\x7d\x4e\x8b\xe1\x03\x2c\x3a\x6e\xb8\xc0\xe3\xb2\x29\xc0\x3f\xa7\x45\xc7\x7b\x00\x4b\xd7\x86\x5f\x03\x1d\x2f\xe7\x1b\x91\x3a\x3a\xf0\x7a\xb0\x25\x89\x5f\x44\x8d\x8d\x28\x03\xed\xfb\xca\xf9\x54\x2f\x5c\xfb\xc6\x31\x9f\x54\x57\x8e\x7d\xea\x6b\xba\x68\xf0\xfd\xbe\xd4\x7b\xa6\x22\x3e\x12\x3b\x0d\x8a\x74\xc2\xdb\xc9\xed\x8c\xf6\x75\xd4\x32\x68\xd9\x93\xd9\x50\x7d\x9d\xa1\x69\x64\x8b\x02\x04\x10\x60\x8e\xa2\x1b\x94\x1c\xbf\x3b\xde\xeb\x1d\x67\x57\x46\x8a\x82\x4e\x51\x33\x3d\x84\x05\x5a\xa6\xa9\x89\x41\x3b\x13\x8f\xf6\x7b\x1b\x5d\x52\xb8\xa7\x20\xad\x81\xcc\x67\x22\x68\x75\x6c\xe4\xa0\xdf\x11\x4e\xbb\xb6\x58\x85\x8f\x74\x41\xa8\x14\x25\x0f\x4a\x83\x46\xc7\x48\xe5\x38\xfb\xb0\xf4\xb2\xd7\x82\x83\x77\xd2\x87\x8c\x72\x5f\x63\x98\x33\x65\xe3\x15\x18\x27\x6f\x47\x6f\xdf\x04\xd3\x7e\x0b\x49\x29\x15\x9b\xc3\xad\xab\x71\xde\x70\xaa\x5c\x4d\x6e\x84\x52\x6c\x9c\x61\xe2\x96\x16\xe4\xd2\x16\x80\x5f\x7d\xd1\x2a\x70\x04\xdf\x58\xc8\x26\x5a\x69\x00\x85\x27\xf6\x04\x37\x03\x3e\xcd\x00\x01\x51\x1f\x87\x25\x49\xe2\xba\x2e\x49\x92\xd7\x95\x24\x69\xef\xbd\xbd\xbe\xab\x2f\x7c\x7f\x08\x9c\xe4\x83\xf3\x0d\xd4\x95\xed\x99\xaf\x9c\x8c\x1f\x3d\x4a\xa6\xdd\xe1\x7e\x64\x0a\xc8\x09\x5a\x25\x96\x36\x63\x10\x40\x73\xd3\x86\x15\x58\x01\x3f\x06\xc0\xb2\x5c\x3e\xba\x87\xb0\x4a\xab\xfc\xa4\x8e\xc0\x7f\x74\x06\xac\x7a\x05\x1d\xf7\xaf\xef\xe5\x19\xe5\x69\x16\xc4\x33\xaa\x59\xc9\x16\x41\x58\x38\x57\x13\xd2\x64\x89\xce\x7f\xd9\xa8\x26\x31\xa3\x8a\x70\x41\x72\xa0\x18\xa0\x69\x6e\x17\xcf\x05\x5b\x58\xcd\xf1\x68\xb0\x9b\xdd\x5e\x63\xcd\x0b\xc1\xb1\xeb\xf7\x4c\x39\xf6\x6c\xf8\x88\xd3\x40\x6c\x58\x47\x4e\xd3\x90\xd4\xee\xc6\x9c\xd6\x8b\x37\xaa\x83\x26\x97\x29\xa9\x2f\x8e\x25\x5a\x5e\x82\x8e\x81\x2b\x41\x6e\x86\x2f\x31\x4e\x70\x8d\x59\xae\x0e\x92\x09\xf2\x66\xdb\xb6\xfc\xba\xd5\xb5\xb8\xf2\xae\xeb\x29\xae\x08\x0e\xa0\xe1\xf9\x57\x1d\x34\x78\xa1\x8f\x11\xb5\x2e\x75\x57\x03\xc5\x65\x3c\x86\x21\x79\x7b\xa7\x44\x65\xee\x99\x02\x07\x49\x9d\x5f\xc1\x87\x88\x3a\xf0\x15\xaa\x04\x0f\x3d\x10\xcf\x6c\x38\xc3\xef\x9f\x17\x53\xec\xcf\x02\x08\x41\x39\xe7\x44\xc8\xa5\xd3\xee\x3c\x26\xeb\x24\x96\x98\x6f\xbd\x04\xcd\x65\x37\x7f\x03\xf3\xd3\x2c\xca\x7f\x97\x6c\x4e\x33\xb0\x18\xf6\x9e\x35\xec\x55\x98\x50\xe5\xf8\x50\xd5\x46\xa7\x1f\xa2\xda\xb1\x3e\xe8\x61\xa3\x06\x19\x49\x9e\x38\x3a\x22\x27\x76\x8c\x63\x0b\xb2\xbb\x5f\x21\xd7\xad\xd5\xe5\xe7\x22\xa0\x72\x6b\xbc\xf5\xba\xfc\x5c\x50\x8c\xd3\x28\x0e\x62\xe1\xfe\x27\xcc\xe8\x1c\x10\xd3\x98\x65\x54\x66\x18\x94\x7e\x67\xa7\x8c\x8c\x4b\x4d\x80\xcf\x99\x14\x3c\x37\xc7\x0f\xc1\x67\x0c\x67\x92\x80\x60\xf0\x09\x28\xf2\x9b\x93\x4f\xe7\xb7\x98\xb4\x74\xea\xd0\xf2\xdd\xfb\x95\x0a\xf1\x01\x96\xde\xa1\xd1\xdd\x21\xee\x37\xe2\xdf\xdd\x6c\x17\x94\x4f\xfc\x5c\x98\x77\xcb\x4b\x5d\xd2\x0c\xa1\x9f\x93\xac\x34\x77\xe1\xde\x76\x76\x7c\x1b\x78\x88\x25\x2f\xa6\x09\xdc\x01\x7f\xbf\x67\x9d\x8e\x6b\x8c\x83\x7a\xd1\xd8\xaf\x2b\x30\xe4\x9d\x6b\x3c\xac\x01\xa1\x5c\x11\x74\x8e\x55\x05\x4c\xd9\xcc\xc3\x71\x77\x71\xb7\xf0\x0c\x2c\x9d\x60\x93\xbf\x7d\x4d\xd2\x15\x0b\x23\xd6\x68\xd9\xbb\x0d\xbf\xc3\x61\x88\x77\x0c\x3a\x18\xa2\xe3\xec\xfa\x94\xab\x0b\x5c\x9a\xdd\x28\x0e\xdb\xe8\x77\x95\x26\x6b\x36\xc2\xfb\xeb\xbb\x66\x41\x0f\xeb\xfc\x13\x3b\xaf\xe4\x4d\xdd\x45\x5d\xf5\x06\x2b\xe2\x55\x0e\x54\x90\x53\x2b\x4e\x23\xf2\x6c\x25\x5f\xbf\xbf\xbe\xdb\x71\x2c\xbf\x9b\xad\x30\x3c\xa6\xca\xc6\x48\xbf\xbf\xbe\xb3\x71\x6b\xbb\xd1\xde\xd9\x91\xd2\xdd\x07\x81\x00\x6e\x88\xad\xd5\x81\x63\x87\x73\xb9\xf3\x2a\x1e\xc4\x2c\x3e\xfa\x7c\x2d\x35\xe4\xea\x86\xd0\x34\x95\x18\xce\xdc\xe5\x2c\xb7\x10\xed\x68\x51\x54\x51\xa9\x58\x24\x86\x2a\x68\xbe\x7a\x63\x0f\xa0\xe0\xd3\x71\xfd\x6c\x7b\x5f\x16\x19\xb3\xe1\xa7\xcd\x21\xea\x12\x3a\xb9\x98\x77\xe1\x4f\x21\x1e\xc6\xce\xfe\xc5\x20\xf9\x20\x2a\xe6\x9c\xe8\x5a\x9e\x36\xf6\x2e\x95\xa0\x44\x36\xaf\x8b\xe7\x07\xef\x4e\xc7\x8e\x30\x24\xb1\xda\x9d\xbe\x02\xed\x0b\xed\x4c\xe0\x5a\x32\x58\xdd\x95\xe4\xd6\xbc\x5d\x89\xec\xac\x22\x81\xcd\x01\x53\x96\x5c\x85\xe0\x0e\x23\xe3\x30\x3e\xef\x96\xe8\x99\xcd\xba\xa1\x1a\x4f\x26\x95\x5e\x14\xc0\x37\x0f\x78\xc5\xbd\x1c\x91\x25\x64\xfa\xf4\xfd\xf5\x9d\xbd\x49\xed\x74\x39\x3c\x6f\xb5\x76\xef\x74\xbe\xe4\xc8\xfe\xcb\x24\x85\xb8\x6d\xa2\xe5\x94\x56\x25\x4d\xd9\xda\x09\x3e\x56\x81\x10\xa9\xb7\x2e\x34\x21\x2c\x11\x38\xc0\x72\x10\x84\x54\xda\x8e\x0d\xf1\x69\xaf\x4f\x4c\x16\x8e\xb6\x97\x77\x8d\x7a\x57\x28\xa0\x32\x99\x75\xd9\xd8\xb1\x2f\x0b\x4b\x09\x49\x85\xcd\x10\x9b\x08\x89\x1e\xf8\x21\x8a\x3a\x99\x10\x0f\x65\xf1\x32\xd2\x8d\x1b\xb8\xa0\x7a\xf6\x62\x97\x48\x6b\x8c\x5e\xbe\xe9\xbe\x67\x53\xae\xba\xe4\xb9\x04\x2a\x5f\xa0\xad\xca\x85\x23\xd7\x48\x6d\xbb\x5f\x46\x2d\x33\xd8\x45\x56\x2a\x0d\xf2\x1b\x26\x95\x3e\xda\xb5\xa7\x4f\x34\x63\x0e\x38\xd9\x86\xb0\x1c\x37\xbb\xfb\x0b\xd3\x33\x57\xa8\xf7\x78\xd0\xfe\xca\xfc\xed\xc8\x38\x26\x42\x92\xe3\x6b\xc1\x61\xe7\xe0\xa1\x25\x0d\xb4\x12\x7c\xaa\x2b\x7d\xa3\xcc\xe6\x26\x51\x41\x66\x41\x55\xf0\x8b\xce\xe7\xec\xde\xd5\x4e\x36\xf4\x78\x49\x41\x81\x26\x14\x8b\x4e\x62\xdf\xb3\xba\x60\xb1\x2d\x8e\x66\x0b\x3d\x0b\xa7\xf3\x2e\x1a\x4b\xbb\xe3\xe0\x8d\xea\x6a\x5a\x6c\x5e\x80\x2e\xaa\xed\xce\xe7\x0c\x11\x43\xc0\x95\x93\xf9\x81\xf1\x87\x1d\x0f\x79\xd8\x09\xb9\x5c\x19\xbd\x01\xd1\xe2\x7d\xef\x8c\x5b\xd0\x04\x23\xea\xd1\xb1\x28\xb5\x2f\x71\xd3\xf4\xc2\x33\xfe\x5f\x76\x5f\x60\x00\x2b\x02\xe0\xec\xba\x2a\x6b\x0c\xe0\x6a\x60\xc3\x5c\xbc\x85\x5b\x2d\xb8\xa6\x58\x6b\xfb\xbd\x48\x1e\x40\x92\xcc\xd0\xbc\xeb\xe6\xab\xf3\x58\x5b\x55\x95\x77\x4e\x6b\xe9\x1a\x91\x01\xc5\x0c\x72\x90\x34\xab\x0c\xa0\xaf\xba\xe8\x3f\xb8\xdb\xbb\x22\xa3\x99\xc4\x69\xcb\x23\xba\x42\xb9\x22\x1d\x91\xcb\x75\x4f\xe5\x74\xe1\x0b\xbf\x33\x8e\xbe\xc3\xcf\x4c\xe9\xdd\x6f\x98\x42\xa4\x4d\x8c\xd4\x52\x81\x1c\x56\x98\xb9\x84\xba\xe2\x8b\x3e\x9f\x36\x85\x71\x39\x9d\x32\x3e\x1d\x59\xf1\x00\xc5\x90\xba\x40\x6c\x6d\x0b\x7b\x9c\xc1\xae\x11\x32\x89\x04\x8a\xf1\xc3\xa8\xac\xd8\x90\x09\xd6\xec\x3d\x17\xa9\xed\x7c\xbc\xb0\x16\x58\xbf\x27\x2b\x20\x25\x72\xc5\x89\x90\xae\x2e\x06\x4d\x53\xb2\x73\x98\xce\x9a\x15\xc1\xbe\xea\xf9\xb5\xc4\x95\xb5\x7f\xfe\x58\xd5\xbf\x6a\x2c\x90\x2a\xc7\x46\xf6\x2d\xe5\xae\xb5\xae\xbb\xca\x28\x9d\xe4\x93\x50\x59\xf4\x9c\xd7\xdb\xf3\xa2\x89\x44\x40\x89\x86\xbc\x10\x92\xca\xc5\x72\xba\x89\xb9\x49\xcc\xf6\x35\x0b\xb4\x34\xb7\x37\x22\x35\x42\xc2\xce\x64\xac\xd9\xb6\x73\x66\xd4\xce\x75\x3b\x77\xed\x79\xc2\xab\x8d\x0b\xe2\xd7\x8c\x74\xa0\x42\x25\x33\x48\x4b\x44\x9f\x9a\x96\x54\x52\xae\xc1\xf0\x4f\x17\xc2\xba\x68\x05\x72\x54\x48\x0d\x15\x6c\xdb\x02\xf3\x46\xb1\xb8\xb3\xf9\x04\xeb\x4a\x77\x09\x37\x71\xc2\xb1\xe9\xa8\x01\x07\x71\x3f\x03\x62\x24\xc9\x0c\x34\x4e\x3e\xcc\x59\xa2\xfd\x20\x13\x5c\x84\x35\x5b\x3f\xa1\xa5\x85\x7a\xd8\x3d\x00\xe8\x46\xb8\x3a\xaa\x09\x98\x3b\x49\xab\x7a\x6a\x5d\xd6\x23\xeb\x14\x57\x72\xef\x4f\xf6\x3a\x82\xeb\x83\xf9\xcc\x91\x44\xa3\x48\x67\xa6\x89\x6f\xf7\x04\x63\xae\xd6\x78\xcd\x4a\xec\x38\x54\x80\x01\xa6\x7b\xca\x43\xa7\x54\x85\x10\x5b\x0f\x95\xd3\xbd\x25\x01\x9d\xcb\x69\x99\x63\xd2\xbc\xd3\x6d\x81\x6b\xb9\x28\x04\xeb\xea\xb7\x37\x47\x0d\xdd\x8c\xc7\x8a\x5c\x7c\x78\xdf\x04\x7c\x6b\x96\xe9\xf3\x70\x80\xdd\x06\xf9\x14\x37\x40\x81\x5c\x4d\x08\xad\x84\xbe\x4e\x14\xd5\x17\xb5\xb3\xf9\x38\xd7\x6f\x45\xa0\xb7\xc0\x32\x5e\x18\x09\x16\xe5\xf4\x46\x5d\x9f\x64\x46\xf9\xd4\xb0\xaa\xf7\xa2\x34\x2f\xf6\x9b\xdf\xe0\x4b\x48\x48\xcb\xa4\x63\x70\x29\x02\x46\x3b\x54\xa4\xdf\xf8\x30\x2f\x57\x40\xcc\xe8\xa2\xa0\x12\x5a\xf8\xa9\x69\xce\x9e\x95\x72\xdf\x11\x36\x82\x11\x39\xfa\x4d\xe3\xab\x23\xa4\xb8\x13\x35\x85\x14\xe6\x55\x1c\x08\x13\xbe\x7d\xc6\x34\xf2\x8f\xa3\xe6\x08\x23\x72\x69\xe8\xc2\xa8\xe9\x6a\x6d\x1b\xb8\x3a\xe3\x7a\x65\x07\x44\xc2\x94\xca\x34\x83\x8e\x00\x22\x62\x52\x29\x19\x16\xa8\xd2\xed\x2a\x64\x8c\x88\x2b\xc0\x85\x1e\xc5\x71\x7d\x6f\x8b\x68\xa7\xa9\x7a\x50\x67\x56\x9d\x19\xa6\x54\xd3\x21\x2d\xac\x3d\x88\x09\x7e\x66\x4d\xdd\x43\x57\xa4\x7c\x48\xdd\xe9\x1d\x56\x3b\xfb\xec\xd7\x0e\x7e\x75\x48\xab\xa7\x18\x1f\xd2\x21\x96\xed\xee\x6c\xbf\xd9\x43\xda\x5d\xf4\xc0\x99\xa0\x72\x4c\x01\x65\xf7\x63\xb0\xe9\xcb\x8a\x2b\xdb\xa5\x18\x91\x6b\xa1\x7d\x75\xfd\xb4\x4e\x34\x0c\x28\xce\xde\x64\xdc\x97\xd7\xf7\xb7\x7f\xbd\xf9\x78\x75\x7d\xdf\xf3\xef\x9e\x7f\x63\xeb\xf9\x77\xcf\xbf\x3b\x0c\x7c\x28\xfc\x1b\xf8\x7c\x5f\xbc\xbb\xb2\x77\xad\x33\x30\x2e\x55\x7b\x0d\x4c\x14\xff\x8a\x12\xed\x2f\xf9\xfc\x13\x35\xaa\x63\x21\x41\xa1\x82\x62\x34\xd6\x75\x41\xca\xee\x01\xb4\x04\xd6\x31\x9d\x5f\x6c\xa6\xfd\x1e\xf3\xe4\x23\xe6\x89\x5e\x37\x6a\x78\xac\x5b\xb5\xba\x64\x10\x25\x17\x7f\xbb\x7a\x7f\x79\x7d\x7f\xf5\xcd\xd5\xe5\xed\x5e\x53\x08\x02\x8b\x96\xc6\x4b\x1e\xd8\x45\x3e\x0a\x18\xa6\x96\xac\x0a\x09\x73\x26\x4a\x95\x2d\xaa\xea\xf8\xeb\xd9\xd5\x2a\x68\x41\x60\x2e\xd6\xc2\x7b\x73\xd6\x0f\xb8\x24\xdb\xad\x93\xd3\x02\x86\xdf\xb3\x84\xe7\x88\x88\x21\xe7\x05\x8c\xbf\x46\x42\xdc\x5e\xda\x0b\x18\xb7\x93\x9c\xb8\x49\xe6\x0b\xa0\xa3\x2d\x2d\x06\x74\xd4\x4e\x56\xd9\x3f\x27\xfb\x46\x8a\x3c\x12\x37\xbb\xb3\x76\x63\x1f\xc2\xb0\xee\xa8\x56\xc1\x4d\x4d\x29\xc4\x69\x8e\x75\x89\x12\xa3\xb5\xe6\x85\xee\x98\x5e\x41\x62\x95\x67\x8f\x53\xc9\xdc\x06\xa7\x7f\xa0\xc5\xf7\xb0\xb8\x85\xc0\x62\x4c\xed\xf9\xc6\x30\x07\x45\x28\x79\x80\x85\x8d\x61\xbc\xf0\x83\x85\xd5\xa3\x3a\xc0\xea\xf6\x0f\xd0\x0d\xf3\xdd\xb7\x78\x65\xe9\x1f\x20\x00\x91\xc0\xb7\x95\x9a\xe5\x66\x09\x51\xcc\x37\x6b\x7a\x50\x55\xda\x0f\xb5\x0c\x7f\x53\x7a\x74\xd7\x43\x84\x89\x5b\x46\xa5\x81\xc9\x04\x12\xed\x33\xdd\xed\x6e\x1e\x60\x32\x64\x5a\xda\x52\x9a\x34\x79\x78\xa4\x32\x55\x24\x11\x79\x41\x35\x1b\xb3\x8c\xe9\x45\x58\x1a\xbc\x6f\x78\xc3\x57\x38\xde\x96\x29\x92\x2b\xae\x34\xc5\xab\x50\x38\x7b\x9b\x59\xed\x1a\x4c\x17\x31\x77\x2d\x37\xc5\x84\x1b\x2a\xc3\xeb\xdf\x1b\x52\x72\xa1\x34\x49\x40\x1a\xa1\x2e\x5b\x90\x47\x29\x78\x47\x88\xeb\x76\xdb\xb1\x8a\x8b\x98\x1b\x59\x10\x1e\xcf\x5c\x3a\xde\xd0\xbc\xf8\xd0\x32\x2b\x75\x86\xc9\x1e\x67\xbf\xc6\xff\x1c\xd2\x29\x22\x3e\x99\xef\x1d\x39\x3a\x0a\xec\x4b\xf8\xd8\xa0\xb8\xa7\xf2\xce\xc5\xac\x35\x45\xa7\xea\x42\x21\x16\x78\x17\xf9\x94\x87\x1b\x70\x5a\x40\xa4\x69\x0e\x43\x8d\xb1\xad\x65\x10\xca\x69\x11\x66\x0f\xaa\x1b\xb2\x83\xb8\xb7\x77\x30\x0f\xac\xaf\x7f\xcb\xac\xaa\x62\x98\xe9\x3b\x0f\xa3\xa1\x48\x0e\x9a\xa6\x54\xd3\x91\x39\x10\x83\xf6\x9f\xaa\xa0\x09\x0c\xc8\xdf\xab\x0f\x33\x3a\x86\x4c\xfd\x78\xfc\xef\xdf\x5f\xfe\xf5\x3f\x8e\x7f\xfa\x7b\xf3\x3b\x14\xd7\xd0\x3e\xd9\x7c\x20\xf0\x15\x30\x24\x89\x8b\x14\xae\x91\x3a\xfc\xd3\x69\x7a\xe7\x49\x22\x4a\xae\xdd\x17\x88\xa1\x3e\x9a\x09\xa5\xaf\x6e\xaa\x3f\x0b\x91\x2e\xff\x15\x50\x29\x8f\x1c\xa6\xdc\x83\x6b\x1b\x80\xa9\x68\x5b\x3c\xe9\x87\x16\xec\x13\x48\x15\x04\xc3\xe7\x5b\x3b\x31\xc2\xf6\xea\xb7\xb1\x4a\x66\x90\x53\xfc\xe7\x37\x7e\x0a\xcc\x7d\x5c\x55\xb9\xe0\x08\x56\x6f\xee\xc0\x76\xe9\xdc\xa3\xf9\xdb\x20\x8d\xd3\xb6\x88\x9c\xbf\x5a\xc1\xc8\x13\x86\x33\xe2\x66\xcb\x72\x80\x4a\x7e\xf4\x56\x8a\x3a\xda\xf0\xfc\xe6\x8a\xcc\xed\x0c\x1f\xd0\xe4\xbc\x14\xbb\xf6\x31\x4c\xdf\x1c\x34\xdb\x6e\x46\x5a\xb5\xec\x65\xef\x08\xc2\x29\xf9\xef\x5d\x49\x03\x55\x95\x71\x04\xa5\x43\x65\x9b\x13\xdb\xe5\x28\x29\xca\x81\xeb\x7e\x94\x43\x2e\xe4\xa2\xfa\xb3\x8a\x0f\x1b\x2a\x2d\x24\x9d\x22\x20\x9d\x1d\xdc\xfe\xac\xfa\xcb\xfe\xb0\x45\xde\xea\xaf\xad\x41\x32\x29\xa5\x91\xd3\xb3\x45\x8d\xf4\xf4\xd5\xb1\x6c\xbf\x6e\x07\xc2\xb1\xab\x6d\x75\x1d\x5f\x91\x3b\xae\x23\x5a\x51\x4d\xac\x66\x11\xad\x40\x0e\x38\x7a\x50\x09\xac\xd6\x54\xc9\xe7\x64\x4e\xa5\x0a\x29\x6c\x6e\x5b\x44\x26\x9d\xb2\x39\x53\x22\x00\x14\xa8\xea\x68\x55\xa2\xf6\xc8\x0a\xae\x44\x89\x4d\x54\xa8\xfc\x1e\x9f\x0b\x2c\x57\x56\x1d\xf6\xa5\xdb\xec\x6d\xa8\xb2\x40\x48\x41\xb5\x06\xc9\xdf\x91\xff\x75\xf2\x9f\xbf\xfd\x79\x78\xfa\xa7\x93\x93\x1f\xdf\x0c\xff\xed\xa7\xdf\x9e\xfc\xe7\x08\xff\xf1\xcf\xa7\x7f\x3a\xfd\xd9\xff\xf1\xdb\xd3\xd3\x93\x93\x1f\xbf\xff\xf0\xed\xfd\xcd\xe5\x4f\xec\xf4\xe7\x1f\x79\x99\x3f\xd8\xbf\x7e\x3e\xf9\x11\x2e\x7f\xda\xb2\x93\xd3\xd3\x3f\xfd\x26\x98\xf4\x08\xf5\xcb\x6d\x8b\x59\xc5\xbc\xdd\x63\x24\xed\xf0\x45\x2a\x9a\xd7\xcd\x6f\xaf\xd8\xe7\xdf\x67\xe6\xbe\xab\x6f\xb3\x4a\x0a\x39\xa0\x03\xfe\x52\x82\x86\x82\x44\x82\x7e\x0d\xcb\xae\x1d\xa9\x51\x70\xc1\x25\x55\xa3\x12\xf7\xb5\xdd\xa0\xbf\x04\x63\xaf\xd7\x73\xec\xba\xd6\xa2\xfb\x44\x8a\xdc\xe1\xb7\x5b\xcf\xf7\x1c\xb3\x31\xdd\x73\x0f\x10\xe0\x15\xf1\xad\x37\x0e\x77\x6e\xbd\x71\x78\x03\x29\xbd\x71\x38\xa8\x7d\x91\xc6\xe1\x3b\xcb\x93\x7e\x91\x96\xe1\xf8\x98\x8b\x1d\x63\xba\x62\xc2\x2d\x02\x9f\x77\x8d\x07\x88\x19\x04\xe9\xcd\x1e\xcd\xa2\x9a\xdb\x45\x1a\x75\x8f\x6a\x37\x2b\x57\x85\x35\xd5\xa1\xf2\x56\xa4\xcd\xd7\x87\xa1\x91\xf3\x2c\x23\x8c\xdb\x0b\xda\x74\xd0\x69\xf4\x1a\xb2\xc3\x21\x5f\x3b\xa4\xe3\xb9\x79\x55\x9f\xfa\xd8\x2e\x62\x8d\x99\x72\x98\xa9\xf9\x17\x9b\x08\xf9\x60\x73\x23\x95\xc6\x29\xf1\xa5\xc9\x3b\x91\x53\xa9\xa1\x36\x72\xc6\x5c\x14\x54\x29\x91\xd8\xbc\xd1\x0a\x6a\x01\x6b\x8a\xba\xe9\xc1\x37\xd0\xf4\x01\x43\xc4\x12\x48\x81\xef\x9a\xd1\xeb\xdb\x27\x8b\x39\xe1\xd7\x61\xbc\xc0\xd2\xd8\x7c\xee\xee\x2f\x92\x7a\xd8\x13\x7c\xe3\x78\xe3\x7e\x5d\x31\xb1\xe6\x0c\xbb\x60\x9c\x46\x68\x2c\x4a\x9b\x75\x6a\x27\x46\x14\x8b\x49\xed\xe1\xc3\xe8\x26\xcb\xd2\xbb\x6d\xe4\x60\x45\x22\x5c\x6c\xaf\x82\x6d\x82\xf4\xb1\x15\x79\xbd\xf6\x82\xb6\xe5\xf4\xaf\x21\x3e\x29\x5c\x82\x8f\x2b\xbd\xbf\x84\xe4\x7e\x28\x52\xfb\x81\x48\xec\x2f\x23\xad\x1f\xa6\xa4\x1e\x4d\x4a\x8f\x23\xa1\xc7\x91\xce\x77\x08\xdb\x88\x29\x91\xc7\x91\xc6\x5f\xc2\x16\x57\x48\x98\xb0\xcf\x91\x38\xbe\x87\xde\x21\x1a\x3e\xa3\x65\xa6\x90\x50\x00\xaf\x90\xdd\x7c\x51\x54\xa0\xc9\xec\xcb\xc9\x5b\xb0\x06\xa4\xb8\xf7\xe2\xdd\x3a\xe3\x55\x7f\x29\x92\xfe\x52\xdc\xa1\xf5\x97\x62\x7f\x29\xbe\xca\xa5\xe8\xb8\xd5\xd7\x7f\x23\x46\x4e\x8b\xc5\x84\xff\xbd\xd7\xdf\xb0\x64\x04\x00\x09\xef\x78\x14\x6b\xc0\xa2\x33\x1c\xb9\xcb\x89\x0b\x3a\x67\x38\xea\x4d\x99\x65\x5d\x40\x49\x6d\x8b\xb1\x00\x57\x38\xed\x45\x99\x65\x0e\xc8\xb2\xdb\xec\x7f\xe4\x78\x81\x9d\x67\x8f\x74\xa1\x06\xe4\x1a\xe6\x20\x07\xe4\x6a\x72\x2d\xf4\x8d\xb5\x50\x74\xeb\xb7\x99\x4f\x65\x3b\x27\x6c\x42\xde\x65\x54\x83\xd2\x44\xd3\x29\xda\xcb\xea\x52\x2b\x42\xb6\x06\xad\x8b\xc9\xed\xd1\x70\x14\xbe\x37\x7f\xed\xd1\xfe\x86\xfb\xd9\xab\x19\x9b\x40\xb2\x48\xb2\x70\x36\xf1\x83\xef\xc9\x67\x82\x79\xf1\x00\x43\x87\xd6\xc0\x89\x7d\x81\x98\xed\x85\x50\xfa\x4e\x53\xa9\xf7\x0d\xdc\x7e\xe3\x09\x31\x93\x9d\xd0\x2c\x83\x94\xb0\x3c\x87\x94\x51\x6d\x04\x41\x3a\xd1\x20\x9b\xa5\xe9\xf1\x39\x5b\x90\x6f\x64\xeb\xf7\xf9\xda\xa6\x92\x4c\x28\xcb\x54\xf7\x88\xf0\x15\x23\xb7\xad\xa7\x4d\x5d\x2d\xc7\x06\x1c\x20\x4d\x12\x21\x53\x4c\x76\x15\x1e\x36\x0f\x5f\x22\x84\x3f\x99\xf6\x11\x45\x85\x9c\x72\x3a\x85\xdc\x95\x18\x6c\x93\x35\xce\x44\xf2\xa0\x48\xc9\x35\xcb\x5c\x21\x6f\xf1\x80\x02\x71\x86\x27\xb5\xf3\xd0\xdd\x19\x40\xf5\xcf\x61\x75\x08\x87\x86\x2a\x75\xf6\xeb\xfa\x2b\xfc\xa0\x23\x71\x11\xd4\xb2\x18\x4a\x19\x7c\x86\x24\x44\x40\x6c\x1b\xc9\x3f\x43\xd2\xa8\xe0\x4b\x3d\x74\x93\xc5\x63\x44\xc0\xa4\x48\xbe\x25\xdb\x22\xc5\xd8\xc4\x8a\x6b\x09\x00\xaa\x6a\xb6\xd8\x61\x1b\x17\x6e\x11\x98\x72\x33\x6f\xff\xcc\x18\x87\xf6\xc2\x28\x5b\xbf\x04\x9a\xb0\x96\xe6\xcf\x95\x02\x6d\x3e\x19\x39\x98\x34\x4f\x8b\xa1\x4d\x0a\xa1\xc9\xc9\xf1\xd9\xf1\xe9\xca\x1e\x39\x36\x1a\x75\x06\x6a\xa1\x34\xe4\x16\x52\x34\xa9\x5f\x4a\xb1\xbc\xc0\x82\x81\x90\x1c\xfb\xfa\xa6\xc1\x94\x99\x3b\xd2\x62\x1c\xe3\xac\x38\x78\xaf\x01\x51\x82\x68\x49\x53\xe6\x6c\x59\xf8\xa9\x79\x48\xcb\xd2\x41\x16\x9f\x1c\xff\x7c\x3c\x20\xa0\x93\x53\xf2\x28\xf8\xb1\xc6\xe9\x1b\x91\x7b\x41\x4a\x15\x3e\x63\x15\x21\x0b\x51\x12\x0e\xe0\xce\x56\x85\x6a\x6e\xae\x1b\x22\x4a\x6d\xad\x6a\x54\x87\xc0\x92\x35\xdb\xe5\x67\xa6\x5d\x4e\x90\xe1\xdf\x6f\x96\x6a\xc8\x66\x6c\x0e\x67\x33\xa0\x99\x9e\xd9\x88\x75\x2e\xf8\xf0\x1f\x20\x05\x82\x98\x71\xf7\x4d\x28\x19\x61\xae\xc0\x66\x0b\x70\x0b\xae\x12\x14\x25\x58\x25\xb2\x76\xe9\x9b\xb9\xf6\xbe\x85\xce\x22\x11\x59\xe6\x47\xdf\xdd\xdf\xdf\x7c\x0b\xba\xc9\xe5\x39\x7e\x48\xbe\xbd\xbc\xf7\x79\x0a\x0d\x60\xef\x03\x60\xef\x71\x02\x28\x87\xa4\x10\xf2\x10\x6e\x99\x99\x50\x41\xcb\x49\x5e\xe0\x8a\xf9\x4e\x28\x6d\x0d\xf8\x5a\x18\xb6\xcd\x21\x31\x9b\xa0\x1d\x74\xef\x11\xd3\xaf\x6e\x46\xe4\xaf\xa2\x34\x13\x32\xa6\xe3\x6c\x41\x1e\x29\x77\xd6\xee\xb0\x48\x59\xd3\x8e\x0c\x29\x47\xe6\x06\x31\x3b\xff\x3b\xa0\x29\x48\x85\x0c\x1a\x68\x60\x4e\x4c\xc4\xe3\xde\xa0\x2d\xea\x52\x5e\x94\x4a\x8b\x9c\xcc\xdc\x6b\xb7\x01\xce\xdc\xe1\x1c\xd9\xe3\xea\x50\x6e\x24\x14\x96\x89\xbb\xdf\x7c\x75\x2c\x7a\x85\x7b\xd9\x79\x77\x9f\x8f\xad\x98\xda\x9c\x36\x67\x31\xb7\xf8\x29\x8e\xb7\x99\xad\x1a\x2d\xb6\x31\x42\x4c\x38\x89\x18\x17\x4e\xc2\xa0\xcf\x96\x3b\x42\xef\x41\x70\x4f\xf1\x42\xcd\x49\xb4\x70\x6a\xf2\x22\x21\xd5\xc4\x45\xca\xb9\xcd\x67\x3d\x47\x61\x75\xdd\x96\x3b\x6f\x94\xd3\x4a\x28\x17\x9c\x25\x34\x63\xff\x80\x94\x94\x85\xe0\x2e\x7f\x0a\x25\xdb\x84\x2a\x18\xa2\xbb\x95\x5b\x76\xae\x1a\x20\x5c\x86\x3b\x68\x21\x50\xdc\xc3\xa0\x27\xc3\xee\x2d\xd5\x71\x48\x8d\x1a\xf9\x1b\x8c\x28\xd7\x6c\x2b\x1e\xda\xd6\x62\xc5\xd9\xf1\xe4\x8b\x10\x27\x89\x4d\x7c\x0b\x4e\xba\x5e\x4d\xb9\xd6\x82\xd0\x24\x41\x98\x31\x7b\x5d\x21\xe3\xb5\x05\x66\x0f\xe6\xde\x36\x22\xe0\xa1\xc9\x5e\xd6\x89\x2d\x09\x2f\xf3\x31\xc8\x1a\xaf\x42\xea\xd5\x39\x8d\x62\x75\x71\xc3\xda\xe1\xbc\xdb\xcf\xcb\x18\x94\x4f\x81\xbc\x35\x23\xff\xf1\x0f\x7f\xf8\xfd\x1f\x22\x8c\x63\x5e\xaf\x8a\x14\xe6\xe4\xea\xfc\xfa\xfc\x6f\x77\x9f\x2e\x10\x05\x2f\xb4\xfb\x48\x89\x90\xb1\xd3\x20\xa3\x26\x41\xbe\x68\x0a\x24\xe2\x49\x04\x73\xd9\xd8\x47\xe2\x0e\xa9\x32\x9b\xb0\x54\x16\x39\xcf\xe9\x24\xce\xba\x6d\x4d\xcc\x2a\x42\xea\x52\xd3\x4f\x66\x18\xd6\x41\x70\x2a\x95\x01\x14\xd1\x34\xfe\x3b\xd3\x5b\x0b\x0c\x98\xa4\xbe\x28\x3c\x5a\x98\xda\xb6\x7c\x57\x17\x0e\x69\xf8\x8a\x94\x7f\x05\x89\xe0\x69\x88\x0a\x10\x4b\xa4\x75\x94\x44\x3d\x73\x77\xb6\x4f\x6f\x22\xae\xaf\x12\x37\x18\x6a\x92\xa1\x2b\x4a\xaa\x55\x8d\xc3\x27\x6d\xc6\x3f\xf6\xf6\xc7\x7f\xe9\xee\x20\x4b\x8a\x3b\x91\x3c\x44\x34\x91\x05\x32\xb0\xf7\xe6\xa4\x25\xd6\x17\x78\x7f\x71\x63\x89\x33\x2b\x73\xfd\xf1\xbe\x86\xf7\xc0\x74\x96\xda\xad\xfb\x9d\xf3\x16\x52\x9e\x92\x07\x28\xc2\xb4\x4b\xc3\x30\x7d\x5c\x5a\x3b\x2c\x0d\x6d\xef\xd2\x39\x91\x6d\x0a\xad\x65\x04\x3e\x9c\xcc\x4a\xc4\x61\xc0\xc4\x0d\xbf\x37\x3a\x02\x9d\x12\x32\xa1\x2c\x23\x14\xad\xf2\x9a\xe5\x60\x73\x78\xd0\xd8\x5f\x07\x22\x7c\x45\x0c\xe7\x6b\xb5\x36\x1e\xd7\x25\x38\x77\xb5\x1a\x86\x22\x1f\x7c\xdd\x6a\x80\xe3\xd9\xb2\x0a\xa4\xee\xd5\x80\x6d\x5b\xaf\x06\x74\x54\x03\x0a\x09\x77\x5a\x74\x96\x35\xa3\x05\xdc\x58\x32\x36\x84\xdb\x8c\x61\x22\x24\x2c\xc7\xdb\x34\xe2\x60\x5c\x28\x76\x40\xa8\xe9\xf9\xcd\x55\xe5\xfb\x12\xad\x58\x17\x9b\x6f\xea\x8b\x81\x66\x6c\x0e\x1c\x94\x3a\xc3\xc8\x9a\xb2\xb0\x86\x65\xbc\xda\x4a\x09\xdd\xa3\x7c\x0a\x09\x90\xe3\x3c\x0e\x6a\xc4\x18\xf3\xba\xc0\xed\x87\xa0\x13\xeb\x37\xf7\x61\x45\x2e\x0c\xcc\x4f\xd7\x24\xc8\x9d\xdf\xa8\xdb\x29\xa9\x9a\x01\xe6\x3c\xc2\x67\xa6\x95\x1d\xf4\x06\x71\x55\xfc\x8c\x1b\x79\x61\x2a\x69\x02\xa4\x00\xc9\x84\x11\x31\x4a\xae\x53\xf1\xc8\xc9\x18\xa6\x8c\x2b\xbf\x62\x21\x24\xf9\x2d\x81\x91\x44\x4c\x55\xf5\xba\x46\xe4\xb6\x05\x68\xef\x10\xa4\x12\x51\xf3\x4c\x37\x45\x83\x48\x53\x82\xc2\x0b\x6e\x83\x92\x66\xd9\xa2\xde\x78\x3e\x1f\x5a\x6f\x9e\xa1\xee\x1b\xc2\xce\xec\x49\xc9\xf1\x45\x53\xc8\xe8\xc2\x66\xfe\x4e\x18\x47\xeb\xaf\x54\xa7\xa3\xf0\xd0\xac\xce\x04\x0a\xd9\xe8\x73\xe3\xce\x60\x8a\x48\xa0\xc9\x2c\x44\xb2\xeb\x63\xc0\x9e\x6b\x7d\x0c\x58\x1f\x03\xd6\xc7\x80\xad\xb6\x3e\x06\xac\xdd\xfa\x18\xb0\xcd\x04\x1d\xb2\xd3\xae\x8f\x01\xeb\xad\x32\xab\xad\x8f\x01\xeb\xd4\xfa\x18\xb0\x67\xdb\xc1\xb1\xe8\x3e\x06\x6c\x8b\xd6\xc7\x80\x6d\xd9\xfa\x18\xb0\x3e\x06\xac\x8f\x01\xeb\x63\xc0\x02\x5a\x1f\x03\xb6\xfb\xeb\xf5\xce\x9f\xee\xad\x8f\x01\xeb\x63\xc0\x76\x6c\x7d\x0c\xd8\x52\xeb\x63\xc0\xfa\x18\xb0\xa7\x5a\x1f\x03\xd6\xc7\x80\xb9\xd6\x5b\x1b\x57\x5a\x1f\x03\xb6\xa6\xf5\x31\x60\xbb\x8d\xd3\xab\x01\x61\x9d\xbd\x88\x1a\xa0\xb4\x28\xee\xd8\x34\x00\x68\x30\xd6\x31\xb8\xab\x28\x71\x28\x84\x8a\x3c\xce\x58\x32\x23\xca\x7e\xe8\xed\x58\x88\x50\x66\x0e\x44\x33\x4a\xa7\xbe\x49\xc6\x60\x54\x04\xf3\x5a\x45\xc8\x6d\x72\x35\x41\x07\x72\x03\x24\xcd\x9c\x0a\xc7\xd6\xcc\x38\x0d\x38\xfe\xb6\xf8\xec\x6f\x37\xc6\x8d\xee\xd2\x9d\x82\xc6\x7c\x24\x94\xdb\xea\x97\xf8\xfa\x58\x2d\x8f\xdc\x88\x54\xf9\x0a\x00\xfc\xff\x67\xef\xdd\x7b\xdb\xc8\xb1\xbc\xe1\xff\x9f\x4f\x41\x64\x06\x8f\xed\x6d\xc9\x4e\xe6\x86\x99\xc6\xe2\x6d\x78\x1d\x77\xda\x98\xc4\x11\x6c\x27\xf3\x0c\x7a\x7a\x7b\xa9\x2a\x4a\xe2\xba\x8a\xac\x26\x59\xb2\x35\xe8\x0f\xff\x82\x87\x97\x62\x49\x72\x12\x91\xb4\x25\xa7\x55\x0b\xcc\x76\x24\xb9\x78\x3f\x3c\x97\xdf\xf9\x1d\xce\x86\x86\xfd\xf3\x18\xca\x05\x73\x79\x9c\xe0\x0d\x4e\x24\x3d\x33\x18\xb9\x91\xe0\xe3\x74\xe2\x33\x78\x8b\x84\x22\x99\x5f\x29\xed\x59\x0a\x7a\x67\x6b\xc8\x9d\x1d\x41\x3e\x65\x40\xeb\xe4\xbc\xc3\x77\x14\xa5\xb3\x9b\x08\x9d\x5d\x44\xe7\x6c\x03\x99\xb3\x75\x54\x4e\x9e\x70\x6f\x86\x50\x6f\x26\x4d\xe9\x11\xc2\x26\x16\xe0\x7d\x33\x13\x44\xce\x78\x15\x2d\x70\x72\x09\x9b\x77\x94\xd1\xba\xad\xf5\xd9\x95\x5a\xa6\xd0\xb9\x07\xa1\x4b\x27\x32\x2c\x36\xdd\x44\xc2\xf5\x0f\x69\x49\xa0\x04\x31\xa6\x95\xde\x5a\x40\x62\x39\xc3\x73\x50\x96\xda\xa2\x20\xa4\x4c\x51\x97\x42\x2f\xea\x1f\x8f\x7d\x0f\x0d\x19\x39\x95\xe8\x55\xda\x55\x93\xa6\x8f\x07\x6e\xa6\x3f\xfe\x21\xea\x1d\x53\xd1\xe4\xb9\xa5\xdf\x5c\x8d\xce\x7a\xb7\x34\x7c\xf0\x03\x1c\xe3\xb3\x19\x29\x6e\xaf\x2c\xc4\x63\x7b\x37\x73\xba\xfb\x23\xc9\xf5\x91\x43\x31\x48\xb5\xee\xfb\x3a\xa8\x36\xc0\xfb\xa1\xb9\x29\xac\x22\x11\x73\x5a\x90\xe3\x27\x30\xa0\x73\x19\xa5\xe9\x07\x01\x81\xfb\x1a\x06\xbe\x2b\x6a\xd7\xb5\xe9\x8e\xf7\x7c\x07\xbe\x13\xdb\x53\x00\x33\x56\xb8\xf0\x6b\x33\x5d\x7f\xe8\x92\xba\x71\x28\x09\xf1\x29\x0a\x53\xaa\x66\xed\xf8\xb8\xe0\xf5\x89\x16\x1d\xe6\x7f\xc6\x15\x1f\x9f\xd4\x58\x2a\x22\x4e\x4a\x5e\xd8\x6b\x7d\x58\xe8\x1e\x50\x36\x3d\xae\xcb\xa3\xe3\xff\x93\xd4\x87\x0b\xeb\xc3\xb5\xe9\x41\x0f\x18\xaf\x63\xa2\xe5\x3e\x17\x4b\x56\xac\x9e\x94\xf4\x4d\x9a\x7c\x7f\xa7\x56\x4f\x48\x84\xcb\x6e\x05\x2a\xbb\x97\xda\x28\x83\xa3\x3a\xa7\x50\xd9\x0d\x38\xec\xa3\x41\x61\xb3\x9c\xd5\x4c\x10\xd8\x1d\x82\xbf\xee\x8c\x2d\xb4\x2b\x90\xd7\x1d\x2c\x83\x9f\x01\xe6\x9a\x03\xe2\x9a\x0f\xde\xba\xab\xd5\xe2\x1f\x0d\xd2\xfa\x2c\xe0\xac\x19\xe3\x36\x99\x60\xac\x4f\x01\x61\xdd\x5d\x1f\x0c\xca\x00\x5b\x7d\x3a\xc8\x6a\x96\x79\xcc\x6a\xc5\x26\x8a\x84\x2d\x40\x54\x9f\x22\x2e\xfd\x68\x31\xe9\x0c\xf1\xe8\x9c\xb1\xe8\x6c\x71\xe8\x47\x83\xa2\xa6\xc3\x50\xb3\xfa\x14\x9e\x04\x7e\x9a\x13\x7a\x9a\xbc\xbe\x94\x51\x45\x71\xf5\x9a\x54\x78\x71\x9d\x06\x50\xcc\xb5\x12\x97\x2b\x20\x46\xe3\xb6\xee\xc7\xdb\x67\xd8\xd6\xfe\x27\xa5\xa3\x1e\x71\x41\x68\xab\x02\x43\xfc\xd8\x8c\x2f\xba\x18\x19\xda\x9c\x8b\xe2\x8e\x8b\xdb\x8a\xe3\x52\x9e\x34\xdc\xfc\x4f\xc7\x44\x11\x50\x50\x24\xa9\xe9\xbb\xe1\x1e\x37\x7c\x1f\x3b\xb2\x6b\x7e\xe0\x77\x88\x4f\x14\x61\xe8\x90\x32\xb7\x73\x8e\x02\x2f\x4d\x17\x1e\x49\x8e\x77\xe8\xb7\xbe\x7a\xe9\x1a\xf9\xfa\xe2\x1e\x10\x19\x92\x72\xa7\x23\x5f\xb6\x8f\x9f\x0f\x7d\xd9\x1f\x4e\xda\xaa\x1f\xfe\x32\x21\xb1\x3c\xb1\xaf\x57\x5d\x99\xeb\x57\xd0\x1f\x2f\x8a\x30\x2b\x91\xe5\x8d\xfa\xfa\xf6\x49\x32\x04\xbb\x6f\xdc\x78\xcc\x74\x1f\xcf\x62\x6e\x60\xad\x65\x72\x84\xf5\xaf\x40\x01\xdd\x3b\x5d\x77\xc6\xe9\xba\x25\x64\xf0\xd7\x67\x6d\x3d\x3d\x12\x78\x6f\x6d\xfd\x56\xac\xad\x80\xae\xed\x8d\xc0\x05\x19\xed\x92\xf2\xe6\x04\x48\x97\xa0\xd6\xe9\x70\x5e\x5c\x30\x42\x4c\x42\x53\x47\xc6\x07\xbc\x73\x93\xb6\xaa\x16\xc6\x87\xd8\x63\x66\x8c\xdf\x5a\x37\x33\xb2\x42\x69\x07\xa1\xd4\x35\xbd\xeb\x6c\x93\x46\x70\xab\x91\x88\x96\x31\xad\x62\xd8\xe3\xa4\x3b\xaf\x6d\x11\x49\x58\xbc\x3b\x1d\xf7\x08\xf7\x2c\x38\x1a\x80\x9e\x33\x82\xba\xbc\x9a\x7e\x47\x74\xab\x13\x2e\x0a\x3a\xae\x16\x68\x86\x2b\x6d\x2c\x59\xf0\xf0\x2d\xad\x2a\xfb\x9a\x04\xb0\x32\x51\x26\xf4\x6c\x34\x9a\x8a\xb3\x29\x4c\x06\x36\x1d\x21\xf7\x0d\x29\x74\x9b\x45\x45\x30\x6b\x1b\xd3\x4f\xad\x1f\x2d\x78\x2b\x5c\x3f\x93\xd0\xda\x41\xeb\x54\x22\x46\xab\x81\x9b\xf2\x3e\x35\xe3\xea\x9e\xef\x5c\xca\x92\x94\x96\x55\xf1\x8e\x4a\x32\x80\x77\x46\xf7\xc9\xf4\x85\xcf\x89\x10\xb4\x24\x66\xdf\x98\xcf\x1a\xc1\xe7\xb4\xec\xb0\xe3\x7a\x5b\x00\x6e\x3b\xba\xad\x8f\xf0\x5e\x27\x5a\x19\x67\x43\x46\xa6\x18\xd4\x63\x2b\xd0\x0c\xa2\xd3\xb4\x6f\xf0\x83\xac\xa4\x05\x56\x44\x02\x56\xbe\x47\xb9\x3a\xa7\x38\xba\x27\x7a\x3c\xc1\x8e\x42\x87\x8c\x23\x0e\x19\x6f\x2d\xa3\x6a\x01\x11\xbd\x59\xab\x50\xc9\xef\xd8\x51\xca\xc1\x34\x30\x07\x8c\xc6\x44\xe1\x2e\x69\xcd\xa9\x64\x12\x11\x86\xc7\x95\x3e\x7b\x80\x21\xbf\x59\xbb\x01\xd0\x84\x60\xd5\x0a\x82\xa6\x58\x25\x48\x89\x35\xda\xbc\x59\xcf\x4f\x6f\x3b\x2a\x6d\xbc\x6e\x82\x5a\x26\x49\xa2\x22\x9b\xcd\x04\x88\xcc\xc4\xd4\x27\x9a\xb7\x6a\x47\xee\x91\x87\x5c\x47\x26\xa3\x24\x30\x12\x69\x4d\x24\xe2\x6d\x82\x27\xaf\x67\xfe\xd9\xe6\x72\x5a\x78\x7b\xbf\xd3\xda\x27\x36\x6c\x9a\x63\x87\x5d\x06\x5a\xf9\x9a\x3c\x94\x0e\x78\x65\x72\x7c\x5f\x5f\x5e\xff\xfc\xf6\xf4\xbf\xce\xdf\xc6\x6d\x01\x90\x75\x2c\xd4\x9d\x5b\x46\x7f\x69\x09\xc2\x35\x67\x53\x84\xab\x30\x05\x66\x00\x8e\xce\xe0\x03\x90\x8a\x79\x93\x65\x22\xf5\x5a\x7d\x09\x44\x09\x86\x15\x38\xe6\x53\x64\x04\xc5\xa2\x40\x12\xd0\x1f\x7d\x24\x8c\x1b\x03\xe0\x4f\x7b\xe4\x0d\x8c\x28\x7d\xc6\x8d\x41\x48\x19\xc2\x48\x52\x36\xad\x92\x6d\xc1\x64\x8f\x48\xaa\x3f\x64\xd8\x8d\x60\x14\xeb\x16\x49\x77\x8a\xf4\xfa\x10\x6f\x55\xe6\x73\x08\x74\x97\x99\x73\x01\x90\xfb\x86\x4b\xe2\x5c\x00\x46\xc7\xbd\x18\x21\x5c\x96\x22\x49\x8f\xb6\xc2\xc6\xdb\xe8\x86\x20\xc0\x34\x6b\x42\xbf\x03\xf4\x12\xfd\x27\xba\x47\xff\x09\x0e\x81\xbf\xc4\x37\x95\xc7\xdc\xce\x81\x68\x9e\x71\xa9\x2e\x46\x99\x16\xfa\x1f\x33\xac\xe0\x8d\x7a\x3d\x14\x47\x63\x6a\x2d\x33\x72\xaf\x88\xd0\x1a\xb1\x5d\xc3\xd4\x99\x4b\x72\x2e\xe8\x0e\x3e\x97\xdd\x9d\x1a\x67\xbd\x98\xf4\x81\xd0\x4f\xb4\xbf\xa1\xe1\x1f\xb8\x54\x97\x56\x5a\x87\x2c\x17\x61\x3f\x6a\xac\x8a\x59\x5f\xdc\xa7\xb4\xfa\x4e\xef\xbd\xe0\xfa\x2f\x39\x5c\x94\x26\x9d\x6d\x46\x13\x84\xc3\xee\x9c\xd8\x34\xc8\x5c\xbe\xad\xfb\xa9\xad\xb5\xe4\xde\x04\x35\xcc\xea\x6d\x41\xe5\x88\x86\x97\xc7\xe8\x1c\x17\xb3\x84\x5e\xe8\xd9\x28\x03\x65\xa0\xe1\xa5\xe9\xc6\x0c\xcf\xf5\x1e\xb7\xad\x02\x7c\xcf\xa8\xae\x3e\x50\x06\x07\x4e\x4b\xac\x02\x33\x34\x4e\xc1\x8f\x09\x32\x21\x42\x98\x94\xc9\xf1\xc2\x65\x5e\x24\xef\xb6\x24\x29\xd7\x08\xae\x78\xc1\xa3\x99\x0d\x72\x6e\x95\x91\xed\x0b\xcc\x3d\x84\xad\x7c\xa0\xf0\xc3\xeb\xd1\x00\xdd\x9c\x8d\x06\x88\x0b\x74\x7d\x96\x86\x03\x09\xad\xd1\x17\x37\x67\xa3\x17\x5b\x5d\x81\x20\x9d\xe3\xe6\x6c\x14\xf1\x92\x55\x24\x61\x8d\x9b\xe1\x2d\x59\x44\x6a\x77\x39\x34\xcc\xa1\xdf\x58\x59\x06\x64\xa6\xb9\xc6\xcd\xc6\x6f\x13\x04\x97\x74\x4f\xb6\xf0\xe5\xcf\x9e\x6c\x61\x4f\xb6\xb0\x27\x5b\xd8\x93\x2d\xec\xc9\x16\x76\x17\xe8\xbf\x27\x5b\xf8\xec\xb3\x27\x5b\x78\xf0\xd9\x93\x2d\x6c\xf4\xec\xc9\x16\x56\x9f\x3d\xd9\xc2\x27\x9e\x3d\xd9\x82\x7f\xf6\x64\x0b\x7b\xb2\x85\xe7\x2b\xb5\xf7\x64\x0b\xcb\xcf\x9e\x6c\x61\x4f\xb6\xb0\x27\x5b\x08\x9f\x3d\xd9\xc2\x03\xcf\x9e\x6c\x61\x4f\xb6\xb0\x27\x5b\xf8\xf4\xb3\x27\x5b\x88\x7e\xf6\x64\x0b\x9b\x3d\xfb\xf4\x9f\x0d\x9f\x3d\xd9\xc2\x9e\x6c\x61\xf9\xd9\x93\x2d\x7c\xf6\xd9\x0d\xf7\xf8\x9e\x6c\x61\x4f\xb6\xf0\xc9\x67\x4f\xb6\xb0\x27\x5b\xf8\xe4\xb3\x27\x5b\x88\x78\x76\xce\xe9\xba\x27\x5b\xd8\x93\x2d\x7c\xaa\x8d\xbd\xb5\xb5\xd9\xb3\x27\x5b\xd8\x93\x2d\xac\x3c\x7b\xb2\x85\xd5\x67\x4f\xb6\xb0\x27\x5b\xd8\x93\x2d\xec\xc9\x16\xfc\xb3\x27\x5b\xf8\xda\xfd\x4e\x82\x48\xfa\x6f\x32\xe2\x15\x2d\x16\xc9\x79\x26\x57\x44\xf2\x56\x14\xfa\xc6\x86\xd7\xa2\x06\xde\xeb\x3d\x0a\x49\x4a\xf6\x8e\x25\xef\x5f\x05\x13\x17\x26\xf1\x0b\x3b\x07\x8f\x31\x05\x3b\x91\xc8\xef\x06\x78\x19\x8f\x20\x80\x97\x28\x2c\x94\x99\xbe\x38\x67\x69\xb2\xd5\x1e\x0e\x64\x17\x12\x09\x43\xee\x11\xbf\x8b\x14\xf7\xc2\x96\x3e\xb8\xb9\x70\xd3\x54\x34\x25\x25\x13\xa1\xeb\x16\xb4\x0b\x62\x43\xe0\xf2\x5b\x54\x34\xed\x00\xd5\xa4\xe6\x22\x21\x31\x22\x83\x05\xd7\xdb\x2a\xbb\xb0\x4e\x57\xa6\x43\x6e\xf2\x15\x87\xf9\x5f\x18\x7b\xa1\x23\x88\xf1\x6b\x45\x9d\x38\x4c\xc2\x9a\xad\x96\xad\xa6\xaa\xe7\x05\xba\xe4\xea\xca\x1e\xee\xad\xad\x57\x66\xc4\x82\x9b\xc2\x74\x6e\x99\xc8\x05\xef\x2e\xb4\x2f\xce\x9d\x44\xe7\x6b\x3e\x85\xf8\xa7\x6c\xf4\x4b\xfc\x98\xa2\x3a\x84\x2b\x41\x70\xb9\x80\x6e\x14\x80\xd7\xeb\xfc\x7f\xcf\x30\x6d\xb3\xa8\x30\x8d\x07\xf9\xe5\x3a\xd2\x67\xd0\x0b\xa4\xf7\x6b\x07\x7e\x87\x3c\x32\xbf\x58\x03\x0f\xf1\xa6\xe6\x8c\x1f\xbb\xaf\xcc\x1f\x0f\x12\x2c\x3d\xac\x60\x77\x81\x11\x03\xa6\x2c\x95\xa1\x9a\x90\x6e\xdc\x31\x84\xab\x66\xf6\x69\xf3\x2e\x25\x3d\xf2\xf5\x82\xe1\x9a\x16\xee\xb0\x9c\x9a\xbd\x49\x39\x5b\x32\x0c\xd3\x46\x62\x7a\xaf\x87\x54\xd7\xad\xc2\xe3\x8a\x1c\xa3\x0b\xb5\xb6\x82\x7e\x5a\x2a\x33\xca\x02\x61\x4d\x84\xaf\xae\xd5\xab\x61\xaf\x19\x42\x06\xc2\xb4\x54\xe2\x8c\x20\xc2\x94\x58\xe8\x6d\x39\xe2\xe5\xb5\xde\x99\xbd\x5f\x27\xf3\x34\x24\xa2\x56\x73\x20\x56\x13\xd1\xaa\x79\x30\xa6\xe9\xf8\xd2\xbc\xd8\xd2\x2e\x0a\x60\x68\x66\xc2\xa4\x9d\xde\xb6\xd0\x37\xc3\x1a\x89\x85\xf8\x24\xb1\x07\xba\xc5\x11\x2f\xb5\xde\x23\x88\x11\x5b\xfe\x8c\x1a\x1f\xe0\x85\xee\xdc\x2d\x38\xed\xb0\xea\x14\x22\x3c\xc7\xb4\xd2\x07\x38\xb1\x03\x3e\xe9\x39\x53\xf0\x26\x53\xb8\xc1\xe2\xeb\x77\x69\xb3\xd8\xcc\xac\x5e\x72\x57\x31\xe3\x92\x30\x90\x97\xd8\x27\xe1\xf8\x14\x01\x2b\x62\x4a\x73\x45\xa7\x02\x81\x2f\x26\x88\xd4\x8d\x5a\x0c\x10\x99\x13\xb1\x50\x33\x00\x0c\x08\x6e\x40\x24\xd0\x84\xee\x5b\x8d\xcb\x60\x77\x0c\x10\x77\x3e\xe4\xc4\xe6\xe1\x7e\xb0\x66\x55\x5b\x29\x63\x64\x81\x5a\x9e\x94\x25\x6a\x9e\x0c\xbb\x26\x37\x17\x0a\x4a\x15\x9a\x39\xb9\x4c\xf4\x53\xd1\x9a\xc6\x31\x44\xa2\x8c\x67\xe1\x2d\xf4\x22\xc8\xfe\xd0\x5b\xa2\xc6\xf7\xe0\x61\xc4\x35\x6f\x19\x6c\x8d\x82\xd7\x4d\xab\x02\x4d\xdd\x29\xfd\x4f\xe6\x7a\x2c\x38\x9b\xd0\xa9\x0d\x8e\x9d\xd4\x98\xe1\x29\x19\xfa\xee\x0c\x3b\xf5\xe6\x64\x7b\xa0\x0d\x5c\x3a\x76\x89\x51\x8e\x54\x63\xac\x14\x11\xec\x5b\xf4\xdf\x87\xff\xfa\xe6\xd7\xe1\xd1\x77\x87\x87\x3f\xbe\x1c\xfe\xed\xa7\x6f\x0e\xff\x75\x0c\xff\xf1\x1f\x47\xdf\x1d\xfd\xea\xfe\xf1\xcd\xd1\xd1\xe1\xe1\x8f\x7f\x7f\xf7\xe6\x66\x74\xfe\x13\x3d\xfa\xf5\x47\xd6\xd6\xb7\xe6\x5f\xbf\x1e\xfe\x48\xce\x7f\xfa\xc2\x97\x1c\x1d\x7d\xf7\xfb\xf8\x00\x62\x6a\xb4\x3c\x5f\xac\x3c\x53\xa4\xfc\x51\xe2\xe4\x56\xc6\x6e\xfd\xf0\xdb\x2b\x70\xe5\xf8\xdb\x00\xc3\xa7\x8e\xbf\x48\x76\xab\x5c\x4c\xba\xf6\xa9\x44\xbc\xa6\x4a\x59\x27\x02\x0e\xe9\x6b\x96\x5c\x3a\x56\x60\xd1\x89\x51\xa0\xa8\x0c\x69\x54\x3a\x4f\x50\x74\xb7\xfc\xfd\x0a\x4e\x2c\x86\x68\xdd\x54\xa4\x26\x4c\x81\xe0\x19\x3a\x93\x17\x3c\x82\xc7\xdd\x08\x0a\xcc\x18\x57\x88\xdc\x17\x84\x94\xb6\x93\x7b\xd9\x18\x3c\x7b\xd9\xb8\x97\x8d\x9f\x7b\x92\xdd\xda\x99\xfc\x9b\xa1\x2b\x7b\x25\x48\xa5\xe5\x82\x39\x62\x4e\x7d\x86\x9f\x7b\xea\x03\x3e\x41\x24\x96\xe2\xb2\x6b\xc4\xb2\x66\xe2\x58\x27\xa6\xe3\x36\xc6\x8b\x15\x4f\xd0\x12\x65\xba\x49\x30\xb7\xf2\x4b\x3a\xb0\x8d\xb1\x5a\x39\x8b\x6a\x7a\x27\x08\xd8\x25\x29\x5a\x41\xd5\xe2\x8c\x33\x45\xee\xa3\x4c\xcf\x1c\xdb\xa9\xc3\xad\x5e\xf7\x3b\x64\xbd\xa7\x36\xc1\xd4\x7e\x87\x78\x63\xa8\xc8\x1e\x24\xdb\x9f\xf1\xb6\x2a\xf5\x72\x8a\x96\xc1\x2e\x89\xdb\x1d\x17\x13\xbd\xd6\x06\xc8\x04\x6b\x0d\xbe\xdd\xe5\x2e\x3a\x88\x91\xe9\xce\x2f\x2d\x9d\xe3\x8a\x30\x15\xfc\xc5\x08\x40\x27\xe1\x1f\x3d\x43\x97\x3b\xd8\x32\x23\x41\xe7\xb4\x22\x53\x72\x2e\x0b\x5c\xc1\x55\xba\x6d\xfd\xec\xf4\x81\x7e\xc1\x7e\x10\xbc\x92\xe8\x6e\x46\xb4\xbe\xa2\xe5\x84\x01\xba\x81\xef\x77\x8a\x29\x43\x35\x17\x29\xfe\x41\xdb\xa8\x34\x48\x3b\xad\x72\x35\x58\xe8\xb5\x77\x88\x3a\x23\x60\xc6\x9c\x57\x96\x55\xb0\x5a\x74\xfd\xa2\xf1\x8e\x34\x70\xc6\xf0\x9f\x19\xb9\xfb\x59\xf7\x42\xa2\x49\x85\xa7\x1e\x48\xa7\x05\xd4\x32\x3c\x39\x1d\xe4\xf7\xe0\x44\x03\x65\x5e\x4b\x10\xae\xee\xf0\x42\x76\xf0\xc7\xae\x6d\x9a\xa0\xc5\xbc\x3a\x82\x53\x8c\x25\xf2\x6d\x97\xd1\x2f\xfb\xc3\x11\xe4\xab\x9d\x9d\x8e\x7e\xbe\xfe\xe7\xf5\xcf\xa7\xaf\xdf\x5d\x5c\xc6\x83\x9c\xb8\x22\x46\xc1\x0e\x6e\x03\x7b\x47\xd8\x55\xf0\xa1\xdd\x63\x2e\x8f\xc1\x7b\x06\xb9\xf7\xac\xe4\x77\x89\x21\x06\xbd\xa7\x08\x8e\xbb\x7a\x70\xd3\x9c\x8a\x9a\x8b\x91\xe0\x13\x5a\x45\x7b\xa7\x73\x9d\xe0\xa5\xee\x38\x67\xe3\xa9\xfd\xb8\x13\xf7\x26\x1d\x74\x35\xd4\x15\x08\x6a\x0a\x49\x87\xfa\x35\xf1\xc6\x4d\x0f\x32\x6a\x00\xac\x4b\x5d\x8c\x3f\x44\x5b\xdd\x33\x5b\x4f\xb6\xd1\xdd\x88\xfc\xf3\x1c\xc1\x98\x8a\x17\xb8\x82\x42\x07\x69\x1b\x1f\x65\xf6\xb3\x2f\xf7\x2b\x00\x07\x63\xb7\x9d\x51\xc5\x71\x49\x4a\x27\xd7\x19\x2f\x89\x23\x41\x75\xca\x0e\xc4\x4e\x92\x3a\x72\x63\x80\x99\xd0\x9e\x43\x33\x37\x82\x38\xd3\x79\xb9\x79\x6e\xb8\x5f\x93\x9a\x7c\xd7\x8f\x44\xd9\x51\xf6\xf2\x6e\x52\xcf\x9c\x6f\xc6\x1e\x30\x3a\x81\x58\x36\xa8\xfc\x74\x02\x9b\x52\x1f\xb1\x17\x6f\xdd\x32\x24\x30\xa4\x67\x0a\x06\xc1\x4b\x76\x64\x77\x9a\xf9\xf1\x3b\xd2\xa0\xca\x6e\xa9\x9e\xc1\x49\x27\xa4\xdd\xb6\x71\x3a\x88\x81\x96\x25\xee\xc7\x8f\x50\x8b\xc3\xc9\x7f\x2c\x92\x69\x5c\xfc\x12\xa3\x61\x70\xb4\x1a\x41\x86\xab\xc7\x2b\x35\x76\x75\xd5\x32\x45\x6b\xe2\x52\x95\x87\x4b\x3a\x91\x30\x5f\x1f\x48\x4f\x0c\x98\x65\xa3\x23\xf4\x81\xc1\x79\x65\xa4\x44\x43\xc4\x78\xb7\x44\x84\x4d\xb8\x28\xc0\x4f\xb7\xd5\x0d\x5e\xe0\x06\x8f\x69\x45\x53\x84\x79\xae\x0d\x0e\x3c\xdb\x41\x7f\xc0\xa1\x59\x96\x27\xa5\xe0\x8d\xb9\x89\x5d\x0e\x51\x3a\x36\xa4\x8f\x55\x0f\x29\x21\x41\x61\x9f\xf4\x3b\x32\x15\x98\xa9\x2e\x49\x65\x65\xe3\xfc\x16\x75\x90\x1c\x4a\x00\x2e\xf3\x31\xd6\x9f\x96\x5a\x66\x84\xcb\x96\x7c\xae\x76\x8d\xfd\xee\xcc\x0d\x2e\x00\xab\xa3\xd1\xfb\xeb\x8b\xff\xb7\x74\x6e\xe2\x55\x3b\xf3\xec\x36\xf7\x95\x96\x07\xd9\xb6\xcd\x15\xa9\xf9\x7c\xbf\x71\xbe\xfa\x8d\xe3\x1d\x44\x5b\x27\xee\xb8\x6a\x59\xe8\x8e\x61\x41\xd7\x50\x9d\xa4\xeb\x8c\x7c\x8e\x6b\xff\xad\x61\xb9\x51\x41\x90\xfe\x09\x53\x14\x57\xd5\x22\xf4\x91\x2a\x6e\x6a\x62\x64\x29\xec\x16\xde\xae\x13\x5c\xc9\xe7\x7a\x45\xa6\xb8\x76\x1a\xc1\x8b\x77\xbc\x65\x79\x98\x40\x12\x76\x9c\xef\x08\x2a\x09\xe3\xca\x7a\x53\xc0\x96\xe0\x13\xf8\x16\x99\xc8\x79\x40\xf2\xd5\xd3\x73\x12\xd4\xac\x9b\x40\xb5\xf2\x09\x80\x4e\x0f\x37\xf6\x4b\x2b\x89\x5c\xaf\x57\x75\x81\xf4\x09\x8f\x8f\x1f\x0a\x82\x4b\x30\x30\x1b\xac\x66\x86\x7d\xa6\xc6\xf2\x96\x94\xe6\x83\xc4\xcc\x5b\x0f\xc3\x06\x28\xa5\x9b\xe9\x1b\x3d\xb9\x0e\x39\x0d\x0e\x61\xc3\xc1\x03\x58\xed\x14\x53\x6c\xab\xa7\x21\x41\xb0\xeb\x45\x78\xcf\xaa\xc5\x15\xe7\xea\x7b\x5f\x5c\x67\xdb\x27\xe3\x1f\x36\x1c\xd1\x77\x62\x82\x5f\x1a\x43\x97\x87\xb0\x71\x40\x2e\x06\x25\x81\x52\xc5\xa2\x5e\x90\xdf\xaa\x54\x14\x2d\x3b\x95\x6f\x04\x6f\xa3\x75\xb8\x9c\xf6\xe6\x9b\x8b\xd7\x70\xf1\xb5\x96\x9c\x81\x29\xb1\x68\x38\x65\xca\x79\xbc\x32\x06\x6d\x3e\x58\x1a\x8c\x50\xb2\x25\x67\xbc\x23\xf4\x0e\x2f\x10\xae\x24\xf7\x2e\x35\xb6\x2e\xc8\xe9\x22\xa8\xfa\xeb\x31\x57\xb3\x95\xd0\x29\x66\xf1\xa1\x9c\xd5\xf6\x06\x01\xc7\x43\x97\x4e\x47\xd9\x4a\xb3\x0a\xb0\xe5\x8d\x20\x05\x29\x09\x2b\x9e\xeb\x89\xd8\x36\xe5\x00\x9c\xaa\x4b\xce\xb4\x78\xdd\xf6\xb9\xba\xf0\xfe\x49\xbb\x1a\xe1\x29\x02\x57\xb6\x0d\x22\x62\xa0\xe7\x00\xe1\xda\xca\x14\xe0\xff\xc5\x04\xa2\x9e\x66\xd3\xfd\xbd\x1d\x93\x4a\x2f\x36\xad\x2a\x53\x41\x18\x2b\x03\x08\xa0\x35\x9e\x12\x84\x95\x3f\x84\x8a\x23\xc2\x64\x2b\xec\xbe\xa1\xf1\x29\x32\x25\x27\xd2\x17\x72\xc3\x12\x7d\xb8\x78\x8d\x5e\xa2\x43\x3d\xb6\x23\xd0\x38\x26\x98\x56\xc0\xf8\x01\xe0\x9b\xa5\x90\xec\x04\x40\x83\x3c\x25\xfb\xf7\xc2\xca\x11\xc4\x85\xb9\x5a\x06\x88\x71\x24\xdb\x62\xe6\xe6\x80\x72\xe6\x3d\xc2\x96\xfe\x31\x09\x0e\xbd\x17\x3b\xf9\xee\xc3\x0f\x92\x88\x6d\x1f\x5b\x7d\x1d\x7e\x78\xc2\xeb\x30\x34\x11\xf5\xf1\xef\x2f\x98\x39\xab\x35\x51\xb8\xc4\x0a\xdb\x6b\xd2\xfd\x60\xbf\x6b\xf7\x97\x65\xc2\x65\x29\xc9\x5b\xca\xda\x7b\x83\x74\xdb\x89\xb0\xc7\xf5\x39\xf4\x08\x8e\x17\x2c\x34\x0f\xe2\x76\x2e\x42\x91\x21\x43\xee\xa2\x77\x8c\x06\x0f\x58\xdd\x70\x4b\xb8\xec\x74\x6d\x08\x61\x56\xf2\x7a\xa5\x93\x90\x3e\x9f\x52\x1c\x3d\x40\x8d\xec\x0f\xa6\x7d\x7e\xdb\x01\xa1\x8a\xcc\x49\x42\x41\xf8\xa5\x43\xf9\x56\xbf\x4d\x4f\x8e\xdb\xb9\xf0\x7a\x54\xe1\x31\xa9\x6c\xce\xbe\x21\x5d\xc9\x78\xc2\x32\xf9\xc0\x05\xcf\x08\x89\xb9\xe2\x06\xc9\x85\xfd\x44\xe8\xd7\x3f\x8b\x79\xc8\x0a\xbe\xb8\xb1\xe8\x92\x6e\x1e\xc0\x07\xfa\x1c\xe6\xa1\x4d\x50\x10\xd1\xf2\x3c\x68\x6d\xb3\x3f\x0f\xa0\x7f\xed\xfa\x3c\x48\x52\x14\xbc\x6e\x76\x04\x29\x79\x63\x50\xf0\xba\x47\x5f\x8a\x8a\xec\xff\x18\x27\xc1\x9d\x2d\x6d\x26\x56\xe6\x1e\x74\xdc\x99\xff\x37\xb8\xce\x41\xda\x2d\xdf\xf1\xb6\xf5\x64\x44\xa6\x6f\xd1\xbe\xf0\xb7\x78\xe3\xed\x61\x98\xbd\xe7\xc9\x61\x98\x01\x9d\x0f\x06\xf7\x7c\x0f\x12\xf9\x35\x80\x31\xb5\x11\x00\xf3\x4a\x58\x49\xd9\x14\x02\x56\x03\x24\x48\x65\x08\x6d\xad\x78\xbe\x35\x1e\xaf\x03\x90\x38\xae\x43\x4e\xdc\x74\x98\x55\xc3\xe7\x93\x15\xbb\xb9\x0e\xaf\x69\x7e\x73\xf9\xfe\x26\xcc\xe1\xc2\x6c\x61\x32\x55\xe1\x4f\xb6\x7e\x9d\x3e\x1b\x4c\xe7\xf2\x2a\x3e\x36\xa4\x33\xe9\x7d\xeb\x11\x9d\x4f\x77\x4a\xbf\x0c\xe5\xb9\x8c\xf1\xcc\xda\x85\x65\xc0\xe7\x6a\x1b\x19\x56\x2e\xf9\x08\xd8\xab\x73\x87\x1c\x20\xff\x30\x3d\x72\x56\x76\xa1\x05\x87\xa2\x6c\x2a\x43\x27\x08\xae\x52\x13\x34\xcd\xb3\xce\x0b\xe2\x4e\x81\x27\xb4\x59\xf5\x06\xf4\xc9\xd1\x53\x5a\xff\x8c\x07\xe3\x79\x7b\x22\x2a\x6d\x51\x3c\x73\x3f\xc4\xb4\x96\xf8\x4c\xe8\x19\x54\x14\x57\xd7\x0d\x29\x76\xe5\xb6\x78\xf3\xee\xfa\xb4\xdf\x33\xd0\x85\x2d\x7d\x17\x81\xef\x11\x2e\x6b\x2a\x25\x04\x7c\xc8\x78\xc6\xf9\x6d\x52\x93\x87\x6b\x4a\xf9\x07\xf8\x3c\x49\xa7\xf2\xc4\x4a\x94\xa1\x9e\xb8\x23\x44\x59\xe5\x33\x85\xc1\x5b\xc8\x94\xb4\x11\x84\xe4\xc1\xa3\xc2\x8f\x1e\xb6\x1e\xe4\xa7\x78\x68\xf6\xea\xf4\x00\xc7\x1a\x6c\xde\xad\x6b\x1d\xab\xbb\x2a\x8d\xb6\x78\x69\x67\x3d\x30\xf6\x90\x2f\xcc\x46\x71\xd6\xce\xa3\x31\x5e\xb7\x3e\x49\x56\xe9\x2f\x88\xcc\x57\x4a\x3d\x43\x05\x7c\xdb\x25\x54\x12\x53\xc9\x80\x00\xa5\x0b\x7e\x30\xd3\x1d\xc2\xdb\x07\x50\xfa\xc9\xfe\xe9\x41\x2e\x8a\xbb\xd3\xaa\xd2\x0b\x89\xf5\x35\x71\x20\x43\x74\x27\x98\x26\x33\x3c\x27\x5d\x11\x68\x32\x99\x90\x02\x8c\x85\x70\x14\xe9\x25\x92\x0f\x29\xa0\x98\x42\x3a\x5d\xc5\x4d\xdb\x18\xd5\xf4\x5e\xf7\x30\x6c\x31\xc4\xa0\xb2\x12\x02\xff\xeb\xbf\x4e\xa8\x84\x81\x00\x7c\xe0\x99\x5b\x06\x7a\x85\xc2\x46\x5c\x72\xb4\xd2\xd7\x96\xfe\xe2\x92\x28\x6d\xa8\x99\x79\x0b\xa3\x0f\xda\xb0\x12\x6d\x86\xc3\x90\x12\x19\x46\x61\x74\x38\xab\xa4\x48\x3c\x0f\x10\x29\xb6\x7d\xd2\x3a\x88\x53\xde\x9e\x2a\x72\x8c\xd6\xa4\xef\x3c\x59\x04\x19\x7d\x79\x14\xf9\x11\x63\x55\x68\x57\xe2\x55\xa9\xa4\x27\xa6\x0c\x24\x14\xa6\x49\x66\x3c\x19\x75\x25\x6e\xbf\x88\xe6\x3b\xa2\xbd\x2d\x13\x7f\x90\xfb\x78\x4d\xb4\x37\x55\xe7\xf7\xa4\x58\x2a\x29\x59\xd7\x50\x39\x8b\x43\x23\xad\xf2\x85\xef\x92\x6f\xad\x1d\xd1\xe9\xed\x08\x77\x45\x88\x9e\xd9\x09\xa7\x4e\x4d\x36\xff\xd4\x8a\x73\x7f\x11\xa4\xf3\xb6\x07\x1c\x73\xfa\x9f\xfa\xe6\xa2\x6c\x6a\xc9\x4c\xb8\xf0\xd4\x4f\x49\xdd\x72\xfd\x80\x8a\x07\x9c\x2b\x74\x78\x70\x72\x70\xb4\xb2\x17\x0e\x64\x88\x87\x36\xa9\x9b\xdd\x80\x24\xad\x9b\x6a\x01\x63\x38\x30\x45\x0e\x12\x8a\x87\xe9\xc7\x21\xeb\x3c\x5b\xb0\x9c\x91\xaa\x1a\x20\xa9\xef\x69\xec\x88\xda\xcc\xa7\xfa\x47\x4a\xb4\x85\xb1\xe7\x0f\x0f\x7e\x3d\x18\x20\xa2\x8a\x23\x74\xc7\xd9\x81\x32\x9e\x59\x74\x03\xca\x6e\x52\x9f\x7c\x27\x16\xbc\x85\x3a\x7c\x66\xd9\x3c\xb7\x5f\x81\xb5\x9e\xd6\x1a\x65\xc2\xb0\x03\x90\x2a\xa1\xae\x9c\x7e\xce\xef\xa9\xd2\x32\x53\xb5\x60\x4f\xbd\x34\x2a\x0d\x81\x22\x02\x58\x42\x85\xdd\x93\x19\xc1\x95\x9a\x2d\xbc\x9a\x65\x4a\x9c\x49\xd4\x32\xfb\x4d\xba\xb0\xdf\x81\xfc\xb6\xdd\xcd\x34\xb3\x95\x16\x77\xba\x50\xb4\xed\xe3\x67\xeb\x44\x9b\x7a\xd0\xfd\x1a\xd1\x50\x3b\x9a\x94\xb9\xca\x44\xff\xf1\xeb\x2b\x01\x3d\x15\x4d\x9e\x5b\xfa\xcd\xd5\xe8\xac\x77\x4b\xc3\x07\x3f\xc0\x31\x3e\x9b\x91\xe2\xf6\x2a\x8d\xfc\x7a\x47\x62\xa0\x5b\xae\xfb\x9c\xb5\xdc\xf1\x88\x0b\x85\x98\x2f\xb9\xa7\xcf\xd6\x14\x56\x91\x88\x39\x2d\xc8\xf1\x13\x54\x17\xce\xc5\xba\x99\x7e\x10\x10\xa0\x36\x60\xe0\xbb\xa2\x76\x5d\x9b\xee\xac\xf3\x8a\xd9\x9e\xea\x35\x68\x2a\x5c\xf8\xb5\x99\xae\x3f\x74\x69\xee\x13\x49\x08\x5a\xe3\x57\xd5\xa2\xc3\xfc\xcf\xb8\xe2\xe3\x93\x1a\x4b\x45\xc4\x49\xc9\x0b\x7b\xad\x0f\x0b\xdd\x03\xca\xa6\xc7\x75\x79\x94\x50\x8d\x05\x05\x95\x62\xad\x1b\x67\x29\x20\xe2\xa2\x64\x9e\x27\x94\x4a\x1f\xca\x1b\x2f\x60\x52\xb6\xee\x2b\x44\xae\x97\xdf\xa2\x17\x2f\xa2\xde\xa2\x97\xe0\x4d\xa6\x5a\xfd\x3f\xdc\xdc\x8c\xde\xf4\x2b\xf5\x33\xf8\x10\xbd\x39\xbf\xf1\xd5\x19\xf4\xee\x32\xd9\x17\x7b\xa9\xbd\x33\xd5\xfa\x33\x38\x88\x37\xa9\xf0\x0f\x0c\xb6\x5a\xe5\xc2\xe3\x6a\x81\xee\xb0\x49\xbd\x96\x24\x4d\xa6\xbc\xd0\xdd\x78\xa1\xa5\x96\xde\xd5\x3f\x10\x5c\x12\x21\xc1\x1a\x22\x78\xfb\xc1\x8f\xa0\x4f\xd9\x96\xed\xac\x95\x8a\xd7\x68\x66\x87\x6a\xe6\xb0\xab\x7f\x62\x74\x23\x73\x04\xc1\x19\x24\x91\x20\x8d\xb1\x96\xec\xdf\x7c\x15\xb6\xd0\x8a\x14\x32\xf3\x1c\xb0\xe4\x63\x54\x84\x53\x65\x15\x7d\x53\x72\xd9\xca\xa8\xa4\x1a\xb8\xe6\xc9\x52\x6c\x0a\x65\x2a\x38\x85\xd2\x8b\x4e\xb9\x97\xa4\x47\x4b\xf2\x94\xaf\x42\x59\x4a\x58\xa1\xec\x95\x89\x90\x8d\x09\xd8\xcd\x65\x90\x02\xba\xa3\xa9\xf4\x69\xc8\x91\x2c\x38\xe4\x45\x81\x19\x67\xb4\xc0\x15\xfd\x37\x29\x51\xdb\x70\x86\x78\xab\x9a\x56\x81\x2b\xa8\xc0\x92\x0c\xe7\x58\x50\x2d\x50\x4d\xfd\x3f\x0f\xd9\x60\xfa\xb4\x2b\xce\xc1\x4f\xe2\xa3\x63\xa6\xc7\xe9\xdd\xcc\xa4\xcd\x20\x57\x2b\x3f\xf3\x0a\xaf\x2c\x4e\xfa\x8e\x46\x3b\xed\x83\x41\xa6\xe4\xc2\x2c\x9f\x59\x87\xd5\x0c\x20\x48\x05\x44\x12\x2d\x82\x0d\x04\xa7\x36\x1b\x76\x20\x43\x20\xab\x15\x9b\x28\x12\x4c\x15\x64\xb1\x64\x07\xeb\x1e\xae\xce\x61\xa6\xa0\xf8\xe3\x9b\xd5\x61\xb9\xbe\x31\xd1\xba\xfd\xc5\xe9\xe5\xe9\xcf\xd7\x1f\xcf\x7e\xbe\x3c\x7d\x77\x9e\xf2\xea\xe4\x52\x1b\x39\x8b\x6d\x64\x2b\xb7\xf1\x48\xc5\x88\xf4\x23\x8b\x19\xd9\x9d\x78\xf8\x35\xf4\x26\x64\x4f\xb2\x36\x00\x14\x65\xe5\x19\xe8\xb4\xd0\x92\xd3\x54\x0b\x9e\xad\x4a\x1c\xca\xa8\xa2\xb8\x7a\x4d\x2a\xbc\xb8\x26\x05\x67\xe5\xd6\x61\xa4\x97\x5e\xd8\x48\xd3\x21\xeb\xb6\xee\x83\x0f\x66\x58\x9a\xa0\x33\x29\xd1\x98\x4c\xb8\x20\x10\x35\x61\x5a\x22\x35\x5d\xfc\xd8\x8c\x4f\x3d\x61\xbd\xb8\x3b\x2e\x6e\x2b\x8e\x4b\x79\xd2\x70\xf3\x3f\xc3\x8a\x4e\x48\xb1\x28\x2a\xf2\x3b\xdf\xff\x61\x92\x9a\xbe\x1b\xee\xf1\x86\x08\x0a\xd0\x85\x5d\xd8\x35\x3f\xf0\x3b\xc4\x27\x8a\x30\x74\x48\x99\xdb\x39\x47\x81\x97\xa6\x0b\x8f\xa4\xd3\x3e\x29\x8e\x5e\xbd\x74\x8d\x7c\x7d\x71\x0f\x88\x0c\x49\xb9\xd3\x91\x2f\xdb\xc7\xcf\x87\xbe\xec\x0f\x27\x6d\xd5\x0f\x7f\x99\x90\x58\x9e\xd8\xd7\xab\x63\x9f\x50\xf3\x0a\xfa\xe3\x45\x11\x66\xa5\xc3\xc6\x7c\x7d\xfb\x44\x15\xcd\x35\x2f\x6e\x33\xb9\x5d\x6f\xce\x46\xe6\x6d\x4b\x78\x16\x73\x03\x6b\x2d\x93\x23\xac\x7f\x05\x0a\xe8\xde\xe9\xba\x33\x4e\xd7\x83\xae\xd4\xd4\xa6\x0e\xd4\x83\xbd\xb5\xd5\x3d\x4e\xf1\x11\xfd\x52\x0d\x7b\x6b\xeb\x81\x67\x6f\x6d\x6d\xf0\x18\xb4\x3b\x64\x8e\xbe\x11\xb8\x20\xa3\x5d\x52\xde\x9c\x00\x41\xa5\xad\x25\x8a\x3a\x1d\xce\x8b\x0b\x46\x48\x69\xe4\x87\x1d\x0a\x41\x53\x3d\x92\x49\x5b\x55\x0b\xe3\x43\x34\x2a\x80\x05\xc5\xa4\x71\xdd\xc2\xab\xad\x8a\xeb\x82\xcc\xeb\x7a\xd7\xd9\x26\x8d\x67\x6d\x76\xe5\x0d\xec\x71\xd2\x9d\xd7\xb6\x88\x24\x2c\xde\x9d\x8e\xc3\x15\x44\x92\x4e\xf5\x74\x01\xd0\x73\x46\x90\x61\xfb\x71\x35\xc2\xba\x8e\xe8\x56\x27\x5c\x14\x74\x5c\x2d\xd0\x0c\x57\xda\x58\xba\xa3\x6a\x86\x30\xba\xa5\x55\x65\x5f\x13\x3f\x51\xd7\xae\x6a\xa3\xd1\x68\x2a\xce\xa6\x30\x19\xd8\x82\xc7\xef\x1b\x52\x28\xa8\x5b\x4f\x30\x6b\x1b\xd3\x4f\xad\x1f\x2d\x78\x9b\x01\x3f\xee\x02\xdf\x5e\x9f\x62\xd4\xf2\x24\x98\x0a\x53\x9f\xdc\xf3\xfd\x2c\x40\xf4\xde\x95\xdf\x35\x15\xaf\xa2\xfb\x64\xfa\xd2\xaf\x77\x65\x3e\xf3\x5c\x0f\x36\xc5\x49\x6f\x0b\xc8\xb9\x8b\x6e\xeb\x23\xbc\xd7\x89\x56\xc6\xd9\x90\x91\xa9\xc9\x28\xb7\x02\xcd\x20\x3a\x4d\xfb\x06\x3f\xe8\xf3\x93\xa5\xe2\x0d\xa2\x75\x4d\x4a\x6d\x1f\x57\x0b\x34\xa7\x38\xba\x27\x90\xbd\xde\xed\x28\x74\xc8\x38\xe2\x8d\xbe\xba\x5a\x46\xd5\x02\x22\x7a\xb3\x56\xa1\x92\xdf\xb1\x84\xc4\x90\x1b\x0b\x73\xc0\x68\x4c\x14\xb6\x3e\x70\x7d\x08\x3c\x79\x33\xf0\x32\xeb\xb3\x07\x18\xf2\x9b\xb5\x1b\xc0\xf3\x39\x4f\xb1\x4a\x90\x12\x6b\xb4\x79\xb3\x9e\x9f\xde\x76\x54\xda\x78\x5d\x22\x61\xec\x6e\x50\xb0\xe9\x13\xcd\x5b\xb5\x23\xf7\xc8\x43\xae\x23\x93\x8b\x1f\x18\x89\xb4\x26\x12\xf1\x36\x13\x31\xfe\x2b\xdb\x5c\x4e\x0b\x6f\xef\x77\x5a\xfb\x48\x55\xd2\xa8\xf2\xa8\x39\xb6\xd8\x03\x2c\xe3\x36\x61\x30\x20\xda\x1b\xb7\x93\x09\x11\x70\xd3\x41\x87\x57\x60\xf7\xbe\xe0\x90\xbb\xc3\xe2\x9c\xb7\x16\xf0\x45\xd4\x00\x48\xce\x6d\xd6\xfb\x03\x4d\x5a\x36\x40\xa8\x27\x2a\x88\x04\xd2\x6a\x86\xce\xdf\x7f\x1f\xb7\x45\x73\x50\xa0\xa7\xe5\xd6\xc1\x38\xdf\xb3\x38\x4c\x62\xde\xfd\xb0\x8e\x9e\xc2\x6e\x8b\xa2\xe2\xd2\xe6\x71\xc2\xba\x14\x33\xcc\x18\x71\xce\x28\xaa\xc0\x93\x3d\x26\x84\x21\xde\x10\x03\xca\x8b\xea\x0c\x46\x92\xb2\x69\x45\x10\x56\x0a\x17\xb3\x63\xdd\x3b\xe6\xf6\x42\x97\x30\x69\x3f\x91\x4a\x10\x5c\x9b\x3d\x21\x48\x8d\xa9\x69\x1e\xe1\x42\x70\x29\x51\xdd\x56\x8a\x36\xfe\x65\x71\x5e\x44\x02\xa9\xeb\xd2\xe4\xcf\xb9\xb5\x82\xb4\x92\x2e\x33\x73\xd0\xf5\xd0\x0e\x9f\x87\x55\x55\xc0\x75\x36\xd0\xdf\x92\xba\x51\x0b\xa4\xa7\xb6\x8a\xce\x8d\x99\x50\x21\x15\x2a\x2a\x4a\x98\xb2\x23\x33\xdc\x68\xd0\x87\x81\x53\xa7\x99\x9d\x11\x69\xa7\x84\x95\x60\x7c\x37\x4a\x22\xc8\x40\xf4\x9d\x70\xaf\x2a\xa9\xb4\xbe\x0e\x39\x88\x5b\x3b\x57\x42\xc3\x6c\x1c\x37\x23\xb0\x75\x9c\x82\x63\x7a\x64\x3f\x0a\xba\x10\x14\x04\x76\x35\xe1\xb5\x3e\x9b\x22\x57\xa0\xce\x85\x3b\xd7\x83\x5e\x72\x74\x67\x5b\x40\x2a\xcc\x8a\xd4\x81\x0d\xc5\xc8\x5c\x9f\x03\x52\x10\xad\x8a\xe2\x8c\x42\xe6\xc9\x65\x8c\xc2\x62\x4a\xd4\x99\x1b\x7f\x6c\xf6\x6e\x0e\x69\x13\x56\x4e\x0f\x1d\x44\xdd\xe2\xc0\x3a\x8c\x78\x09\x6c\x12\x1d\xe3\xc7\xba\x72\xee\x66\x5c\x91\xb6\xd7\xcd\x03\x35\xe2\x9d\x45\x65\x32\xbc\x7c\x47\x65\x83\x0b\x22\xd1\xe1\xc5\xe8\x6c\x80\x46\x17\xaf\x6d\x1a\x17\x9f\x2c\xb3\xeb\xc5\x4e\x8b\xbd\x04\xcd\xd9\x7d\xa8\x80\xbd\xaf\x4e\x13\x74\x29\xa0\xd9\xb2\xfd\x1d\x79\xa3\x2c\x7a\x66\x56\x6f\x02\xb0\xd0\x68\xdd\x54\x50\x27\x12\xc9\x16\x2c\x23\x1b\xb8\xd0\x5b\xdb\xd8\x23\xf6\xd0\x92\x8e\xe0\xc8\x92\xd1\x47\x06\x71\x4c\x2b\x7e\xb8\x76\xcd\x21\x96\xed\x26\xca\xea\x01\xa0\x30\x2b\xfb\x95\xe7\x88\x81\x5c\x33\x0b\x15\x8f\xbf\xdd\x23\xdd\x61\x81\x11\xf5\x8e\x48\x89\xa7\x64\x14\x89\x03\xca\x71\xf6\x3a\x0f\x37\x00\x88\x3a\x79\x3d\x23\x86\x0a\x4b\xf1\xe0\x93\x30\xbb\x32\xf4\xda\xd4\x66\x20\x51\x3d\x70\x67\xeb\x4e\x50\xa5\x08\x5c\x0f\x50\xeb\x09\xb6\xee\x32\xbd\x67\x3f\xab\x33\xaa\x3d\x3b\xe9\x61\x7b\x5a\xef\x67\xa5\xc9\x8f\x1c\x13\x34\x16\x94\x4c\xd0\x84\x42\xc2\x26\xa4\x32\x0e\x4c\x9d\x02\x0c\x80\x79\x2c\x25\x11\x30\x6c\xeb\x8f\x73\xc3\x8f\xeb\xcf\x3f\xec\xf8\x95\x68\x59\x81\x83\x22\x9e\xc0\x3e\x46\x27\x68\x0a\xe9\x93\xd6\xfb\xf4\xa7\x97\x7f\xfb\x0b\x1a\x2f\xb4\xa1\x04\x67\x52\x71\x85\x2b\xd7\x01\x54\x11\x36\xd5\xab\x08\xba\x4e\xdc\x85\xdd\x63\xb0\xf2\x8b\x53\xd1\x9a\x2a\x33\x41\xaf\xfe\x70\x3b\x4e\xba\xf3\x40\x31\x39\x29\xc9\xfc\x24\xd8\x42\xc3\x8a\x4f\xe3\xde\x7a\xe6\x09\x9f\xda\xa6\x8c\x05\x44\xe4\x3e\xd1\xbc\xa2\xc5\x62\x6b\xf7\xa9\x75\x85\xa1\x19\xbf\x33\x5e\xd4\xd5\xa3\x1a\x90\xc1\x34\xbc\x69\x2b\x98\x38\xf4\xbd\x67\xf0\x6b\x25\x59\x26\x47\x4a\xf5\xce\x07\xd2\x0e\xd0\x0b\xb6\xd9\xa5\xab\xde\xe6\x0e\xbb\x6e\x72\x4b\x4d\x61\x83\xdd\xbe\x52\x49\xb4\x1b\xfc\x7b\x5c\x55\x63\x5c\xdc\xde\xf0\xb7\x7c\x2a\xdf\xb3\x73\x21\xb8\xe8\x8f\xb9\xc2\x5a\x99\x9e\xb5\xec\x16\xea\xec\x76\x74\xb5\x7c\x6a\xc1\xbc\xc0\x2c\xd9\x9f\xd8\xa8\xce\xb8\x51\x1a\x02\x51\x67\x0b\x38\xe7\x77\xd7\x32\xb9\xa7\x9d\x87\x9b\x21\xa2\xfb\x1c\xaf\xe1\x84\xe3\x90\xe1\xd1\xfe\xc3\xcb\x3f\xfd\xd5\x08\x17\xc4\x05\xfa\xeb\x4b\xc8\xf5\x97\x03\x73\x01\x80\xea\xab\x6d\x9c\x1a\x57\x55\xac\x4e\x13\x8a\x80\xef\xa3\xcb\x57\xef\xc0\x91\x57\x5b\x3b\xdd\x5f\xec\xab\xb9\xb9\xf9\x27\x68\x62\x54\x49\x52\x4d\x06\x86\x0f\xc6\xfb\x93\x0f\xc0\xac\x39\xb0\x57\x5e\x3c\x97\xd0\xf6\xbd\x25\x73\x5e\xb5\x35\x79\x4d\xe6\xb4\x88\x43\x0e\xf4\x56\xa5\xf7\x36\x17\x1f\xab\xa8\x04\x5d\x72\x5c\xf1\xe2\x16\x95\xf6\xcb\x20\x47\x65\xb9\xee\x76\xfc\x2c\xc4\x66\xeb\x24\x64\xe9\x3c\x38\xfe\x5e\x7e\x4e\x8d\x9b\x46\xeb\xd1\x40\xec\x25\xf0\x5d\x6f\x32\x40\x34\x01\x7f\x6a\xa2\xd1\x93\x8c\x62\x49\xc5\xb0\x0c\xed\x88\xf4\x35\x15\xfd\x8a\xe8\xa4\x9e\x74\x08\x4c\xd7\xfb\x78\x00\x41\x6f\x43\x74\x2f\x74\xa7\xa1\x81\xff\x36\x44\x27\x2b\xa6\xba\xaf\xa8\xe6\x37\x86\xd1\x20\xf5\xf6\x81\x5b\x26\x3e\x6e\x90\x01\x85\x90\x96\x9c\xd4\x9b\x17\xe6\xd1\x1f\x35\x56\xd6\x3e\x72\xde\x0b\x8c\x1a\x22\x24\x95\x5a\x75\xfa\x08\x07\xea\xac\xc2\xb4\x0e\xe2\xe6\xdb\x9a\x84\xd5\x54\x96\x1a\x37\xc3\x5b\xb2\x88\xdc\x70\x89\xc7\xe5\xa1\xcc\x9a\x1a\x37\x91\xf7\x00\x14\xb7\x4d\xbf\x06\x22\x2f\xe7\x11\x2f\x6d\x3f\xe0\x7a\x30\x45\x8b\x3f\x67\xc6\xa2\xeb\x76\x0c\x67\x0a\x7e\xfe\xb8\xf4\x60\x59\x95\xa7\x6d\xdf\x55\x1f\xbb\x15\xef\x5f\x55\xfa\x13\x7f\x57\x99\x5f\x7d\x4d\x37\x14\x8c\xef\xb9\x5e\x50\xbe\xf3\x99\xe4\x70\x12\x36\x11\xae\x35\xbb\x33\xfa\xf7\x58\xcf\x13\x66\x8e\x74\x60\x33\x5b\x0f\xd5\xb1\xa9\x37\x90\xd0\x01\x7d\x14\x6d\xa3\xe8\xe0\xdb\x83\xad\x5e\x8e\x66\x65\x04\x6f\xf0\x14\x4c\xda\x5d\x58\xa0\xe5\x3e\x85\xf4\xb6\x33\x7e\x17\x8a\xcc\xc6\xfe\x4a\x4b\x4c\xc7\x91\x3e\xe3\x49\xab\x63\xb0\xbe\x6e\x47\x58\xb3\xdc\x54\x89\xb8\xc3\x0b\x84\x05\x6f\x59\x12\x71\x01\x84\x32\x7d\xa8\xfb\xdd\xd2\x60\x2f\x39\x23\x0e\x56\x93\xd2\xca\x4d\xcf\xf5\x0d\x08\x23\xca\xd0\xab\xe3\x57\x2f\x93\xfb\x7e\x45\x8a\x56\x48\x3a\x27\x57\xb6\x7c\x7a\x10\x06\xbd\x98\x8c\xb8\x94\x74\x5c\x41\xaa\xa5\xe2\xe8\xdc\xd4\x96\x5f\x1d\xa8\x87\x7a\xc1\x88\xb9\x08\x89\x50\x13\x7a\x78\x68\x4e\x70\x08\xd1\xd6\x0d\x24\xe0\xb4\x76\x4b\x05\x85\x75\x5d\x52\x41\x2f\xbd\x0a\x6a\xee\xbd\xad\x8e\xd5\xd5\xd4\xdf\x05\x49\xf2\xce\x06\x15\xba\xa2\xf9\xd4\x15\x65\x86\x8f\xee\x04\x55\xf6\x70\xdf\x51\x49\xd0\x21\xb8\x33\x96\x36\x63\x12\xf7\x73\xe8\xfc\x4a\x2c\xae\x9f\x83\xbb\x59\x2c\x1f\xdd\x5d\x58\xa5\x55\x79\xd2\xe5\xcc\xdc\x59\xcf\x57\xb7\x82\x56\xfa\x77\xf7\xf2\x0c\xb3\xb2\x4a\x92\x19\x7e\x56\xaa\x45\x12\x7b\xd5\xc5\x04\x85\x22\xd1\x22\x0e\x82\x20\xe4\x0c\x4b\xc4\x38\xaa\x09\x06\x48\xb5\xbe\x5d\x9c\x14\xec\xd1\x40\xe7\xeb\x83\xd9\xec\xe6\x1a\x0b\x2f\x04\x2b\xae\x5f\x53\x69\xc5\xb3\x96\x23\xd6\x74\x31\x40\xac\x1a\x97\x29\x64\x0c\xc1\x9c\x76\x8b\x77\xdc\xc1\x9c\x97\x7b\xd2\x5d\x1c\x4b\x7d\x79\x8c\x7e\x0c\x6c\x75\x73\xdd\xbc\x89\x2c\xaf\xf1\xe7\x75\xb0\xb6\x24\xfc\x89\x79\x96\x87\xeb\xaf\xc5\x95\xb1\xae\xef\xb1\xef\x70\x42\x1f\x3e\x3f\xd4\x41\x20\x0b\x1d\xaa\xdb\x80\x60\x6c\x79\x15\x9b\xa3\x9c\x46\x12\xee\xa2\x19\xde\x4f\x34\x25\x8c\x08\x6c\x03\x12\x0e\xd4\x6d\x43\xfa\x58\x72\x96\x7a\x20\x3e\xb3\xe1\xb4\xbc\xff\xbc\x9a\x62\xfe\x2c\xa1\x23\xa0\xe7\x1c\x72\xb1\x74\xda\x6d\xa8\x65\x9d\xc6\x92\x73\xd4\x4b\x64\x7a\x66\xf3\x07\x2c\xbd\x7a\x51\x7e\x69\xe9\x1c\x57\xc4\xd0\xe3\x3b\xd1\xb0\x55\x65\x42\xb6\xe3\x5d\x35\x1b\xad\x7d\x08\x66\xc7\x7a\xb4\xc4\x83\x16\x64\x26\x7d\xe2\xc5\x0b\x74\x68\xda\x38\x30\xb4\xd8\xdb\x55\x72\xed\x5a\x9d\xdf\x37\x09\x45\x61\xf3\xad\xd7\xf9\x7d\x83\x01\xe0\xd1\xec\xc4\xc2\xfd\x17\x99\xe1\x39\x01\x16\x72\x5a\x61\x51\x41\x1a\xc9\xb5\x99\x32\x34\x6e\x15\x22\x6c\x4e\x05\x67\x00\xaa\x02\xba\x28\x2d\x99\x04\x99\x10\x41\x58\x41\x24\xfa\xfd\xe1\xc7\xd3\x2b\x48\x33\x3c\x02\xd3\x97\xb8\xf1\xb5\xd2\xa2\xa0\x7a\x63\x08\x5e\xb7\x8b\xfb\x0d\xb9\xb1\xeb\xed\x02\xfa\x89\x9b\x0b\x3d\xb6\xba\x55\x2d\xae\x80\xac\xbd\xa8\x5a\x7d\x17\x6e\x6d\x67\xe7\x77\x9e\xa7\x78\xf2\x72\xfa\xce\x2d\x55\xff\x6b\x1a\x75\x5c\x73\x1c\xd4\xb3\x60\xbf\xae\x14\x0e\x48\x03\x50\xf6\x69\x63\x57\x14\x9d\x03\xe9\xa9\x64\xc3\xcc\x39\x7b\x17\xc7\xe1\x3a\xe8\x74\xa6\x2c\x5d\xc3\x12\x0e\x33\x80\x35\xd7\xd1\x98\xb1\xed\x02\x20\xf2\x1d\x83\x08\x47\x74\x9e\x5d\x3f\xe3\x52\x9d\x56\x14\xcb\x4d\xfd\xd8\x69\x5b\xfd\x87\xae\x59\xc8\xf6\x63\xb6\xaa\x23\xae\x3c\xc4\x40\xf7\xcc\xc0\x9c\x2e\x46\x16\x8b\xee\x76\x25\x65\xff\x6b\xb2\x4e\x7d\x40\xc9\x64\x83\xc2\x9f\x6c\xd8\x13\x83\x38\x9a\xa0\xc8\x7a\x43\xb1\xf1\x9f\xa8\xc8\x4f\xaa\x78\xf1\xb3\x8e\x66\xbc\xb2\x79\xd7\x0e\xcd\x30\x26\xea\x8e\x10\x86\x2e\x46\x30\xe7\x7a\x2a\x0d\x2f\xe3\xfa\x99\xb7\xca\x31\x53\x62\x61\x0f\xf4\xc6\xbd\x09\xd6\x0c\x56\x61\xd3\xa3\x9b\x10\x7f\x8a\x8f\x3c\x0d\x11\xdd\xf4\x52\x49\x89\x14\xf9\x65\x48\xbe\x8d\x7e\xf0\x0b\xea\xd8\x74\xf0\x98\xcf\x09\xac\x77\x59\x8a\xc8\x2c\xed\xad\x85\x3f\xb3\x2b\x30\x49\x44\x96\xb4\x49\x5e\x9f\x6e\x1d\x1c\x94\x04\xca\x33\x83\x78\x82\x63\xf6\xe4\xd0\xbe\x78\xca\xf6\x9c\xf7\xe2\x86\xc7\x2d\xdf\xad\x78\x31\x3a\x7b\xca\x1b\xf1\x83\xf5\x2e\xe9\xa6\x0f\x24\xa2\x4d\xd1\xe5\x75\x6c\xba\xf4\x5d\x2e\x43\x40\x67\x16\xe1\x68\x8f\x75\xae\xcf\xba\x82\x8d\x4f\xad\x54\x20\x66\xda\xd5\x57\x9a\xa5\x15\xb7\xc0\x11\xf0\xfc\x34\xbc\x3c\x5e\x9e\x6a\xfb\x17\xf1\xd3\xed\xdc\x4a\x46\x85\xb1\xde\xb4\x81\xa7\xf6\x59\xba\x42\x01\x26\xe9\xfd\x67\xb1\x55\x0e\xb7\xb7\xb0\xa3\x8b\xd7\x5b\x3c\x17\x0d\x2d\x9f\xf7\xb9\xf8\x20\x37\xa6\xd5\xcf\x3a\x81\x50\x7d\x33\xef\x0c\xc6\x60\xa6\x6d\xc1\x4d\xfb\xd7\xc0\x88\xc5\x15\x6a\x04\x91\x84\xf9\xb3\x53\xae\xcb\x37\x84\x6b\xb1\x3f\x8a\x81\xfe\xf7\xa4\xad\x36\x55\xfd\xb9\x08\x28\x75\x3c\xff\x10\xf6\xec\x21\x10\x63\xc0\x73\x4c\x2b\xf0\x3b\x05\xfc\xb0\x2b\x1d\xb0\x69\x51\x1b\xf6\xa0\xe2\xb8\x84\x98\x17\xba\xd5\x77\x56\x85\x6a\x5e\xb6\x95\x81\x68\xa1\xb3\xd3\xd1\xcf\xd7\xff\xbc\xfe\xf9\xdd\xfb\xd7\x1f\xde\x6e\x4c\xa3\x65\x72\xc3\x49\xb7\xc5\x07\x08\x23\x46\xee\xa0\xe7\x0c\xac\xae\xc2\x3a\xba\x3d\xbd\xa2\x16\x8e\xd7\x36\x4b\xd0\x04\x7d\x0d\xe6\x62\xd2\x56\xfa\x47\x1b\xf6\xa0\xa6\x8a\x4e\x31\xbc\xac\xb3\xf5\xc7\x82\xe0\x5b\xde\x2a\x34\x6f\x2b\x46\x04\x1e\xd3\x8a\x6a\xd5\x18\x91\x39\x61\x06\xe8\xa7\xff\x40\x77\x32\xac\x52\x4b\x37\x6d\x3c\x2c\x62\x6c\xcb\x23\xea\x49\xd5\x2d\xe3\xc2\xfa\xd1\x2c\x4d\x24\x7c\xd9\x08\x3a\xa7\x15\x99\x12\xcf\xbf\x16\x43\x03\xdc\xc7\x97\xe0\xaa\x99\xe1\x61\x45\xe6\xc4\xf0\x38\xe9\x2b\x42\xef\xa8\x19\x67\x5c\x98\x80\x93\x61\x24\xb7\x37\x04\x30\xdb\x98\xc3\xea\x6a\xf6\x9a\x2c\xd6\x6b\x97\x4e\x6a\xb3\x48\x9f\x4c\x58\x6d\x0e\xd1\x48\x93\x55\xd7\x3e\xc4\xed\x56\x20\x4c\x83\x1e\x6d\x8c\x16\x5e\xef\xf8\xea\x0c\x4f\x78\xbb\x93\x31\xf6\xb0\x60\x64\xd0\xa8\x43\x57\x42\x09\x98\x5e\x62\xe6\x7c\x63\xbd\x1b\x1c\x61\xa3\xb6\xaa\xae\x49\x21\xc8\xa6\xe0\xdd\xb4\xa9\xbf\x58\x6a\xfb\x21\xb7\x4c\xe0\x7c\x87\x22\x2e\xf6\xc7\xac\xab\xd4\x10\xa4\x23\x77\x34\xdb\x4d\x5b\x55\x26\xba\xbf\x70\xcb\x09\xa3\x95\x41\xda\x08\x95\x2e\xb5\x3d\xe6\x36\xe9\xad\xb1\x24\xbe\x6b\x6e\x79\x1b\x2c\x65\x17\x4c\x9d\xd3\xb2\xc5\x15\x74\x0b\x3c\x90\x36\x73\x1b\x9b\x52\xa4\x56\x22\xd6\x91\x95\xf6\x37\xe4\xf5\xe9\x64\xd5\x89\x99\x93\xdf\x99\xc1\x2c\x28\x9b\x0e\xe1\x13\xdd\x4d\x3b\x9e\x21\x67\x43\x3c\xdc\x14\x38\xff\xac\xdc\x54\x6f\x79\x81\xab\xf7\xe0\xd7\xb9\x72\xbb\xcd\x09\x74\x89\x08\xe3\xed\x74\x06\xd3\x2b\x6a\xec\x68\x63\x2b\xa2\xa0\xba\xab\x4d\xfa\x8a\xf1\x47\xf9\x9d\x5d\x5a\xa7\x52\x58\xd1\xb7\xbf\xb3\x9f\xd0\x55\x95\xe2\x3d\x8a\x45\xd8\xe5\x08\x63\x5c\x06\x82\xdb\xce\x6c\x64\xcc\xad\x7f\xa9\x92\xc9\x84\x14\xca\x01\x41\x8c\x1b\x6f\x00\xb1\xc2\xb2\x35\xdc\xd0\xb8\xb8\xbd\xc3\xa2\x94\xa8\xe0\x75\x83\x15\x05\x15\x63\x11\x8b\x12\x71\xb9\x07\x26\xc7\x0d\xf2\x52\x8f\xd1\x05\x93\x0a\x83\x0c\x74\x14\x17\x7a\x85\xbb\xb4\x54\xc8\x5e\x35\x0c\x61\x33\x22\x08\xc2\x22\x0e\xad\x83\xab\x5a\x2b\x9b\x05\x11\x7a\xef\x57\x0b\x74\x27\x38\x8b\x4c\x0f\xdf\x50\x28\xf1\x39\x11\x73\x4a\xee\x4e\xac\x35\x3d\xd4\x83\x1b\x9a\x2d\x2c\x4f\xe0\x24\x9c\xfc\x0e\xfe\xdf\xf3\xf1\x4b\x2d\xb9\x87\x6a\xdc\xc4\xbb\xfd\xbe\x82\xd8\x0f\x65\xb4\xe3\xbd\x79\x52\x65\xe3\xad\x55\x26\x6c\x6d\x0a\xfa\x6f\x23\xc7\x03\xa5\x7d\x4c\x2a\xce\xa6\x41\x55\x0e\x6d\x9c\x6c\xaa\x15\x30\xaa\x7a\x86\x00\x00\x04\xa0\x58\x3b\x44\x21\xb9\x28\x81\xef\x88\x1a\x50\x76\xaf\x75\x28\x9f\x1c\x30\x2d\x61\xb6\xa9\x83\x9b\xf6\x5a\x87\x5c\x7d\xd9\x19\xb6\x26\x65\xd9\x31\xd8\x2b\xae\x8d\x11\xe2\x8b\x38\x1b\x63\xc1\x62\x38\x11\x2e\x0a\x2e\xca\xcd\x8f\x8a\x56\x75\x94\xa7\x8c\x32\x54\x0c\x86\x2c\x03\xf4\x5e\xad\xe4\x60\xb6\xdc\x4f\xb0\xc4\x45\xdd\x23\xd6\xb1\xde\xaa\x0d\x9b\x6f\x19\xfd\xa5\x25\x08\xd7\x5c\xeb\x7d\x55\x4a\xc2\xd6\xf2\x4a\xd6\x78\x01\x8a\x3d\x4c\xda\x5b\xc7\x81\xa8\x2d\x3b\xad\xbe\x0d\x00\xec\x49\x83\x42\x21\x03\xf4\xb6\x5f\x39\x64\xa0\xc7\x79\x6d\x58\xfb\xed\x47\x9b\xdb\x7a\x40\xae\xc3\x5b\x51\x90\x2b\x73\x11\xd5\x96\x20\x62\xcd\xb4\xea\xbd\xa7\xf0\x2d\x61\x26\x66\xa9\x97\x14\x92\xb5\x5a\x01\x3b\xad\x98\x91\xb2\xad\x36\x5f\xe2\xf1\x02\x4d\xb4\x3a\x6b\xb1\x2e\x33\x3a\x9d\x11\xa9\x9c\xe7\xf3\x04\x28\x0d\x4c\xda\x1c\x2e\x66\xbe\xbb\x20\x7f\x03\x32\xb4\x0e\x2c\x53\xe3\xfb\xcd\x09\x2e\xc0\x78\xb5\xac\xb8\xc6\x93\x20\xdb\xda\xdd\xfd\xcb\x9b\x49\x1e\xa3\xb7\xba\x57\xe6\x38\xe2\xa6\xa9\xa8\xd3\xca\x7b\x6b\xbc\xf1\x69\x03\x7a\x3c\x80\x11\xa1\x09\x96\x33\xca\x59\xea\x2e\x2b\x0c\xb8\xa0\x68\x85\x56\x5e\xaa\x05\xb0\x9b\x97\xa5\xd6\x0f\x05\x12\xa4\xe6\xf3\xcd\xfd\xb6\xc9\x80\x85\x34\xce\x50\x3d\xc9\xc3\xc0\xde\x78\x26\x46\xc4\xa9\x67\x3e\xd4\xfb\xa5\x58\xba\x2d\xcc\x06\xd4\xda\xbf\xab\xcf\x2a\x5a\xd6\xa5\x39\x46\xdc\x1c\x5b\x0a\x2d\x47\x24\x23\xa6\x98\x07\x58\x4c\xb7\x96\x1f\x7c\x2a\xa6\xad\x11\x97\xf6\x7e\x87\x18\x67\xc3\x69\xbc\x95\xb0\x02\x29\x3a\x90\xe8\xec\xdd\xeb\x90\x8e\x39\x2c\xa2\xed\xc8\xba\xe3\x9a\xfb\x98\x17\x8c\x08\x2a\x86\x47\x38\x46\xf5\xa8\xf0\x92\x45\x8b\xf9\x6a\xee\xbc\x5d\xbe\x83\xce\x49\x43\x59\xd3\x2a\xab\x7c\x07\x55\x37\x8b\x19\x66\x53\xad\xed\xbc\xe6\xad\x1e\xd8\xef\x7f\x0f\x83\x10\xa4\x6c\x8b\xc8\x44\x12\xe3\x4d\x33\x27\xf7\xf7\x0e\xd2\x6d\xcb\xfb\xc2\xa5\x24\x0b\xdc\xb8\xa9\x09\x67\x4f\x2e\x98\xc2\xf7\xdf\x22\x7a\x4c\x8e\xd1\x8b\xdf\x07\x5f\xbd\x80\x1e\x47\xf5\xa6\x11\x5c\x0f\xc5\x52\xa4\xc2\xe8\x2b\xaa\x20\x95\xfc\x45\xd8\xc2\x31\x3a\xd7\xfd\x82\x0c\x29\xbf\xb6\x01\xeb\xe5\xb8\x5b\xd9\x01\x12\x64\x8a\x45\x59\x91\x48\x96\x31\x3e\xf1\xc9\x3c\x86\x46\xde\xee\x2a\x72\x4f\xa5\x92\x36\x2c\x72\x9c\x07\xe6\xf6\xa5\x77\x87\xc2\xf2\x56\xdf\x14\x5a\xf8\x0d\x4b\xac\xf0\x30\x90\xba\x27\xc6\x2b\x3a\x2c\x78\x5d\x63\x56\x0e\xb1\x3d\xc7\xdd\xa5\x72\xf2\x3b\x5b\x1c\x61\x88\xfd\xaf\x28\x1b\xe2\xa1\x9c\x91\xa8\x95\xdb\x63\x4c\xe0\xb1\x73\xb9\x2d\x81\x7d\xee\xe5\xb3\x59\x8a\x63\x74\xc9\x55\x67\x4e\xf9\xdb\x16\x56\x39\xa7\x08\x3f\xbf\xbc\xb9\xfa\xe7\xe8\xfd\xc5\xe5\xcd\x5e\x92\xef\x25\x39\x3c\x7b\x49\xbe\x97\xe4\x11\x0d\xef\x8a\x24\x27\x6c\xbe\x2d\x29\xee\x1c\x6f\xeb\xf2\x6a\x6c\x40\x4f\xad\x00\xf4\xb7\x0e\xcd\xdf\x36\xbd\xce\x39\x9b\x7f\xc4\xda\xe4\xb7\xf8\x14\x8b\x7d\x5e\x93\x9a\x64\x7f\x60\xdc\x11\x67\xcf\x9e\x5f\x67\x8b\xec\x38\x19\xd9\x21\xc2\x50\xd4\xba\x55\xeb\x4a\x7b\x62\x74\xf6\xf3\xc5\xeb\xf3\xcb\x9b\x8b\xef\x2f\xce\xaf\xb6\x9a\x38\x08\xfe\xb4\x5d\x48\x19\xdc\x44\x3f\x4a\x68\xa6\xd3\xac\x1a\x41\xe6\x94\xb7\xb2\x5a\x20\x07\xc1\x58\x2f\xae\x56\xa9\x8a\x12\x33\xb0\x0d\x1e\x87\x16\xeb\xb7\x89\x5c\xd2\xed\xd6\xe9\x69\x09\xcd\x6f\x59\xc3\xb3\x9d\xc8\xa1\xe7\x25\xb4\xbf\x46\x43\xfc\x72\x6d\x2f\xa1\xdd\x28\x3d\xf1\x21\x9d\x2f\xa1\x1f\x7d\x6d\x31\xe1\x45\xfd\x14\xd5\xed\x4b\xb2\xef\x05\xaf\x33\x49\xb3\x6b\x13\xc3\x70\xa8\xc5\x75\x47\xf5\xc0\x56\x0c\xec\xe9\xdb\xd6\x72\xec\x4a\x09\x6a\xfb\x15\xe2\xf9\x89\xb3\x93\x54\x6a\x38\x4f\xb5\x5f\x64\x13\x2c\xdf\xe1\xe6\xef\x64\x71\x45\x12\x8b\xa6\xf6\xe7\x9b\x54\xa4\xd0\x3a\x0f\xba\x25\x0b\xc3\xa8\x74\xe6\x1a\x4b\xab\x1b\x9b\x65\xfa\x50\x96\x7a\xcd\xe6\x19\xea\x21\x26\xbd\x23\xcf\x62\xea\xe7\x96\x24\xf0\x10\xb9\x67\x89\x25\x8b\xc0\x12\x82\x9a\xaf\xd7\x34\x6d\xf5\x50\xae\x0a\xcd\xe6\x49\x53\xf8\xdc\x93\xb3\x5a\xb3\x79\xf2\x01\x99\xfa\xcf\x76\x61\x4d\xfd\x67\xab\x20\xa7\xe5\xae\xe4\x83\x3c\xf5\x9f\x5d\x02\x40\xf5\x9f\x8c\xa7\x28\x05\x1c\xb5\xfc\x38\xec\x6f\xe6\x53\x69\x40\xde\x8b\x9e\xea\xe4\x2f\x14\x64\x78\xfa\x41\x4e\xb9\x24\x29\x6b\x05\x64\x9a\xe6\x34\xae\x38\xf3\xe4\x83\x91\xf5\x1f\x10\x07\x79\x6f\xef\x64\x19\xd8\x5d\xff\x46\x58\xf9\xa2\xf5\xe5\xb7\x8e\x3c\x4b\xa2\x9a\x28\x5c\x62\x85\x8f\xf5\x81\x18\xf4\xff\x69\x33\x64\xfe\xc7\x7f\x58\xe1\x31\xa9\xe4\x8f\x07\xff\xf9\xf7\xf3\x7f\xfe\x7f\x07\x3f\xfd\x4f\xf8\x1d\xa8\x6b\x06\x85\x1d\xfc\x20\x71\x08\x50\xee\x8b\xf1\x92\x5c\x42\xef\xe0\x9f\xd6\xd2\x3b\x35\x40\x1c\xfb\x05\x94\x5c\x39\x36\xd9\x9f\xfe\x9f\x0d\x2f\x97\xff\x95\x50\xd1\x1a\xed\xa6\xde\x03\x6b\x9b\xc0\xa4\x6c\x9e\x7c\xda\x0f\x6e\xe8\x47\x22\x64\x12\xf9\xae\x7b\xfa\x54\xd9\xe6\xad\x6e\x1b\xcb\x62\x46\x6a\x0c\xff\xf9\xbd\x9b\x02\x7d\x1f\xfb\xa2\x58\x0c\x6a\xdb\xe8\x3b\x70\xd0\x63\x23\x7b\x31\x7f\x95\x64\x71\x9a\x27\xa3\xe4\xf7\x2b\x98\x79\xc2\x60\x46\xec\x6c\x19\x09\xe0\xf5\x47\x9f\xf6\xe1\x72\x2f\xd0\xe9\xe8\x02\xcd\xcd\x0c\xef\xd0\xe4\x3c\x96\xb8\x76\x78\xba\xef\x77\x5a\x6c\x7b\xd4\xdf\x72\x89\x8a\x6f\x4d\x3a\x9a\xfb\xde\x56\x40\x92\xbe\xdc\x3a\xd9\x9c\x4d\x65\xf9\x39\x34\xaf\x3c\x2e\x9a\x76\x60\x5f\x7f\x5c\x93\x9a\x8b\x85\xff\xa7\x27\xf4\x1f\x4a\xc5\x05\x9e\x02\x0d\xad\x69\xdc\xfc\x99\xff\x97\xf9\xc3\x5e\xf7\x56\xff\xda\x38\x24\x3b\xcc\x9e\xe7\x77\xfc\xea\x44\xb6\x5b\xb7\x1d\x91\xd8\x45\x6a\x05\xd5\xfe\xd3\x3b\x0d\x07\x3e\x94\x62\xcc\x44\x3f\x8b\xe0\x05\xb2\x75\x26\x06\x5d\xb2\x1a\xb8\x2a\xd9\x1c\xcd\xb1\x90\x07\xbb\x23\x87\x10\x2a\xe9\x9c\x4a\x9e\x40\x05\xe8\x5f\xb4\xaa\x51\xbb\xb4\x49\x5b\xd1\xcc\xa4\x47\xf9\xb8\xc7\x7d\x03\x65\x85\xfd\x61\x5f\xba\xcd\x5e\xa5\x1a\x0b\x08\x35\x58\x29\x22\xd8\xb7\xe8\xbf\x0f\xff\xf5\xcd\xaf\xc3\xa3\xef\x0e\x0f\x7f\x7c\x39\xfc\xdb\x4f\xdf\x1c\xfe\xeb\x18\xfe\xe3\x3f\x8e\xbe\x3b\xfa\xd5\xfd\xe3\x9b\xa3\xa3\xc3\xc3\x1f\xff\xfe\xee\xcd\xcd\xe8\xfc\x27\x7a\xf4\xeb\x8f\xac\xad\x6f\xcd\xbf\x7e\x3d\xfc\x91\x9c\xff\xf4\x85\x2f\x39\x3a\xfa\xee\xf7\xc9\x5d\xc7\x6c\xf1\x3e\x51\x7a\x9b\x67\x98\xa5\x80\xfe\xba\x37\x66\xb2\x0e\x7b\x57\x21\x65\x6a\xc8\xc5\xd0\xbc\xfa\x5b\xc8\xc4\x4f\x6c\xc0\x6d\xaf\xdc\xe7\xff\xca\x49\xcd\x00\xc3\xee\xb4\x90\x1d\x3a\xe0\x8f\xa5\x68\x98\xdc\xcf\xa7\xf0\xec\x9a\x96\x82\xfa\x4c\x07\xb2\x4b\x7b\xfc\xda\x6e\xd0\xdf\x82\xb3\xd7\xd9\x39\x66\x5d\x3b\xd5\x7d\x22\x78\x6d\xab\xb6\x98\xc8\xf7\x1c\x57\xb4\x74\xbf\xbb\x25\x09\x51\x11\xf7\xec\x9d\xc3\xd1\xcf\xde\x39\xfc\x40\x57\xf6\xce\xe1\xa4\xe7\x59\x3a\x87\x0d\x23\xc5\x6f\xd3\x33\x9c\x9f\x69\x39\x12\xd3\x95\x93\x64\x99\xb0\x79\x2c\x1e\x20\x27\x08\xd2\xb9\x3d\xc2\x1a\xdc\x5f\x86\x34\x8a\xc7\xb7\xeb\x95\xf3\xb0\xa6\x0e\x34\x6f\x54\xda\x7a\x3d\x0c\x0d\x9d\x56\x15\xa2\xcc\x5c\xd0\xfa\x05\x51\xad\x7b\x2a\x2d\x62\xeb\x5d\x58\x0a\xd7\xb9\x1e\xaa\xa7\xc1\x0a\xf0\xf7\xd2\x24\x40\x53\x36\x3d\x36\x6c\x52\x46\x4d\xb4\x10\x15\xca\x50\xdd\x56\x8a\x36\x91\x78\x17\x6f\x86\x1a\xe4\x8c\xbe\x28\xb0\x94\xbc\xa0\xd8\x17\xf8\xf6\x25\xc8\xed\xf4\xc0\x08\x14\xbe\x05\x88\x58\x41\x4a\xc2\x36\x67\xe2\x30\xcf\x47\xdd\x5e\xb7\x0e\xe3\x85\x9e\x89\x73\x36\xb7\xf7\x17\x2a\x5b\x03\x93\x36\x2a\x54\xbe\x76\xbf\x2e\x4c\xac\x3e\xc3\x16\x8c\x13\x40\x63\x41\xdb\xf4\x0e\x47\x0c\x88\x62\x3e\xe9\x22\x7c\x80\x6e\xb2\x24\x43\xdb\xc1\xc5\xa6\xab\xed\x1e\x6c\x93\x64\x8f\xad\xe8\xeb\x5d\x14\xb4\xaf\xa7\x7f\x0d\xf8\xa4\x74\x0d\x3e\xaf\xf6\xfe\x18\x9a\xfb\xae\x68\xed\x3b\xa2\xb1\x3f\x8e\xb6\xbe\x9b\x9a\x7a\x36\x2d\x3d\x8f\x86\x9e\x47\x3b\xdf\x00\xb6\x91\x53\x23\xcf\xa3\x8d\x3f\x86\x2f\xae\x11\x64\x42\xef\x33\x49\x7c\xc7\xa5\x8a\x14\xb9\x07\xcf\x4c\x23\x48\x43\x58\xe9\x32\xe2\x1d\xf5\x21\x50\x77\x3c\x9b\xbc\x05\xe3\x40\xca\x7b\x2f\x5e\xaf\x73\x5e\xed\x2f\x45\xb4\xbf\x14\x37\x78\xf6\x97\xe2\xfe\x52\x7c\x92\x4b\xd1\x4a\xab\xaf\xff\x46\xcc\x5d\x44\xa3\xc6\xd3\xad\xd1\x55\x9e\xf5\x79\x07\x40\x32\x3f\x09\xcf\xe2\x0a\xf9\x6b\xa4\x6b\x29\x14\xb2\x1e\x07\xa1\xb8\x11\x7b\x86\x18\x4c\x20\xc3\x45\x6d\xac\x57\x54\x63\x86\xa7\xc0\x59\xa6\x7f\xe7\x2a\x7f\x71\x81\xb4\x74\x10\x34\xb2\xc0\xec\x12\x81\x03\x38\x8a\x1c\x09\x15\x7c\x29\x78\x55\x11\x21\x51\x45\x6f\x09\x7a\x4d\x9a\x8a\x2f\x6a\x9b\x53\x5b\xa2\x6b\x85\x15\x99\xb4\xd5\x35\x51\x09\xf5\x68\x22\x25\x8e\xa7\x5f\x36\x54\x79\xdb\xda\x8a\xc0\xc4\x0c\xcc\xc4\xa8\x31\x9c\x7d\x51\xaf\x79\xcf\xe0\x2a\x3f\xad\xee\xf0\x42\x0e\xd0\x25\x99\x13\x31\x40\x17\x93\x4b\xae\x46\xc6\x57\x13\xf7\xde\x30\xb3\xcc\xbc\x1c\xd1\x09\xfa\xb6\xc2\x8a\x48\x85\x14\x9e\x82\xe7\xb0\x63\x63\xe6\xa2\xd7\x68\x57\x4c\x77\x8b\x2e\xb4\x0c\x14\xcd\xd0\xba\x27\x68\x7e\x72\x12\xd4\xca\x91\x1e\x6e\x8d\xc0\xcb\x70\x2d\x1a\xee\x35\x43\x1d\xe8\xc5\x89\x21\x50\x77\xa5\x42\xc1\x73\x4a\x19\x12\x44\x36\x9c\x49\xd2\xe3\xda\xec\x06\x62\x3c\xd1\x91\xc8\xea\x8c\x8e\xd5\x68\xc3\x20\xd5\x24\x68\xb8\x54\x40\x49\x19\xab\x9f\xe4\xb2\x05\x46\xae\x23\xc0\x52\x8a\xab\x8a\x94\x88\xd6\x35\x29\x29\x56\x5a\x6f\xc7\x13\x45\x04\xc2\xfd\x58\x81\x2d\x26\x71\x6c\xaa\xe1\xb8\x02\xf4\x8e\xf7\x34\xde\x58\x5b\x8e\x49\x28\x22\x6a\xca\xb0\x2d\xb8\xed\xc8\x4d\x43\x96\xd4\x25\xde\xd3\x24\x21\xaa\x9f\xf7\xa0\xd9\x05\xdb\x7b\x19\x47\x8b\xc6\x15\x2f\x6e\x25\x6a\x99\xa2\x95\xad\x5c\xc0\x6f\xc1\x7e\xa9\x40\x9c\x44\x37\x1d\x2f\xa5\xfc\x7f\x0e\xfd\x01\x1b\xea\x5e\xc9\x93\xdf\x75\x5f\xc1\x07\x91\x9d\xcb\x60\x45\xe7\xb0\xa1\xc9\x3d\x29\x52\xf4\xf9\x7e\x4c\xe3\x9e\x14\xfe\xea\x92\xb0\xc3\x81\xf5\x46\xef\x28\xcb\x74\x95\x29\x14\x68\x9e\x4c\x90\xa8\x5c\x30\xa4\x04\x86\xb1\xf0\xc9\x8d\xb2\x39\xb3\x8b\x40\xa5\x9d\x79\xf3\xcf\x8a\x32\xd2\x5f\x18\x4f\xd6\xef\x17\xc7\x44\x17\x57\xaa\xe8\xba\xdc\xf1\xe4\xae\xb9\xbe\xe8\xbe\x41\x19\x99\xc3\x83\x93\x83\xa3\x95\x3d\x72\x60\x0a\x5c\x9a\x6b\xf1\xd8\xf2\x9c\xf9\x41\x49\x5a\x37\x50\xd5\x99\x14\x07\xae\x08\x7d\x72\xcf\xf4\x6d\x68\x8a\x26\xc1\xac\x58\x5e\xb6\x01\x92\x1c\x29\x81\x4b\x6a\x0d\x04\xf8\x54\xff\x48\x89\xd6\x5e\xe8\x87\x07\xbf\x1e\x0c\x10\x51\xc5\x11\xba\xe3\xec\x40\xc1\xf4\x1d\xa3\x1b\xa8\x84\x91\x8e\xb4\x75\x1d\x59\xf0\x16\xea\x2d\x99\x25\x6c\x2a\x5a\x50\x55\x2d\xe0\xba\x41\xbc\x35\x95\xa1\xb4\x6a\x91\xc0\x27\x17\x3e\xe7\xf7\x54\xd9\x14\x2e\x2d\xbf\x5f\x2e\x15\xfa\xaf\xe8\x9c\x9c\xcc\x08\xae\xd4\xcc\x24\x18\x30\xce\x86\xff\x26\x82\x03\xe7\x1c\xb3\xdf\xa4\x76\x23\x2d\x72\x1b\x3e\x09\x51\xdc\xd5\x0e\x65\xc1\x16\x65\x76\x06\xb8\x47\x5f\x7b\x6f\x48\xb4\x4a\x84\x56\xca\xa0\xde\xdc\x8c\xde\x10\x15\x4a\x79\x06\x1f\xa2\x37\xe7\x37\x2e\xad\x04\x9c\xf1\x44\x4c\xb8\xa8\x77\x40\xbc\xe7\xc1\xbb\x0e\xa1\x16\xe1\x0e\xdc\x32\x33\x2e\x93\x96\x13\x3d\xc2\x15\x63\x2a\x47\xe2\xda\xd9\x26\x8c\x14\x7a\x13\xf4\x73\x24\x1c\x75\xff\xc5\xe8\x18\xfd\x93\xb7\x40\x1b\x8f\xc7\xd5\xc2\xb3\x4e\x4b\x92\x06\x6c\xd6\xcf\x0b\xdd\x95\x17\xfa\x06\xd1\x3b\xff\x07\x82\x4b\x22\x24\x08\x68\x82\x13\x53\x98\x32\x1e\xf7\xa0\x6f\x59\x97\xf2\xac\x95\x8a\xd7\x68\x66\x87\xdd\xe7\xa3\xb3\x87\xf3\xd8\x1c\x57\x4b\x4a\x24\x48\x63\x84\xb8\xfd\x9b\xaf\x4e\x44\xaf\x48\x2f\x33\xef\xf6\xf3\xb1\x51\x53\xc3\x69\xb3\x01\x0e\x43\x77\x63\x65\x9b\xa9\x70\x90\xe9\xba\xc8\x00\xe1\x47\x19\x61\xfc\x28\x8d\xa9\x6e\xf9\x45\x10\xec\x49\x7e\x53\xbe\xcc\x00\x94\x0d\xfd\x8e\x1e\x05\x01\x8f\x2c\xb0\xd1\x6e\x3e\xe3\x83\x8e\xf7\x9e\xaf\x7b\x39\xed\x8a\xb8\x15\x98\x71\x46\x0b\x5c\xd1\x7f\x93\x12\xb5\x0d\x67\x36\xdd\x0d\x34\xdb\x02\x4b\x32\x84\xe8\x38\x33\xe2\x5c\x06\x9c\x69\x5a\x3a\x28\xce\x41\xdd\xf3\x15\xbd\x4c\xaf\xf3\x74\x35\x2b\x50\x3b\x99\x00\x30\x7c\x56\x02\xea\xbd\xc5\xca\xb3\xe3\xd1\xb3\x50\x27\x91\xc9\x53\x4c\xce\x91\x5f\xcd\x90\x37\x45\x5d\x80\x15\xce\x5c\x57\x20\x78\x4d\x7d\xcf\x9d\xb9\xb7\xb5\x0a\xb8\x6b\xba\x97\xc1\x1c\x08\xc4\xda\x7a\x4c\x44\x47\x2f\x22\xd4\xea\x9c\x66\xf1\xba\xd8\x66\x4d\x73\x2e\x4a\xeb\x74\x0c\xcc\xa6\x04\xbd\xd2\x2d\xff\xe5\xcf\x7f\xfe\xe3\x9f\x33\xb4\xa3\x87\xe7\x81\xdd\x0c\x5d\x9c\x5e\x9e\xfe\x7c\xfd\xf1\x0c\x48\x0b\x53\x5f\x9f\x29\x6f\x35\x77\xd6\x6a\xd6\x9c\xd5\x47\xcd\x58\x05\xfa\x8f\x64\x29\x9b\xfb\x48\x5c\x43\xaf\xc2\xf2\xa9\xd6\x26\x09\xea\xa1\xc5\x94\x27\x5e\x7d\xc2\x60\x9e\x16\x58\x3b\x21\xa9\x64\x45\x48\x93\xcd\xe2\xbf\xd6\x6f\xeb\x71\x37\xa3\xb2\x15\xb6\x70\xa8\x0b\x5e\x75\xbe\x7c\x1b\xb4\x82\x3e\x7c\x45\xc6\xbf\x24\x05\x67\x65\x8a\x09\x90\x4b\xa5\xb5\x3d\xc9\x7a\xe6\xae\xcd\x3b\x9d\x8b\xb8\xbb\x4a\x6c\x63\x60\x49\xa6\xae\x28\xf2\xab\x9a\x47\x4e\x1a\x82\x06\x78\xdb\x5f\xfe\x14\x1f\x20\x2b\x9a\x6b\x5e\xdc\x66\x74\x91\x25\x0a\xb0\xd7\xfa\xa4\x15\x26\x16\x78\x73\x36\x32\x9d\xd3\x2b\x73\xf9\xfe\xa6\x63\x63\x81\xec\xa3\xae\x74\xdf\x0f\x36\x5a\x88\x59\x89\x6e\x49\x93\x66\x5d\x6a\x81\xe9\x60\x84\x7d\x14\x21\xf8\xde\x85\x65\x7f\x35\x19\xcf\x46\x10\x38\xf4\x9f\xd1\x88\xd3\x78\xa4\x83\xe0\x3c\x04\x02\xad\x11\x32\xc1\xb4\x42\x18\xbc\xf2\x8a\xd6\xc4\xa4\x5c\x81\xb3\xbf\x43\x4b\x7c\x45\x02\xe7\x6b\xf5\x36\x1e\x38\xd8\xf6\xb7\x1b\x7b\x0d\x53\x89\x2a\xbe\x6e\x33\xc0\xca\x6c\x81\xc2\x92\xff\x7b\x33\xe0\x4b\x9e\xbd\x19\x10\x69\x06\x34\x82\x5c\x2b\x1e\xad\x6b\x66\x03\xdc\x98\x6e\x3c\x00\xb7\x19\x93\x09\x17\x64\x19\x6f\x13\xe0\x60\x2c\x72\x3e\x01\x19\x7c\x3a\xba\xf0\xb1\x2f\xde\xc3\xba\x98\xf4\x60\xd9\x16\x33\x17\x26\x65\x44\xca\x13\x19\x96\xce\x85\xab\xad\x15\x24\x1e\xe5\xd3\x08\x42\x6a\x98\xc7\x41\x47\xf0\xa3\x87\x4b\x98\xf9\x90\xa8\xc2\xc4\xcd\x1d\xac\xc8\xf2\xb7\xbb\xe9\x9a\x24\x85\xf3\xbb\x89\x2d\x04\x96\x33\x02\x29\xaa\xe4\x9e\x2a\x69\x1a\x1d\x01\x0d\x8e\x9b\x71\xad\x2f\x4c\x05\x2e\x08\x6a\x88\xa0\x5c\xab\x18\x2d\x53\x25\xbf\x63\x68\x4c\xa6\x94\x49\xb7\x62\x29\x5d\x72\x5b\x02\x90\x44\x54\xfa\x42\x6b\xc7\xe8\xaa\x57\x7f\xc0\x12\x7e\x15\xbc\x93\x99\x76\x8a\x06\x99\xa6\x04\x94\x17\xd8\x06\x2d\xae\xaa\x45\xb7\xf1\x5c\xfa\xba\x7a\x78\x86\xe2\x37\x84\x99\xd9\xc3\x96\xc1\x40\x4b\x52\xe1\x85\x49\xd4\x9e\x50\x06\xde\x5f\x21\x8f\x8e\xd3\xa1\x59\xd1\x1d\xe4\x22\x78\xe7\x83\x3b\x83\x4a\x24\x08\x2e\x66\x29\x9a\xdd\x1e\x03\xf6\xb9\x67\x8f\x01\xdb\x63\xc0\xf6\x18\xb0\xd5\x67\x8f\x01\xeb\x3f\x7b\x0c\xd8\xc3\x1d\xda\xe5\xa0\xdd\x1e\x03\xb6\xf7\xca\xac\x3e\x7b\x0c\x58\xd4\xb3\xc7\x80\x7d\xf6\xd9\x39\x11\xbd\xc7\x80\x7d\xc1\xb3\xc7\x80\x7d\xe1\xb3\xc7\x80\xed\x31\x60\x7b\x0c\xd8\x1e\x03\x96\xf0\xec\x31\x60\x9b\x0f\x6f\x1f\xfc\x89\x7f\xf6\x18\xb0\x3d\x06\x6c\xc3\x67\x8f\x01\x5b\x7a\xf6\x18\xb0\x3d\x06\xec\x53\xcf\x1e\x03\xb6\xc7\x80\xd9\x67\xef\x6d\x5c\x79\xf6\x18\xb0\x35\xcf\x1e\x03\xb6\x59\x3b\x7b\x33\x20\xed\x65\x8f\x62\x06\x48\xc5\x9b\x6b\x3a\x4d\xe0\x85\xcc\x75\x0c\xae\x7d\x4f\x2c\x69\xa4\x44\x77\x33\x5a\xcc\x90\x34\x1f\x3a\x3f\x96\xb4\x94\x7d\x21\x22\x2c\xb8\x49\xc6\x44\x9b\x08\x7a\x58\x4d\xca\x6d\x72\x31\x81\x00\x72\xc0\xe4\xa6\x4f\x85\xa3\x09\xa4\xbd\xea\x09\x7d\xf5\xd9\xdd\x6e\x94\x69\xdb\x25\xbe\x07\xc1\x7c\x14\x98\x99\x62\xa5\x30\x7c\x28\x6e\x88\x46\xbc\x94\xae\x60\x03\xe3\x6c\x68\xc8\x5a\x8f\xa1\xba\x33\x97\xc7\x09\xde\xe0\x44\x66\x36\x83\x91\x1b\x09\x3e\xde\x1a\x3b\xdb\x08\xf0\x47\xb4\xb0\x00\x3d\x3e\xe9\x31\xae\x99\x0e\x46\x32\xad\xf5\x81\x61\x50\x50\xc4\x51\x70\x51\x2b\xb0\x3d\x28\x70\x9b\x6c\x6e\x1b\x23\xa7\x1c\x4b\xa5\x3c\x69\xb8\xf9\x9f\x0e\x37\x15\x00\xa6\xa2\xe3\x28\x5b\xa6\x97\x4b\x41\x49\x6d\x0d\x21\xb5\x23\x08\xb3\x0c\xa8\xa8\x9c\xba\xd2\x8e\xa2\xa1\x76\x13\x09\xb5\x8b\x28\xa8\x6d\x20\xa0\xb6\x8e\x7e\xca\x13\x56\xcf\x10\x52\xcf\xa4\x91\x3e\x42\x78\xca\x02\xe9\x6f\x66\x82\xc8\x19\xaf\xa2\x05\x4e\x2e\x61\xf3\x8e\x32\x5a\xb7\xb5\x3e\xbb\x52\xcb\x14\x3a\xf7\x60\x7f\xe9\x44\x86\xbd\xee\x0d\xe2\x40\xff\x90\x96\x04\x2a\x73\x63\x5a\xe9\xad\x05\x64\xa1\x33\x3c\x07\xa5\xb4\x2d\x0a\x42\xca\x14\xb5\x34\xf4\x56\xff\xf1\xd8\xf7\xd0\x70\xf4\x53\x89\x5e\xa5\x5d\x35\x69\x76\x4f\xe0\xce\xfb\xe3\x1f\xa2\xde\x31\x15\x4d\x9e\x5b\xfa\xcd\xd5\xe8\xac\x77\x4b\xc3\x07\x3f\xc0\x31\x3e\x9b\x91\xe2\xf6\xca\x42\x69\xb6\x77\x33\xa7\xbb\x99\x92\x5c\x4c\x39\x14\x83\x54\x2f\x4a\x3f\x86\xcc\x85\x5a\x0a\x81\x4e\x61\x15\x89\x98\xd3\x82\x1c\x3f\x81\xa3\x22\x97\xf1\x9f\x7e\x10\x10\x84\x09\x60\xe0\xbb\xa2\x76\x5d\x9b\xee\xf8\x08\x43\xe0\xa3\xb2\x3d\x05\xd0\x68\x85\x0b\xbf\x36\xd3\xf5\x87\x2e\xa9\x1b\x87\x92\x10\x6f\xd0\x4c\xa9\x9a\xb5\xe3\xe3\x82\xd7\x27\x5a\x74\x98\xff\x19\x57\x7c\x7c\x52\x63\xa9\x88\xd0\x36\x8e\xbd\xd6\x87\x85\xee\x01\x65\xd3\xe3\xba\x3c\x3a\xfe\x3f\x49\x7d\xb8\xb0\xbe\x72\x9b\x86\xf5\x80\x93\x60\x4c\xb4\xdc\xe7\x62\xc9\x5b\xa0\x27\x25\x7d\x93\x26\xdf\xdf\xa9\x45\x45\x12\x61\xc9\x5b\x81\x24\xef\xa5\x36\xca\x10\x10\xc8\x29\x54\x76\x03\x76\xfc\x68\x90\xe3\x2c\x67\x35\x13\xd4\x78\x87\x60\xc6\x3b\x63\x0b\xed\x0a\xb4\x38\x1b\xac\x38\x17\xa4\x38\x0b\x9c\x38\x07\x94\x38\x1f\x8c\x38\x0f\x84\x38\x3f\x7c\xf8\xd1\xa0\xc3\xcf\x02\x36\x9c\x31\x3e\x96\x09\x2e\xfc\x14\x50\xe1\xdd\xf5\xc1\xa0\x0c\xf0\xe0\xa7\x83\x06\x67\x99\xc7\xac\x56\x6c\xa2\x48\xd8\x02\x14\xf8\x29\xe2\xff\x8f\x16\xfb\xcf\x10\xf7\xcf\x19\xf3\xcf\x16\xef\x7f\x34\xc8\x6f\x3a\xdc\x37\xab\x4f\xe1\x49\x60\xbe\x39\x21\xbe\xc9\xeb\x4b\x19\x55\x14\x57\xaf\x49\x85\x17\xd7\x69\x40\xd0\x5c\x2b\x71\xb9\x02\x16\x35\x6e\xeb\x3e\xae\x61\x86\x25\x72\xa1\x6e\x4b\xf1\xe2\x62\xe9\x56\x05\x46\x18\x22\xce\x7a\x7c\xd1\x51\x6b\xb4\x7b\x91\x6b\xb4\x33\xee\x71\xc3\xab\xb2\x23\xbb\xe6\x07\x7e\x87\xf8\x44\x11\x86\x0e\x29\x73\x3b\xe7\x28\xf0\xd2\x74\xe1\x91\xe4\x78\x87\x7e\xeb\xab\x97\xae\x91\xaf\x2f\xee\x01\x91\x21\x29\x77\x3a\xf2\x65\xfb\xf8\xf9\xd0\x97\xfd\xe1\xa4\xad\xfa\xe1\x2f\x13\x12\xcb\x13\xfb\x7a\xd5\x55\x7f\x7f\x05\xfd\xf1\xa2\x08\xb3\x12\x59\x7e\xae\xaf\x6f\x9f\x24\x43\xdd\xfb\xc6\x8d\xc7\xa6\xf7\xf1\x2c\xe6\x06\xd6\x5a\x26\x47\x58\xff\x0a\x14\xd0\xbd\xd3\x75\x67\x9c\xae\x5b\x42\x60\x7f\x7d\xd6\xd6\xd3\x23\xae\xf7\xd6\xd6\x6f\xc5\xda\x0a\x68\xf1\xde\x08\x5c\x90\xd1\x2e\x29\x6f\x4e\x80\x74\x89\x80\x9d\x0e\xe7\xc5\x05\x23\xc4\x24\x8e\x75\xa4\x87\xc0\xef\x37\x69\xab\x6a\x61\x7c\x88\x3d\x06\xcc\xf8\xad\x75\x33\x23\x2b\xd4\x81\x10\x4a\x5d\xd3\xbb\xce\x36\x69\x04\xb7\x1a\x89\x68\x19\xd3\x2a\x86\x3d\x4e\xba\xf3\xda\x16\x91\x84\xc5\xbb\xd3\x71\x8f\xd8\xd0\x82\xd0\x01\xe8\x39\x23\xa8\xcb\x5f\xea\x77\x44\xb7\x3a\xe1\xa2\xa0\xe3\x6a\x81\x66\xb8\xd2\xc6\x92\x05\x69\xdf\xd2\xaa\xb2\xaf\x49\x00\x85\x13\x65\x42\xcf\x46\xa3\xa9\x38\x9b\xc2\x64\x60\xd3\x11\x72\xdf\x90\x42\xb7\x59\x54\x04\xb3\xb6\x31\xfd\xd4\xfa\xd1\x82\xb7\xc2\xf5\x33\x09\x15\x1f\xb4\x4e\x25\x62\xb4\x1a\xb8\x29\xef\x53\x60\xae\xee\xf9\xce\xa5\x2c\x49\x69\xd9\x2b\xef\xa8\x24\x03\x78\x67\x74\x9f\x4c\x5f\x5c\xd5\x7e\xb3\x6f\xcc\x67\x8d\xe0\x73\x5a\x76\x18\x7d\xbd\x2d\x00\x1f\x1f\xdd\xd6\x47\x78\xaf\x13\xad\x8c\xb3\x21\x23\x53\x0c\xea\xb1\x15\x68\x06\xd1\x69\xda\x37\xf8\x41\x56\xd2\x02\x2b\x22\x21\x27\xa1\x47\x6d\x3b\xa7\x38\xba\x27\x7a\x3c\xc1\x8e\x42\x87\x8c\x23\x0e\x99\x85\x2d\xa3\x6a\x01\x11\xbd\x59\xab\x50\xc9\xef\xd8\x51\xca\xc1\x34\x30\x07\x8c\xc6\x44\xe1\x2e\x39\xd0\xa9\x64\x12\x11\x86\xc7\x95\x3e\x7b\x80\xf8\xbf\x59\xbb\x01\xd0\x84\x60\xd5\x0a\x82\xa6\x58\x25\x48\x89\x35\xda\xbc\x59\xcf\x4f\x6f\x3b\x2a\x6d\xbc\x6e\x82\x5a\x26\x49\xa2\x22\x9b\xcd\x04\x88\xcc\x78\xd5\x27\x9a\xb7\x6a\x47\xee\x91\x87\x5c\x47\x26\x73\x27\x30\x12\x69\x4d\x24\xe2\x6d\x82\x27\xaf\x67\xfe\xd9\xe6\x72\x5a\x78\x7b\xbf\xd3\xda\x27\x36\x6c\x9a\x63\x87\x5d\x06\x5a\x79\xc0\x4f\xe0\xe0\x56\x26\x83\xfa\xf5\xe5\xf5\xcf\x6f\x4f\xff\xeb\xfc\x6d\xdc\xc2\x9f\xe3\x62\x16\x72\x8b\x33\x84\xe1\xa2\x00\x21\x3f\xc3\x73\x82\x30\x6a\x19\xfd\xa5\xb5\x90\xb7\x43\xdf\x5e\xa4\x58\xcd\x92\xde\x93\xa4\xf8\xea\x5b\x22\x4a\x72\xe4\x58\xd3\xb7\x54\x02\x51\x35\x74\xc2\x02\xff\xb9\x24\x68\x22\x78\xbd\x64\x68\xa1\x4b\x0f\xae\x5b\xe8\x1b\x06\x1b\xd3\x6c\x46\x44\x9c\x46\xfe\xfa\xfd\xf9\x35\xe4\xe0\x37\xc2\x10\xbb\x43\x72\x01\xbc\x13\x5a\x37\xa9\x83\xa6\x3f\xe5\x31\x3a\x65\x0b\xf3\xa5\x11\x66\x91\x2a\x4a\x45\xa5\x22\xa0\x9c\x5a\x43\xd2\xc1\x03\x5f\xbc\x3c\x86\xff\x7b\x81\x70\x59\x0a\x6d\x69\xfa\x1c\x8d\x62\x39\xcb\x2c\xaa\x65\x63\xbf\xd2\x71\x15\x4c\x2e\x23\x0a\xd2\x38\xa2\x5e\xf8\x8e\x97\x76\x25\x40\x09\x04\xfc\x8e\xd1\x6e\xa5\x12\x58\x91\x29\x2d\x50\x4d\xc4\x94\xa0\x06\xab\x62\x86\x6a\xbc\x40\x05\x17\xa2\x6d\x0c\xc5\x48\x89\x15\x8e\x6b\xf9\x7b\x2e\x50\xed\xa4\xb3\x96\x66\x5a\x25\xbf\x5e\x0f\x04\xed\x44\x76\xf8\x9f\x54\xca\x96\xc8\x93\x57\x2f\xff\xfa\x87\x3f\x47\x9a\xd7\x19\x0f\x6e\x2c\xf4\x29\x01\xf2\xd4\x87\x7f\xb9\x0d\x06\xa0\xeb\x1e\x33\x8c\xdd\x21\x66\xe7\x83\x34\x94\x94\x4d\xab\x64\x07\x48\xb2\x1b\x30\xd5\x09\x38\xec\x46\x30\x8a\xf5\x05\xa6\x7b\x02\x7b\x7d\x88\x77\xa5\xe4\xf3\x82\x75\x1a\x9c\xf3\x7b\x59\x81\xcc\x59\x60\xd8\x5d\x8c\x9c\x94\x4a\xf1\x1f\x81\x35\xe1\x1d\x53\x86\x7d\xc4\x34\x6b\xf0\x0e\x03\xf4\x12\xfd\x27\xba\x47\xff\x09\x5e\xb0\xbf\xc4\x37\x95\xc7\xc7\x94\x03\xc6\x3f\xe3\x52\x5d\x8c\x32\x2d\xf4\x3f\xf4\x7d\xa5\xdf\xa8\xd7\x43\x71\x34\xa6\xd6\x1d\x41\xee\x15\x11\xda\x0c\xb4\x6b\x98\x3a\x73\x49\x1e\x35\xdd\xc1\xe7\xb2\xbb\x53\xc1\x05\x17\x93\x3e\xfa\xff\x89\xf6\x37\x34\xfc\x03\x97\xea\xd2\x4a\xeb\x90\x42\x27\xec\x47\x0d\x17\x71\x4f\xdc\xa7\xb4\xfa\x4e\xef\xbd\xae\xc6\x06\x2a\x39\x24\x40\x98\x1c\xce\x19\x4d\x10\x0e\xbb\x73\x62\xd3\x70\xa2\xf9\xb6\xee\xa7\xb6\xd6\x92\x4f\x1f\x3c\x32\xd6\x48\x09\xca\xd2\x34\xbc\x3c\x06\xfb\x26\xa1\x17\x7a\x36\xca\x40\x19\xf8\x84\x69\x74\x6c\xec\x35\x1f\x1d\x86\x03\xa7\x25\x56\x81\x59\xac\x0e\x6b\x1e\x41\x26\x44\x08\x93\x27\x3c\x5e\xb8\x74\xa3\xe4\xdd\x96\x24\xe5\x1a\xc1\x15\x2f\x78\x34\x6d\x4a\xce\xad\x32\xb2\x7d\x81\xb9\x87\x58\xad\x8f\x8e\x7f\x78\x3d\x1a\xa0\x9b\xb3\xd1\x00\x71\x81\xae\xcf\xd2\xc0\x4f\xa1\x0b\xe6\xc5\xcd\xd9\xe8\xc5\x56\x57\x20\xc8\x61\xba\x39\x1b\x45\xbc\x64\x15\x3e\x5b\xe3\x66\x78\x4b\x16\x91\xda\x5d\x0e\x0d\x73\xe8\x37\x56\x96\x01\x99\x69\xae\x71\xb3\xf1\xdb\x04\xc1\x25\xdd\x69\x26\x17\x97\x75\xe8\x7b\x9a\x8f\xd2\xa5\xe6\x73\x52\x1a\xab\xd9\xb5\x42\x58\xd9\x70\xaa\x6d\xa4\x3d\xcf\xcb\xa7\x9e\x3d\xcf\xcb\xe6\xcf\x9e\xe7\x65\xdd\xb3\xe7\x79\xd9\xe0\xd9\xf3\xbc\x98\x67\xcf\xf3\xd2\xef\xc8\x2e\xe6\x18\xed\x79\x5e\x3e\xfb\xec\x79\x5e\x1e\x7c\xf6\x3c\x2f\x1b\x3d\x7b\x9e\x97\xd5\x67\xcf\xf3\xf2\x89\x67\xcf\xf3\xe2\x9f\x3d\xcf\xcb\x9e\xe7\xe5\xf9\x4a\xed\x3d\xcf\xcb\xf2\xb3\xe7\x79\xd9\xf3\xbc\xec\x79\x5e\xc2\x67\xcf\xf3\xf2\xc0\xb3\xe7\x79\xd9\xf3\xbc\xec\x79\x5e\x3e\xfd\xec\x79\x5e\xa2\x9f\x3d\xcf\xcb\x66\xcf\x3e\xf3\x70\xc3\x67\xcf\xf3\xb2\xe7\x79\x59\x7e\xf6\x3c\x2f\x9f\x7d\x76\xc3\x3d\xbe\xe7\x79\xd9\xf3\xbc\x7c\xf2\xd9\xf3\xbc\xec\x79\x5e\x3e\xf9\xec\x79\x5e\x22\x9e\x9d\x73\xba\xee\x79\x5e\xf6\x3c\x2f\x9f\x6a\x63\x6f\x6d\x6d\xf6\xec\x79\x5e\xf6\x3c\x2f\x2b\xcf\x9e\xe7\x65\xf5\xd9\xf3\xbc\xec\x79\x5e\xf6\x3c\x2f\x7b\x9e\x17\xff\xec\x79\x5e\xbe\x76\xbf\x93\x20\x92\xfe\x9b\x8c\x78\x45\x8b\x45\x72\xb6\xcf\x15\x91\xbc\x15\x85\xbe\xb1\xe1\xb5\xa8\x81\xf7\x7a\x8f\x42\x92\x92\xbd\x63\x14\x0a\x57\xc1\xc4\x85\x54\x0a\xc2\xce\xc1\x63\x4c\xc1\x4e\xd0\x29\xb8\x01\x5e\xc6\x23\x08\x86\xae\x7c\xb6\x99\xbe\x38\x67\x69\xb2\xd5\x1e\x0e\x64\x17\xd2\x39\x43\xda\x23\xbf\x8b\x14\xf7\xc2\x96\x3e\xb8\xb9\x70\xd3\x54\x34\x25\x31\x16\xa1\xeb\x16\xb4\x0b\x62\x43\xe0\xf2\x5b\x54\x34\xed\x00\xd5\xa4\xe6\x22\x21\x31\x22\x83\x05\xd7\xdb\x2a\xbb\xb0\x4e\x57\xa6\x43\x6e\xf2\x15\x87\xf9\x5f\x18\x7b\xa1\x63\xa9\xf2\x6b\x45\x9d\x38\x4c\xc2\x9a\x5d\x4c\x96\xc1\xa8\x54\xf5\xbc\x40\x97\x5c\x5d\xd9\xc3\xbd\xb5\xf5\xca\x8c\x58\x70\x53\xb8\x35\xd6\xaa\x33\x5e\x37\xad\x22\xbd\x8b\xcd\x4c\xb1\x31\x3a\xa8\x4c\x15\xe8\xdb\xc9\x06\x2d\x38\x9b\xd0\xa9\xb5\xbe\x4f\x6a\xcc\xf0\x94\x0c\xfd\x6c\x0f\x3b\xaa\x87\x93\xe8\x8b\x7a\x6b\xa9\xa0\x45\x85\x69\x3c\x70\x30\x97\x98\x38\x83\x5e\x00\x0d\x58\x07\xa8\x87\xdc\x34\x3f\xcd\x03\x0f\x1b\xa7\x46\x6e\x1c\xbb\xaf\xcc\x1f\x0f\x12\xac\x47\xac\xc0\x57\x01\x86\xd1\x9a\x9d\x9a\x6e\x30\x32\x84\xab\x66\xf6\x69\x93\x31\x25\xe5\xf2\xf5\x82\xe1\x9a\x16\xee\xe0\x9d\x56\x15\x2f\x8c\xab\xa6\x6f\x6c\xa6\x8d\xc4\xf4\x5e\x0f\xa9\xae\x5b\x85\xc7\x15\x39\x46\x17\x86\xb9\x82\xb3\x6a\xa1\x8f\xa5\x24\xca\x21\x17\xec\x99\x48\x33\x30\x53\x60\xb1\x89\x90\xd8\xb5\xba\x3a\xec\x35\x43\xb5\x41\x98\x96\x70\x9c\x11\x44\x98\x12\x0b\xbd\x2d\x47\xbc\xbc\xd6\x3b\xb3\xf7\xeb\x64\x06\x8e\x44\x24\x6c\x0e\x14\x6c\x22\x02\x36\x0f\x6e\x35\x1d\xb3\x9a\x17\xaf\xda\x45\x16\x0c\x81\x50\x98\x08\xd4\xdb\x16\x0d\x2f\x8f\xd7\x48\x2c\xc4\x27\x89\x3d\xd0\x2d\x8e\x78\xa9\x75\x29\x41\x8c\xd8\xf2\x67\xd4\xf8\x15\x2f\x74\xe7\x6e\xc1\x11\x88\x55\xa7\x64\xe1\x39\xa6\x95\x3e\xc0\x89\x1d\x58\x25\x63\x4c\x0b\xd6\x64\x0a\x61\x58\xcc\xfe\x2e\x6d\x16\x9b\xed\xd5\x4b\x18\x2b\x66\x5c\x12\x06\xf2\x12\xfb\xc4\x1e\x9f\x76\x60\x45\x4c\x69\xae\xe8\x54\x70\xf1\xc5\x04\x91\xba\x51\x8b\x01\x22\x73\x22\x16\x6a\x06\x20\x04\x4f\x27\x0a\x62\x8d\x4a\x54\xe3\x32\xd8\x1d\x03\xc4\x9d\x5f\x3a\xb1\x79\xb8\x1f\xac\xa9\xd6\x56\xca\x18\x6e\x54\xfa\xec\x8a\x6d\xef\x9a\xdc\x2c\x37\x28\x55\x68\xe6\x64\xa9\x41\xc0\xb0\x5a\xd3\x38\x3e\x5b\x94\xf1\x2c\xbc\x85\x5e\x04\x19\x25\x7a\x4b\xd4\xf8\x1e\xbc\x96\xb8\xe6\x2d\x53\x86\xbe\xc6\x18\x12\x5e\xf9\x33\x79\x37\x4f\x08\xa3\x7b\x54\x95\x1f\xe5\xb9\xda\x71\xe9\x18\x2b\x46\x39\xd2\x97\xb1\x52\x44\xb0\x6f\xd1\x7f\x1f\xfe\xeb\x9b\x5f\x87\x47\xdf\x1d\x1e\xfe\xf8\x72\xf8\xb7\x9f\xbe\x39\xfc\xd7\x31\xfc\xc7\x7f\x1c\x7d\x77\xf4\xab\xfb\xc7\x37\x47\x47\x87\x87\x3f\xfe\xfd\xdd\x9b\x9b\xd1\xf9\x4f\xf4\xe8\xd7\x1f\x59\x5b\xdf\x9a\x7f\xfd\x7a\xf8\x23\x39\xff\xe9\x0b\x5f\x72\x74\xf4\xdd\xef\xe3\x83\x92\xa9\x11\xf8\x7c\xf1\xf7\x4c\xd1\xf7\x47\x89\xbd\x5b\x19\xbb\xf5\xc3\x6f\xaf\xc0\x95\xe3\x6f\x83\x16\x9f\x3a\xfe\x22\xd9\x55\x73\x31\xe9\xda\xa7\x12\xf1\x9a\x2a\x45\x4a\x7b\xf7\x06\x94\x38\x4b\x6e\x22\x2b\xb0\x80\xcd\x0a\xc3\xed\x1d\x50\xb3\x74\xde\xa5\xe8\x6e\xf9\xfb\x15\x1c\x63\x0c\xd1\xba\xa9\x48\x4d\x98\x02\xc1\x33\x74\x26\x2f\x78\x19\x8f\xbb\x11\x14\xc6\x0f\x42\xee\x0b\x42\x4a\xdb\xc9\xbd\x6c\x0c\x9e\xbd\x6c\xdc\xcb\xc6\xcf\x3d\xc9\xae\xf2\x1c\x82\xf1\x2a\xec\x84\x75\x71\x49\xa7\x29\x83\xe3\xdc\x33\x27\xf0\x09\xe0\x27\xe6\xb4\x6c\x71\x15\x12\xcc\x3a\xce\xd1\x38\x09\x10\xb8\x76\x6a\xbc\x58\xf1\xe4\x50\x46\x43\x36\xdb\x81\x47\xfd\xc0\x0f\xad\x5e\xd6\x45\x9c\x5f\x9c\x56\x77\x78\x21\x23\x49\x2f\xbf\xe7\x02\x80\x24\x4b\x8d\x22\x2e\x1c\xbe\x28\x34\x71\xfb\x1e\xfe\xb8\x08\xe1\xba\x89\xee\x53\x54\x58\x23\xfb\x40\xfa\x1f\xba\x38\x92\x9d\x88\x2e\x2b\x44\xef\xf3\xb8\x81\x5f\x13\xa5\xac\x13\x70\x69\x4b\xe0\x6e\x4e\x7d\x58\xb4\x3f\x3d\x06\x4a\x04\x54\xb3\xfa\xcb\x09\xd7\x6b\x02\x45\x1a\x26\x13\x52\x44\x5a\xc1\x86\xd2\x63\x4d\x3b\x06\xde\xae\x28\x6b\x71\x55\x2d\xdc\x9c\x90\x12\x71\x16\xd5\x10\xb9\xa7\x0a\xb5\x4c\xd1\x4a\x6f\x26\x24\xc8\xb4\xad\x70\xe8\x40\xb4\x23\x73\xa8\xbb\xf2\x18\xbd\x67\x05\x09\x7f\x1c\xe7\xf8\x5e\x6a\x40\x2b\x1d\x15\x51\xa4\x1c\xc0\xab\x97\x77\x20\xe0\xd6\x7a\x12\xc3\x2f\x4b\x54\xf3\x6e\x2e\x3d\x2e\xe9\xd8\x1c\x44\x0f\x9a\x40\x25\x9d\x4c\x74\xcb\x60\xa4\x33\x2e\x6a\xbc\xda\x2b\xcc\xca\xa8\xd6\xb5\x06\x04\xd9\x2a\x21\x69\x30\x14\x8a\x79\x21\x69\x49\x0a\x2c\x5e\x84\x25\x46\x4e\x2b\x35\xe3\xed\x74\xd6\xed\x8a\xb4\x29\x47\x52\x01\x5a\x4b\x4f\xa6\x74\x1e\x8f\xa5\xcd\x26\xb5\xae\xc3\x0a\x62\x54\x32\x4e\xcc\x71\xbf\xc3\x91\x6d\xaf\x20\x0a\x0c\x44\xdc\xac\xb9\x4b\xe1\x02\x48\x20\x29\x83\x7c\x3b\x46\xee\x55\x86\x01\x1f\xa3\x0b\xc3\x9f\x31\xe8\xbf\xb5\x37\x25\x66\x32\x02\x48\x9c\x03\x77\x46\xe2\x01\x97\x1a\xa0\x3e\x63\x0d\x68\x8e\xcd\xcb\x31\x5b\xb8\x04\x11\x80\xac\x99\xc4\x36\x9f\xb3\x52\xc5\xf9\xde\xfd\x59\x7a\xf2\xaa\x3d\x92\x14\xad\xa0\x6a\x71\xc6\x99\x22\xf7\x51\xb2\x2f\xc7\xad\x7e\xdd\xef\x46\xef\x5e\x77\x5d\x44\xbc\x31\xdc\x92\x4b\x85\x9b\x66\xbc\xad\x4a\x60\xd8\x6d\x19\x88\x9d\xb8\x1b\xe5\x62\xa2\xaf\x70\xb3\xdf\xe0\xc6\x84\x70\xda\x72\xc7\x1c\x52\xd4\x00\x66\x7f\x69\xe9\x1c\x57\x84\xa9\xe0\x2f\x46\x80\x1d\x0c\xff\xe8\x31\x63\xae\x0a\xcb\xdb\xce\xc2\x20\xc3\x86\x97\x9d\x41\x71\xe2\xa6\x0e\x3e\x22\xf7\xea\x19\xc6\x5b\x41\x61\x1a\x09\x3a\xa7\x15\x99\x92\x73\x59\xe0\x0a\xec\xa8\x6d\x1b\xe7\xa7\x0f\xf4\x0b\x76\xa6\xe0\x95\xd4\x0a\x98\x36\x56\xb5\xaa\x69\x90\xd3\x10\xf8\x9b\x62\xca\xa0\xea\x50\x42\x70\xc8\x36\x2a\x0d\x74\x5b\xdb\xdb\x0d\x16\x7a\x17\x3a\x88\xb6\xb9\x1a\xc7\x9c\x57\x96\xa6\xb6\x5a\x74\xfd\xa2\xf1\x51\x14\x90\xc5\xfc\x67\x46\xee\x7e\xd6\xbd\x90\x68\x52\xe1\x69\x77\x35\x13\xb5\x92\xef\x92\x8e\x1a\x7f\x70\xa2\x81\x83\xb5\xd5\x8a\x8d\xd6\x2a\x3a\x3c\x7d\x28\xc1\xe3\x0d\xba\x57\x47\x20\x4f\xb0\x44\xbe\xed\x38\xd5\x41\x3f\x7f\x38\x82\x7b\xe2\xec\x74\xf4\xf3\xf5\x3f\xaf\x7f\x3e\x7d\xfd\xee\xe2\x32\x1e\x35\xcb\x15\x31\xde\x95\x40\xbb\x2f\x3c\xd0\x43\xaf\x82\xc7\x0a\x1d\x73\x79\x0c\xa1\x13\x20\x73\x61\x25\xbf\x4b\x8c\x2f\xeb\x3d\x45\x70\x9c\xe6\x8a\x9b\xe6\x54\xd4\x5c\x8c\x04\x9f\xd0\x2a\x3a\x34\x99\xeb\x04\x2f\x75\xc7\x45\x9a\x4e\xed\xc7\xdd\x75\x63\xf8\x05\x56\x71\x0e\xc1\x95\x41\x21\x8b\x5d\xbf\x26\xde\xb3\xd5\xcb\x41\x30\x19\x11\x4b\x5d\x8c\x3f\x44\x5b\xdd\x33\x5b\xcf\xde\xd4\xdd\x88\xfc\xf3\x1c\x91\xf8\x8a\x17\xb8\x82\xfa\x45\x69\x1b\x1f\x65\x0e\xb2\x2e\xf7\x2b\xc8\x36\xc1\x6e\x3b\xa3\x8a\xe3\x12\x8c\x55\x2b\xfc\x4b\xe2\x58\xb5\x9d\xda\x05\x81\xf3\xa4\x8e\xdc\x18\xa4\x3f\xb4\xe7\xd2\x63\x1a\x41\xbc\x56\xb3\xd4\x3c\x47\xf1\xd5\x06\xdd\xf3\xae\x0f\x43\xb0\xa3\xec\x25\x72\xa6\x9e\x39\xdf\x8c\x3d\x60\x74\x02\x1e\x10\x70\x03\xd1\x09\x6c\x4a\x70\x00\xbd\x75\xcb\x90\x50\xf8\x24\x13\x12\x00\x5e\xb2\x23\xbb\xd3\xcc\x8f\xdf\x91\x06\xa6\x7c\x4b\xf5\x0c\x4e\x3a\x21\xed\xb6\x8d\xd3\x41\x0c\x56\x39\x71\x3f\x7e\x84\x12\x5b\x4e\xfe\x63\x91\xcc\x0b\xe6\x97\x18\x0d\x83\xa3\xd5\x08\x32\x5c\x3d\x5e\xa9\xc0\x85\xab\x96\x29\x5a\x13\xc7\x7d\x31\x5c\xd2\x89\x84\xf9\xfa\x40\x7a\xa6\xd9\x2c\x1b\x1d\xa1\x0f\x0c\xce\x2b\x23\x25\x1a\x22\xc6\xbb\x25\x22\x6c\xc2\x45\x01\x41\x9a\xad\x6e\xf0\x02\x37\x78\x4c\x2b\x9a\x22\xcc\x73\x6d\x70\x28\xdc\x10\xf4\x07\xdc\x49\x65\x79\x52\x0a\xde\x98\x9b\xd8\x25\xa5\xa6\x03\x03\xfb\xc9\x4f\x21\xc7\x30\x28\xec\x93\x7e\x47\xa6\x02\x33\xd5\x39\x72\x57\x36\xce\x6f\x51\x07\xc9\xa1\x04\xe0\x32\x5f\x09\x94\xd3\x52\xcb\x8c\x70\xd9\x92\xcf\xd5\xae\xd1\xa9\x9e\xb9\xc1\x05\xd9\x4f\x68\xf4\xfe\xfa\xe2\xff\x2d\x9d\x9b\x78\xd5\xce\x3c\xbb\x4d\xa6\xa8\xe5\x41\xb6\x6d\x73\x65\x2b\x50\xed\x37\xce\xd7\xbd\x71\xbc\x83\x68\xeb\x4c\x50\x57\x2d\xeb\x57\xc1\xef\xba\x86\xea\x24\x5d\x67\xe4\x49\x13\xfa\x6f\x0d\x63\x3d\x82\x20\xfd\x13\xa6\x28\x44\xde\x02\x6f\xad\xe2\xa6\xc8\x52\x96\x7a\xad\xe1\xed\x3a\xc1\x95\x7c\xae\x57\x64\x8a\x6b\xa7\x11\xbc\x78\xc7\x5b\x96\x87\x5a\x2a\x61\xc7\xf9\x8e\xa0\x92\x30\xae\xac\x37\x05\x6c\x09\x3e\x81\x6f\x91\x81\x4d\x05\xac\x91\x3d\x3d\x27\x41\xcd\xba\x09\x54\x2b\x1f\xdf\x77\x7a\xb8\xb1\x5f\x5a\x49\x96\xe3\x17\x56\xaf\xea\x50\x54\x13\x1e\x0f\x1e\x11\x04\x97\x60\x60\x36\x58\xcd\x0c\x9d\x59\x8d\xe5\x2d\x29\xcd\x07\x89\x54\x0e\x3e\x07\x07\x42\xfc\x6e\xa6\x6f\xf4\xe4\xba\xb4\x19\x70\x08\x1b\x52\x37\x48\xd4\x49\x31\xc5\xb6\x7a\x1a\x12\x04\xbb\x5e\x84\xf7\xac\x5a\x5c\x71\xae\xbe\xf7\xd5\xda\xb6\x7d\x32\xfe\x61\xc3\x11\x7d\x27\x26\xf8\xa5\x31\x74\x79\x08\x1b\x07\xe4\x62\x50\x63\x2e\x55\x2c\xea\x05\xf9\xad\x4a\x45\xd1\xb2\x53\xf9\x46\xf0\x36\x5a\x87\xcb\x69\x6f\xbe\xb9\x78\x0d\x17\x5f\x6b\xd9\x7e\x98\x12\x0b\x28\x3e\xea\x3c\x5e\x19\x83\x36\x1f\x2c\xaf\x52\x28\xd9\x92\x29\x54\x10\x7a\x87\x17\x08\x57\x92\x7b\x97\x1a\x5b\x17\x6e\x75\xb1\x5c\xfd\xf5\x98\xab\xd9\x4a\x10\x37\x16\x05\xa2\x9f\xd5\xf6\x06\x01\x69\x50\x97\x9f\x4d\xd9\x4a\xb3\x0a\x12\x8b\x1a\x41\x0a\x52\x12\x56\x3c\xd7\x13\xb1\x6d\x0e\x1b\x38\x55\x97\x9c\x69\xf1\xba\xed\x73\x75\xe1\xfd\x93\x76\x35\xc2\x53\x04\xae\x6c\x1b\x44\xc4\x00\xd3\x03\xe1\xda\xca\x94\xac\xaf\x8b\x09\x44\x3d\xcd\xa6\xfb\x7b\x3b\x26\x95\x5e\x6c\x5a\x55\x7a\x07\xd2\x12\x2b\x03\x4d\xa0\x35\x9e\x12\x84\x95\x3f\x84\x8a\x23\xc2\x64\x2b\xec\xbe\x89\x04\xe8\xe8\xc7\x63\x8b\xec\xd0\x3e\x5c\xbc\x46\x2f\xd1\xa1\x1e\xdb\x11\x68\x1c\x13\x4c\x2b\xa0\x90\x02\xf0\xdf\x52\x48\x76\xe2\xe0\x49\x49\x53\x00\x72\x04\x71\x61\xae\x96\x01\x62\x1c\xc9\xb6\x98\xb9\x39\xa0\x9c\x79\x8f\xb0\xe5\x13\x4e\xca\x85\xd9\x8b\x9d\x7c\xf7\xe1\x07\x49\xc4\xb6\x8f\xad\xbe\x0e\x3f\x3c\xe1\x75\x18\x9a\x88\xfa\xf8\xf7\x17\xcc\x9c\xd5\x9a\x28\x5c\x62\x85\xed\x35\xe9\x7e\xb0\xdf\xb5\xfb\xcb\x32\xe1\xb2\x94\xe4\x2d\x65\xed\xbd\x61\xec\xdc\x89\xb0\xc7\xf5\x39\xf4\x08\x15\x6e\xa1\x79\x10\xb7\x73\x11\x8a\x0c\xe9\xd1\x17\xbd\x63\x34\x78\xc0\xea\x86\x5b\x02\x1b\xfa\x07\xa2\x0d\x21\xcc\x4a\x5e\xaf\x74\x72\xc2\x05\x22\xb8\x98\x45\xf7\x26\x40\x8d\xec\x0f\xa6\x7d\x7e\xdb\x01\xa1\x8a\xcc\x49\x95\xcd\xb7\xff\x56\xbf\x4d\x4f\x8e\xdb\xb9\xf0\x7a\x54\xe1\x31\xa9\x2c\x61\x8b\x61\xf1\xca\x78\xc2\x32\xf9\xc0\x05\xcf\x08\x89\xb9\xe2\x06\xc9\x85\xfd\x44\xe8\xd7\x3f\x8b\x79\xc8\x0a\xbe\xb8\xb1\xe8\x92\x6e\x1e\xc0\x07\xfa\x1c\xe6\xa1\x4d\x50\x10\xd1\xf2\x3c\x68\x6d\xb3\x3f\x0f\xa0\x7f\xed\xfa\x3c\x48\x52\x14\xbc\x6e\x76\x04\x29\x79\x63\x50\xf8\xba\x47\x5f\x8a\x8a\xec\xff\x18\x27\xc1\x9d\x2d\x0f\x33\x56\xe6\x1e\x74\x64\xcc\xff\x37\xb8\xce\x41\xda\x2d\xdf\xf1\xb6\xf5\x64\x44\xa6\x6f\xd1\xbe\xf0\xb7\x78\xe3\xed\x61\x98\xbd\xe7\xc9\x61\x98\x01\x97\x1b\x06\xf7\x7c\x0f\x12\xf9\x35\x80\x31\xb5\x11\x00\xf3\x4a\x18\x24\x94\x35\x58\xcd\x06\x48\x90\xca\x30\xa4\x5b\xf1\x7c\x6b\x3c\x5e\x07\x20\x71\x5c\x87\x9c\xb8\xe9\x30\xab\x86\xcc\x2d\x2b\x76\x73\x1d\x5e\xd3\xfc\xe6\xf2\xfd\x4d\x98\x00\x8c\xd9\xc2\xd0\x14\x24\xa4\xb7\x9a\x67\xf7\xd4\x8a\xc7\xc4\x74\x2e\xaf\xe2\x63\x43\x3a\x93\xde\xb7\x1e\xd1\xf9\x74\xa7\xf4\xcb\x50\x9e\xcb\x18\xcf\xac\x5d\x58\x06\x7c\xae\xb6\x91\x61\xe5\x92\x8f\x80\xbd\x3a\x77\xc8\x01\xf2\x0f\xd3\x23\x67\x65\x17\x5a\x70\x28\xca\xa6\x32\x74\x82\xe0\xaa\xca\x82\x49\x58\xe7\x05\x71\xa7\xc0\xb3\x99\xad\x7a\x03\xfa\xd5\x36\x52\x5a\xff\x8c\x07\xe3\x79\x7b\x22\x2a\x6d\x51\x3c\x73\x3f\xc4\xb4\x96\xf8\x4c\xe8\x19\x54\x14\x57\xd7\x0d\x29\x76\xe5\xb6\x78\xf3\xee\xfa\xb4\xdf\x33\xd0\x85\x2d\x77\x23\x81\xef\x11\x2e\x6b\x2a\x25\x04\x7c\xc8\x78\xc6\xf9\x6d\x52\x93\x87\x2e\xd5\x76\x4a\xd5\xac\x1d\x1f\x17\xbc\x0e\xb2\x6e\x87\x92\x4e\xe5\x89\x95\x28\x43\x3d\x71\x47\x88\xb2\xca\x67\x2a\x83\xb7\x90\x29\x69\x23\x08\xc9\x83\x47\x85\x1f\x3d\x6c\x3d\xc8\x4f\xf1\xd0\xec\xd5\xe9\x01\x82\x4d\xd8\xbc\x5b\xd7\x3a\x56\x77\x55\x1a\x0f\xfe\xd2\xce\x7a\x60\xec\x21\x59\xa4\x8d\xe2\xac\x9d\x47\x63\xbc\x6e\x7d\x92\xac\xd2\x5f\x10\x99\x84\x80\xcd\x79\xe6\x7e\xe8\xba\x84\x4a\x62\x48\x44\x08\xf0\x79\xe1\x07\x73\xee\x21\xbc\x7d\x00\xb5\x04\xed\x9f\x1e\xe4\xe2\x37\x3d\xad\x2a\xbd\x90\xd8\x12\xca\x04\xe8\x4e\x30\x4d\x3c\x87\x8b\xd4\x2b\x6e\xe8\x5b\xb4\xb1\x10\x8e\x22\xbd\xe6\xfe\x21\x55\x8e\x3d\xc7\xd1\xf7\x28\x6e\xda\xc6\xa8\xa6\xf7\xba\x87\x61\x8b\x7d\xbe\x11\x08\xfc\xaf\xff\x3a\xa1\xb4\x12\x02\xf0\x81\xa7\xed\x1a\xe8\x15\x0a\x1b\x71\xc9\xd1\x4a\x5f\x5b\xfa\x8b\x4b\xa2\xb4\xa1\x66\xe6\x2d\x8c\x3e\x68\xc3\x4a\xb4\x19\x0e\x43\x4a\x64\x18\x85\xd1\xe1\xac\x92\x22\xf1\x3c\x40\xa4\xd8\xf6\x49\xeb\x20\x4e\x79\x7b\xaa\xc8\x31\x5a\x93\xbe\xf3\x64\x11\x64\xf4\xe5\x51\xe4\x47\x8c\x55\xa1\x5d\x89\x57\xa5\x52\xad\x04\xb4\x31\x5b\xe3\x59\x09\xa9\x6b\xe8\x2a\x78\x69\xc4\xcb\x15\x46\x1b\x57\x74\x3e\xbe\xc4\x88\xde\x1c\x9d\x09\xc2\xb8\x75\x8f\x04\x75\xdf\xc9\x3d\x29\x5a\x45\x4a\x4b\x6c\x65\x5d\xca\x86\x14\xa7\xdf\x9b\xe8\x1e\xb8\x24\x7d\x5b\x71\x52\x0e\x3a\x36\x70\x6b\xeb\x78\x6a\xae\x01\xfa\x5f\x90\x92\x96\xc7\xb2\x2b\x55\x3f\xf2\x7f\x1e\x3b\x15\x80\xa3\x2e\x30\x73\xb6\x15\x54\x3c\x37\x1e\x6e\x4b\x60\x65\x79\x3c\xc6\x04\x35\x58\xe0\x5a\xdf\xc1\x12\xd9\xe5\x19\x93\x29\x35\x69\x81\xc1\xa5\xe8\x19\xb0\xe2\x18\xdd\xc0\xb0\xa1\x0a\xd5\x74\x3a\x33\xa7\x05\x61\x28\x0d\x89\x1c\x6e\xac\xe2\xb8\x44\x20\x58\xb8\x40\x77\x58\xd4\x5a\x17\xc0\xc5\x0c\x40\x68\x98\xa1\xb2\xd5\xe7\x01\x01\x5f\xd3\x62\x28\x15\x56\xda\xc6\x24\x22\xc1\x07\xe7\xa6\x69\x0b\xc5\x4b\x1e\xbb\x30\xdb\x96\xf9\x74\xf4\x49\xcb\xe2\x05\x39\xbf\x27\xc5\x52\xe9\xef\xba\x06\x8a\x3f\xee\x8e\xb3\x63\x2a\x4b\x56\x06\x77\xc4\x54\xb6\x23\xdc\x15\xdd\xe4\xcc\x4e\x38\x75\xd6\xa7\xf9\xa7\xb6\x47\xfb\x8b\x20\x5d\x10\x2b\xe0\xed\xd5\xff\xd4\x5b\x5d\x9f\x5c\xc3\x11\xc4\x85\xaf\x23\x97\xd4\x2d\xd7\x0f\xa8\x4c\xc5\xb9\x42\x87\x07\x27\x07\x47\x2b\x7b\xe1\x40\x86\x69\x06\x26\x23\xba\x1b\x90\xa4\x75\x53\x2d\x60\x0c\x07\xa6\x18\x55\x42\x91\x57\xfd\x38\xc0\xaa\xaf\xc0\x20\x67\xa4\xaa\x06\x48\x6a\xf5\x17\x3b\xf2\x5b\xf3\xa9\xfe\x91\x12\x6d\x61\xdc\x64\x87\x07\xbf\x1e\x0c\x10\x51\xc5\x11\xba\xe3\xec\x40\x99\x80\x07\xba\x01\x1b\x32\xa9\x4f\xbe\x13\x0b\xde\x42\xbd\x64\xb3\x6c\x9e\x2f\xb9\xc0\xda\xfc\x69\x8d\x8e\x6e\x48\x37\x48\x95\x50\xff\x57\x3f\xe7\xf7\x54\x69\x55\x44\xb5\xe0\xa6\x78\x69\x2c\x05\xa2\xc5\xab\xbe\xf0\xf4\x4d\x77\x32\x23\xb8\x52\xb3\x85\xb7\x5e\x4c\x29\x5a\x89\x5a\x66\xbf\x49\xd7\xa1\x76\x20\x6d\x74\x77\x13\x38\x6d\x45\xec\x9b\x99\x20\x72\xc6\xab\xad\xa7\x71\xba\x32\xa9\x05\x67\x52\xcb\x14\x6d\x62\xdb\x3e\x4a\x9f\x41\x67\x4b\xb5\x72\x4b\x78\xaa\x4f\x99\x20\xa5\x55\x96\x2c\x7b\xe2\x0c\xcf\x41\x53\xd0\xfa\x1c\x29\x53\x4c\x93\xd0\x26\xfa\x63\xce\x42\xae\xdb\xaf\x99\xaa\x9f\xa9\x68\xf2\xdc\xd2\x6f\xae\x46\x67\xbd\x5b\x1a\x3e\xf8\x01\x8e\xf1\xd9\x8c\x14\xb7\x57\x69\x05\x45\x76\x04\x5a\xd0\x70\xb1\x4d\xc5\x40\x37\x9f\x4d\x2b\x18\x71\xa1\x10\xf3\xa5\x91\xf5\xd9\x9a\xc2\x2a\x12\x31\xa7\x05\x39\x76\x65\x93\x5d\x70\xde\x15\xc0\xc1\x6c\x4a\xd0\x2b\x7d\x20\xfe\xf2\xe7\x3f\xff\xf1\xcf\xe9\x32\x3a\x9d\xc9\x3c\xfd\x20\x20\x00\x43\xc1\xc0\x77\x45\xed\xba\x36\xdd\x59\xe7\x6c\xb6\x3d\x05\xa3\xae\xc2\x85\x5f\x9b\xe9\xfa\x43\x97\xe6\x95\x94\x84\xa0\x35\xe1\x0a\x2d\x3a\xcc\xff\x8c\x2b\x3e\x3e\xa9\xb1\x54\x44\x68\x1b\xc7\x5e\xeb\xc3\x42\xf7\x80\xb2\xe9\x71\x5d\x1e\x25\x54\xb8\x43\x81\x59\xbd\xc2\x2d\xde\xa3\x99\x79\x80\x27\x5c\x4f\xca\xd6\x5d\xf0\xc8\xf5\xf2\x5b\xf4\x22\x8e\x98\x5a\x2f\xc1\x1b\x92\x27\x13\xed\x87\x9b\x9b\xd1\x1b\xa2\x42\x81\xcd\xe0\x43\xf4\xe6\xfc\xc6\x57\xbc\xd2\xbb\xcb\x24\x35\xed\xa5\x76\x8a\xd4\x9e\xf1\xb4\x92\x67\xb9\xe3\x2e\x46\x94\x00\xcd\x36\x63\xa4\xd0\x0b\x3d\xe8\x15\x57\x71\x38\xc4\x8b\xd1\x31\xfa\x27\x6f\x41\xe5\xc2\xe3\x6a\x81\xee\xb0\x61\x34\x90\x24\x4d\xa6\xbc\xd0\xdd\x78\xa1\xa5\x96\xde\xd5\x3f\x10\x5c\x9a\x72\x09\xe0\xda\xd9\xfa\x59\x0d\xfa\x94\x6d\xd9\xce\x5a\xa9\x78\x8d\x66\x76\xa8\x66\x0e\xbb\x9a\x72\x46\x37\x32\x47\x10\x62\x3f\x12\x09\xd2\x18\x6b\xc9\xfe\xcd\x57\x61\x0b\xad\x48\x21\x33\xcf\x41\xe5\x21\x8c\x8a\x70\xaa\xac\xa2\x0f\x2e\x4c\x6a\x65\x54\xb4\x4b\xac\x7b\xb2\x14\xf0\x44\x99\x8a\x78\xa2\xf4\x42\x9e\xee\x25\xe9\x41\xc8\x3c\x25\x41\x51\x96\xb2\xa0\x28\x7b\xb5\x47\x64\x43\x6d\x76\x73\x19\x00\x8e\xee\x68\x2a\x2b\x21\x72\xce\x64\x5f\x8b\x03\x33\xce\x68\x61\xc2\x19\xa8\x6d\x38\x43\xbc\x55\x4d\xab\xc0\x15\x54\x60\x49\x86\x73\x2c\xa8\x16\xa8\xa6\xa6\xb2\x47\x42\x31\x7d\xda\x15\xe7\xe0\x27\xf1\x41\x67\xd3\xe3\xf4\x6e\x66\xd2\x66\xf4\x03\x9b\x2d\xf3\x0a\xaf\x2c\x4e\xfa\x8e\x46\x3b\xed\x83\x41\xa6\x8c\xd5\x2c\x9f\x59\x87\xd5\x0c\x90\x7d\x10\xcb\x72\xc0\x50\x10\x9c\xda\x6c\xd8\x81\xc4\x9b\xac\x56\x6c\xa2\x48\x80\x78\x3b\x17\x4b\x76\xb0\xee\xe1\xea\x1c\x66\xc2\x9a\x3c\xbe\x59\x1d\x96\x40\x1e\x13\xad\xdb\x5f\x9c\x5e\x9e\xfe\x7c\xfd\xf1\xec\xe7\xcb\xd3\x77\xe7\x29\xaf\x4e\x2e\x5f\x96\xb3\x80\x59\xb6\x12\x66\x8f\x54\xe0\x51\x3f\xb2\x98\x91\xdd\x81\x99\x5c\x43\x6f\x42\x52\x32\x6b\x03\x04\xa5\x75\xd2\x58\xea\xd0\x92\xd3\x54\x0b\x9e\xad\x4a\x1c\x8b\x2a\x78\x4d\x2a\xbc\xb8\x26\x05\x67\xe5\xd6\xd1\xd9\x97\x5e\xd8\x48\xd3\x21\x5f\x51\x88\x2c\x31\x66\xb9\x1a\x5e\xb6\x0e\x92\xc3\x07\x84\x90\x06\x33\xbe\xe8\xa8\x35\xda\xbd\xc8\x35\xda\x19\xf7\x78\x43\x04\x05\x44\xd0\x2e\xec\x9a\x1f\xf8\x9d\x2d\x0e\x76\x48\x99\xdb\x39\x47\x81\x97\xa6\x0b\x8f\xa4\xb3\xa9\x29\x8e\x5e\xbd\x74\x8d\x7c\x7d\x71\x0f\x8b\xf4\xd9\xe9\xc8\x97\xed\xe3\xe7\x43\x5f\x1d\x6c\xa9\x1f\xfe\x4a\xc1\x0f\xa1\x25\x31\xfe\xea\xd8\xe7\xa9\xbd\x82\xfe\x78\x51\x84\x59\xe9\x20\x67\x5f\xdf\x3e\x51\x45\x73\xcd\x8b\xdb\x4c\x6e\xd7\x9b\xb3\x91\x79\xdb\x12\x9e\xc5\xdc\xc0\x5a\xcb\xe4\x08\xeb\x5f\x81\x02\xba\x77\xba\xee\x8c\xd3\xf5\xc0\xa4\x75\xe1\xea\xdb\x8d\x1d\xa8\x07\x7b\x6b\xab\x7b\x9c\xe2\x23\xfa\x15\x50\xf6\xd6\xd6\x03\xcf\xde\xda\xda\xe0\x71\x95\x68\x29\x67\x6f\x04\x2e\xc8\x68\x97\x94\x37\x27\x40\x50\x69\xeb\xb3\xa3\x4e\x87\xf3\xe2\x82\x11\x52\x1a\xf9\xe1\x8a\xea\xa2\xa9\x1e\x89\x81\x47\x83\x0f\xb1\x03\x16\xb7\x22\x41\xcd\xbb\x99\xd9\x57\x5b\x15\xd7\x05\x99\xd7\xf5\xae\xb3\x4d\x1a\x4f\x86\xee\xaa\x86\xd8\xe3\xa4\x3b\xaf\x6d\x11\x49\x58\xbc\x3b\x1d\x87\x2b\x88\x24\x9d\xea\xe9\x72\xb5\x9c\x0d\x89\x96\x2b\xbd\xd7\x75\x44\xb7\x3a\xe1\xa2\xa0\xe3\x6a\x81\x66\xb8\xd2\xc6\x12\x94\x04\xc6\xe8\x16\x4a\xd9\xc2\x6b\xe2\x27\xea\x9a\xd8\x5c\x4d\xa3\xd1\x54\x9c\x4d\x61\x32\xb0\xcd\xc9\xb8\x6f\x48\xa1\xdb\x2c\x2a\x82\x59\xdb\x98\x7e\x6a\xfd\x68\xc1\xdb\x0c\x69\x19\x2e\xf0\xed\xf5\x29\x46\x2d\xfd\x88\x29\xdc\xf6\xc9\x3d\xdf\x4f\xae\x45\xef\xd5\x8c\x88\x3b\x2a\xc9\x20\xbe\x74\x2d\x72\x6e\xdf\xa5\x32\x72\xe6\x33\x4f\xa1\x62\x33\x07\xf5\xb6\x80\x54\xd6\xe8\xb6\x3e\xc2\x7b\x9d\x68\x65\x9c\x0d\x19\x99\x1a\xa2\x06\x2b\xd0\x0c\xa2\xd3\xb4\x6f\xf0\x83\x3e\xdb\x40\x2a\xde\xf4\xea\xf6\xce\x29\x8e\xee\x09\x90\x42\x74\x3b\x0a\x1d\x32\x8e\x78\xa3\xaf\xae\x96\x51\xb5\x80\x88\x9e\x2b\x19\x9d\x90\x6f\x75\x63\x61\x0e\x18\x8d\x89\xc2\xd6\x07\xae\x0f\x81\xe7\x44\x07\xba\x73\x7d\xf6\x20\x49\xe0\x66\xed\x06\xf0\x34\xe9\x53\xac\x12\xa4\xc4\x1a\x6d\xde\xac\xe7\xa7\xb7\x1d\x95\x36\x5e\x97\xc8\xc3\xbc\x1b\xcc\x86\xfa\x44\xf3\x56\xed\xc8\x3d\xf2\x90\xeb\xc8\x50\x5c\x04\x46\x22\xad\x89\x44\xbc\xcd\x54\x6f\xe2\x95\x6d\x2e\xa7\x85\xb7\xf7\x3b\xad\x7d\xa4\x2a\x69\x54\xd5\xe1\x1c\x5b\xec\x01\xf2\x7e\x9b\x87\x1b\xf0\x57\x8e\xdb\xc9\x84\x08\xb8\xe9\xa0\xc3\x2b\xb0\x7b\x5f\xc7\xcb\xdd\x61\x71\xce\x5b\x0b\xf8\x22\x6a\x00\xb5\x03\x2c\x99\xc4\x03\x4d\x5a\x92\x4d\x28\xd3\x2b\x88\x04\x2e\x78\x86\xce\xdf\x7f\x1f\xb7\x45\x73\x54\x16\x48\x4b\x59\x85\x71\xbe\x67\x71\x98\xc4\xbc\xfb\x61\x1d\xeb\x8b\xdd\x16\x45\xc5\xa5\x4d\x8f\x86\x75\x29\x66\x98\x31\xe2\x9c\x51\x54\x81\x27\x7b\x4c\x08\x43\xbc\x21\x06\x94\x17\xd5\x19\x8c\x24\x65\xd3\x8a\x20\xac\x14\x2e\x66\xc7\xba\x77\xcc\xed\x85\x2e\x0f\xd9\x7e\x22\x95\x20\xb8\x36\x7b\x42\x90\x1a\x53\xd3\x3c\xc2\x85\xe0\x52\xa2\xba\xad\x14\x6d\xfc\xcb\xe2\xbc\x88\x04\x18\x21\xa4\x49\x4b\x75\x6b\x05\x69\x25\x5d\xc2\xf3\xa0\xeb\xa1\x1d\x3e\x0f\x8b\x15\x81\xeb\x6c\xa0\xbf\x25\x75\xa3\x16\x3e\x31\x31\xce\x06\x9a\x50\x21\x15\x2a\x2a\x4a\x98\xb2\x23\x33\x94\x83\xd0\x87\x81\x53\xa7\x99\x9d\x11\x69\xa7\x84\x95\x60\x7c\x37\x4a\x9a\xfc\x3b\xdf\x09\xf7\xaa\x92\x4a\xeb\xeb\x90\x71\xd9\x7f\xd8\x55\xa6\x31\x1b\xc7\xcd\x08\x6c\x1d\xa7\xe0\x98\x1e\xd9\x8f\x82\x2e\x04\x75\xb6\xbb\xdc\xc9\x34\xb9\x02\xe5\x63\xdc\xb9\x1e\xf4\x38\x07\x3a\xdb\x02\x52\x61\x56\xa4\x0e\x6c\x28\x46\xe6\xfa\x1c\x90\x82\x68\x55\x14\x67\x14\x32\x4f\x2e\x63\x02\x5d\xee\x1d\x91\x12\x4f\xc9\x28\x12\x8e\x90\x43\xe0\x74\x8e\x36\xc0\x31\x74\xdb\x66\x46\x0c\xd1\x95\xe2\xc1\x27\x61\x92\x57\x68\x3c\xd6\x66\x20\x51\x3d\x70\x46\xd3\x9d\xa0\x4a\x11\xd8\xa5\x50\xc9\x09\x00\x68\xcb\xe4\x9d\xfd\xe4\xb2\xa8\xf6\xec\xa4\x87\xed\x69\xf5\x83\x95\x26\x4d\x6b\x4c\xd0\x58\x50\x32\x41\x13\x0a\x79\x63\x90\x51\x35\x30\x55\x08\x30\xe0\x76\xb1\x94\x44\xc0\xb0\xad\x5b\xc0\x0d\x3f\xae\x3f\xff\xb0\xe3\x57\xa2\x65\x05\x0e\x4a\x74\x02\xb7\x18\x9d\xa0\x29\x64\x71\x59\x23\xf8\x4f\x2f\xff\xf6\x17\x34\x5e\x68\x7d\x0d\x0c\x31\xc5\x15\xae\x5c\x07\x50\x45\xd8\x54\xaf\x22\x88\xdc\x38\xb9\xd1\xe3\xa7\xf2\x8b\x53\xd1\x9a\x2a\x33\x41\xaf\xfe\x70\x3b\x4e\x3a\x7a\x20\x1f\x4f\x4a\x32\x3f\x09\xb6\xd0\xb0\xe2\xd3\xb8\xb7\x9e\xe5\xc8\x26\x4e\xf2\xb3\xad\x39\xd1\xbc\xa2\xc5\x62\x5b\x67\xda\x15\x2f\x41\x33\x7e\x67\x9c\x39\xab\x47\x35\xa0\x7a\x69\x78\xd3\x56\x30\x71\xe8\x7b\xcf\xcf\xd7\x4a\xb2\x4c\x7d\x94\xea\x24\x0c\xa4\x1d\x04\x51\x6d\xb3\x4b\x77\x8e\x4d\x61\x74\xdd\xe4\x96\x78\xc2\xc6\xdc\x7c\x1d\x92\x68\x6f\xdc\xf7\xb8\xaa\xc6\xb8\xb8\xbd\xe1\x6f\xf9\x54\xbe\x67\xe7\x42\x70\xd1\x1f\x73\x85\xf5\x9d\x3e\x6b\xd9\x2d\x54\xd1\xed\xc8\x68\xf9\xd4\x62\x0a\x1d\x7f\x40\x30\xba\xa8\xce\xb8\x51\x1a\x7a\x50\xa7\x92\x38\x1f\x5c\xd7\x32\xb9\xa7\x9d\xa3\x8d\x21\xa2\xfb\x1c\x9b\x80\x4f\x7a\xe3\x90\xe1\xd1\xfe\xc3\xcb\x3f\xfd\xd5\x08\x17\xc4\x05\xfa\xeb\x4b\x48\x39\x96\x03\x73\x01\xc0\x0d\xac\x55\xad\x1a\x57\x55\x6c\x94\x20\x14\x01\xdf\x47\x17\xa7\xde\x81\x23\xaf\xb6\x76\xba\xbf\xd8\x64\xbc\xb9\xf9\x27\xd8\x8b\x54\x49\x52\x4d\x06\x86\xed\xc5\xbb\xb5\x0e\x40\xbb\x3a\xb0\x57\x5e\x3c\x53\xd0\xf6\x8d\xb6\x39\xaf\xda\x9a\xbc\x26\x73\x5a\xc4\x05\x30\x7b\xab\xd2\x7b\x9b\x73\xd3\x57\x54\x02\x09\xd0\xb8\xe2\xc5\x2d\x2a\xed\x97\x01\x54\x7e\xb9\xaa\x76\xfc\x2c\xc4\x26\x0d\x24\x24\x0b\x3c\x38\xfe\x5e\x9a\x40\x8d\x9b\xc6\x33\x94\x08\x7c\xd7\x9b\x0c\x10\x4d\xc0\x8e\x9a\x18\x46\x4c\x0e\xa6\xa7\x86\xd2\x87\x76\x44\xfa\x9a\x8a\x7e\x45\x74\x6e\x41\x7a\x24\xbe\xeb\x7d\x7c\x1c\xb3\xb7\x21\xba\x17\xba\xd3\xd0\xc0\x7f\x1b\xbe\x85\x15\x66\x2c\x4f\x39\xe4\x37\x86\xd1\x20\xf5\xf6\x81\x5b\x26\xde\x7d\x99\x21\x18\x9a\x96\x23\xd1\x9b\x17\xe6\x83\xd0\x35\x56\xd6\x3e\x72\x51\x76\x8c\x1a\x22\x24\x95\x5a\x75\xfa\x08\x07\xea\xac\xc2\xb4\x0e\xc2\x77\xdb\x9a\x84\x55\x44\x7d\x8d\x9b\xe1\x2d\x59\x44\x6e\xb8\xc4\xe3\xf2\x10\xc0\xbf\xc6\x4d\xe4\x3d\x00\xa5\x6b\xd3\xaf\x81\xc8\xcb\x79\xc4\x4b\xdb\x0f\xb8\x1e\x4c\x49\xe2\x47\x31\x63\x33\xea\x40\xdb\xbe\x72\x3e\x76\x0b\xd7\xbf\x71\xf4\x27\xfe\xca\x31\xbf\xfa\x9a\x2e\x1a\x18\xdf\x73\xbd\x67\x7c\xe7\x33\x89\xd3\x24\xa4\x13\xdc\x4e\x76\x67\xf4\xaf\xa3\x9e\x43\xcb\x9c\xcc\xc0\xf4\xb5\x8e\xa6\x63\x53\x14\x20\xa1\x03\xfa\x28\xda\x46\xd1\xc1\xb7\x07\x5b\xbd\xe3\xcc\xca\x08\xde\xe0\x29\x58\xa6\xbb\xb0\x40\xcb\x7d\x0a\x39\x68\x67\xfc\xce\x7c\x6f\xd0\x25\x8d\xfd\x15\x29\x3b\x22\xf3\x19\x4f\x5a\x1d\x83\x1c\x74\x3b\xc2\x5a\xd7\x86\xab\xf0\x0e\x2f\x10\x16\xbc\x65\x49\x69\xd0\x10\x18\xf1\x81\xb3\x77\x4b\x83\xbd\xe4\x8c\xb8\x20\x7d\x4a\x2b\x37\x1d\x87\x39\x95\x06\xaf\x40\x19\x7a\x75\xfc\xea\x65\x72\xdf\xaf\x48\xd1\x0a\x49\xe7\xe4\xca\xd6\x38\x0f\x82\x2a\x17\x93\x11\x97\x92\x8e\x2b\x48\xdc\x52\x1c\x9d\x9b\x02\xf0\xab\x03\xf5\xc0\x11\x18\x31\x17\x21\x5b\x69\x42\x0f\x0f\xcd\x09\x0e\x01\x9f\xba\x81\x04\xd4\xc7\x6e\x69\x92\xb0\xae\x4b\x9a\xe4\xa5\xd7\x24\xcd\xbd\xb7\xd5\xb1\xba\xc2\xf7\xbb\x20\x49\xde\xd9\xd8\x40\x57\xd9\x9e\xba\xca\xc9\xf0\xd1\x9d\xa0\xca\x1e\xee\x3b\x2a\x09\x3a\x04\xaf\xc4\xd2\x66\x4c\x22\x68\x0e\x7d\x58\x89\x15\xf0\x73\x10\x2c\x8b\xe5\xa3\xbb\x0b\xab\xb4\x2a\x4f\x3a\x04\xfe\x9d\x75\x60\x75\x2b\x68\xa5\x7f\x77\x2f\xcf\x30\x2b\xab\x24\x99\xe1\x67\xa5\x5a\x24\x71\xe1\x5c\x4c\x50\x28\x12\x6d\xfc\x32\xa8\x26\x31\xc3\x12\x31\x8e\x6a\x82\x01\xa0\xa9\x6f\x17\x27\x05\x7b\x5c\xcd\xf9\xfa\x60\x36\xbb\xb9\xc6\xc2\x0b\xc1\x8a\xeb\xd7\x54\x5a\xf1\xac\xe5\x88\xb5\x40\x0c\xac\xa3\xc6\x65\x4a\x6a\x77\x30\xa7\xdd\xe2\x1d\x77\xa0\xc9\xe5\x9e\x74\x17\xc7\x52\x5f\x1e\xa3\x1f\x03\x5b\x82\x5c\x37\xdf\x02\x4e\x70\x8d\x5b\xae\x03\xc9\x24\x45\xb3\xcd\xb3\x3c\x5c\x7f\x2d\xae\x8c\x75\x7d\x8f\x7d\x87\x13\xfa\xf0\xf9\xa1\x0e\x02\x59\xe8\x30\xa2\x26\xa4\x6e\x6b\xa0\xd8\x8c\xc7\x34\x26\x6f\x17\x94\xf0\xee\x9e\x29\x61\x44\x60\x1b\x57\x70\x10\x51\x4b\xbe\x82\x25\x67\xa9\x07\xe2\x33\x1b\x4e\xcb\xfb\xcf\xab\x29\xe6\xcf\x12\x3a\x02\x7a\xce\x21\x17\x4b\xa7\xdd\x46\x4c\xd6\x69\x2c\x39\x47\xbd\x44\xcd\x65\x36\x7f\xc0\xf9\xa9\x17\xe5\x97\x96\xce\x71\x45\x0c\x87\xbd\x13\x0d\x5b\x55\x26\x64\x3b\xde\x55\xb3\xd1\xda\x87\x60\x76\xac\x07\x3d\x3c\x68\x41\x66\xd2\x27\x5e\xbc\x40\x87\xa6\x8d\x03\x43\xb2\xbb\x5d\x25\xd7\xae\xd5\xf9\x7d\x93\x50\xb9\x35\xdf\x7a\x9d\xdf\x37\x18\x70\x1a\xcd\x4e\x2c\xdc\x7f\x91\x19\x9e\x13\xe0\x34\xa6\x15\x16\x15\x80\xd2\xaf\xcd\x94\xa1\x71\xab\x10\x61\x73\x2a\x38\xab\xf5\xf1\x03\xf2\x19\x2d\x99\x04\x01\x32\xf8\x82\x48\xf4\xfb\xc3\x8f\xa7\x57\x90\xb4\x74\x64\xd9\xf2\xed\xf8\x5a\x09\xfc\x00\x4b\x63\x08\x5e\xb7\x8b\xfb\x0d\xb9\xb1\xeb\xed\x02\xfa\x89\x9b\x0b\x3d\xb6\xba\x55\x2d\xae\x80\xfa\xb9\xa8\x5a\x7d\x17\x6e\x6d\x67\xe7\xf7\x81\xa7\x78\xf2\x72\xba\xc0\x2d\xf1\xf7\x6b\x1a\x75\x5c\x73\x1c\xd4\xb3\x60\xbf\xae\xd0\x90\x47\xd7\x78\x58\x43\x42\xb9\xa2\xe8\x1c\x48\x4f\x4c\x19\xe6\xe1\xd8\xbb\x38\x0e\x9e\x01\xa5\x13\x4c\xf2\xb7\xab\x49\xba\xe2\x61\x84\x1a\x2d\x5b\xf7\xe1\x47\x1c\x86\x7c\xc7\x20\xc2\x11\x9d\x67\xd7\x33\x5e\x92\xcd\xab\x0a\xa5\xed\xf3\x4b\xdb\x66\x90\xf8\x44\x99\xbd\x75\x4c\xe9\x5c\x28\x48\x62\x72\xfc\x64\x31\x23\x65\x1b\xa1\x72\x5d\x4c\x0c\x18\x68\xd0\x7b\x1d\x46\x05\x66\x25\xd5\x7b\xc5\xa4\x02\x98\xd7\xeb\x43\x66\xf5\x7f\xd7\xa0\x08\x6b\x96\xfa\x0f\x2f\x23\x98\xd7\x00\x62\xbd\xa2\x6e\x0f\xc2\xaa\xbd\x96\x30\x01\x54\xd2\x92\xa0\x31\x29\x78\x4d\x00\x3b\xdc\x70\x66\xf4\x71\x47\xa9\xe0\x13\x48\x4c\xe4\xd8\x0c\x6d\xd3\x2e\x05\x8e\x50\x7b\xa1\xbb\x63\x24\x3d\xd7\xbe\x00\xb4\x98\x5e\x6b\x2a\xba\xe6\xf5\x3c\x1a\xd8\x86\x5f\x19\xc4\x19\xc2\x5d\xd1\x4e\x3d\x82\x4d\xfb\xf3\x25\xc9\x34\xdd\x52\x0d\xc9\x9c\x02\xfd\xc0\x09\x96\x92\x4e\xd9\xb0\xe1\xe5\x50\x37\x7b\xf2\x3b\xfd\xbf\x1b\x1f\xa5\x48\x01\xa0\xdb\xba\x26\x15\x48\xe6\xa7\x3e\x3f\xae\x5d\xb3\xa7\xa5\xfb\x97\x39\x44\xce\x3a\x83\xfc\x82\xa5\x85\x9b\x50\x65\xd6\x2b\x66\x99\xae\xd7\xb4\x63\x3c\xae\xe6\x7d\x07\x12\x55\x78\x4c\x2a\xf9\xb9\xed\x02\x18\x87\x98\x1e\x6c\x98\x80\xe5\xae\x1d\xbc\x76\xb7\x44\x6c\x92\x88\x70\xa7\xab\x44\x87\xab\x51\x74\xcc\x30\xcf\x15\xa5\x6f\xa7\x48\xfa\x3f\xbe\x61\x97\xd3\x76\xf8\xb5\x77\x75\xea\x3d\xf4\xfe\x7a\x05\x24\x23\x03\x20\xc8\xc6\x9b\x98\xd7\x36\xff\x9b\x95\x81\x16\x02\xd2\xd0\x04\xd0\x04\xd1\x33\x0d\x59\xd2\xb4\xe3\xf1\x86\xbc\xd0\xcd\x2f\x21\x3b\x82\x65\x4f\x0b\x14\xc8\x35\x77\xc0\x84\x57\x15\xbf\x03\xfe\x1b\xd3\x87\xc0\xfd\xb9\x39\x8f\xcb\x50\x2e\x55\xa0\xeb\xd7\x79\xce\x37\x02\xfb\xde\x41\xee\xfe\x9b\x84\x5d\xa8\x00\x7a\xf1\x3a\xfe\x8f\x2f\x46\x67\xf1\x7f\xfc\x41\x12\xb1\xa9\x57\xd1\xfe\xf9\xf2\xf4\xe3\xa6\x39\x15\x35\x17\x23\x53\x04\x3c\xcf\x4b\x25\x79\xab\xf7\x8f\x5b\xd3\x4c\xef\x84\x2a\xf3\x59\xfb\x39\x91\x6f\x04\x6f\x37\x35\xc3\x3e\xfd\xb2\xb3\x19\x66\x2e\x41\x20\xd3\xc8\x17\xb2\x50\x55\xec\x34\xce\xb0\x20\xb6\xb8\xa8\xd6\x0e\x65\x83\x8b\x4c\xb3\xe7\xeb\x7e\x66\x7c\x5d\xc6\xf5\x90\x6d\xd3\x54\xa4\x26\x4c\xe1\x0a\x5e\x9b\x6b\x23\xae\xbc\x37\x65\xb1\xbb\x3b\xe3\xc7\xff\xf8\xe9\x71\x4e\xe7\xa7\x9b\xc8\x71\x56\x3f\xd7\x42\xfa\xc9\xfd\x74\x0b\x05\x6e\xf0\x98\x56\x54\xeb\x2e\x8f\xf1\x7e\x17\x1f\xbf\xe2\x5c\x7d\xef\x71\x7d\x8f\xd1\x52\x23\xe8\x9c\x56\x64\xba\x71\x6c\xf4\xcb\xb6\x93\xbe\x09\x47\xae\x89\x73\x59\xe0\x2a\x26\xb7\xe5\x0b\x47\xc2\x0b\x08\xcc\x3c\xca\x82\xa4\x89\x9e\x2f\x78\xf9\xe6\x82\x28\x5a\x03\x8f\x05\x1a\x46\x78\x65\xe2\x61\x81\x71\x70\x98\x74\x8f\xe3\x43\xe5\xe1\x6d\x9d\x52\x36\x45\xbd\x42\x84\xad\x10\x84\xa9\x6a\x11\x04\x4e\x81\x58\xc3\x68\xce\xa0\xd5\x82\x62\x6d\xb5\xc3\x18\x7f\xdc\xa9\x37\x98\x2c\x67\x47\x8d\x17\x5a\x9d\x0c\xfc\x31\x93\x16\xc8\x62\x40\x83\x37\x25\x63\x01\x2f\x15\xc5\x3c\xb6\xa6\x52\x10\x6f\x08\xeb\xb6\xf0\x89\xf5\x8f\x0e\xf5\xd6\xee\xd5\x0e\x32\xe6\xe5\x71\x5d\xfe\xae\xa9\xb0\x9a\x70\x51\x0f\x9d\x1b\x64\xd8\x33\x3d\x23\xba\x75\x06\x79\xec\x1e\xd3\x61\x78\x9b\x4c\x79\x75\x56\x56\x24\x30\x2b\xfd\x02\xb0\xd2\x04\x2f\x51\xcb\x04\x29\xf8\x94\x01\x93\xbf\xfd\x16\x0c\x26\xef\xf5\xc1\x52\x9b\x74\x88\xb5\x55\xb5\x71\xdf\x22\x8d\x51\x3e\x27\x62\x46\xf0\x86\xa7\x30\x6d\x83\xbf\xb7\x6d\x22\x41\x1a\x41\x24\x4c\xa8\x09\xa1\x4b\xde\x8a\x82\xf8\x4e\x21\x2c\x25\x2f\x80\x95\xd8\x24\x09\x3a\xbe\x30\x0c\xa6\xe2\x84\x0b\x84\xd1\x94\xce\x09\x43\x57\x66\x37\x9c\x55\x78\x73\x9e\xac\xc0\xef\xe6\x5c\xec\xb8\x55\xdc\x27\x90\x22\xac\x10\x2e\x6b\x0a\x2c\x0d\x86\x79\xc0\xba\x25\xc3\x56\x83\x9f\xe8\x5d\x2a\x38\xa4\x13\xa2\x8b\x4d\x13\x4c\xbf\xe8\xbd\x90\x55\xe9\x80\x00\x7e\xba\xc0\xc4\x73\x00\x08\x5f\xfc\x1c\x15\x10\x3b\x77\xe5\x61\x22\xa6\xe7\x4b\x3a\x64\x09\x32\xf4\x35\xb0\xae\x51\xeb\x9c\x9a\xe1\xb9\x81\x4b\x74\x4b\x5c\x69\x35\x63\x53\x35\x52\x9b\xfd\x00\x20\x0a\xfb\x65\x12\x07\x5d\x44\x03\x08\x65\xc1\x35\xd6\x85\x37\x46\xbc\xbc\x6e\x48\x31\xe8\xb6\xa0\x5b\x70\xc7\xb4\xe1\x48\xc0\x36\xec\x4f\x20\x05\x8d\x4b\x44\x18\x2f\x71\xa9\x77\x6b\xd8\xc9\x10\xb7\x42\x55\x8f\x56\x04\x0c\xf3\x4e\x5e\x18\xb0\xc3\xbf\x89\xd8\x38\xb5\x68\x8d\x3b\x6e\x4a\xd5\xf1\xed\x5f\xc1\x17\x47\xd8\x0c\xb3\x02\x34\x79\x79\x72\x4b\x1a\x79\x22\xe9\xd4\xb8\xde\xfe\xf2\xd7\xbf\x82\x1f\xce\x2d\xce\xc9\xd5\xf9\xe9\xeb\x77\xe7\xc7\xf5\x66\x6a\xd9\x56\x9d\x72\x0d\x56\x8a\x08\xf6\x2d\xfa\xef\xc3\x7f\x7d\xf3\xeb\xf0\xe8\xbb\xc3\xc3\x1f\x5f\x0e\xff\xf6\xd3\x37\x87\xff\x3a\x86\xff\xf8\x8f\xa3\xef\x8e\x7e\x75\xff\xf8\xe6\xe8\xe8\xf0\xf0\xc7\xbf\xbf\x7b\x73\x33\x3a\xff\x89\x1e\xfd\xfa\x23\x6b\xeb\x5b\xf3\xaf\x5f\x0f\x7f\x24\xe7\x3f\x7d\xe1\x4b\x8e\x8e\xbe\xfb\xfd\x86\x1d\x8d\x24\xe5\x4c\x25\xe2\x4c\x22\xdf\xcc\x48\xb8\xd9\x08\x42\x6a\xb8\x41\x62\x58\x05\xd2\x2e\xa0\xd1\x52\xdb\x4e\xd3\xb2\xff\xd2\xf7\x8a\xeb\x1e\x9b\xea\xab\x46\x9a\xeb\xa7\xe2\x77\xc0\xec\x42\xb9\x56\x9c\x37\x8f\x38\x81\x1a\x77\x49\xe6\x44\x0c\x5c\x1f\xde\xea\x57\x8e\x22\xdf\x18\x42\x1e\xd6\xbd\x2f\x92\x3a\x2f\x72\x83\xb8\x79\x79\xca\x95\xbc\x01\xa6\x3a\x3b\x5a\x10\xdc\xc7\xe8\x23\x16\x94\xb7\xd2\x6a\xc8\x48\x1b\xe1\x9c\x81\x92\x61\x98\x10\xfc\x65\x0f\x81\x17\x93\x36\xb1\xa9\x90\x71\x4d\x7a\xea\xe1\xd2\xd2\x48\xf9\xa9\x3f\xf5\x97\xe4\xd9\xfa\x5b\x9b\x6e\x6a\x22\x36\x82\xcc\xdd\x30\x84\xe3\x12\x22\xca\xd4\xdc\xf0\xa3\x32\x16\xc1\xda\x2b\xda\x29\x34\x9b\x3a\x0b\x82\x29\x83\x46\xdd\x18\xe1\x42\x8b\x89\xbd\x42\x75\x26\x3a\x75\x8c\x60\xb0\x6e\xc6\xeb\x1e\x7c\x1a\x77\xcc\xe2\x85\x63\x2c\xdd\x5e\xb3\x3c\x1b\x4f\xb9\xff\x2f\x26\x3d\xa8\xa4\x0f\xdd\x77\xd4\xae\x7e\x1a\xd1\x0b\x73\x20\xe0\xaa\x1f\x16\x82\x2a\x5a\xe0\xea\x45\x04\x42\xd6\xbd\xa8\xa8\x5a\x6d\x70\x85\xef\x12\x04\xa9\x3b\x6e\xfa\x84\x2b\x74\x4b\x16\x77\x5c\x94\x4e\xfb\x0b\x01\xb3\x9b\xc6\xa2\xf5\xc6\x90\xca\x0d\x07\x00\xf7\x5a\x24\x9b\x50\x8d\xa8\x89\x40\x63\xe2\xd0\x65\x4b\x3f\x5e\x1c\xa3\x53\xb6\x30\x8a\x57\x84\xfd\xef\x23\x27\x41\x31\x58\xd0\x6e\x8d\x25\xd2\x3b\x0d\x56\xeb\x71\x7d\xc3\x2a\xaa\x2a\xdc\x7a\x68\x90\x36\x79\xbc\xe0\x71\x7a\xab\xc3\x06\x71\x61\x69\x6b\x41\x20\x09\x43\xf2\xbb\x29\x06\xd8\xbe\xec\x49\x6e\x0b\xad\xf5\x53\x46\xa4\x7c\xa3\x37\xec\xf6\xce\x0c\x06\x05\xdc\xf6\x05\x88\x6e\x3b\x7a\x28\xa2\x25\x93\x49\xd9\xd3\x2a\x01\x2f\xbb\x5f\x6e\xba\xa4\xa7\x0e\xeb\x02\xd6\x8e\xa1\xa0\xd6\x4d\x53\x25\xc3\x00\xaa\x09\x74\xea\x5f\x9c\x5e\x6e\x1a\x66\xb3\x1c\x57\x46\x85\x96\xdd\x18\xbb\xf2\xa0\xfd\x51\x82\x2d\x66\x79\x89\xc8\x2f\x2d\xae\x00\x39\x79\x23\x5a\xb2\x69\x65\xe1\x28\x83\x83\xa8\x3b\x2e\x6e\x4f\xfe\xfc\xd7\x97\x60\x73\xf8\xde\x0d\xa7\x1b\x5f\x51\xb1\xf9\xde\x51\x99\xde\x4b\xc5\xcf\xcb\xab\x70\x23\xbb\xb5\x74\x0e\x0d\x8b\x89\x35\x15\x39\xf4\x0e\xf0\x0b\x14\x85\x35\x88\xca\xeb\x8e\xcf\xe8\x1e\x76\xdd\xbd\x59\x34\x9b\x2b\x49\xf1\xc9\xd8\xbd\x76\x93\x41\x9f\x67\xe1\xdb\xcc\xaa\x48\xb3\x24\xbe\x9d\x00\xba\x70\x20\x83\x8f\x81\x22\x07\xa4\x39\x40\x6a\xe0\x86\x59\x34\x09\x74\x40\x59\x10\x8d\x91\x78\x11\xe7\x60\x03\xd6\x8e\x27\x95\xb9\x57\xbd\x96\xed\x4d\xea\xd4\x82\xa5\x2f\x7d\x05\x0c\xcb\xf9\xb4\xa9\x7a\x62\x58\x40\xa1\x48\xa5\xaf\x78\x66\x9d\x3f\x00\xcc\xaa\xb4\x19\x57\x1a\x36\x53\x2c\x94\x51\x98\xdd\xd4\x6c\xaa\x1b\x77\x3c\x30\x25\x41\x78\x8e\x69\x05\x68\x78\x70\x25\x71\xd9\x03\xc7\x98\xc1\x16\x9c\xc9\xb6\x86\x1e\x6d\x1a\x4a\x1b\x2f\xac\x36\x11\xe3\xdf\xa4\x86\xe4\xb1\x6a\x66\x9f\xa6\x83\xdf\x5c\x35\x7b\xbd\x60\xb8\xa6\x85\x5b\xc5\x53\xb3\x6c\x40\x24\xd9\xa3\x8f\x8f\xf7\xca\xea\xee\xd7\x75\xab\xf4\xd4\xc6\x28\x27\xdb\xb8\x19\x22\xc2\x3e\x70\x99\x04\x47\x21\xcc\xa9\x20\xf7\xb8\x50\xd5\x02\x22\x2a\xbd\x1f\x0d\x10\xa1\x90\x77\x6a\xe0\xe8\xd5\xe6\x8c\x27\x5c\xd8\x9d\x65\xf4\xd9\xde\xdb\x6f\x48\xdd\x00\x9b\xa1\x55\xe0\xa5\xa1\xfd\x55\xad\x60\x8e\xc8\x74\xe9\x2f\x36\x6e\x3e\x00\x25\x46\xe4\x91\x5d\x28\x84\xcb\x52\x22\xec\x8b\x29\x51\x65\x14\xef\x96\xd1\x5f\x5a\x52\x2d\x10\x2d\x09\x53\x1d\x70\xad\x3f\xc5\x96\xef\xc9\xca\x87\xcd\xc5\xfa\x59\x77\xbe\x8d\xba\x4f\x48\xe9\x2a\x10\x59\x7f\xf2\x03\x6b\x6a\xdc\xbf\x60\x26\x68\x5d\x3d\xc2\x4c\xd8\x92\x4e\x10\xc1\xce\x92\xa2\x0a\xc4\x32\x12\xe4\x48\xfb\x80\x30\xec\xfa\x8d\x64\x48\xa4\x4d\xbc\xaa\x58\xde\x4a\x11\x00\x48\xf3\x74\x9c\x09\xfa\x02\x44\xaf\x2f\xaf\x7f\x7e\x7b\xfa\x5f\xe7\x6f\x9f\x9c\x09\xb2\xa7\x2a\x6c\xee\xd5\x30\x4f\x8e\x25\xb8\x5a\xee\xc8\x72\x58\x7c\x49\xfe\x38\x0b\xdc\xea\x73\x32\x96\x4a\x88\x39\xd4\x98\x29\x9f\xee\x10\xfd\x51\xef\x3a\x0f\x84\x37\x9f\xac\x19\x92\xbe\x8a\xd7\xca\x5d\x5f\x12\x2c\xaa\x5d\x13\xd7\xda\xee\xde\x09\x47\xb2\x13\x7b\xa8\x37\xb5\x9f\xde\x4b\xee\xa7\x51\x8d\xae\xee\xc3\xac\x7b\x0a\x58\xb2\xfd\xed\x1c\x64\x86\x01\x2d\x90\x09\xbe\x62\xc4\xc8\xdd\xb2\xba\x60\x6e\x72\xfd\x17\xb1\x7b\x6a\xcc\x5b\x56\x9a\xdb\xcd\x0e\xc1\xf8\xbe\xc3\x94\x9e\x92\x54\x44\x39\xcf\x55\x9a\x82\x80\x9c\x9a\x0d\x4c\xaf\xe0\xf3\x82\x77\x1b\xc5\x1d\x0a\x9e\xb9\x33\xe4\x25\xb2\xfe\x64\x80\x70\xc5\xd9\xd4\xd2\x0b\x47\x35\xdb\xa5\xfb\xfb\x28\xc2\x60\x65\xb2\xa1\x66\x2e\xb6\xd7\x84\xe9\x8b\xd5\x69\xd2\x37\x6b\xb8\x5c\xba\x4d\x41\x0a\x2e\x4a\xe3\xd3\xd1\x13\x6f\xdc\x37\xc7\xbd\x13\x77\x0d\x9f\x11\x19\xbd\xb1\xd6\xea\xdd\x30\xbf\x8c\x43\x55\x8e\x69\xe0\x23\x03\xc3\xc7\x68\x3a\x51\xcd\x2d\x85\xca\x7b\xa2\x3c\x20\x7f\x10\xbc\x42\x4d\x85\x19\xb1\xe5\x40\xbc\x03\x36\xcb\x34\xef\xe5\xfa\xe7\x9e\xaf\x20\xab\xd2\x9b\xf8\xdb\x70\x7c\x78\xce\x65\x53\xd9\x00\x1b\x22\x15\x3e\x41\x67\xa3\x0f\xb0\x4d\xde\x91\x9a\x8b\x45\xd7\x49\xaf\xa2\xeb\x53\x80\x37\x16\xd6\xeb\x93\x72\xb4\xb9\x64\x21\x82\xce\x41\xbc\x30\xc7\xce\xa2\x74\x74\x4f\xde\xd2\x9a\x2a\x48\x16\xdb\x34\x2e\x54\x34\x2d\xc4\x93\xd0\x8b\x1a\x46\xf3\xa2\x2f\x90\x25\x32\xcc\x3a\x4b\xfe\x1e\x2c\x88\x09\x77\x38\xec\x62\x8a\xab\xc0\x84\x57\xf5\xbf\x18\x19\x4e\x05\x86\x80\x8d\x13\x20\xdc\x54\x5b\xb1\x5d\xc2\x81\xa3\x22\x4a\x5e\x6b\x6b\x40\xc0\xc4\x0e\x8c\x57\x49\x4f\xa5\x7f\xbd\x9c\x61\x01\x16\x75\xad\x2f\xa1\xfe\x7a\xe0\xa8\x8b\x7f\x53\x3f\x8e\xb6\x68\xdf\x92\x39\xa9\xba\x4d\x68\x3d\x32\x1b\x36\xbc\x79\xf9\xbf\x68\xd3\x34\xde\x52\x2c\x22\x9c\x9a\x28\x8b\x82\x69\xf7\xb1\x16\x4c\x9d\x3a\x29\xf5\xe1\xf6\xa7\x79\xd0\xcb\x5b\x6e\x48\xd1\xbf\xb2\xa3\xaa\x21\x81\xbf\x41\x1f\x9e\x8e\xaa\x3d\xa4\xce\x8f\xba\xd3\x1e\xd9\x55\x88\x1e\xcf\x5d\x88\x3e\xe1\x32\xd4\x62\xaf\xc0\x0c\xc4\x8f\x03\xfb\xe9\x23\xdf\x1d\xca\xcd\xef\xd2\x14\x8e\xe1\x68\x86\xe1\xde\x5e\x7d\xd0\x57\xa8\xd5\x11\xc2\x94\x58\x58\x00\xe8\xb5\xde\x6f\x7d\xa1\x1b\xaf\x3b\x44\x53\x0b\xa7\x11\x0b\x47\x93\x02\xa7\x52\x02\xa7\x10\x62\x66\xab\xd6\xf9\x09\x4e\xf6\xde\x62\x83\x49\xb0\x2a\x5d\x62\xab\xdc\x20\x0b\x47\x1e\xf1\x12\xdd\x01\xaa\xa0\x4f\x98\x60\x0a\x02\x5f\xe8\x6e\xdd\x76\x85\xce\xdc\xf5\xea\x82\x21\xd1\x4d\x5b\x87\x5a\x32\x27\x76\x06\xce\x28\x0b\x63\xde\xf6\x46\xb0\x7a\x5a\xcf\x6d\x51\xcc\xb8\x24\xcc\x82\xe1\x85\xfb\x01\xeb\x07\xa0\x4b\x73\x3d\x26\x55\x90\xb6\xc4\x1d\x64\x4e\xc4\x42\x41\x24\xd4\x13\x19\x5b\x07\xa8\x5c\x0a\x83\x05\x60\xe7\xe8\x86\x41\x66\xdb\xec\x00\x00\xba\x4c\x9c\xf3\x15\x46\xba\x95\x1d\x91\x97\x69\x29\x52\xb4\xe5\x23\x58\x82\x52\x49\x5b\xd1\x9c\xac\xa9\xd1\xb1\xe3\x03\xc7\x24\xbe\x87\xd2\xc0\x9d\x8d\x54\xf0\xba\x69\x55\x10\xa4\x75\x41\xdc\x98\xd5\x4f\x22\xab\xa8\x31\xc3\x53\x32\xf4\x1d\x19\x06\x09\x49\x91\x2a\x44\xe4\x85\x9a\x03\x2b\x8f\x9e\x13\x5e\x1e\xc5\x63\xe6\x51\x06\xdc\x3c\x4a\xc5\xce\xa3\xbc\xf8\x79\xd4\xdd\x4a\x5b\x39\xba\xde\x65\xb0\x74\x78\x6d\x5d\xef\x4f\x1d\x5e\xa7\x09\xc6\x9c\x5e\x20\x0d\xb6\x2d\x53\x89\x78\x4d\x95\xc3\xe7\x05\x7a\x02\xb0\x86\x86\x34\xa5\x56\xd0\x00\x3a\x12\xc3\xfd\x49\xee\x9b\x8a\x16\x54\x05\x1c\xce\x65\x8c\x15\x16\xd0\xd0\x72\x6d\x36\xd1\xda\xa5\xc9\x43\xfd\x47\x67\xf6\x59\x6c\xba\xef\x7b\x61\x38\xd2\xc8\x7d\x41\x88\x73\xb9\xec\xa5\xd9\x5e\x9a\x7d\xe1\xf3\xb5\x49\x33\x5b\x8f\xf9\xe9\x53\x81\xae\x4c\xc3\xa8\xe9\x52\x7f\x56\x6a\xc5\x7a\x3e\xd6\x88\xb0\xbe\x4d\xfa\x39\x85\x6a\xf2\x03\xf4\x9e\x7d\x6f\xaa\x7c\x0e\x4c\x1e\xd0\x31\xba\x60\x48\xf2\xda\x56\x24\xbd\x57\x72\x60\x34\x5e\x8c\x64\x3b\x96\xc4\xea\xbb\x5c\x12\x97\x31\x6c\xd3\xae\x1b\x22\x8c\xe8\x8b\xcc\x19\xd2\xd2\xca\x74\xea\x91\xc9\xbe\xee\xb8\xb8\xad\x38\x2e\xe5\x49\xc3\xcd\xff\x0c\x3d\x59\xde\xc9\xef\xec\xba\x0f\x9b\xcd\xb9\x44\x62\x71\xe7\x41\x32\xe6\x53\x67\x6b\x5c\x2d\xb5\xdd\x83\xa2\xf6\x52\x59\xfb\xc1\x63\xe0\x64\x33\x68\x6a\x34\x15\xbc\x6d\x5c\x58\xb0\xe3\xfd\xd5\xa6\xf8\xa6\xf0\x21\xae\x27\x23\x08\xe2\x9a\xbc\x83\x7e\x47\xbc\x39\x0f\x9e\x07\xd2\xd9\x9d\x60\x51\x4a\x39\x58\xcb\xbe\x2e\x5a\x16\x91\xf3\x60\x12\x60\xb9\xe8\x28\x22\x09\x7a\x51\x91\x29\x2e\x16\x2f\xfa\xbd\x5a\xc3\x84\x6a\xbd\x96\xfa\xfa\xd5\xd7\xba\xe9\x9d\x2b\x2d\xbb\xa9\x63\x1f\xea\xd5\xc2\xd5\x6d\x50\xc0\x06\x50\x26\xed\xf0\x5d\xce\x85\xdd\x4a\x36\xf7\x7f\x63\xe7\x44\x74\x9a\xee\x9f\xff\xfa\xe7\xa1\x63\x3f\x80\x61\x3e\xc5\xb9\xe9\x91\x6d\x6e\x2f\x5d\xa3\xb7\xdb\xc6\x04\x95\x54\x36\xb0\x33\xc1\x03\xde\xe5\x3c\xf8\xee\xe6\xcb\xbd\x59\xdf\xa4\xdb\x0c\x91\x0d\xa6\xad\x06\x65\xd3\x27\x4f\x9f\xb9\xee\x37\x6d\xcf\x1d\x6f\xf0\x2f\x6d\x57\x51\xd6\x5e\x56\x46\xd9\x0e\x16\xd0\x4e\x22\x94\x58\x0d\x58\x5e\x23\x2f\x57\xbd\x35\x56\x7b\x03\x7a\x75\x27\x41\xfc\xd2\x49\x85\x17\x4e\xa2\xf6\x07\x51\x42\x1a\x0c\x71\x35\xb4\x36\xec\x45\xc7\x4d\xeb\x45\xa0\xd6\x42\xeb\x06\x2e\x59\xf7\x6d\x34\xc6\x75\x79\xbe\x97\x03\x19\x58\x99\xc4\x12\x00\x44\x58\x7e\x0a\x53\x47\x05\xf0\x22\x35\x9f\x03\xbb\xa7\xd6\x29\x26\x8a\x88\x3b\x2c\xca\x0d\xef\xfc\xad\xa6\xd7\xf4\x87\x0f\xbb\xad\x23\x05\x81\x8b\x73\x64\xd8\x4c\xa7\x2d\x16\x25\xe4\x53\x75\x7b\x62\x8f\xa8\x5d\xf7\x6c\x1d\x51\x6b\xb3\xa6\x03\x01\xb0\x79\x84\xd9\x3d\xe7\x58\xeb\x41\xfd\x37\x99\x58\x09\xe4\xb7\x2d\xe1\xb2\x20\x43\x7a\x8f\x9b\xd9\xc8\x45\xbc\x44\x14\xf6\xa4\x77\x4d\xbf\x69\x34\xe3\x55\x09\xca\xea\xb0\x22\x73\x52\xf9\xae\x69\x81\x2b\xe8\xb8\x55\x96\x70\xa9\xe0\x75\x6d\x73\xdf\x6d\x19\x79\x93\x27\xbf\xb1\xb1\x63\xf8\x01\x71\xf5\x6d\x8f\x6b\x01\x6e\x97\x63\xdd\x3d\x02\x3b\x23\x1c\x25\x98\x90\x4e\x29\xb0\xd7\x20\x9f\x20\xa2\xb7\x69\xc4\xf6\xdb\x02\x90\x62\x89\x7d\x71\x1b\xce\xc5\xa5\x2e\xb8\x78\xd7\xa9\xfd\x18\x71\x43\xdb\xa8\xd7\xa2\x95\x64\xa5\x48\x54\xc7\xab\x15\x09\xc4\xbf\xe4\x90\xa4\x0e\x25\xbf\x7d\xc0\xb3\xf0\x65\x0d\xf4\xb5\x0b\x19\xbc\x10\x6b\xe5\xf2\x98\x59\x2c\x71\x34\xbf\x5a\x92\xf3\x2c\x25\xb2\x6e\x9c\x40\x1b\xff\x61\x5a\x54\xbd\xe2\x05\xae\x80\x4b\x38\x76\x8b\xa1\x6c\x41\xd5\xe5\xbe\x04\x24\x0a\x58\x0f\x13\x3e\xab\x38\x2e\x1d\x47\x3a\x71\xe5\x10\xb0\x5a\xb2\xbf\x63\x63\x91\x86\xc4\xc4\xb4\xe4\x72\x3f\x1a\x41\x02\x2e\xab\x5e\xc3\x1c\x2a\x90\xc4\x36\xf6\xae\x0f\x23\xb0\x23\x0b\x39\x06\x6d\x57\x92\x1a\x70\x04\x64\x13\x10\xc7\xbe\x9e\xa5\x96\x95\x54\xa2\x17\x6f\xdd\xa4\xbf\x48\xa9\x72\x1d\xed\xb8\x54\x91\x49\xc5\xb9\xf6\x9c\x99\x07\xbf\xcf\x8c\xff\xe2\x96\xea\x99\x9a\x74\x42\xce\x6d\x09\xcf\x49\xd7\x34\x15\x8d\xdf\x65\x1f\x71\x45\x4b\x2f\x39\xb1\x48\x28\xf3\xea\x97\x0f\x0d\x83\x43\xd2\x08\x32\x5c\x3d\x28\xf1\x90\x03\xeb\xf1\x71\x0e\xcb\xe1\x67\xeb\xe3\x24\x6e\x5c\x84\x3e\x30\x38\x73\x8c\x94\x5a\xdb\xe2\xdd\x52\x10\x36\xe1\xc2\x38\x63\x9e\x7c\xc3\x5a\x82\xed\x6d\x5c\xc3\xa7\x9e\xc8\x25\x64\x7f\x36\x2e\x48\x0b\x3f\x84\x3d\x69\x3c\x98\x7d\xb7\x79\x87\x72\xdd\xbc\x5d\x28\x06\x60\x4b\x9b\xe9\x99\xb3\xf1\x7e\xd8\x00\x7f\xb7\xb5\x59\x94\x4b\x45\x30\x74\x82\x77\xba\xd1\x19\x6d\x8c\x10\xc3\xca\xfe\x79\x8c\x70\x80\x1c\x13\xfd\x42\x5f\x7d\xb2\xe1\xe5\xb7\x31\x78\xc4\x57\x26\x45\x85\xdf\x01\x69\xe5\x9b\x8b\xd7\xfe\x2c\xeb\xb7\x7e\x7f\x1d\x43\xfb\xad\x9f\x3f\x98\xf7\x4a\xa2\xa6\xb4\x44\x63\x5b\x1e\x94\x28\x74\xc8\xc8\x1d\xd2\x67\x40\xda\x14\x20\x4f\xfe\x61\x67\xd3\xb5\xef\x87\x67\x3b\x71\x14\xd1\x8b\x3f\xda\x04\x1c\x22\x1c\xd7\xd4\x98\xda\x62\xe7\xef\xaf\x0e\x1c\x63\xe7\xdd\x50\xdc\x0d\x87\xc3\x61\xcc\xfc\x39\x9f\xf0\xa0\xb7\xf2\xde\xcb\x52\xf3\x92\x4e\x16\x4b\xeb\xaf\xef\x9b\xae\x4b\xa0\x7b\x63\xb6\xb0\xe3\x7f\x46\xba\x60\x6c\x64\x2f\xa0\xb1\xfa\xcb\x9f\xe2\x44\x4d\xc8\xe5\xbf\x0d\xb1\xb3\xa6\x1b\x9e\x31\x62\x4c\x66\x78\x4e\xb5\x09\x30\x31\xe7\x5f\x9f\xac\x87\x56\xdf\x69\x34\xd1\xb2\xc0\xb2\x47\x18\x66\x29\x72\xdf\x70\x09\x27\x0a\x60\x89\x23\x0e\x19\x68\x7d\xea\x58\xe3\x67\x6b\x1a\x28\x9a\x18\xd1\x60\x4f\xe8\xd9\x18\x8f\x49\x8b\x70\xb3\x82\xc6\x58\x77\xc2\x0f\xf9\x70\x69\xc3\x47\x55\x3a\xbc\xb0\xa7\x0a\x5c\x26\x8c\x23\x32\x99\x90\x02\x4a\x12\x91\x66\x46\x6a\x22\x70\xd5\xef\x9a\x6c\x8b\x19\xc2\xf2\x5b\x6d\x81\x0b\x7d\x40\x8d\xb2\x5a\xe3\x8d\xcb\x0d\x20\xcb\xd8\x01\x36\x75\x49\xa3\x20\x9e\x46\xb5\x09\x18\xaf\x5f\xbc\x67\x57\x9c\xab\x77\x54\x82\xa6\x6b\x93\x52\x4c\xbc\xf3\xc5\xf1\x1a\x1f\xbf\xfb\xce\xa3\x5a\x9f\x8f\xa0\x88\x52\x2a\x3a\xb2\xf7\x6d\x1c\x70\x7d\x6d\xe8\xdb\xd0\x47\x20\x2d\x84\xb9\xe1\x94\xa9\x95\xb2\x42\x5a\xaf\x2b\x22\x28\xb7\xf4\xf3\x41\x12\xe9\xe3\x74\x4e\x4f\x8c\x63\xc5\x34\xcf\x3b\xbc\xf0\x79\xa8\x96\x62\x79\xc9\x49\x65\xe2\xa8\xf6\xbb\x31\x57\xb3\x15\x2f\x56\x5c\x4d\xea\x11\x2f\x97\x5e\x34\xe8\xd8\x13\xfb\x6c\x5f\xcb\x0d\x2a\x80\x67\x6b\x93\x92\x94\x84\x6d\x5c\x08\x05\x79\x96\x0e\xac\xd2\xb0\xd8\xbf\xa1\xbb\x14\x4e\xd8\x25\x07\x39\xb4\x8d\x33\x76\x11\x70\x41\xc2\x7c\x87\x27\x0a\xbc\x0c\xfa\xe8\x61\x60\x4e\xe1\x6c\x28\x38\x87\x08\x77\xd4\xb2\x5e\x4c\x6c\xf5\xfe\x15\x35\x6d\xae\x25\xb3\x2b\x91\x0e\x25\x45\x11\xee\x02\xe7\x8a\x23\xc2\x64\x2b\xec\x9e\xd8\x98\x11\x55\x3f\x25\x27\x26\xe4\x67\x87\xf3\xe1\xe2\x35\x7a\x89\x0e\xa1\xe8\x2f\x88\xfd\x09\xa6\x95\x27\x7b\x5a\x2e\x72\x0a\xa5\xea\xf5\x2b\x22\x87\xed\x21\x0b\x13\x5c\x49\x32\xd0\x77\x27\x5c\x8d\x76\xdc\x5a\x07\x71\x2a\x77\x43\x04\x10\x55\xc6\x81\x96\xbf\x06\xb1\x13\x7b\x7c\xc7\x9c\x57\x64\x63\x10\x87\x2f\x96\xb2\xad\x1b\xee\xc3\x93\xdc\x70\x61\x5c\x42\x9f\xdf\xfe\x92\x98\x23\x57\x13\x85\x4b\xac\xb0\xbd\xf9\xdc\x0f\x7e\xb3\x1b\x71\x7f\xff\x7d\xd9\x93\x72\xff\xd9\x02\x5b\xdb\xb6\x25\xd7\x74\xc3\xdb\x92\x33\xeb\x52\x0a\x8b\xd1\x5f\x9f\xc3\xef\x4d\xc5\x54\x40\x1b\x18\xaf\xab\xf3\x70\x19\x2b\x48\x06\x39\xb7\x91\xc4\x61\x60\x74\xcd\xb0\xec\x9b\x5b\x8c\x97\xee\xc6\x2e\x79\x98\x15\xef\x3b\xa6\xf7\x21\xf7\xdd\xf0\xb7\xdf\xd2\xcf\xf2\x58\x51\x50\xc8\xca\x84\x40\xad\x09\x75\xa5\x4f\x96\xa4\x73\xf2\x22\x2a\x41\x37\xf8\x7b\x54\x13\xcc\x24\x12\x04\x66\x1a\xac\xf8\x09\xcc\xb0\x71\x5f\x71\x43\x8f\x3b\xe2\xa5\x1f\xeb\x72\x94\xcf\xa9\x11\x31\x63\x35\x3c\x5b\x06\x4a\x2b\x2b\x7e\x07\xe7\xbb\xc2\x62\xea\x9c\x05\x72\x80\xc6\xad\x32\x7e\x47\x89\x6a\x7a\x0f\x95\x00\x7c\x99\x32\x98\x8d\x96\x05\x1f\x8c\x78\x29\x7d\xce\xbf\x67\xfc\xb1\x46\x33\x0f\x49\x80\xc0\x29\x1e\x33\x79\xbd\xe5\x80\xfc\x0a\x70\x8c\x22\x52\xd1\x29\x54\xa3\x0e\x67\x0b\xbc\x6f\xff\x33\xe4\x0e\x58\xfc\x3f\xc8\x66\x64\xc0\xdf\x47\xcf\x99\xcf\x02\xb7\xab\x23\x5d\x20\x0c\x5b\x96\xcd\x70\xd8\x36\x3c\xeb\x3f\xee\x1d\xae\xc8\x23\x63\x01\x5e\x0d\x97\xa6\x02\xb7\xd6\xec\xd6\x36\x6e\x78\x17\x3e\xb7\x64\x31\xbd\x38\x77\xf3\xed\xe6\x1a\x03\x90\x73\xa8\x04\x21\xe8\x7b\x3a\x16\x44\x8b\x1b\x46\x2a\x68\x92\x5e\x9f\x5d\x5f\x74\xbb\x4a\x7f\xa4\xe7\x2e\xf8\x30\xa2\x0b\x77\x00\x09\xd7\xef\x28\x05\x9d\x13\x81\xf4\x1d\xd2\x42\xf6\xb7\x9b\x64\x27\x11\xc6\x0b\x5f\x25\xc0\x16\x76\x84\xef\x61\x33\x19\x9c\xbe\xf5\x11\xd3\x98\x34\x82\xb3\xeb\x8b\xd7\xa6\x07\x94\x49\x85\xb5\x96\x87\xde\x03\x1f\x65\x38\x39\x18\xbc\x2b\x48\x90\x21\x2c\x7d\x45\x4a\x24\x9c\x24\xa8\x36\x2e\x7b\x81\x56\x0e\x83\xd1\x01\x02\x72\x57\xf0\xc3\xc1\x55\x6a\xa7\x03\x7e\xde\x63\x18\x08\x8a\x31\x44\x1d\xc7\x65\x27\x12\xac\xec\x97\xb4\x36\x58\xea\x7c\x82\xcb\x69\xf3\x3e\x94\x54\x7e\xaa\x13\x20\x07\xaf\x08\x2e\xff\x21\xa8\x22\xef\x59\x41\x02\x99\x12\xe9\xd9\x0b\x85\xbe\xcb\xaf\xe0\xe1\x16\x49\xe5\x7a\xc0\x70\x7d\x1a\x76\x99\x40\x26\x81\x33\xb3\x7f\x9f\x43\x2c\xc1\xf2\xa5\x5a\x6e\x84\x25\x55\x91\x8b\x75\x0a\xa4\xbd\x9a\x42\xbe\x88\x98\x70\x5a\x4f\x64\xf6\x24\xa3\x95\x59\x16\x4f\xd0\xfb\x6a\x8d\x06\x13\x16\x91\x92\xb6\x70\xb6\x01\x86\x4e\x89\x42\x52\xb5\xc5\xad\x1e\x85\xe7\x26\x3d\x73\x64\x59\x00\x73\x7d\x46\x8a\x6b\x94\x6f\xb3\x5f\xda\x75\x5b\xd6\x9f\xdb\x78\x85\xb3\x41\x78\x10\xc3\x5f\x8d\x97\xc6\xfb\x1f\xfa\x40\xf5\x15\xed\xc8\x51\xe7\x19\x2e\x6d\x84\x91\xc0\xac\xe4\xf5\x4a\xff\xf4\xc9\x24\xb8\x98\x45\xf4\xa3\x33\x89\x36\xb5\x0f\x63\x42\x32\x0f\x58\x94\x09\xf6\x61\x4c\x90\x78\xc9\xa2\x7c\xde\xf6\x61\x24\xee\x2c\x11\x04\x46\xe6\xa4\xca\x80\xc2\x01\x86\x2b\x3d\x09\x5e\xd4\xc3\x07\x46\xe0\x2f\x83\x14\x7a\x47\x64\x2b\xd8\x23\xc1\xb3\xe0\xdd\xae\xb8\x81\x45\x62\x3f\x6c\xfd\xe2\x9d\x1d\x75\x26\xc4\xd5\x8d\x05\x90\x75\xa3\x06\x28\xd5\xae\x8e\xba\x8d\xf2\x3e\xa2\xe5\x51\x7f\x90\xa6\x74\x58\x37\x6a\x70\xf4\xed\xe2\xa8\xfb\x45\xcf\xb7\x75\xf7\xda\x5e\xec\x61\xc2\xbd\x67\x0f\x13\x7e\x6c\x98\x70\xc0\xf1\x87\xc1\x8f\xd5\x03\xee\x3e\x57\xb0\x30\x30\xd1\xeb\x59\x24\x86\xa3\xb7\xc1\x6a\x36\x00\xc7\x9d\xa2\x73\xc7\xfd\x8b\x6e\x4d\xd8\xef\xa0\x57\x83\xd7\x1d\xc4\x0e\x47\x6d\xa8\xfe\x32\x61\x8b\xd7\xe1\x89\xcd\x6f\x2e\xdf\xdf\x84\x44\x7f\xd8\x95\x7f\x8b\x2e\xde\xb3\x2b\x37\xe0\xe3\x60\x8e\x97\xd7\xe9\xf1\x20\xc7\x91\x6f\x5a\x8f\x38\x7e\x8a\xf3\xf6\x65\x28\xe4\x65\x0c\x72\xa6\xc6\x97\x01\xc9\xab\x6f\x4f\x5a\xa1\x94\x8b\x3e\x00\x04\x03\x8e\x68\x2b\x86\xf6\xa9\x4f\x38\x06\x4c\x72\x2f\x5a\x03\x95\x21\xa9\x80\x32\x90\x10\x5d\x85\x48\x2c\x65\x26\x15\x2b\xa4\x0a\x8a\x31\x43\x1d\x61\xcd\x8a\xca\x65\x4a\x6e\xd6\x58\x2c\x00\xe2\x04\x08\x04\x8b\xdc\x3b\x0c\x33\xa1\x8f\xc0\x0e\x8e\x11\x24\x33\x82\xae\x57\x66\xdf\x95\x2e\xb6\xee\xbe\xd0\xdb\x18\x47\xd3\xba\xba\xc0\xae\x09\xd0\x72\x4a\xa2\x88\xa8\x6d\x11\x2f\xa2\x6c\xd1\x56\x49\xac\x2f\xdc\xcf\x4f\x1c\x00\x9b\x1b\x77\x32\xc1\xa5\xc3\xef\x1a\xcc\x79\x4d\xea\xb1\x81\x3d\xca\xd5\x92\xeb\x1e\xd4\x51\xe3\x69\x94\x8c\x5f\xf6\xa7\x30\x1e\xf0\x12\xf9\x1d\x26\x88\xfe\xd4\x4c\x2c\x6f\xa7\xb3\xd5\xae\xc5\xa0\x58\x3e\x39\x18\x88\x54\x49\xd5\x23\xbd\x28\x49\x63\xef\x63\x23\xf3\xb2\x2f\xf1\x33\x52\x88\x9f\x98\x85\x37\x95\x7a\x29\x25\xac\x9e\xb1\x1a\x20\xfa\xc4\x16\xd8\x86\x30\x7f\x1d\x84\xe5\x57\xf3\x4d\xa4\x43\xcd\x18\x99\xbe\x82\x9d\xb1\x91\xa6\x02\x57\x05\x14\xb9\x8e\xda\xbf\x6b\x42\xe0\x44\x4c\x89\x0d\x7e\x5f\x2b\x41\x0b\xb5\x1e\x3f\x6c\x7f\x97\x10\xcb\x39\x3c\xad\x9a\x19\x3e\x42\x1f\xa4\x8b\x20\x9b\xe3\xe3\x23\xae\x5f\x24\xf8\x21\xce\x63\x7c\xcd\xf6\x02\x88\x8c\xda\xac\x57\x73\xc0\xe2\xf0\x14\x77\x1d\x36\x1d\xbc\x9f\xd4\xf3\xcb\x3f\x23\xd9\x11\xa7\xfd\x2c\x64\xa1\xaa\xad\xa8\x3c\xd7\xa6\x69\x48\x85\x47\xd8\xeb\x3f\xbe\xb4\x50\xe9\x3a\xd7\xc5\xf3\x7c\xf5\x07\x08\x3e\x01\x30\xa0\x65\xbe\xda\x42\xcc\xc5\x61\x5b\x38\x7c\x08\x92\x71\x84\x6a\x3a\x9d\x29\x8f\xbd\xac\x70\xcb\x8a\xd9\x33\xda\x15\xdb\xe4\x75\x37\x2b\xec\x51\x4a\x18\xdd\x6a\x69\x5f\xa1\x06\x0b\x5c\x6b\xb5\xcb\x9e\x6f\x49\xa2\x22\x17\xcf\x92\xc5\x5d\xff\x29\x88\xe5\x88\xbf\xdd\x19\x06\xf8\x4b\x5f\x65\xcc\x76\x69\x01\xe8\x95\xa8\x65\x44\x39\x58\xcd\x61\x46\xb3\x0c\xed\x23\x04\xd9\x76\x65\x6c\x59\x55\x24\x2b\x49\xb6\x1c\x4e\xfe\x87\xe9\x85\xd3\x39\x0a\xcf\x68\xf2\xf8\x21\x65\xe7\xbf\xb1\x44\x98\xb8\x8f\x97\x5c\x8a\xc4\x86\xcc\x7c\x91\x1d\xf8\x0c\x74\x78\xbb\x88\xf4\xf8\x1b\xa9\x8a\xc3\x65\x6e\x31\x42\x3b\xad\x25\x3e\x13\x04\xaa\x9e\xe2\xea\xba\x21\xc5\x36\x1d\x98\x6f\xde\x5d\x9f\xf6\x7b\x03\xf7\xbc\x2d\x4b\x41\xe0\x7b\x84\x4b\x97\xfa\x79\x47\xc6\x33\xce\x6f\x23\x1b\x3b\x0c\x18\x19\x67\xed\xf8\xb8\xe0\x75\xc0\x72\x3a\x94\x74\x2a\x4f\xac\x60\x18\xea\x69\x3a\x42\x94\x55\x70\x5d\x3b\x7d\x88\x30\xe5\x4c\x96\x84\x01\xa3\xc2\x8f\x18\x36\x94\xa5\xde\xb4\x7a\xd7\xea\x94\x5c\x26\xb1\x5c\x25\x5f\x29\xab\x3b\x26\xb6\xec\xe7\xd2\xae\x79\x60\xa4\x4b\xe5\x3b\xfd\x36\x58\x9e\x35\x13\x00\xdc\xca\x94\xd8\x98\x91\x36\x51\xb7\x79\x7a\x7e\xe8\xba\x11\xfa\xee\xe8\x24\x94\xe7\x81\x5f\xd9\x27\x87\x1d\xe8\xbf\x44\xf6\x4f\x0f\xd2\x4b\xb1\x9c\x56\x95\xd1\x13\x46\xbc\x3c\x90\x61\x30\xb6\x23\x6d\xf3\xd8\x37\x03\x8c\xa7\x73\xd2\xeb\x7f\xac\x22\xa8\x9f\x43\xea\x21\xc4\x0e\x2b\xaa\xb8\xa3\x8a\xab\xe9\xbd\xee\x5b\xd8\x56\xd0\x3f\x53\x00\x93\x0d\xd7\x7f\x1d\x95\x77\x8d\x20\x51\xcf\x7b\x19\x07\x7a\x3d\xc2\xd7\xeb\xfd\x2d\x5a\x62\x8a\xae\xeb\x2f\x2e\x89\xba\xe3\xe2\xd6\xcc\x55\x88\xb3\x52\x1c\x7e\x99\xb2\xc5\xe3\xd2\xac\x50\x98\x6a\x95\xe9\xb4\x47\xef\x72\x48\xbb\xb2\xfd\xd0\xf7\xbf\xd3\x9a\x1e\x3f\x0d\x0b\x2d\xa5\x62\xfd\xff\xec\xbd\x7b\x73\x23\xb7\xb5\x20\xfe\xff\x7e\x0a\x94\xb2\x55\x92\x1c\x92\x33\x63\xe7\xb5\xb3\xf9\x25\x25\x4b\x9a\x44\xeb\x19\x8d\xee\x68\x6c\xd7\xfd\xc5\xd9\x1b\xb0\x1b\x24\x71\xd5\x0d\xb4\x01\xb4\x24\xfa\xe6\x7e\xf7\x2d\x9c\x03\xa0\xd1\x14\x45\x91\xdd\x90\x48\x4d\x84\x54\x65\x2c\xb2\x09\x9c\x06\x0e\xce\xfb\x61\x27\x7e\x82\x74\x2c\xb2\x3c\x25\xeb\xae\x88\x34\x7a\x9c\xa4\x2c\xb2\xed\x0c\x41\xd2\xa3\x86\x2e\x53\xd7\x3c\x63\x47\x59\x06\xa1\xf0\x1b\x2d\xdd\x0f\x5d\x4f\x98\x7d\x65\x6a\x58\x7e\xd9\x82\x01\x83\x7c\xf2\xf0\x2d\xa1\x05\xa7\xd0\x89\x93\xb4\x1f\xb4\xf8\xbd\x79\xe1\x77\x3f\x2d\x44\x14\x2d\xbc\xbe\xbb\x31\xe0\x73\x79\x9a\x0a\xc6\x77\x96\x7f\xda\xc2\x92\x77\x5f\xfe\xae\x2c\xb1\x70\x3a\x3e\x9d\x65\xa1\x6e\xfa\x86\x4b\xaf\x57\x3f\xdf\x50\x7d\xd5\xb4\xeb\x60\xc3\x4a\xe6\x4d\x77\x8e\xe8\x73\xb7\x8d\x43\x8a\x30\x6e\xd6\xb6\xa3\xf3\xd1\x19\xcb\x8b\xec\x4e\x1d\xe9\x77\xff\x76\x72\xfe\xc4\xe5\xc0\x3d\x4b\xb4\xbb\xbf\xaf\x41\xc2\x82\x53\xf3\xba\x67\x14\x80\x42\x75\xf4\xa0\x05\x75\x40\x14\x75\xde\x4a\x8a\x0c\xa1\x60\x14\xcd\xa7\xe4\x20\x2a\xee\xbe\x31\x3b\x3f\x13\xa4\x09\xa8\x46\x91\x60\x80\x38\x82\x89\x6e\x3e\x07\x07\x2a\x3f\xfd\xdb\xc9\xb9\x77\xf5\x05\xe8\x51\x91\x74\x98\xe7\x4c\x7e\x07\x3e\x98\xa1\xfd\x84\x36\xaa\xce\x0c\xa9\x8d\xb6\x9f\x77\x01\xd5\x33\xc6\x35\x80\x55\x6c\xca\xb5\x51\x73\x47\xcf\xe5\x24\x02\xd9\x19\x97\xc3\x23\x57\x6c\x4e\xfe\xfa\xdd\xe9\xbf\xff\xc7\xfb\x8f\xc7\x47\xef\xff\xe3\xc3\xd1\xf1\x5f\xcf\xce\x4f\x7f\xfa\xe9\xf2\xdf\x2f\x3f\x9f\x7e\xf8\xe9\xa7\xe3\x5a\x29\x26\xcc\x31\xf6\xe3\xbd\x64\xe6\xa7\x9f\xdc\x1d\xd3\x3f\xfd\xf4\x39\xab\x78\xf5\xd3\x4f\x17\xde\xcc\x09\x7c\xd4\x6e\x55\x87\xb2\xe0\x50\x7a\xac\xc9\x8e\x04\xf9\x0e\x8f\x1f\xde\xb2\x95\x77\xd9\xa3\x83\x06\x64\xfd\x77\x21\x97\x9b\xcb\x5a\x90\xe4\xe6\xe4\xc2\x73\x6f\xec\x7f\x52\x92\x09\x59\x76\x94\x68\x2e\xa6\x50\xed\x0f\x45\xd4\xe0\x78\x20\x63\x66\x6e\x18\xc3\xbc\xcd\x45\xd1\xaa\x7b\x3d\xb8\x1f\xad\xe8\x6b\x5c\x5b\x5a\x2b\xc0\xb4\x5a\xb3\xb8\x30\x25\x97\x08\x78\xcd\xd9\x0d\x88\xe9\x9a\x4f\x05\x2d\x22\xd7\x20\x74\x2a\xc4\x08\xb0\xe6\xf7\x1b\x42\xc2\xa3\x24\x4e\xec\xf9\xec\xdc\x64\xed\x28\x93\x3b\x11\x26\xad\xce\x18\x54\x5b\xd8\x58\x4e\x2e\xce\x4e\xc8\x9b\x4d\x37\x03\x74\x03\x17\x55\x72\xb9\x0c\x21\x82\x21\xca\x8a\x78\xdd\xda\xc4\xdf\x29\x79\xfc\xd4\x88\x5e\x8f\x73\x59\x52\x2e\xb6\xdb\x64\x62\x52\x17\xc5\x9c\xfc\x5c\xd3\x02\xa5\xd7\x0b\x99\xdf\xe5\x34\x7b\x7f\xf4\x1f\xfd\x69\xf4\xc7\x00\xf8\x9f\x46\x7f\xb4\xd4\x27\xdc\x8c\x3f\x8d\xf4\x75\x36\xfa\x63\x56\xd4\xda\x30\x45\xdc\x43\x1b\x97\x3e\x7d\xa0\x33\x45\xa0\x73\xd4\xad\x00\x90\x52\xd0\x73\x9f\x44\xa2\x43\xa3\x02\xc4\x77\xfe\x45\xd1\x8c\x5d\x30\xc5\x41\x35\x90\x22\x7f\xd2\x0e\x15\x1e\x83\x49\xee\x1a\x9d\x41\xd3\x6d\x84\x23\xec\x99\x60\x2c\x47\x4d\xcd\x81\xcd\xc8\xd4\x42\x0d\xe7\x3e\x02\xa5\x6a\x6c\xa5\x81\x4c\x31\x8a\x55\xdf\x48\xce\x0a\x06\x8d\xec\x3a\x75\x1e\x45\x17\x89\x0f\xd9\x15\x52\x0c\x05\x9b\x62\x08\xad\x0b\x25\xc1\x7a\x8a\xc8\x66\x7f\x61\x4a\x46\xe1\x9a\xda\xc8\x8a\xf0\xb2\x64\x39\xa7\x86\x15\x73\x72\xcd\xe9\x86\xeb\x83\x58\x01\x7d\x30\x90\x38\x1e\x08\x49\x24\xf8\x80\x6b\xc1\x9d\xbb\x66\x56\x1b\x92\xcb\x1b\xb1\xb9\x48\xe1\xba\xb2\x86\x44\x5c\xc1\x8b\x41\xab\x59\x0e\x6c\x2e\xa9\x00\x27\x5a\x5e\x82\x6e\x5a\x07\xea\xfa\xad\x49\x9d\x00\xbf\xec\xd0\xa1\xf3\x85\x2f\x6e\xec\x58\x82\xaa\x05\x94\xe5\x6c\x7a\x7b\x41\xc4\x87\x66\x62\x53\x3b\x3b\x8d\x51\xdf\x6f\xaf\x67\x0e\x98\x83\x87\x4c\x8c\x2d\x04\xab\x4c\xa4\xca\xf8\xb8\x98\x93\x19\x2d\x0c\x73\x15\x33\x69\x7c\x4a\x9b\x6e\xca\x25\x33\xf1\x41\x14\x52\x4c\x63\x59\x97\xdd\x56\x2c\x33\xd0\xbb\x89\x51\x51\x57\x08\x9d\x15\xe3\xe6\xb2\xee\x6c\xff\x88\xed\x1e\xdf\xbc\xf6\x9b\xde\x85\xe6\x74\x89\xa9\xea\x1a\x4d\x65\x64\xc1\x10\x53\xfa\x10\xa7\xa5\xdd\x89\xf6\x75\x3c\xfb\x73\x69\xb6\xd2\xc1\xea\xf6\xd9\x5d\x1c\x40\xb9\xcf\xe1\x95\xc1\x8e\x61\x0c\x85\x1e\x49\x96\xc4\xe2\x37\xd0\x9c\x61\x4e\xac\x54\x64\xd0\x83\xe6\x9a\x8a\x6d\xee\x14\xb3\x17\x4b\xf1\xaa\x60\xe4\x8f\x57\x6c\x3e\x00\x6c\x1f\xa0\x38\xff\x27\x52\x87\x08\x2a\x98\x1f\x62\x24\x2b\x0b\x80\x54\xe4\x8f\xfe\xbf\xfe\xf4\x84\xbd\x61\xfa\xb8\xe1\xf0\xa5\xb6\xd5\xae\xe5\x14\x2b\xd3\xf0\xa8\x98\x1c\x73\x07\xe8\x8a\xd6\x18\x89\xbb\x3c\x22\xa7\xd0\x35\x0d\x15\x48\x2c\x30\x6f\x35\x81\xf8\xe1\x8e\x96\xd5\x1f\xbd\x3b\xd5\xdd\x32\x6f\xb8\x8f\xe2\xf4\xce\xa5\xeb\x13\xc4\x06\xe4\x02\xba\xea\x35\x9f\x00\x29\x3e\x97\xa7\xb7\x2c\xab\xbb\x65\xbf\xf7\x72\x01\x5d\xb1\x0e\xd1\x94\x69\x4e\xef\x3b\x36\xf7\x5c\x11\x8f\xc1\xea\xe7\xa1\x1c\x60\x43\xa2\xa2\xfc\xc1\xd5\xc7\x78\xc5\x36\xef\x17\x89\xe3\xcc\xdb\x35\x00\x22\xd7\x9e\x2b\xdc\x4a\x2f\x15\x9d\xde\x72\x6d\xf4\xff\x46\x7a\x92\xc9\x72\xec\x99\x2a\x82\xe3\x71\x0d\x2b\x31\xb9\xd3\x77\xf5\x54\xba\x82\xd6\xeb\x6c\xfd\x0b\x6c\xeb\x80\x3f\xfa\x0d\x54\xac\x52\x4c\x83\xcf\x99\xda\xad\xd8\xd7\x2e\x41\x4b\x0a\xa8\x8b\xec\x3c\x12\xd8\x85\xb8\xd3\x52\x3e\x97\x07\x17\xc4\x5b\x87\xc7\x05\x47\x70\x6a\x35\xa5\x51\x4b\x14\xc0\x8f\xba\x91\x1d\x9c\xd8\x62\xca\xcf\x35\xbf\xa6\x05\x43\xf3\xeb\x0d\x2f\xf2\x8c\x2a\x0c\x6b\x44\xa2\x4f\xb4\x74\x39\xb0\xd8\x06\xad\x93\x03\x2b\x48\x03\xac\x41\x76\xed\xc2\x99\xa8\x32\x3c\xab\x0b\xaa\x88\xa5\x80\x53\xa9\x3a\xd5\xab\xe9\x85\x66\xcd\x4d\xed\xa4\x4d\xe1\x48\x81\x6f\x9f\x17\x01\x89\x11\xcf\xcc\x82\x28\x2e\x27\x28\x59\x2e\x90\x99\x03\xcc\x3a\x73\xb7\xbd\x13\x04\x72\xe2\x19\x4f\xa0\xe8\x71\x35\x94\x28\x24\x87\x6b\xc2\xa7\x42\x2a\x96\x1f\x46\x02\x48\xa0\x85\x23\xf2\x6d\x68\xde\xd8\xa5\xef\xb7\x95\xb8\xbc\x27\x19\xca\xca\xb8\x77\x73\x84\xca\x61\x53\x43\x7a\x27\x52\xb1\x6b\xa6\xc8\x81\xab\xeb\xc6\xae\x79\x66\x0e\x47\xe4\xff\xb7\x8a\x5e\x57\xe7\x5b\xd0\x20\x1d\x31\x0c\xed\x05\x5c\xf1\x7f\xaa\xc9\x6b\x72\x00\x4b\xc5\xda\xe3\xa1\x0f\x20\xd1\x73\x6d\x58\xd9\x1d\x9f\xb7\x95\x03\xd1\x39\x70\x31\xc5\x25\xf8\xc1\xeb\xb8\xcd\xe1\xa2\xb6\xb5\x80\xed\xa1\x63\xae\xec\xc5\x32\x03\x93\xe4\xda\xd1\xc5\x96\x7b\x35\x44\x6c\x78\x9e\x1a\xee\xc2\x7f\x42\x8c\x00\x51\x6c\x0a\xd4\x0b\x69\xcf\x96\x9b\xdf\x75\x8c\xc3\x34\xb2\x92\x85\x9c\xce\x2f\x2b\xc5\x68\x7e\x2c\x85\x36\x0a\x68\xf4\x53\x9a\x95\x3e\xdf\x07\x84\x9b\x77\xec\x72\x57\xa8\xcb\x08\x93\x13\xac\xcb\x24\xeb\xe9\x0c\x5b\x81\xc2\x0f\x09\xcd\x94\xd4\x3a\xbc\xd3\xa6\x2a\x1b\xd8\xf6\xf4\xc8\xf7\x05\xf5\xf6\xe5\xd0\x67\x14\xd6\x04\x6b\xfb\x0d\x9d\x3b\xaa\x44\xc7\x3c\x6f\x55\x50\xf4\xa0\x6f\x8a\x0e\x47\x96\x3b\xde\xbb\x0f\x56\x26\x38\x3a\x3f\xd9\x34\x94\x61\x7b\x2a\xef\x7d\x47\x1a\xb4\x0d\x57\x24\x34\x9c\x5d\x50\x28\x61\x97\xb1\xc4\xa0\xdd\xd2\x29\xbf\x66\x22\xec\xcc\x33\x69\x3b\x5a\xd2\xdb\xcb\x2b\x76\xd3\xe1\x97\xfe\x45\xbf\x63\x9b\x27\x49\x0c\xc1\x1a\xf6\xbd\xd0\xd4\x70\x3d\xe1\x74\x5c\x3c\x65\xef\x53\x28\x9a\x72\xc9\x0a\x96\x6d\x51\x6c\x7f\x1f\x03\x11\x4a\xef\x19\x49\x26\x5c\x2c\xe0\x58\x37\xd6\xd1\x54\x99\xf3\x9d\xde\xb8\x0e\x25\xf0\xdc\xb2\x90\x2d\x27\x6b\xe1\xfa\xe8\x86\xa0\x40\x8c\x82\xa8\xcb\x31\x53\x9e\x84\x75\x13\x8f\x5c\x51\x49\x92\x49\xa5\x98\xae\x24\x66\xab\x7a\xd4\x71\x84\xac\x3b\x3f\xea\x9c\xc2\xd2\x37\x1f\x04\xb6\xf4\xf4\xd6\xca\xbd\xba\x5b\x4a\x00\x8e\x16\x26\x2d\x4e\x8a\xa1\x40\x3e\xbb\x6b\xe1\xe8\xdc\xa5\x87\xde\xf0\xe8\x34\x88\x3f\xe9\x4a\x86\x9b\xd1\x27\x07\x0a\x47\xe7\x4c\x28\x1c\x69\xa2\x01\x09\x56\x08\xb8\x77\xef\x70\x8f\xc3\x37\x71\xf9\x36\x67\x40\xd7\x03\x54\xa7\x5d\xd9\x56\xd1\x08\x63\xf6\xe1\x1e\x60\x81\x72\xee\xd4\x91\x2b\x36\x87\xe9\x71\xc5\xee\xdd\xeb\x7a\x5e\x0b\x0f\x58\x9f\xfc\x2e\x1c\x43\xfb\x4a\xbd\x7e\xef\xb7\xb9\xf3\x24\x7d\xef\x38\x8e\x8e\xa6\xbb\x66\xb4\xf0\xf8\xaa\xb1\xc6\x21\x4e\xb6\xac\x71\x0d\x5d\x6e\x6c\x71\xbd\xd6\xee\x9d\x1d\x86\xa3\x8f\x89\xab\x19\xe9\x2e\x74\x0c\xd3\x3a\x66\x2f\x0a\x41\x23\x72\xd2\xfb\x7a\xe1\x58\x66\x06\x3b\x13\x03\x72\x2e\x8d\xfd\x27\xb2\x88\x9d\x48\xa6\xcf\xa5\x81\x4f\x76\xe2\x24\x71\x03\x76\xe9\x1c\x9d\xd5\xc2\x92\x61\x81\xec\xc6\x45\xb7\x59\x41\xc1\x9d\xd7\x32\x35\xf8\x4c\x10\xa9\xdc\x96\xf7\x04\x21\x68\xd2\xda\x01\x10\x3b\xe8\x5d\x9f\xef\x7b\x15\x71\x0b\x45\x7c\xcc\x8f\x06\x8c\x03\x04\x6a\x1e\xe3\x37\x50\x8a\xbd\x2a\x20\xe1\x3b\xaf\x61\xc3\xa8\xdd\x39\x6a\xd8\x74\xe3\x14\xc7\xc5\x51\x32\x35\x65\xa4\x02\xb7\x4e\x02\xcc\xed\x23\x48\xe0\xe8\x29\x4e\xc4\xc0\xf4\xbe\x46\x89\xd3\x4b\x1f\x71\x52\x90\x29\x41\xd7\x48\x23\xa3\xf6\xb8\xef\x11\x28\x28\x75\x95\x14\x0c\x24\xff\x15\xbc\xb7\xff\x4d\x2a\xca\x95\x1e\x91\x23\x1f\x61\x18\x7f\xe7\x82\x34\xa2\x69\x7a\x80\x52\xdd\x75\x2c\x50\x41\x98\xab\x69\x21\x27\x77\x84\xf1\x81\xab\xb7\x6f\x19\x76\x30\x2e\xef\x5d\xb1\xf9\x5e\xd7\xea\x4a\x38\x62\x8a\xb2\x77\x26\xf6\x9a\x90\xc2\x16\x15\x08\x32\x29\x14\x38\xdf\x83\xef\xf6\x1e\x4f\xee\xef\x25\x41\x36\x05\x93\x2e\x12\x88\x60\x3d\xaf\x6c\xeb\x4e\x95\xb4\xea\x77\xa5\x1a\xe4\xfb\x8e\xcd\xb7\xe6\x82\xf9\xd0\x82\xc2\xab\x30\xc6\xa9\xea\x8d\x64\xa9\x31\xff\xbe\x00\x1f\xfd\xcc\x99\x05\xe5\x35\x53\x68\x12\xec\xb4\x36\x1a\xc1\x2c\xaf\x09\xa1\xf6\x4d\xb9\x1d\xc0\x47\x58\xd8\xe2\xa1\xb7\x68\x14\x52\x5e\xd5\x95\xc7\x67\x08\xc3\xed\x7a\x63\xb8\xc8\x64\xe9\xec\x22\xf8\x9e\x60\x09\x77\x17\x73\xe8\x22\x9e\x90\xc6\x84\xab\x80\x31\x55\x2d\xab\x4f\x47\xff\x60\xbc\x99\xc1\xc0\xcb\x2c\xdb\x0f\xf6\xc0\x66\x7b\x57\x6e\x55\x27\x00\x7c\xac\x7d\xbc\x0b\xae\x0d\x34\x2d\x83\x63\x7d\x22\xd5\x98\xe7\x39\xd8\x22\x11\xb8\x90\xf0\xb5\x80\x38\x96\xd2\xb4\xec\x50\xdd\x88\xc6\xc2\xac\x4b\xf2\xe0\x17\x8d\x5d\x62\xdf\x74\x09\x4b\xc6\x01\x8b\xb8\xf6\x48\x76\xa2\xf0\x8a\x8b\x5b\xe3\x11\xc1\xee\x7e\xa7\x95\xc6\xcc\xbb\x0f\x2d\x4b\x12\x75\x51\x58\x69\x0f\x04\x31\x34\xcb\xa0\xa7\x0f\x48\xb2\x0b\x4a\x98\x5a\x22\x6d\xda\xc8\xd6\xa9\x51\x84\xeb\x6e\x01\x77\x7b\xcc\x0c\xf5\x7d\x2e\xc4\x42\x35\xa8\xf6\xe6\x9f\x89\x0b\x99\xb7\x2d\xda\x2b\xca\x42\x91\x03\xff\x1f\xe3\x79\xe7\xa4\x17\xd2\x5b\xc6\xeb\x21\xd9\xa5\x64\x0e\xfd\x05\x2e\x67\x4c\xdf\x1e\x5b\x80\xe5\x23\x57\x14\x06\xdf\x4e\x15\xc3\x2a\xc0\x40\x95\x80\x4a\xb9\xb6\x57\xb5\x60\xd7\xcc\x62\x6f\xce\xed\x1e\x8e\xeb\x8e\x35\xd3\x5c\x7c\xd6\x3f\xee\x58\xf5\xff\xbf\x13\x79\x2e\x8d\x77\x53\xfd\x63\xe0\x1c\xe6\x28\xc7\xdd\xf2\xb2\x2e\xb1\x6f\xb5\x31\x56\x87\xe1\x93\x09\x53\x1d\x9b\xf3\x91\x90\x7b\xd2\xb6\x5d\xb7\xbd\x35\x8e\x4a\x18\xaa\xa6\x90\x30\xed\xec\xd0\x5e\xe4\x9a\x16\x72\x4c\x0b\x52\x72\x61\x41\xeb\xb6\x13\x9f\xef\xcc\x13\xde\xd8\xfd\xb9\x02\x38\x90\x41\x5d\x67\x29\x34\x8e\x77\x8b\x90\x50\x2e\x78\x7c\xb2\xb0\x1b\x0b\x93\x03\x7d\x29\x98\xd6\x18\x1e\xfc\x81\x8b\x13\xe7\x5a\xec\xb4\xec\x3b\x4b\x1d\x6f\x69\x59\x15\x6c\x80\xee\xc7\x6f\x86\xbf\x48\xc1\x88\x4b\x7b\x18\x04\x14\x75\x79\x3c\x46\x92\x37\x28\xf0\x56\xa1\x2c\x99\xcf\xaf\xe9\x04\x41\x8b\xee\x06\x67\xab\x26\x5f\xbf\xfa\xfa\xd5\x9b\x6e\x24\xe6\xcc\xa5\x1e\x65\x54\xbb\xee\xb6\x77\x4f\x77\xe3\x24\x1e\x1c\xff\x24\x76\x77\xde\xb8\x7f\xbf\x76\xff\x7e\x43\xfe\xd9\x71\x36\x72\x41\x2e\x5a\xff\xda\x7f\x3a\xce\x36\xb4\xc8\x13\x1d\xd7\x9b\x41\x9b\xb7\x66\x54\x20\xe3\xb3\x7c\xde\xdd\x6f\x90\xf6\xf0\x15\x80\xcf\x64\xb2\x64\xb0\xf5\x5f\xff\xef\x6e\xb2\x26\xce\x0b\x11\xfa\x86\x48\xe1\x66\x7f\x73\x00\xdb\x75\x48\x6e\x20\xee\xa1\xa4\x57\xe8\xb0\x3a\xca\x4c\x4d\x0b\x0b\xf0\xc1\x37\xc3\x37\x87\x44\x8a\xd6\xe3\x9d\x40\xb8\xe6\xd2\xca\x6b\x7e\x27\x0e\xde\x74\xac\xf1\xb0\xb8\x9d\x5f\x2f\xd9\xce\xd6\x4e\xc2\xdb\x52\x31\x87\x57\x48\x4b\x93\x3d\x39\x3e\x12\xf3\x1b\x3a\x0f\x44\xd9\x8b\xeb\x53\x7e\xcd\xc8\x8c\x4f\x67\x50\x0d\xa1\x47\xbf\x54\x82\x71\xdf\x40\x63\xb9\x6f\x69\x89\x80\xcc\x09\xef\x28\xfd\x9d\x99\x7d\x0d\x11\x2d\xe8\xa3\x70\x85\x6e\x42\x9e\x5a\x48\x3e\x79\x03\x64\xe5\xf5\x42\xa1\x8f\x2d\x87\x39\x7d\xf3\xf5\xe6\x32\x45\xa0\xc9\x5b\x13\x2b\x02\x04\xad\x86\x07\x77\xb9\xd9\x22\x73\xe9\x81\xb5\x0f\x70\x2d\x60\x14\x81\x79\x06\x36\x7e\xe5\xb4\xe1\x86\xa3\x35\xbb\xd7\xcd\x2e\x7b\x21\xf3\x10\x20\x42\x9c\x3c\x0d\x81\x75\x9a\xec\xb5\xd9\xc0\x1e\x04\xda\x05\xeb\x8d\xab\xe1\xec\xf4\x3d\x2e\x85\x7d\x0f\x7f\xf9\x7b\xb5\x01\x27\xe4\x48\xe4\x4d\x36\x51\xc7\x5d\x62\x3f\xd7\xb4\x00\xe3\xf5\x14\xe2\x04\x55\x9a\xfd\x8a\xf2\x8e\xee\xf4\xb5\x6d\xa8\x79\xc7\xd7\xc6\x7b\xaf\xeb\x02\x22\x2d\x1f\x7e\xff\xa4\x98\xa0\x9b\x50\x2b\xd0\x3a\x43\xac\x55\x29\xb1\x77\xbd\xf0\xe2\xbf\x8b\xbc\x90\xce\x2e\xd1\xeb\x32\x9c\x4d\x96\xa4\xd3\x35\xb1\x5b\x64\xcc\x66\xf4\xda\x5e\x47\x28\xe3\x14\xdf\x54\x77\xc4\x20\x62\xf5\x89\xf6\x8e\x12\x2c\x1c\x09\xd4\x6d\x94\x79\xdd\xe3\x9a\x37\xef\x26\x0d\xbe\xdf\x8f\x8b\xdc\x2a\xf8\x3f\x5a\x9a\x44\x47\x95\xba\x8b\x80\xfa\xf5\x60\x61\x5f\xdd\xe7\xbf\x7d\x2a\xb9\xf5\xeb\x6e\x72\xeb\xa3\x0b\x97\xf8\x6f\x67\x1d\xa9\xb9\xb8\x4b\xef\xeb\x6f\x0f\x9a\x5d\x3f\x84\x08\xff\x3b\x04\x17\x2a\x63\x35\x41\xce\x1d\x6f\x98\x13\xef\x35\x37\x35\xc5\x02\x5c\x82\xdd\xb8\x94\xea\xe8\x58\x17\x8e\x28\x32\x72\x79\x91\xad\x1b\x5d\x19\xb3\x8c\xd6\xda\x5e\xea\xb2\xb2\xea\x37\xd1\x16\xfd\xbc\xc1\xf0\x9b\x83\x6f\xc8\x90\xbc\x3e\xb4\xb7\x5b\x20\x69\x01\x14\x8c\x05\x6e\x68\x6c\x83\x8a\x9e\x99\x59\x55\xdf\x9e\x73\x47\x2a\xc7\x5d\xf5\xce\x05\xb1\xf7\xf9\x89\x4d\x42\xe6\xec\x68\x32\xe1\x82\x9b\x79\xd7\x72\xf6\x69\xc4\xa7\xf3\x3b\x90\x44\x62\xd4\x4c\xde\x90\x1b\x57\x4b\x00\x70\xd9\x95\xc4\x8b\xc1\x7f\x65\xff\xe8\x65\xb8\x06\x66\x19\x64\x11\xa7\x71\x04\x79\xc0\x51\x1b\x8b\x77\x23\x97\x37\xef\x1a\xf5\x74\x59\x6b\x48\xfe\x2a\x85\x54\x6f\x51\x39\xc4\x5e\xf6\x41\x06\xb9\xf7\xb5\x1c\x7f\xc9\x8a\x3a\x8f\x3a\x60\x34\xd2\x53\x47\xf6\x39\x24\x67\x60\xbf\x7d\xfb\xd0\xca\xc1\xca\x0b\x45\x14\xf2\xc0\xf0\x56\x01\xd4\x3d\xa0\x7f\x69\x92\x3c\xb0\x72\x8e\x8e\xc0\xb6\x63\xd2\x7e\x0b\x9b\x4a\x2a\xc0\x9f\x27\xcf\x3d\xb2\x3b\xf2\x19\xc2\xbb\xb7\x7f\x95\x62\x38\x56\x5e\x24\xec\x7d\x86\x41\xe9\x8b\x17\xa0\xd3\xea\x4f\x71\x69\x10\xf7\x2c\xe3\x91\xb5\x71\xd0\x0f\x08\x2d\x24\x38\x91\x2c\x3b\xb2\x1f\xb1\xdc\x3d\x38\x91\xde\xd7\xb4\xe8\xfb\xe8\x04\xc6\x0c\xaa\x7d\x36\xe9\x2b\x83\xd6\x2d\x48\x71\x05\xfd\x81\xac\x71\xe9\x9e\xf8\x82\x21\x94\xdb\xba\x61\x51\x30\xfd\xf6\xf2\xfa\x02\x08\xde\x60\x7d\xc5\x40\xb2\x80\x83\x43\x5f\xda\x08\xee\x60\xdc\x5c\x9d\x3a\x77\xb3\x13\x96\xb8\xee\x1c\xf8\x69\xc5\x69\x0e\x25\x7b\x33\x5a\xc4\x7a\x87\xd5\x77\x78\xce\x14\x8a\x3b\x63\xd6\xaa\xc2\xd4\x35\xdf\x02\xc7\x8f\xcd\xec\x58\xb1\x09\x4a\x09\xe0\xe2\x7f\xc2\xe2\xb7\x7b\xe3\x3a\xbb\x62\xc6\x07\x66\x28\xa8\x92\x52\xd5\x86\x8c\x69\x41\x45\x66\xef\x22\x48\xb2\xdd\x0c\xf5\x13\x6f\xfa\x37\x12\x01\xc0\xd5\x3a\xbf\x0d\x76\x8c\x08\xf5\x7f\xf0\x15\xa2\xfc\x55\x2e\xb4\xb1\x50\x63\x62\x6b\xbf\xcd\x3b\x2a\xb4\x1c\x58\xaa\xeb\x17\xbd\xe3\xbc\xc0\xe5\xdd\x7f\x63\xfc\x8c\x93\x08\x18\x33\xae\x6c\x5c\x14\xbc\x22\xbb\xf4\x42\x5b\x26\xeb\xb9\x3a\xbd\x6d\x6e\xd1\xed\x25\xd9\x68\x0a\xd1\x7f\x0b\xd7\x63\xaf\x5d\xaf\xd1\x97\x80\xda\x1b\xe0\x29\xda\x5b\xe2\x2a\x79\xe2\xcb\x83\x80\x4e\x4d\xdf\x1d\x17\x39\xd4\x07\x5e\x04\x26\xcc\xda\x86\xca\x2a\x02\x1e\x22\x50\x73\xd3\x43\xb4\xdc\x1c\xfb\xd4\xe4\xf3\x8e\x8d\x7b\x5b\x44\xf4\xae\xf9\xa2\x2d\xa2\x40\x92\x0d\x2d\x7c\x95\x1f\x2b\x52\xf0\x89\xd5\xba\x72\xc9\x30\x2a\x02\xcd\xe3\x1d\x8d\x6f\xcc\xcb\x25\x8d\x89\xa8\x2b\xd7\x6e\x99\x5b\xc8\x81\x8f\x0e\x20\x86\x15\x05\x72\x87\xc6\x22\x66\x35\x61\x23\x1b\x93\x58\x57\xdb\xfe\x90\xb4\x5d\x13\x4b\x17\x8b\x17\xf2\x45\x9b\xc0\x73\x3a\x0f\xad\x65\xbb\xc6\xe0\x8e\x6b\x43\xa6\xfc\xda\x8a\x50\x77\xfc\x1f\xcb\x7c\x19\xe8\x7f\x9a\xb1\xa2\x22\x8a\xe5\x75\xc6\x7a\x44\x02\xea\x8e\x6a\x36\x21\x47\xb1\x41\x10\x6a\x66\x04\x76\xb9\xd7\xc2\xc5\x3d\xd7\x07\xb7\xbf\xa0\xc8\x27\x40\x61\x41\xc5\xe3\x13\xc2\xae\x99\x9a\x93\x4a\x6a\x0d\xb4\x1f\xe4\x05\x2c\x72\x08\xd1\x94\x13\x9f\x58\x03\x46\x15\xd8\x33\x67\x5f\xe8\xb4\xf8\x9e\x33\x4a\xec\x81\x51\x59\xf6\x96\x01\x76\xd7\x6b\xfd\xcd\xab\x37\x5d\xbd\xd6\xa9\xad\x7f\x17\xf0\xbf\xe0\x52\xee\xe5\x5a\x3e\x9b\x2c\xa3\x93\x61\x6f\x5b\x94\x67\x1d\xaf\x73\x57\xd7\x24\xec\x0c\x38\x87\xbf\x39\x8c\x1c\xd6\xdf\xbc\xfa\xfa\xd5\x9b\x03\xbb\xf7\x5f\x1f\xda\x53\x88\xdc\xca\x5f\x47\x6e\xe5\xf0\x4b\xf7\x16\x1d\x4a\x58\x91\x26\x68\xe7\xe0\xcd\xe1\x08\x72\x1a\xa0\x3e\xe9\x8d\x54\xb9\x4b\xf1\xf7\x15\x23\xed\x9b\x87\xf6\x9f\xbc\xf4\xc2\xe7\x00\x88\x56\xa0\x8e\xdd\xcc\x43\xe0\xd0\x00\x37\x3a\x37\xe4\xab\x52\x2a\xf6\x55\xb4\xc4\x73\x15\x0c\xee\x06\x77\x95\xb4\x1a\x5e\x75\x88\xdb\xed\x93\xec\xdc\x37\xd5\xf9\xbe\x10\xb5\x92\x56\x1b\xcc\x73\x2d\x8b\xba\xdc\x34\x0a\xbb\x9f\x40\xf4\xde\xe5\xad\xba\xa5\x5d\x6a\x25\x86\x39\x94\x2e\xe7\x78\x3c\x8f\x4b\xf9\x8e\x59\x21\xc5\x14\x7d\x95\xa1\x61\xe1\x86\xab\xae\x57\x59\x3d\x93\x22\x63\x95\xd1\xaf\xb4\x91\x8a\x4e\xd9\x2b\x07\xe4\x46\x8b\x6d\xaf\x64\xc1\x0f\x00\x6d\x3b\xf3\x0d\x9b\x02\xe1\x7b\x84\x42\xcb\x3e\xff\x1b\xe8\x25\xcd\xa0\xec\x24\xec\xba\x95\x96\xa2\x06\xc3\xa2\xeb\x76\x6f\xa9\x6a\x41\x87\x0e\x82\x7d\xb2\x41\xe9\x8d\x3e\x2d\xa8\x36\x3c\xfb\xb6\x90\xd9\xd5\xa5\x91\xdd\x0c\x7d\x29\x34\x8c\x65\xb0\xb4\x30\x41\x90\xa3\x1f\x2f\xc9\x09\xd7\x57\x44\x31\x2d\x6b\x95\xb9\x56\x65\x0b\x05\x19\x37\xad\x1d\x8b\xc3\x5e\xa6\x82\x19\x57\x72\x9f\x94\x34\x9b\xa1\xea\xef\xa2\x1e\xd8\x6d\x25\x75\xd3\x7c\xbd\x03\x4a\xe1\x88\x3b\x55\x1c\xfd\x78\x79\xf7\x95\xb9\x8e\x9a\x64\xa0\x0d\x11\x53\x69\xc0\x12\xdb\x44\xca\x0f\x8d\x62\xdd\xa4\xb2\xa5\x3b\x6d\x11\x1e\x8c\x52\x8a\xe5\x5c\x61\x21\x55\xf7\xae\x6c\xac\x47\x99\xe6\x23\x7a\xa3\x47\x99\x2c\xc9\xf1\xe5\x19\xc9\x15\xbf\xee\xda\x27\xa9\x1f\x29\xfb\x15\xbd\xd1\x0c\xc1\x1f\x5b\xf0\xed\xd7\x5d\xf6\x61\xcb\xbd\x42\xf1\x6d\xce\x4e\x3a\xfc\xbc\x6f\xfe\xf7\x44\x7f\xb6\xef\xde\x51\x9f\x4b\x95\x35\x87\x50\x78\x8b\xec\x84\x17\x0c\x0b\x76\x21\x26\x3a\xbf\xaf\x23\xfb\x70\xcd\xe7\xb2\x26\x37\x14\x0d\xdb\xc0\x67\xbb\xa7\x6f\x7e\xe6\xd5\x5b\x72\x2a\x74\xad\x58\x93\xa4\xbe\x08\x82\x15\xdc\x7d\x1f\x61\x5f\x5d\x08\x68\x83\xbb\x8e\x62\xda\xa3\xc4\x18\x8e\x53\xd4\xce\xf4\x5b\xb2\xc7\x6e\xcd\x6f\xf6\x06\x64\xef\x76\xa2\xed\x3f\xc2\x4c\xf4\xde\x88\x9c\x95\x55\xc1\x33\x6e\xac\x3a\x2a\x26\x4c\x35\xa6\x62\xfc\x41\xa2\x2e\x4b\xbb\x72\x27\x49\x8a\x4c\x56\x30\x0a\x03\x7a\x6e\x19\xc3\x03\x20\x1e\xc9\xa3\x0f\xc4\x63\xa2\xf7\xd9\x84\x48\x4c\x3d\x68\x97\x29\xe7\x3a\x4c\x6e\x11\xda\xad\x2e\x3a\xf4\x5b\x6a\x46\x83\xc2\xef\xa4\xf2\x53\xbe\xca\xd9\xf5\x2b\x9d\xd3\x37\x03\x78\x2d\xc4\xcf\xf9\xc2\x1e\x50\x4d\xf6\xde\x6c\xdc\x28\xa0\x19\x97\xbc\xe4\x05\x55\xc5\x7c\x10\xef\x65\x33\xbf\x65\x95\x1e\x10\x30\x26\xbf\xde\x23\x07\x58\x0d\x1c\xc4\xf5\x82\xf9\x76\x7c\xa1\xab\x2f\x64\x40\x75\x6e\x76\xd7\x37\x30\x84\xf4\x0e\x0e\x21\xc0\x98\x68\xfe\x51\x14\x9d\x8b\x7b\xa4\xc2\x7e\x0f\x87\xaf\x1f\xa8\x6a\xe7\xc5\x9e\x48\x94\xdc\x58\xf3\x88\x6f\xc9\xc3\x85\x53\x01\x3e\x58\x1c\xed\x51\xcf\x62\xd7\xc8\x59\xf7\xf6\x83\x24\x48\x0a\xdb\x3e\x50\x0f\x07\x84\xd4\x0b\xfe\x73\xcd\xc8\xd9\x89\x67\xd4\x15\x53\x9a\x6b\xc3\x84\x21\x79\x4b\x42\xe7\x28\xb6\x1f\x1c\x95\xf4\x17\x29\xc8\xe9\xb7\x97\x6e\xa2\xce\xd7\x6c\xf7\x4e\xb7\x23\xb3\xa2\xbf\xd4\x8a\x59\x7d\x66\x6b\x2a\x97\x07\x60\x51\xcf\xb2\x9f\x93\x13\x6a\x28\xaa\x5b\xc8\x31\x64\xd3\xd3\x0b\xd4\xa2\x31\xd4\x73\xf3\xcd\xe3\xd2\x29\x45\x01\xa8\x8d\x34\xa1\xe8\x65\xec\xa1\x74\xdb\x8f\xa5\xea\x8f\xc5\x67\xd4\x7f\xec\x0a\x09\x34\xa0\x2d\x6b\x1e\xf6\x7d\xce\xbb\x5a\xf4\xf1\xe7\xdf\x7f\x3a\xdb\x82\xde\x92\x81\x4e\x3e\xfd\x20\xf3\x34\xca\xcb\x7e\x34\xa1\x17\xd1\xa0\x21\xf0\x31\x7e\x4e\x4a\xbb\x12\x39\x97\x82\x0d\xc8\x27\x46\x73\x62\x99\x95\xfb\xcf\x1f\x15\x37\x6c\xb4\xbf\x2d\x21\xd7\x1f\x62\x92\x8d\xf0\x93\xf9\x4d\x38\x8f\xda\x44\x42\x2f\x57\x20\xe9\x4e\x66\x1d\x17\x72\x4c\x1c\x49\xdd\xe6\xdb\x7f\xff\xe9\x2c\xd9\xcb\x7f\xff\xe9\xcc\xbf\xbb\xfd\x4f\x39\xd9\xcd\xd7\xde\x35\xc5\xfd\xdd\x82\xc6\xdc\x5f\x73\xf9\xe0\x72\x22\xe8\x1d\x6d\xfc\xf1\x55\xf1\xd1\x96\x95\xf0\x04\x25\x9c\x9c\xa2\xf7\x96\x58\xb8\xba\x99\x41\xb9\xe8\x5c\x1e\xb1\x4d\x5c\xed\x4c\x4d\x4f\xa6\x28\xea\x0d\x7a\xfb\xe5\x6f\x49\x59\x17\x06\xba\xdc\xc0\xd5\xb2\x77\x0d\x12\xc8\xfc\x25\x23\xae\xeb\xab\x95\x0e\x30\xd2\x24\x7f\xeb\xab\x27\x85\x5f\x2c\xff\xc1\x07\x2a\xe8\xd4\x3e\x0e\x1c\x9b\x94\xf8\x67\x74\xa7\x0f\xd0\xc1\x2f\xc2\x57\xf4\x9a\xf2\x82\x8e\x79\xc1\x0d\x68\x23\x87\x23\xbf\x97\x58\x6a\x06\x40\xde\x1a\xb1\xdf\x39\x95\x2e\xee\x84\x01\xdd\x13\xc9\x81\xfd\xee\xd5\x8d\x65\x8a\x87\x23\xe0\x90\xf0\xe0\x8c\xa9\x58\xeb\xeb\xbc\xb2\xbd\xf0\x9f\x1e\x49\x5b\xec\xaf\xa1\x45\x17\x0f\x76\xa3\x9b\x26\x60\xa9\xe9\x56\x35\x01\x0b\xc0\x52\x4d\x00\xbe\x70\xbd\x6c\xb7\xa0\x0c\xc0\xf2\x1d\x94\x01\xf8\x5d\x62\x65\xc0\xb2\xa5\x2f\x49\x19\xd0\x2c\x53\xcc\xf4\x50\x07\x80\x34\x76\xfc\x7d\x5f\x85\x60\xe7\xe8\x62\xfe\x42\x17\xe3\xd1\x20\x57\x92\x13\x6a\xa6\xf3\xc2\x7a\x68\x68\x8f\x5f\x2d\x54\xb9\x46\xe2\x75\xe9\xa4\x03\xdf\xe8\x1e\x7e\x6f\x49\x56\x97\xfa\xfe\x38\x7a\x33\xf4\x70\x69\xd2\xec\x8b\x9f\xcd\x6f\x0b\x8a\x3d\xf0\x31\xe9\x7c\xb5\x7b\xbe\x66\xc6\xaa\xd9\x64\x6b\xa5\x1d\xec\xea\xef\x2e\xdb\x81\x24\xc7\xac\x9a\x91\x77\x97\x4b\x18\x18\xd6\xef\xb0\xdb\xa5\x31\xbc\x64\x5f\x93\x82\x4f\x98\xe1\x5d\x3d\x23\x31\x0f\x3b\x46\x58\x5a\x0c\x2c\x14\x66\xf2\x0c\x0b\xb7\x2b\x38\x1e\x85\xf4\xed\x4d\x83\xde\xf3\x0c\x99\x4b\x29\x05\x37\x72\xe3\x5e\xe4\x24\x45\x1f\x03\xb7\xf4\xb6\x59\x83\x87\xc3\x1e\xea\x27\xbf\x9d\xe4\x43\xf4\x29\x25\x99\x2c\x0a\x96\xf9\x5a\x1a\x80\xa6\x3d\x76\x0e\xc7\x12\x13\xb9\x0b\x05\xd6\xa3\xab\x3f\x80\x91\xdc\x99\xc3\x5f\x21\xea\xbd\xfa\x74\x7a\x74\xf2\xe1\x74\x54\xe6\xbf\x9a\xc9\x9b\xa1\x91\xc3\x5a\xb3\x21\xef\x5a\x2a\x75\xeb\x5d\x16\x12\x68\xd3\x8f\x50\xb5\xb8\xa2\x66\x96\x46\xbd\xb6\x33\x59\xf4\x69\x3a\xda\x7f\xaf\xb1\x5e\x00\x54\x64\x73\x71\x88\x4a\x4a\x33\x20\x8a\x42\xf0\x6d\xe8\x94\x3c\xa9\x8b\x02\xf1\xcc\xd2\x9e\x41\xec\x1f\x7e\xf5\xa2\xe4\x7a\x71\xaa\xb5\xb9\x5f\x94\xc6\xbb\x2b\xe4\xa1\xbf\x6c\xd9\x55\x67\x26\x09\x11\xa6\x81\xa4\x8d\x32\x97\xad\xcf\x31\xf6\xc1\xcc\x2c\x02\x5d\xb1\x39\x81\xaa\xf6\x56\x6d\xfd\x5e\x33\xd5\xbe\x82\xcc\x64\xb0\xeb\xaf\x6a\xcd\xd4\x08\xa7\x7f\xe6\x27\xdd\x47\x56\x86\xf7\xff\xc4\x26\xbb\x71\xce\x9f\xd8\x64\xd9\x31\xbb\x8f\xa1\x3b\x73\xc8\xaa\xb2\xa2\x78\x6d\x66\x98\xf9\x8b\xfd\xf3\x51\x4f\x59\x7a\xee\xd8\x07\xe1\x99\x1f\x74\xaf\xfa\xea\x29\x1a\xdb\x88\x1e\x5a\x15\x49\xdc\x04\x24\xf6\xa3\x39\xcc\xe8\xd9\x2d\xe5\x73\xab\x05\x2c\x96\x20\xe3\xd7\xac\x98\x07\x59\x1d\xf3\x66\xf2\x1a\x2b\x22\xd3\xec\xea\x86\xaa\x1c\xfa\x4d\x57\xd4\x70\x67\xe1\xe6\xdd\x05\x4b\x3b\x7c\x8f\x72\x57\x73\xd9\x35\x12\x71\x09\xd8\x1a\xdf\x98\x3b\x65\x06\x13\x42\x85\x2b\x2e\xed\x2a\xa8\x59\x1e\x49\x3b\x07\x5d\x78\x20\x4a\xab\xbb\x65\x4c\x59\x6d\xbf\x98\x93\x1b\x25\xbb\x56\x60\xf3\x63\xc3\xc0\x12\x79\xcd\xd4\x35\x67\x37\xaf\x6e\xa4\xba\xe2\x62\x3a\xb4\x2f\x3b\xc4\x2b\xa0\x5f\x59\x4c\xd4\xaf\x7e\x05\xff\xf4\x80\x2a\x51\x67\x8f\x60\xa1\xde\xdb\x4b\x21\x0e\xf7\x6e\x38\x60\x87\xe5\x6f\xdb\xa6\xea\x16\x06\x7b\x97\x64\x2c\x47\x2b\xcf\xb1\x15\xcd\xa5\xc6\x67\xec\x39\xb6\xe8\x35\xcd\xcb\x8e\x55\x8c\xc9\xce\x90\xeb\xae\xc6\x1d\x2e\xf2\x6e\x47\x97\xc4\xb8\x03\xab\xb7\x8d\x3b\xee\x33\x17\x04\x1a\xd2\x41\xa8\xf7\x4a\x40\xe1\x59\x9f\xe4\xd1\xce\xf1\x48\x60\xe1\xc1\xc5\x37\x73\x51\x38\x88\x13\xfb\x27\x70\x56\xf0\x50\xc8\x8a\x59\x92\x9c\x5d\x8d\xa4\x9a\x3e\x46\xd2\xc6\x22\xbe\x96\x73\xfd\x73\x31\x44\x08\x86\x55\xde\x20\xec\xf3\xb3\x5c\xbd\x64\x67\xac\xcc\xce\x78\xde\x81\x1e\x3b\x9c\x73\xf1\x98\x57\x8a\x7c\x91\x56\x9a\x2f\xca\xe5\xb6\x45\x9c\xe8\x6f\x8b\xd9\x35\x15\xbd\x91\xe8\x2a\x09\xb5\xd9\x5c\xc3\x4c\xd0\xc0\x91\xb3\x78\x5f\x21\x54\x61\xa0\x8a\x96\xcc\x30\xd5\x14\x8c\xcf\xa4\x10\x7d\xfa\xcd\x1a\x49\x3e\x56\x4c\x5c\x02\x13\x7e\x51\xab\x5f\xd4\xea\xd5\xe3\x45\xad\x7e\x51\xab\x53\xa8\xd5\x3b\x97\x30\xe4\xe9\x29\x16\x41\x74\x89\x80\x4d\x45\x07\xa7\xb3\x3c\x3f\x9e\xd9\x55\x7b\x96\x62\xc2\xa7\x1f\x68\xd5\x5b\x81\x0e\x33\x2d\x28\xc3\xe1\x63\x17\xd9\x00\xa5\xa9\x2a\x59\x41\x8b\x3e\x57\x46\x14\xb6\xff\xe9\x35\xb3\xbe\xcc\xc8\x5d\xb8\x64\x49\x20\x3d\xf0\x3b\x02\xa5\x2d\x6f\x94\xf6\x93\x31\x37\x8d\x24\xa1\x99\xc1\x7e\x60\xd8\x73\x95\x48\x41\x32\x57\xe1\x1d\xf4\x9f\xa8\x4f\x5d\x02\x9d\x4a\x10\x99\x19\x5f\x6a\x34\xb4\x0f\x7b\xfd\xfa\xf5\x6b\xec\x1d\xf3\xfb\xdf\xff\x9e\x48\x45\x28\xc9\x59\xc6\xcb\xbb\x0f\xc2\x53\xbf\x7d\xd3\xb1\xbd\x82\x1d\xff\x7e\xf4\xe1\x3d\xd4\x65\xa9\x8c\xc6\x0e\x8d\x08\x91\x9d\xb8\xb5\xa8\x1e\x90\xff\x73\xf9\xf1\xbc\x69\xfd\xd7\xfe\x16\xac\x26\x61\x3b\xbb\xc3\x13\xbb\x6f\x5f\xff\xee\x37\xbf\xe9\x31\x13\x18\x5c\xa4\xe2\xae\x9c\xb1\x2f\x31\x43\x2d\x3f\x56\x0c\x7b\xf2\x80\x00\xe1\x35\x58\x2c\x00\x66\x3a\xb7\x07\x21\x5e\x40\x29\xf9\x74\x66\x5c\x99\x58\x7b\xc5\x0b\x9e\x19\x14\x04\xb0\xb8\x96\x74\xd5\x9a\xe1\xd2\x23\x0c\x41\x7b\xef\x11\xc0\x92\xb3\x01\x29\xf8\x15\x23\x13\xfd\x17\x25\xeb\xaa\x69\xe4\x8b\x3d\x4b\x7c\xed\x23\x04\xa2\xc1\xfd\xce\x7d\x30\x77\x25\x93\xba\x57\x04\x4a\x2a\x22\x03\x40\x2c\x98\x1c\x5c\xe5\xd3\xa6\x31\x6c\x45\x79\x28\x76\x04\x69\x9b\x28\xcb\xb6\x65\xe4\xac\x63\x41\x39\x3b\x8e\x03\x47\xf1\x0d\x1c\x2a\x25\xff\x13\x91\x1c\x4a\xfc\x46\x1c\x1d\x4a\xe3\x5a\x9c\xf3\x85\x71\x9b\xc8\xc4\xce\xeb\x5f\x31\x2c\x7d\x6b\xf5\x35\x26\x42\xab\x45\x78\x7b\xa8\x62\x1b\xed\x8d\xfd\xa2\xe0\xda\x82\x06\x1d\x81\x1c\xc4\x9d\xd7\x5e\xf2\xa6\x61\x35\xb8\xf7\x1a\x6f\x44\x2d\xee\xac\x8a\x9d\x34\x7a\xac\x0c\x2c\x1d\x5e\x90\xfa\x2e\xb8\xcd\xda\x58\x20\xdd\x35\x99\x71\xcf\x7a\x2c\x08\x07\xd6\xbd\x6d\x7f\x74\xa4\x9a\x99\xda\x1d\x3d\x53\x4a\x2a\xfb\xae\x4c\x6b\xd7\x5f\xad\xa4\xea\x8a\xe5\x81\xff\x8d\xc8\x85\xdd\x14\xdf\xdf\xa6\x87\x89\xa7\xa0\x56\x0b\x43\x23\x3e\x9d\xc3\x6b\x3a\x85\x1d\x80\xdb\x1f\x8d\xf6\x91\xf0\x4a\x45\xb4\xa1\xca\x51\x43\xfb\x79\x3f\xca\xb3\xc5\xb8\xb5\x16\xdd\xf8\x40\x2b\x68\x81\x0d\x72\x26\x20\x00\xd8\x30\xe0\x9d\x1d\xf3\xa1\xee\x8c\xba\xf3\x96\x04\x16\x86\xbe\x06\x77\x1c\xc3\xce\x15\xd6\xfd\xef\xed\xc6\xf4\xb9\xe7\xbd\xcd\x24\x40\xa9\xfa\xfc\x7c\x01\x01\xae\xda\x35\xeb\x8d\xf4\xd4\xa8\x9f\x42\x9e\x48\xf9\x2d\x7b\x08\xe1\x38\x52\x9a\x85\x10\x9e\x76\x70\xce\x5a\x92\xb8\x41\xeb\x4f\xd1\xe3\x0e\xe1\xd8\x21\x01\x1c\xc7\xae\x89\xe1\x38\xce\x26\x40\xca\x17\x58\xb6\x63\x35\xb1\x52\xe5\x65\x0d\x7b\x76\x7d\x17\xdd\x9e\x04\x8d\x63\x2b\x72\x34\x8e\x14\xd2\x34\x8e\xfe\x32\x35\x8e\x3e\x61\xd0\x38\xd2\x12\x0e\x1f\x4c\x8d\x87\xe1\xc4\x0e\x94\x2c\x26\x01\x01\xc0\xeb\x09\x36\x15\x4f\x8c\x7b\xd3\x0b\x27\xd4\x20\xc9\xa0\x63\x2d\x8b\xda\xe0\xc2\xa9\xa6\x8e\xe5\x25\x78\x21\x56\x40\x4f\x8a\x5e\x42\xd2\xe2\x22\x91\xec\x05\xd2\x31\x8a\x2b\xfd\x57\xd8\xcd\x18\xfe\x3e\xae\x90\x54\x68\x9b\xd6\x05\xb2\x7d\xf7\xc7\xd6\x5d\x1f\xa9\xdd\x1e\xbb\xe6\xf2\x48\x59\x5c\xa2\xa3\xab\x23\xd8\x47\x53\xdc\x1d\x3f\x59\xa8\x2d\x78\x33\x63\x2e\xc9\x25\x52\x7e\xad\x90\x65\x59\x28\x68\xe4\xbe\xdf\x2a\x36\xf5\xd9\x96\xb7\x3c\xad\xbb\x27\xd3\xbc\xbf\x13\x41\x73\x72\x70\x1c\x6a\x66\xfb\x7c\xd9\x33\x61\x98\x9a\xd0\x8c\x1d\xc6\xce\x05\x56\xcd\x58\xc9\x94\xdd\x78\xf7\x9c\x2f\xc1\x3c\xa3\x22\x2f\x5c\xe9\x73\xbc\x45\x84\xdd\x1a\xa6\xec\x21\x35\xc1\x67\x9d\x84\xc7\x6d\x17\xcc\x02\xc8\xb7\xe1\xeb\x80\x85\xb7\xcd\x6b\x10\x0a\x2f\x1e\x89\x88\xf3\x34\xc7\xea\xfb\xa6\x59\x14\xd0\xb1\x83\xa9\x3b\x05\x3d\x96\x02\xa4\x62\x20\xf7\x73\x59\x2b\x0c\xb8\x0d\x71\x94\x99\x54\xca\xca\xe7\x00\x10\xd5\x44\xb1\x29\xd7\x06\xba\xc3\xf8\xae\x96\xd8\x61\x62\x6b\xf5\x78\x76\x2a\x92\x2f\x84\xec\xad\xa8\x74\xd4\x79\x0d\xa7\xd1\x55\x4a\x5e\xf3\xdc\x2b\x74\x31\x7f\xe6\x9a\x54\x54\x47\xf5\xd3\xa9\xd6\x32\xe3\xe0\x00\x6b\xb0\xa8\xf3\xfa\x68\x09\x05\x75\x31\x67\xc6\x6a\xf7\x82\xb5\x2a\xdf\xc6\x41\x86\x92\xd0\xaa\x2a\x3a\x67\xda\xf4\x46\x0b\x21\x73\x76\x51\x8f\x0b\xae\x67\x97\xbb\x12\x38\xb5\x0c\x26\x4c\x4e\xbe\x93\xd1\x74\x5f\x00\x55\x8f\xa0\x2d\xa1\x39\x68\x5c\x56\x5e\xb2\x0a\x26\x97\x02\x4c\x5d\x54\x6b\xbf\x6a\x4c\x6a\x24\xc8\x9d\x05\x33\xcc\x7f\xd5\x5d\x8e\x6e\xde\xdb\xf5\x9e\xb0\x3a\xb9\xfd\xf4\x7b\x51\xb5\x3e\xcf\x68\x51\xf4\xb0\x7c\xb4\x45\x6c\x2f\xbd\xa0\x09\xc0\xf7\xb1\xc0\x0b\xc3\xed\x5d\xf2\xbb\x0c\x29\x65\xc8\xbd\x46\xd8\x01\xb4\xbb\x88\xbb\xf4\xe0\x74\xd4\xe6\x5f\x0a\x7f\xba\x03\x2b\x90\xfb\x1f\x04\x0c\xc0\xf2\x5d\x78\x8f\x5f\xc2\xd9\x5e\xc2\xd9\x1e\x18\x5b\xd7\xe9\xc8\x4b\x38\xdb\xa6\x63\x17\xc3\xd9\x76\x2e\xe4\xdc\x1b\xae\x91\x3d\xd2\x7c\x08\xd5\x04\x31\xe8\xaa\xc6\x74\x9f\x20\xa5\xf6\x95\x82\x1f\xa8\x3b\xb0\xb5\x90\x6f\x7c\xaf\x23\x63\x14\x1f\xd7\xa6\x3b\x29\x4e\x1b\x6b\xd8\xc0\x03\xea\x29\xd3\x4e\x66\x18\xba\x23\xcb\x22\xe6\xe1\x8c\xfc\x81\xa3\x45\x92\x46\x4f\x55\x69\x14\x74\x17\x50\x5b\xf0\xc3\x7d\x4d\x72\x99\xd5\x25\x13\xa6\xc1\x90\x26\xd7\x05\xfd\x2c\x5b\xe4\xaa\x34\xcf\x39\x0a\x25\x17\x09\xf8\x6b\x2f\x72\x94\xcb\x1b\x61\xf9\xd1\xd1\x45\xa7\x0a\xbf\xed\xea\xbe\xcd\x5c\xb1\x19\xc3\x7f\x4c\xec\xe7\x74\x0c\x3d\xe9\x5d\xcb\xd5\x97\x90\xc9\xa5\x53\xa4\xb9\xa6\xcb\x3c\xb3\x46\x92\x5a\xb3\x95\x21\x91\x8d\x67\x35\xe9\xca\x2f\xd1\x99\xbb\xe1\x16\x7e\x89\xce\xec\xba\xf2\x4b\x74\x66\xb7\xe5\x5b\xf4\xec\x0c\x43\x2c\xad\x38\x57\xb8\xde\x9e\x2d\xfe\xe0\x22\x13\x7a\x1c\xd4\x6e\x45\x95\x9d\x34\x3c\x11\x8d\x1b\x8b\x85\x7f\x17\xec\x30\x48\x0b\x1b\x3f\x78\x94\x34\xe7\x99\x26\x28\x9b\x5f\x42\x04\xda\x0e\x44\x90\xc1\x5e\xf6\xb0\x09\xe2\x68\x57\x8b\x6b\x4a\x0f\x62\x37\x6e\x0c\xd1\x8d\x62\x84\x2b\x99\xbf\xc5\x06\xd4\x54\x08\x89\x22\xaa\x1e\x60\x03\x6f\x3d\x70\xc5\x2f\x40\x49\xad\x68\x86\x56\xb2\x9a\xe7\x40\x53\x9b\x0a\x95\x5d\x6b\xc7\xe1\x48\x82\x05\x24\x11\x26\x10\xc0\x06\xd8\xa2\x8b\x3e\x28\x41\x92\xa1\x85\x1d\xb4\xe2\x3f\x30\xa5\x7b\xf4\xb6\x6b\x46\xbb\xf1\x2e\xce\xea\xb1\x41\x67\x33\x56\x52\xf8\xcf\x77\x7e\x0b\x2c\x81\xb4\x5a\xa7\x61\xd8\xbe\x8e\xa9\x52\x13\x39\x19\xb4\x32\xb0\xf7\xae\xfb\x74\x74\xf3\x23\x91\x31\x83\xf8\xcb\x74\xd1\x3b\xdc\x88\x2c\x6e\xd8\x45\x2b\x38\xc8\x5e\x24\x90\x23\xed\xdd\xf2\xee\xa7\x26\x50\x1b\x98\x08\xee\xf0\x0e\x6d\x4e\x7a\x4b\x0d\x8e\x5d\x8b\x0a\xed\x1a\x0d\x3a\x08\x11\x03\x6d\x91\xbd\x27\x38\x2f\xd1\xa0\xed\xf1\x12\x0d\xfa\x12\x0d\x9a\x34\x1a\x34\x12\x76\x3c\xdf\x5a\x12\xd8\x19\xc7\x31\xf8\xe8\xce\x31\xf3\x7a\xbf\xb3\x38\xf8\xe0\x4c\x1f\x99\x29\x55\x3b\x01\x65\x7f\x34\xda\xc7\x14\x94\xc6\x44\x51\x9b\xc9\xf0\x0f\x84\x89\x4c\xe6\x76\x9e\xcf\x30\xbf\xd2\x06\x44\xf8\xc6\xcf\x13\xc3\x52\xfa\xb5\xe2\x24\x16\x98\x3b\x85\x44\xd5\x9b\x55\xf8\x5e\x8e\xef\xd2\x0b\xa6\xbd\x89\x7b\x23\xce\x86\x8e\x93\x6e\x8b\x33\x1f\xd1\xe4\xe4\x5a\xff\xbd\x26\x05\x2f\x39\xb4\x37\xc9\x81\xc2\x31\x6d\xfa\x39\xba\x08\x39\xc0\x29\x47\x59\x55\x0f\xdc\xf4\xa3\x92\x95\x52\xcd\x07\x61\x09\xfb\x65\x6b\x4d\xf7\xc4\x21\x08\xd1\x59\xad\x14\x13\xa6\x98\xf7\x2b\xf8\xde\x8c\x1d\x94\xa6\xfd\x09\xec\x88\x30\x1d\x10\xa4\x4f\x23\x86\x66\xb4\x69\x50\x13\x4f\x07\xae\xe6\xb0\x8b\xc0\x3b\x5d\x61\xbf\x41\x13\xc5\x68\x3f\x65\xe2\x9a\x5c\x53\xa5\xfb\xdd\x79\x92\x56\x7e\xce\xf9\x35\xd7\xb2\x73\x0c\x5a\x34\x51\xbc\x3d\x97\xc1\x83\x66\x6f\xaa\xac\x4d\x55\x1b\xc7\x4e\xfc\xf5\x65\xb7\x95\xb4\x42\x5a\xb8\xb6\x0b\x8a\xc6\x9b\xae\x0e\xca\x66\x54\xd4\x18\xa6\xc4\x5b\xf2\x7f\x0f\x7e\xfa\xf5\x3f\x87\x87\x7f\x3e\x38\xf8\xdb\xeb\xe1\xff\xfa\xfb\xaf\x0f\x7e\x1a\xc1\x7f\x7c\x75\xf8\xe7\xc3\x7f\xfa\x3f\x7e\x7d\x78\x78\x70\xf0\xb7\xef\x3e\xfc\xe5\xf3\xc5\xe9\xdf\xf9\xe1\x3f\xff\x26\xea\xf2\x0a\xff\xfa\xe7\xc1\xdf\xd8\xe9\xdf\xd7\x9c\xe4\xf0\xf0\xcf\xff\xb3\x37\xe8\x54\xcc\x3f\xf6\xa4\xc3\x38\x86\x09\xe5\x81\xf6\x8c\x49\xd0\x6f\x41\x4b\xe1\xc2\x0c\xa5\x1a\xe2\xd4\x6f\xa1\xa7\x74\xcf\x05\x3c\x7a\xa5\xbe\xff\x8d\x0c\x12\xf8\x52\x50\x10\x77\xe8\x82\x3f\x86\x0e\x98\x38\xe5\x02\x42\x42\x4e\xf8\xd6\xaa\x8d\xfa\xf5\xdb\x25\x56\x0c\x2b\x2b\xa9\xa8\x9a\x93\xdc\xb9\x1c\xe6\x8f\xd0\x46\xa6\x67\xa3\x6b\x00\x3d\xe7\x5d\x6e\xf5\x96\x5d\x96\x25\xcb\x79\x5d\x6e\xdb\x5b\x89\x50\xc4\x07\x7f\x63\x8f\x18\x22\x96\xe4\x24\x44\xc0\xbb\xc7\x9c\xcf\x78\x4c\xb3\x2b\x34\x22\x04\xcc\xe8\xe3\x59\x62\x71\xc9\xe1\xbd\x3d\x17\xea\x5a\x32\x2a\x82\xe7\x14\xc2\xb2\x65\xce\xf6\x75\x78\x16\x41\x4a\xe2\xac\xc4\x90\x2c\x97\xd3\x75\xe0\x16\x38\xb4\xaa\xd0\x07\x90\x5f\xb7\xd6\xc6\xbd\x07\x76\x93\x24\x8d\x09\xf8\x2f\xec\xbd\x95\xf5\xb7\x8d\xa6\x01\x10\x1f\xa3\x6f\x24\x98\x75\x5c\xa3\xab\x09\x29\x64\x16\x25\x6c\xb4\x44\x51\x40\xd4\x53\x4f\xe2\xfa\x46\x2b\x59\x74\xb5\xd0\xa0\x0e\x04\x2e\xb5\x42\x63\xbc\x35\xcf\xe8\xb8\x60\x68\x3a\x02\xbc\xe9\x8d\xa3\x76\xb1\x92\xde\xf2\xb2\x2e\x49\xad\xed\x9b\x49\xd1\x9e\xbb\x79\xb1\x1b\xbc\x9a\x78\x57\x4a\x2e\xe0\x47\x2d\x33\x5b\x77\xe7\xd5\x8c\x91\xcb\x70\x02\x8d\xd1\x17\xc3\x17\x9d\x4d\x47\xd7\xa0\xfa\x3b\xe8\x9c\x02\x2a\x27\x10\x66\x1b\xf4\x10\x4d\xa0\x9e\x43\xe7\xc6\x99\xe4\x2e\xc1\x10\xbc\x68\x53\x0c\xa0\x5f\xb3\xe8\x80\x6a\xe1\xf2\xa1\x9e\xeb\x3d\x7e\x76\x52\x7c\x4f\xd9\x3d\x95\xc4\x9e\x44\x4e\x4f\x2e\x9d\x87\xfc\xb2\xad\x89\x7b\x21\xc1\xad\x25\xef\x39\x7b\xf4\x92\x64\x37\xea\xf3\x8c\x02\x81\xed\x53\x66\xfd\x73\xb0\x7d\x3b\xe1\x31\x9b\x67\xae\x81\x10\x6f\x62\x14\x43\x9c\x1a\xde\x5d\x28\xc4\x33\xb4\xff\xe7\x6d\xe4\x3e\x7c\x69\xcc\x26\x18\xde\x8f\xbf\x01\xfb\xa2\xee\x56\x12\x08\xbd\x04\x05\x33\x50\x79\x88\x89\x30\x29\xe4\x28\x94\xf2\xda\x92\x90\x4e\x33\x7f\xaf\x5d\x80\x1d\xef\x78\x2d\xe8\x61\xab\xa2\xa4\x46\x83\x9f\x60\x2c\xc7\x2a\x49\x45\xb3\x03\xaa\x16\x1d\xdf\x7f\x7c\x48\x26\x8c\x9a\x5a\x61\xec\xba\x90\x0a\x3c\x22\x48\xc4\xd0\x94\xaf\x98\x45\x01\x68\xec\xa4\x64\x49\xb4\xa0\x95\x9e\x49\x03\x66\x63\x5a\xd1\x8c\x9b\xce\xe5\x6d\x8c\xa2\xd9\x95\x9d\x19\xa2\x98\xe0\xcd\xba\xbd\x46\x76\xe8\x72\xf4\x63\x5c\x6d\xd7\x95\x32\x33\x25\xeb\xe9\x0c\x0a\x0f\xe1\x53\x59\x41\x35\x56\xb9\xea\x16\x80\xb8\x74\x4d\x67\xe8\xd4\x24\x9f\x0b\x5a\xf2\xcc\x9f\x1f\x64\x91\x69\x2e\x5d\x80\x09\xc0\xd2\x75\xdb\x28\xb9\x60\x4a\x73\x6d\x98\x30\x18\xeb\x72\x5c\x50\x5e\x92\x03\xcd\x18\x39\xf5\x57\x1d\xbf\xb9\x44\x35\x1d\x9d\x5b\xdd\xd3\x0e\xe2\xe0\x19\xd7\x64\xd4\xd5\x91\xb6\x9f\x78\xa7\x5e\x14\x50\xda\xbd\x05\x84\xbb\x95\x4b\x5f\xf1\xb0\xc7\x65\x5c\xbe\x67\x52\x41\x86\x90\xb3\xcf\x5d\x33\x91\xcb\x26\xb0\xba\xd3\x5a\x47\x17\x67\x3a\x36\x88\x22\x4d\xab\x70\x75\xf8\xc2\x35\x41\x0d\x9d\x0b\x03\x45\xec\xb4\x9e\x15\xb8\x04\xe1\x22\xe7\xd7\x3c\xaf\x69\x81\xa2\x56\xe7\x6d\x3a\xbe\x3c\x43\x20\xf9\x74\x66\x86\x37\x0c\xdc\x89\x28\x6b\x37\x5c\xc4\xbf\x1a\xbf\x93\x32\xcb\x35\x08\x65\x86\x18\xd9\x8d\x20\x31\xe7\xc6\xb6\x9b\x76\x43\xe7\xd0\xcd\xdb\xa5\x3d\xb6\x22\xcd\xdd\x89\xb9\x65\x27\xb2\x9b\xcc\x50\x7a\x29\xcf\x21\x77\xc7\x8d\x3b\x02\x32\x9c\x51\x01\xaa\x2b\x78\xa1\x2d\xfe\x03\x4d\xbd\xbb\x6b\x5d\x29\x4e\x15\x30\xb8\x99\x0a\x05\x5f\x4d\xed\x8d\xeb\x68\x91\xd9\xb2\x55\xe4\xba\xb9\x8d\x9f\x59\x59\x15\xd4\x6c\x3d\xa0\xfb\xc7\xc8\x29\x1f\xc5\x0a\x5a\xd6\x41\x45\x3e\xa4\x85\x25\x19\x17\x3f\x1c\xbb\xd2\x65\x48\xd8\x93\x64\xc6\x7c\xf6\xe2\x87\x70\x1a\x0e\xaa\xb2\x4b\x69\x3a\x74\xd7\x1b\xb3\x1c\xe4\x01\x07\x71\x9f\x54\x4a\x79\x23\x98\xf2\xf7\xea\xe2\x87\xe3\x01\xe1\x23\x36\xf2\x7f\x85\x25\xbc\xb8\x64\xe4\x14\x8b\x53\xf8\x12\x39\xdd\x23\x0c\x65\x3e\xc2\x57\x8f\xfd\xd7\xf1\x9a\xff\xf8\xa3\xdd\x14\xfb\xed\x9f\x86\x7f\x74\x0c\x06\xfe\xfa\x87\x95\xda\x7a\x64\xd3\xfd\x63\x61\xb6\xb8\x1e\x00\x88\x3b\xf6\xaf\x7f\x5c\xc8\xfc\xb2\x62\xd9\x08\xb7\x5f\xff\xa3\x57\xd0\x2b\x21\x4c\x18\x35\x1f\x91\x0b\x09\x19\x32\x3c\x47\x82\x06\xef\xaa\xd8\x7f\xfa\x80\x0c\x40\x83\xe0\xf5\xcd\xa8\x61\x02\xa4\x5f\xd1\xbd\xf7\x39\xf1\x75\x35\x61\x59\x20\xf3\x14\xf6\xf9\x00\x5c\x75\x58\x5e\x7c\x40\x8c\xc4\x46\xdd\x5d\xb9\xad\x1d\x47\x82\xb0\x5b\xae\xa1\x8f\x08\x9e\x24\x20\x09\x75\xa5\x0d\xbc\xca\x61\x81\xb1\x78\x17\xfa\xe2\x54\xb2\x7b\xc4\x2d\xec\xe0\x57\x42\x9a\xaf\xc2\xe5\xf5\x19\x6b\xa0\x5b\x48\x42\xaf\x25\xcf\x49\xad\x41\xe6\x14\xa4\x16\x10\xb2\xd0\xa3\x84\xac\xc3\x9e\xf1\x9c\x94\x5c\x1b\x7a\xc5\x46\xe4\xd2\xaa\x23\x71\x18\x31\xe2\x94\x20\xe3\x42\x66\x57\x2c\x27\xb5\x30\xbc\xe8\x65\x99\x09\x70\xc3\xd6\x46\xaa\x0a\x14\x8d\xad\x33\x2b\xe5\x56\x8a\x0d\xbd\xc2\x84\x4f\xf5\xb0\x18\x23\x43\x0f\xbb\xda\x9c\xd5\x20\x5c\xd5\x19\x45\xd3\x6d\x95\xc3\x92\x2e\xf7\xb5\x27\x31\xba\x93\xa7\x6f\xf7\x53\xc2\xdf\xee\x0f\x40\x32\x3d\x22\xe7\xa0\xb9\x14\xdd\x2f\x25\x26\x4d\xa0\xb5\xdb\x45\xc8\x08\x96\x31\xad\xa9\x9a\x63\x62\x31\x37\x3e\xa7\xbd\xd6\x6c\x52\x17\xa0\x30\x76\xdf\x54\x2a\x6a\x0b\x30\x51\x2c\x93\x42\x1b\x55\x67\x80\x35\x94\x8c\x95\xbc\x62\xa2\x29\xf4\xd1\x83\x99\xc4\x19\xd3\x4d\x52\xa7\x15\xaf\x85\x24\xd9\x8c\x8a\x29\x0b\xa5\x84\x49\x49\x73\xc0\xe4\xef\x82\xf1\xa3\xfb\x66\xca\x80\x17\x74\x62\xac\x58\x68\x00\x41\xc6\x56\x4b\xf0\xd1\x48\xdd\x5f\xec\x53\x48\xf8\x2e\xa3\x80\x26\xc1\x8b\x2d\xa6\x1a\xf6\x8f\x28\x19\x82\xb6\xda\xd5\x60\x98\x20\x82\xa4\x64\x86\xe6\xd4\xd0\x5d\xa9\x21\xf0\x81\xce\x43\x64\x1a\xc6\xec\x03\xea\x46\xb1\xfc\x4e\x4d\xf0\xf6\x21\x59\xf1\xb8\xa0\xf5\xc5\x0f\xc7\xbd\xd6\x07\x83\x10\x60\x2b\x74\xc3\x32\x96\xca\xb8\xd0\x45\xb8\x55\x58\x3a\xc2\x57\x04\xb0\xa0\x79\x48\x90\x8d\xb3\x9c\xe4\x75\x6f\x6f\x76\x23\x22\xf4\x89\x9d\x4a\x12\x39\x65\xf1\x73\x57\x90\xe3\x73\x13\x8c\x9e\xb5\xb3\xd3\x97\x2a\xfa\x18\xb3\xc8\x84\xe1\x8a\x45\x05\xd7\x7b\x81\xe0\xf0\xad\x16\x48\x49\xdb\x98\x87\xa8\x39\x65\x46\x37\x69\x97\x28\x50\xf6\x5c\xd5\x38\x25\x09\xdf\x08\x34\x3f\x8f\x8d\xce\xd7\xb2\x74\x03\x7a\xad\x89\x78\xae\xa5\x13\x1c\xad\xc8\xbd\x75\x64\x4c\x17\x35\x47\x33\xcb\xe7\x3f\xc8\xbc\x7f\xf8\x5d\xda\x38\xd0\x16\x68\x4d\x71\x1b\xac\x01\xa5\xc1\xdd\x89\x0f\x40\x28\xb5\x6e\x15\xb7\x47\x49\x66\x46\xaf\x7b\x17\x80\xee\xec\x0b\x6b\xec\x15\x43\xef\x16\x43\x70\x87\x00\xee\xf0\x4d\x4f\xc0\xfa\x27\x20\xfa\xd1\x33\x11\xb1\x0d\x50\x92\x18\xb1\x47\x28\xf1\xea\x87\x65\xf1\x97\x49\xe2\xc3\x52\x63\x7b\x03\x99\x13\x5b\x5d\xba\x40\x48\x6c\x71\x65\x31\x19\xb7\x4c\xb8\xff\x79\x7d\xd5\x52\x53\x9d\x71\x25\xf8\x37\xb0\xa4\xd4\x81\x77\x78\x8c\x1c\x5a\xfb\xee\x5b\xed\xc7\x0f\x13\x03\x03\x5a\xf9\x72\x1b\x78\xef\x95\xce\x5c\x76\xa4\xb7\x5c\x31\x05\x99\x3a\x51\x69\x4b\x4b\x6a\x94\x2c\x0a\xa6\xe0\x08\x9c\x53\x63\x21\x01\xcc\x9e\x16\xc1\x30\xc0\xee\xfd\x38\xfc\xf0\x6e\xbe\x60\x6a\x13\xec\x26\x68\xd7\x54\x63\xa7\x6b\x1f\x01\x0f\xee\x4b\x9f\xd5\xb7\x0c\x9e\xfe\x24\xef\x47\xef\x0c\x3c\x12\x73\xdc\xfc\x93\x08\x39\xd1\x65\x46\xa6\x16\x54\xae\x09\x13\x74\x5c\x58\x75\x24\x42\xe0\x00\xe7\x82\x74\x6a\x64\xf4\xd4\x27\x36\xe9\xbf\x75\xe0\xc3\x8c\xa7\x5c\x6f\x6d\x14\x6f\x5b\x3f\x1c\x35\xb9\xb0\xce\x36\x93\xa0\x21\xb0\x1f\x0e\xeb\x5a\x4b\xb4\xf3\xa3\x16\xa0\x89\xbb\xcd\x2c\x7d\x83\xbe\x30\x25\xcb\x26\x48\x97\x4f\x00\xfd\x42\x78\x47\xff\x40\x7b\x9a\x5e\x76\x42\x1c\xe9\xd2\x12\x20\xcb\x17\x52\xc2\x52\xc4\x77\xa7\xe6\x3b\x04\xdd\x76\x00\x9f\x37\x01\x4f\xe1\x0f\xaf\x53\x84\x78\xe7\x31\xb3\xd4\xb9\x69\x3e\xd5\xff\x5e\x10\xbc\x1b\xf1\xfa\x4b\x52\x07\x1b\x32\xf7\x1d\x17\x79\x48\xe2\xf4\x45\x61\xad\x80\x76\x74\x71\x86\x50\xa7\x81\xe9\x1d\xf0\x84\xb9\x53\x78\xcd\x8c\xab\x7c\x58\x51\x65\xe6\xe8\xda\x1a\xb4\x20\x0e\xf5\x1c\x13\x2c\x9d\x34\xd2\xde\x5e\xa6\xe4\x28\x07\x47\xe0\xc3\x12\x5d\xdc\xec\xbd\x18\xb2\x6b\x3b\xd2\xb7\x4a\xa4\x1f\xad\x1d\x39\x6f\xda\xa1\x05\x27\xce\x33\xd9\x91\xc7\xca\x18\x27\x6d\x6e\xb6\xbb\xb2\xb6\x65\xb5\xba\x9d\xbb\x84\xa2\x2f\xd8\x2b\x9c\x1b\x52\xc6\x65\xc3\x82\x96\x09\x56\x7e\x3b\xd3\x80\xf0\x89\x15\xda\xa4\x18\x42\xe4\x63\x6f\xf0\x9a\xb0\x27\xa7\xe9\x8e\x5c\x7a\x33\x5a\xe0\x81\x30\x45\x50\x46\x4b\x37\x74\x90\x1c\x08\xd9\xdd\x40\xef\x07\xd0\x56\x5c\xeb\x10\x33\xda\xef\x89\x24\x19\xf7\x6f\x61\x45\x1a\xc9\x33\x36\xdd\x47\xbc\xc0\x8b\xc4\x5c\xe4\xf6\x52\x81\x88\x04\x46\x7d\x5d\x67\x19\x63\xc1\x65\xe8\xc8\x52\x7f\x95\xb6\xc5\x7b\xdc\x96\x97\xd4\x64\x33\xa6\x89\x96\xd0\xeb\x58\x1b\x5a\x14\x2c\x0f\xa1\x4e\x88\x28\x12\xb4\x0a\x17\x06\xd5\x1b\x8e\x48\x59\xe9\xbf\xc5\x91\x63\xc4\x79\x5d\xab\x82\x3a\xa7\xd2\xa4\x16\x19\xe6\x2f\x72\x33\x0f\x51\x26\x8b\x8a\x29\xd8\xa1\x35\xf8\xda\xfa\xab\x3e\x13\x8c\x18\x89\x6c\xca\x01\x99\x81\xf9\xcf\x91\xdd\xcf\xe8\x35\x6b\xa2\x3d\x5c\x97\x48\xcb\xa5\x43\xa9\xdb\x04\xb8\x1e\x95\xca\x1d\xa0\x86\x10\x0b\xec\x62\x3f\x0e\x06\xe7\x22\xb5\x2a\x13\xef\xc3\x41\xb4\xe9\x77\x54\x9c\xc3\xa0\xda\x68\x66\x42\x11\xef\xfe\x12\x2f\x71\xf1\xf3\xb4\x36\xb2\xa4\x86\x67\xe0\xa2\xe3\x93\x28\x48\xac\xc4\xc0\x0b\x4b\x69\x7c\x20\x3c\x8a\x48\x20\xb8\xb9\x73\x4b\x44\x06\x96\x2b\x4b\x8f\xb0\xf1\xd1\x5e\xbb\x53\x6e\x6f\xab\xdf\x96\x48\xf4\x4c\xf4\x9e\x9f\x7d\x45\x64\x62\x66\x8a\x31\xc2\xcb\x4a\x2a\x43\x85\x21\x39\x9f\x84\x1a\xdd\x3e\xc2\x70\x15\x4e\xa4\xb0\x07\xfd\x08\x71\xb5\xd1\x2a\xe8\x30\x2d\x0a\x79\xa3\x89\xb9\x91\xc1\xe5\xd0\xc4\x77\xb9\x9a\xc7\x83\x36\x30\x09\x64\x1c\xb7\xaa\x65\x75\x16\xaf\x22\x3e\x34\xb0\xb4\xe7\x86\x15\x85\xfd\x77\x15\x37\xea\x5d\xc7\x64\xe9\x9e\xf0\xa9\xc0\x32\xb4\x5c\x7b\xe7\x97\xab\xa1\x72\x90\x2b\x59\x55\x2e\xf8\xa1\x3c\x4c\xbf\x27\x10\xbc\xae\xae\x99\x86\x24\x13\x5f\xd7\xc5\xa2\xc2\x94\x09\xa6\xa8\x81\xf0\x3a\xd7\xcf\x15\x44\x92\x45\x20\xfb\x3a\x7d\x70\x24\xb4\x8b\x3c\x80\x74\x18\x7a\xb9\x1c\xc9\xfc\x33\xee\xdb\x04\xef\xc5\x05\xe2\x9b\xa7\x3b\x09\x10\xe8\xe0\x5b\x66\xe8\x21\xf9\x5e\x23\x5a\x04\xce\x1b\xea\xf0\xac\x65\x65\x73\xf5\xd6\xd1\xd0\x96\x00\xa8\xa3\xa2\x9a\x45\x50\xc5\x76\xa9\x50\x42\xae\xbd\xd7\x2d\x78\x8f\x95\xd4\xfa\xdc\xff\xe4\x09\x41\x7f\xb1\x59\x3d\x30\x5e\x6c\x56\x2f\x36\xab\x17\x9b\x15\x8c\x17\x9b\xd5\xe2\xf8\x52\x6c\x56\xa4\x61\x57\xbb\x4a\x9b\xce\x63\xd5\xa5\xcd\x60\x1f\x79\x9f\x09\x39\x97\xc6\x85\x18\x83\x06\x4b\xef\x75\x3a\x51\xe0\xd0\x37\x74\x3e\x12\xcc\xb8\x4e\x26\xde\xbf\xfb\xc9\xc3\xf4\x17\x65\xb5\x11\x67\xfa\x88\xe8\x86\x27\x64\xbe\xbd\x4d\xb4\x8a\x91\x28\x9a\x35\x11\xcf\xf0\xf9\xbe\x76\x71\xad\xf6\x7b\x28\x59\x18\x4f\x90\xb1\x11\xb9\x74\xb9\x2e\x0b\x8b\xdf\x6d\xb2\x90\x33\x43\x79\x9f\xde\x4d\xf1\xf0\xd2\xd0\xe7\x7b\xa4\xb3\xad\x49\x3b\x24\xe5\xb5\x09\x45\x97\x76\xcd\x14\xdb\x14\x71\x8b\xb2\x73\xe3\x9c\xfe\xe6\x81\xc7\x8a\xf0\x39\x9b\x90\x4f\x2c\x93\xd7\x4c\xe1\xe9\x9e\xde\x56\x54\x68\x2e\xc5\x3b\xca\x0b\x7b\xb6\xfe\x8c\x1b\x6f\x37\xa9\x35\x53\xed\x10\xc8\x28\x44\x23\x5c\x70\x87\x48\x16\x7b\xfb\x2b\x28\xa1\xbb\x89\x5d\xcf\x65\xd0\x55\x8a\x5d\x73\x59\x6b\x5f\xf9\xa0\x36\x28\x69\x68\xe3\x2c\x44\x33\x3e\x9d\xf9\x87\x7d\xc6\x2a\x44\x5d\xab\x3c\x5c\xe2\xde\x90\x69\x43\x4d\xad\xdb\xe5\xa7\x33\x08\x3c\xdc\xa1\xe8\xab\x80\x47\xbb\xa3\x84\xa4\x14\xd7\xb1\x02\xc5\xae\x32\xc4\xf7\x58\x1f\x03\xa7\x1e\xbb\xbb\xec\x4b\x7d\x34\x65\x4d\x32\x59\x56\xb5\x61\xd1\x9d\x77\xb7\x2b\x0d\xa9\xdf\x10\x99\x5a\xfd\x9f\x5e\x95\x54\xd0\x29\x1b\x06\xd0\x86\x4d\x95\x8f\x57\xc9\x28\x7d\x12\xb4\x22\xc9\x9b\xff\xc4\xe3\xd9\x55\xe7\x68\x8f\x64\x75\xf6\xc8\xa3\xd4\xda\x23\xe9\xeb\xed\x91\xc7\xaf\xb9\x47\x42\x09\xd4\x5d\x25\x40\x9f\x1c\x7c\x8b\x24\xc8\x09\x19\xab\x48\x50\x4a\x55\xd9\x09\x1b\x0e\x16\xae\x89\x2c\xb9\x31\xcc\xa7\x23\x06\x92\x32\x20\xdc\xb4\xaa\x63\x3a\x02\x0a\x0e\x4e\xcc\x1e\x64\xb7\x55\xc1\x33\x6e\xa2\xf6\x75\x1d\x0b\x48\x2c\x0e\x30\x20\xdc\x70\x8d\xa2\xbc\x20\xbc\xac\x0a\x16\x24\xf0\xa1\xab\x2e\xe4\x9d\x70\xe1\x6d\x32\xc8\x4d\x21\xec\x16\x5c\xb1\x08\xf0\x0b\xdd\xde\x70\xbc\xd0\xed\x7b\xc6\x0b\xdd\x4e\x4e\xb7\xb1\x76\x69\xff\x52\xc0\x2d\x7a\xed\x27\x75\xdd\x97\xe8\x98\x15\xe4\xe7\x9a\xa9\x39\xb1\x0a\x56\x53\x17\x44\x5a\x62\xa7\x79\x8e\xf5\x2b\x7c\x4c\xc7\x0e\x79\x08\x52\x0a\xe7\x10\x33\x72\x7a\x6b\xf5\x5b\xe8\x4a\x91\x9c\x4b\x2e\x2e\xd0\xee\x7d\x85\xa7\x10\x4e\x26\xd6\x4a\x31\x91\x2a\xfe\x04\x54\xcc\xa3\xf3\x93\x94\x06\x8c\x14\x69\x2a\x24\x5d\xaa\x0a\x79\x24\x21\x83\x90\xa3\x15\x7b\x8d\x67\x12\xbe\x01\x3e\x1e\xd2\x9a\x82\x37\x97\x5c\xb1\xf9\xc0\xa5\x7a\x12\x8b\x81\xd4\x3f\x9c\x08\x44\xcc\x9e\x47\xf1\xe7\x8a\x61\x1c\x47\xbf\x5e\xa5\xed\x91\x98\x21\xa6\x74\xd5\xe1\x18\xda\xd7\x4e\x36\x97\x3f\xa2\x34\x3c\x3a\x31\xcf\x27\xf6\x55\x53\x4d\xb5\x70\x67\x2c\xee\x38\xeb\x36\xe2\xbc\xfd\x20\x54\xa3\x0c\x68\x0e\x95\x42\x81\xe0\xa7\x41\x2f\x92\xda\x99\x80\xc3\x1f\xe3\x23\x6d\x56\x32\x02\x43\x22\x58\xdb\xf5\x0c\xaf\xd8\x7c\x5f\xbb\x36\x24\x52\xe8\x19\xaf\x40\x7c\x87\x60\x26\x39\x49\x7a\xc5\x71\xfc\x00\xe9\xb0\x1e\x18\xe4\x1b\x67\x62\x40\xce\xa5\xb1\xff\x9c\x42\x71\x0a\x20\x2f\x27\x92\xe9\x73\x69\xe0\x93\x9d\xc6\x02\xdc\xa4\xe7\x80\x03\x2e\xe6\x88\x43\xc4\x0f\xb0\x57\xac\x5f\x0d\xb5\x0a\xdd\x59\xfb\xac\xa3\x80\x2f\x5c\x93\x33\x41\xa4\x72\x47\x94\x10\x1c\x30\xcd\x23\x48\x08\x8c\xf7\x77\x37\x41\x81\xcb\xa0\x71\x38\x22\x55\x0b\x45\x9e\x04\x30\x07\x14\x78\x7d\xf0\x1b\xf0\x6e\x41\x2c\xac\x2f\x5d\x00\x45\xaf\x14\x35\x6c\x9a\x20\x88\xb7\x19\x25\x53\x53\xe8\x13\x94\xcd\x52\xdf\x86\x54\x82\x16\x8e\x84\xe2\x16\x8e\x47\xb8\xb2\x8f\x9a\x2d\xfc\x24\x0b\x80\xec\xfe\x1e\x4a\x7c\xec\xaa\xf5\x2c\x02\x11\xa5\xd8\x92\x56\x96\xde\xfc\x97\x15\x56\xe1\x7a\xfd\x37\xa9\x28\x57\x7a\x44\x8e\x88\xe6\x62\x5a\xb0\xd6\x77\xce\x59\x1c\x4d\x93\x08\x2c\x88\x65\xb1\xf2\xe1\x35\x2d\x18\xd6\x69\xa2\x82\x30\x34\x57\x41\x7d\xee\x05\xc5\x68\x40\x6e\x66\x52\xa3\xe4\x1b\x52\x0c\xf6\xae\xd8\x7c\x6f\x90\xc4\x15\x46\x62\xfe\x6c\xa7\x3e\x13\x7b\x4d\x23\xb8\x16\x25\x0a\xb2\x3f\x44\x3c\xee\xc1\x77\x7b\x4f\xa3\x8f\x3d\x03\x73\xd5\xb3\x48\x72\x72\xee\xc6\xe3\x82\x62\x88\xc0\xae\x39\xd7\x17\xe1\x5b\x8c\xf8\x81\x4a\xf7\xd1\x33\x4d\x78\x87\xab\x72\xb6\x73\x5e\x5c\xa8\x5b\x9c\xa8\x78\x46\x02\xe4\x42\xb0\x8e\x8c\x51\x7c\x5c\x1b\xa6\x77\x16\x13\xee\x05\x34\x2a\xeb\x16\xfa\xa7\xda\x93\xff\x61\xd9\x0f\xa2\x0a\x78\x5c\xa7\x42\x8e\xb3\xc9\x62\xec\x64\x54\x52\x37\xae\x8b\x20\x95\xab\xb0\x77\x27\x0b\xcf\xfe\x4d\x03\xa8\xae\x86\x7a\xff\x70\xaa\x26\x58\x53\x31\x5d\x49\xcc\x3a\x5b\xba\x31\x4e\x90\x9c\x51\x0d\x51\xf7\x13\x17\x14\x55\xd5\xaa\x92\x50\x0b\x9d\x8a\x3b\x97\x31\x49\xdd\x08\x57\x24\xc4\x17\x61\xc2\x82\x73\xe1\xe6\xda\xfb\x1e\xfa\x5f\x1e\x2d\x74\x7e\xc1\x90\x91\xa8\x8b\x84\x90\xcb\x5f\xae\x37\x9c\x3e\x5d\x09\x6d\x01\xa1\xe6\x3d\x82\x88\xd5\x05\xf7\x31\x88\x36\x0a\xa6\xb1\x9a\xad\x89\x63\xe6\x8d\x6c\xc3\x0f\xa5\x10\xb1\xe5\x45\xef\x16\xaa\x04\xf1\xb0\x16\x4d\xd8\xae\xe7\xd9\xcb\x53\x4c\xa0\xcf\xc6\x58\xd6\xc2\xa1\xac\xef\xd0\xf1\xb8\x1b\x68\x77\xc4\xd7\x9f\x0c\x60\xb9\x8b\x10\x95\x2d\xe1\x13\xbb\x2f\xae\x3a\x64\x8a\x7d\x69\x45\x54\x43\xc4\x9e\xc2\x43\x1a\xcf\x97\x53\x16\x92\x4b\x86\x27\x0a\x50\x0c\xf0\x1c\x97\x6f\xa5\x7b\xb9\xfe\xcc\x0e\xb3\xb6\x28\xb9\x60\x78\x53\xb5\xa1\x86\x41\xba\x90\x62\x93\x02\x6b\xd2\xb9\xdd\x2b\x65\xce\x27\x2e\xeb\xe2\x32\x8a\x5e\x1a\x60\x81\x52\x57\x47\x34\x6e\x42\xda\x1b\xbc\x54\xc7\xd1\xab\x37\xcb\xb0\xa1\x92\x43\x60\xa5\x2c\x81\x13\x74\xad\x24\x97\xe5\xfc\xe4\xfe\xe8\x49\x72\x20\x27\x13\x7b\x5c\xbe\x3f\x55\x1a\xd7\x50\x32\x9e\xff\xa1\x77\x4f\xf4\xc7\x62\xf2\xd0\x5a\xdb\xb7\x11\x69\xb5\x37\x6b\xf2\xca\x1f\x49\xce\xfb\x01\x58\x8a\x9c\x90\x77\xbc\x60\x7a\xae\x0d\x26\x8c\xf2\x12\xe9\x3e\xa6\xd4\x4a\x43\xb8\xc8\x8a\xda\x05\x20\x22\x17\xb0\x74\x77\xc7\x4e\x38\xb9\x18\xd7\x4c\xeb\xe5\x70\x9f\xc9\x7e\xa7\xd4\xef\x22\xa5\x84\x34\xe7\x70\xbd\x92\x9c\x56\xaf\xdd\x9a\x74\x2a\x85\xd9\xda\x8d\x49\xd6\xb6\x5f\xbf\xe3\x63\xc5\xc8\xf1\x8c\x0a\xc1\x8a\xa8\xc7\xa6\x0b\x77\xa1\xc6\xd0\x6c\x86\x5c\x87\x12\x4b\xf1\x0a\x66\xa5\x86\x99\xd4\x86\x94\x34\x9b\x71\x11\x9a\x73\x89\xd0\x6b\xb6\xa9\x9c\xfc\x0c\x9b\x03\x4c\xf4\x67\x0b\x40\xc7\x73\x4e\x45\x5c\x10\x0a\x8f\xb1\x93\xe6\x62\x03\x55\x31\x92\x40\xe8\x54\x82\xc6\x84\x77\xe6\x0e\x7d\xb3\x3d\x95\x82\xb3\x46\xeb\x0a\xf0\x77\x78\xb6\xfb\xca\xa7\xb7\x23\xb2\xc7\x6e\xcd\x6f\xf6\x06\x64\xef\x76\xa2\xed\x3f\xc2\x4c\xf4\xde\x88\x9c\x95\x21\xb8\x8a\x8b\x48\xdc\x61\xee\x07\x56\xc4\x8a\x84\xc5\x7e\xa5\x97\x7b\x50\xac\xa2\x16\x49\xf0\x63\xbf\xa8\x85\x3d\xe2\x8f\xae\x7d\xf5\x5b\xf2\xee\x98\x18\xaa\xa6\xcc\xd8\x35\x88\xa8\xcb\x31\x53\x5d\xdb\xdc\xa6\x08\xb6\xc1\x2e\x25\x30\xcb\x37\x5f\x77\x9a\x43\x31\x9a\x7f\x14\x45\x67\x7f\x68\xaa\x0b\xe5\xe1\x68\xef\xf7\x49\x14\xec\x37\xa1\x85\x66\xe4\xc0\x3e\xf8\xea\x46\x71\xc3\x0e\x47\xe4\x93\xff\x15\x94\x0c\x00\x99\x79\x22\xfb\xc8\xa5\x98\x69\xe3\x26\xd5\xcc\x60\x9d\x67\xe1\x04\xb5\x0f\xf6\x52\x77\x96\x56\xf1\xc0\xc7\x52\x16\xac\x63\x19\x7c\xc4\xbd\x1f\x7f\x3c\xef\x6c\x4e\x6c\xe3\x77\x33\xdf\x7d\x68\x7e\x23\x55\x91\xdf\xf0\xdc\x25\x6b\x91\x03\xfb\xf0\x61\x3f\x94\xef\xe3\x8e\xe9\xe9\x7c\x49\xdd\x0a\x30\x8d\xdf\xe3\xe6\x86\xe7\x69\x4e\xb4\xc7\x05\x04\x20\xda\x38\xe0\x8d\x49\x16\x07\x08\x20\x01\xcf\x99\x30\x96\xb8\x2b\x4d\x0e\xe0\x17\xdd\x6b\x8f\x9e\x72\xec\x15\x03\xeb\x4a\x45\x32\x59\x8e\xb9\x68\x5a\x39\x35\xb8\x69\x05\x18\x4b\x6f\xbd\x97\x52\x33\x83\xfd\x17\xa0\x12\xa4\x34\x33\xa2\x79\x59\x17\x86\x0a\x26\x6b\x5d\x74\x2e\x41\xf2\x82\x9e\x77\xc6\xa4\x60\xb7\x48\xfb\xb6\xd5\xa8\xb2\x81\xa0\x2d\x19\x43\x75\x8f\xa6\x9b\xde\xa2\x68\xdc\x69\xad\xa6\xa4\x54\xfe\x2a\x88\xd6\xa1\x37\x0c\xbb\x65\x99\xab\x3c\x5b\x15\xf5\x94\x77\xac\xbe\x7f\x62\xdf\x22\xa3\x86\xe5\x6f\xc9\xbb\xe6\xe5\xa0\xae\x99\xff\x66\x44\x8e\x7d\x1c\xa8\x5b\x9e\x1c\x5f\x9e\x9d\xb8\x86\x6a\x42\x1b\x46\xb7\x21\xbb\xf7\x0b\x3a\x1b\x3a\xf3\xf5\x16\x94\x06\x5c\x38\x09\x89\x6d\xba\xda\x2d\xfa\x8c\xdc\x37\xae\x5b\x79\xe8\x3a\xdd\xaf\x01\x58\x6f\x92\xf0\xa2\x2f\x6d\x4d\x5f\x8a\x9b\x54\x47\x60\xe5\xac\x62\xc2\xf2\x3c\x11\xdf\x7f\xdc\xe7\xad\xa1\x89\x84\x33\x4e\x24\x57\xba\xc9\xda\x42\x65\x64\x03\x9d\xc9\x22\xd7\x84\xdd\x1a\x45\x2d\xdb\x2f\x2d\x83\x0f\xbf\x99\x10\x2a\xe6\xa3\x7e\x22\x66\x2f\x57\x7e\x5a\xf7\x7d\xef\x93\xd9\x6d\x0d\x2d\x7f\xd1\xd0\xe2\xa1\x59\xa6\x98\xe9\x51\x7a\x2e\xd5\x69\x05\x40\xda\xc7\xd5\xfa\xf8\x8e\x81\x15\xbf\xf5\x85\x2d\x5c\x28\x4e\x1f\xbb\xb1\x66\x42\x73\xc3\xaf\x5b\x1d\x55\xa1\x74\x2c\xd5\x3a\xd8\x21\x41\x98\x72\x04\x50\xb7\xaa\xba\x76\x5e\x18\x7d\xa2\x7c\x42\x84\x5c\x78\xab\xb8\xdc\x47\x08\xbf\x6c\x3d\xd2\x79\xd1\x10\xbb\x54\x62\x33\x72\x2a\xa0\x48\x24\x4e\x3e\x80\xfa\x74\xf8\xdf\x18\xbe\x64\xf7\x20\xb2\xc6\xc2\x2e\x74\xdf\x69\xb7\x7b\xdb\x23\x9b\x29\xc2\xf4\xfb\x56\xf5\x49\xe9\x3b\x3a\x8f\x44\x3b\x5f\xd0\xa5\x9f\x7b\xa1\xdd\x7d\x8f\x4d\x26\x2c\xb3\x77\x03\x3a\xfe\xf9\xf6\x75\x56\xad\xcd\x6b\x74\xfb\xf9\x22\xae\xed\x22\xac\x7d\xcb\x15\x46\xd1\x04\x4d\xc4\xef\x99\xd0\x86\x42\x5d\x4d\x78\x63\x2b\xa7\x59\xe1\xc9\xf5\x6c\x74\xd7\x09\x63\x23\x7c\x75\xce\x9e\x40\x94\x56\x0c\xcb\x98\xb2\x37\xa6\x98\x93\x1b\x25\xfb\x26\xba\x6d\xe8\x03\x96\xd7\x4c\x5d\x73\x76\xf3\xca\x55\xf9\x19\xda\x97\x1d\xba\xc2\x89\xaf\xc0\xdc\xf5\xea\x57\xf0\x4f\x0f\xa8\x12\x79\xdf\x1c\x97\x7d\x4b\xf6\xf6\x52\xd8\x05\x7a\x87\xfb\x4d\xa0\x71\x69\x27\x85\x2a\x8d\x4d\x00\x96\x5f\x70\x95\xb9\x0f\x9d\x41\x60\x1d\xd7\x98\xe3\x35\x91\x40\x6e\x2f\xbb\x9f\xc8\xc5\x8e\x10\x6d\xf1\xa4\x29\x4c\x55\x0b\xd1\x39\x27\xb3\xad\xfb\xe3\x32\x2d\xc5\x3f\x04\xd8\x70\x31\x34\x8a\xb1\xf0\xaa\xc6\xa9\x4f\x42\xfa\x66\xf1\x41\xb1\x79\x86\x4e\xbc\x9c\x1a\xaa\x99\xe9\xe3\x4c\x4e\x45\xea\x23\x50\xec\xfe\xc6\x54\xdf\x7d\x05\x31\x6a\x0c\xaa\x7b\xfb\x7e\x98\x64\xf8\x27\xa7\xfa\x8b\xd6\x93\x56\xe9\x77\xe7\xda\x9d\x93\x63\x15\x27\xe8\x70\x83\x36\x20\x5c\xbb\x41\x92\x6d\xe9\x88\xee\x2d\xbf\xff\xfe\xec\x24\x8d\x29\xa5\x99\xcf\x5b\x06\xe0\xbf\xdb\xdb\xef\x2e\x29\xc4\x96\xf1\x9f\xeb\xd8\x08\x6d\x9f\x6c\x2e\xbe\x7b\x7e\x1b\xbb\x33\xcd\x58\x13\x9c\x70\xc2\xf5\xd5\xb6\x28\xe3\x1d\x40\xda\x34\xf2\x2f\xc7\xa7\xc4\x7d\xba\x2a\x92\xa0\xd3\xd2\x4f\x13\x7d\xd0\xa6\xa1\x7f\x39\x3e\x5d\x78\xdd\x05\x33\xea\x51\x51\x78\x5b\x8f\x14\x3a\x14\x42\x75\xd4\x35\xd1\x16\x03\x6d\xb6\x12\xbd\x62\x39\x57\x18\x52\xe7\xdf\x32\x1f\x65\x9a\x87\x46\x71\xd3\x2b\x36\xe2\x32\x0a\xe5\xed\xb6\x05\xbd\xa2\xdd\xf4\xaf\xa6\x19\x6b\x02\x25\x73\xae\xaf\x9e\x9f\x25\xb9\xca\xcf\xbb\x15\x06\xfe\xd2\xc2\x4f\x16\xcd\x9d\x8e\x76\x3a\x21\x08\x6e\xf7\x5c\xd6\xe4\xc6\xf5\x6b\xef\x69\x66\xfd\xcc\xab\xb7\xe4\x54\xe8\x5a\xb1\x26\xab\x79\x11\x04\xab\x61\x3f\xba\xd1\x95\x96\x55\xc1\xf4\xdb\x2d\x87\xaa\xec\xc4\x55\x24\x29\x78\x7b\x45\x95\x01\xab\xe7\xb6\x51\x3b\x00\xe2\x45\x82\xe8\x03\xf1\x98\xb8\x7d\x36\xf1\x75\xa7\xda\xc1\xeb\x5c\x87\xc9\x9b\xc8\x6e\x90\xfe\x52\xe0\xef\x3b\x19\x34\x96\x57\x39\xbb\x7e\xa5\x73\xfa\x66\x00\xaf\xe5\xeb\x66\xb6\xf7\x80\x6a\xb2\xf7\x66\xaf\xfb\xca\x97\xbc\xe4\x05\x55\x05\xf6\x91\x09\x0d\x7a\xc2\xfc\x96\x43\x7a\x40\x20\x55\xef\xf5\x1e\x39\x90\x0a\x20\xca\xa8\x20\x05\xf3\x3d\x67\x1c\x25\x9d\xa3\x71\xa0\x47\x24\xf2\x4e\x5d\xa1\x6d\xc7\x63\x21\x63\xdb\xfa\x25\xcc\xbd\x3e\xe4\x64\xee\xd8\xcf\x79\x71\xd2\x88\x8f\x5c\x58\x19\x6c\x44\xbe\x77\x92\x9d\x93\xcd\x11\x6b\x73\x10\xc8\xf0\x89\x2f\x03\x3b\xbe\x24\x37\xce\x82\x43\xe6\x51\x1d\x2b\xe4\x6e\x24\xdf\x17\x82\x11\x5d\x9d\x45\x53\x6e\x3e\xb1\x4a\x6e\x4d\x4f\xc4\xe5\x17\x42\x6a\xb8\xb1\x1f\x48\xcd\x8d\x54\x73\x42\x0d\xa1\xc8\x19\xb2\xba\xa0\x8a\x28\x86\xc1\x31\x09\xd4\x36\xb7\xfa\x82\xb2\xf6\x59\x36\x11\x38\x71\xdd\x47\x67\x86\x0e\xf0\x0d\x1c\x37\xee\xe8\xa3\x3b\xb5\xfc\xea\x84\x2b\x4b\xa5\x21\x33\xfe\x4c\x70\x73\x1c\x16\xc3\x12\x54\x85\x14\x2e\x47\xc7\xae\xe8\xa2\x70\xa6\xdc\xb8\xb6\xc4\x08\x80\xfd\xda\xcf\xd6\x09\x14\x80\x00\x68\xaa\xcc\xf7\x75\xf3\xc6\xcf\x30\xb6\xa7\x41\x9c\x6d\xd8\x13\x41\xed\x96\x6a\xeb\xd4\x35\x00\x12\x1a\x6b\x60\x1c\x6d\xf3\x79\x3f\xc1\x11\xe2\x5c\x84\x0c\xce\x59\x22\x15\xd1\x86\x2a\x83\x77\x64\x7f\x34\xda\x1f\x81\x28\xbb\x3f\xda\xf7\x8a\x58\x11\x52\x88\x9d\xb4\xd7\x00\xe3\x53\x28\xfb\x14\x79\x68\x53\x8d\x11\x21\x1f\x7d\xa5\x54\x68\x01\xba\x90\xc5\x1c\x12\x94\x8b\x22\xbc\x03\x34\xaa\x69\xd3\x9e\x1e\x9e\x50\xf0\xe7\xd6\xe3\xf8\x25\x5d\x32\xf4\x94\x5f\xbb\x0e\x7a\x5b\x0b\xb3\x69\x5e\x31\x09\xa6\xc6\x3b\xe6\x0c\xa8\x9f\xde\x6f\xef\xdd\x90\x74\x27\x7a\x33\xc7\x07\xdc\x7b\x65\xb2\x2c\xb9\x21\x33\xaa\x67\xc1\x8a\xd7\xa4\x25\xf7\x63\x4d\x7d\x8d\xbf\x45\xad\x0d\x53\x93\x4e\xb4\x2b\x09\x33\xf7\x00\x2c\x18\x7b\xc3\xc7\xae\x8e\xb3\x68\x4c\x31\xc0\xe4\xf4\x8c\x2a\x66\x9f\xac\x80\xfb\x14\x7c\xc2\x0c\xef\x7a\x39\x5a\xfc\x3d\xac\xbc\xda\xb9\xd5\x00\x9e\xd8\xbd\xb5\x54\x48\x64\x4e\xe9\xf6\xed\x5c\x9c\x40\xf8\x2a\x40\xf1\xea\xd3\xe9\xd1\xc9\x87\xd3\x51\xd9\xc5\xc3\xb2\x65\xf6\xcb\x44\x5e\x49\xde\xb5\xa3\xc6\x90\x54\xd4\x74\xe9\x5b\xdb\x97\x71\x07\xb0\xb7\xcd\xb8\x03\x20\x9e\xe0\xf8\x0f\x50\xf5\x85\xfb\xe2\x3a\xec\x44\xe8\x6d\x64\x25\x0b\x39\xed\xd1\xf4\xb4\x1f\x9e\xfe\x0a\xeb\x58\x0c\xe9\xb0\x92\x5b\x73\x0b\x5a\xd4\xd9\xf6\xf1\x59\x18\xfc\xc9\x35\xc7\x13\xac\x5b\xa6\x47\x4d\xb9\x2f\xe0\x84\x9e\x85\xed\xe1\xce\xb1\xa1\xbd\x1e\x78\x17\xcb\x51\x8a\xb3\x13\x0c\xa1\x32\x58\xc5\x54\xc9\xb1\x7a\xd9\xae\x1a\x25\xb6\x82\x25\x5d\xed\x11\x56\x2a\xb8\xe8\x78\x91\x53\xa0\x87\x5f\xbf\x2d\xc2\x54\x8a\x0d\xa1\x44\x88\xd5\xbe\x27\xbc\x80\x72\x47\x8d\x64\x1f\x49\x34\x9d\x16\xf5\x3e\x6a\xef\x04\xc7\x99\x8b\xf9\xa2\xaf\xba\xd1\xcb\x43\x2c\x02\x36\x17\x2e\x8a\x6e\x99\x62\x50\x31\xca\x8a\xb1\xce\x6f\x46\xa7\xf0\xc2\x52\xb9\x3e\x95\x95\xe2\xd7\xbc\x60\x53\x0b\xc2\x8c\x8b\xa9\x6e\xfa\x5c\xb9\xf0\xbd\x4e\xcb\x42\x25\x2b\xd6\x48\x81\x21\x0c\xea\x03\x04\xe3\x85\x16\x10\x78\x35\xcf\x3f\x7e\x26\x82\x21\x08\x1d\x2f\x59\x4f\x53\x9d\x05\xb2\xa3\x60\xb2\x6d\xff\xf4\x76\xc4\xa9\x9d\x61\xc5\x3e\x84\x67\xd9\x55\xed\xe5\xa2\x43\x6f\x18\x32\x7b\x4a\xf4\xbc\x2c\xb8\xb8\x82\xc6\x30\x8e\x9d\xb8\x26\x8b\x8c\xd8\x2f\xfc\x05\x56\x8c\x16\xe9\xc5\x80\x27\x42\x65\x92\x42\x04\x30\x3b\x10\xb5\x00\x4a\x9e\xa5\x7a\x7f\xf5\xc4\x1e\x7d\x0b\x49\xf8\x77\xe7\xc8\xd8\x67\x7d\xb4\xbc\xa4\xd3\xad\xa5\xe6\xc2\xe2\x2d\x86\x2d\xc8\xc7\xe3\x33\x9f\x69\x71\x10\x9b\xf0\xf1\x59\xa9\x08\x55\x86\x4f\x68\x66\x0e\x49\x55\x17\x85\x33\x0a\x78\x21\xcf\x51\x89\x7b\xa2\x75\x3b\x01\xf9\xb9\x31\x3a\x42\xca\x8b\x96\xc5\xb5\x5d\xd5\x90\x4a\xe6\x68\x3b\xad\x2b\x17\x02\x8c\x05\xf4\xc8\xcd\x8c\x67\x33\x72\x51\x17\xc5\x85\x2c\x78\xe6\x03\xdf\xb9\x46\xf7\x44\x6e\xd9\x42\x47\xbe\x70\x54\xdc\xd0\xb9\x7e\x1b\xbf\x25\xa1\xf0\x19\xa1\xc6\xb0\xb2\x42\x64\xb6\x5b\xb3\xd8\x08\xb6\xf1\x50\x80\xb0\xc8\x2d\xa0\x40\xf2\x28\x2f\x02\x65\xac\xdd\x07\x1d\xf9\xf5\x90\x9c\xb3\x6b\xa6\xda\xf0\x09\xfb\x11\x4c\xad\xdb\x30\xc1\xd1\x81\x34\x5e\x6b\xb0\x23\x15\x32\xa3\xc5\xdd\xa3\x7e\x00\x76\x3e\x59\x98\x96\x6b\xb1\x6f\x88\xc3\xaa\xae\x2f\x72\x36\x39\x97\xe6\x02\xe7\x68\xbf\x0f\xbe\xc9\x3d\xab\xd2\xc2\xea\x18\x73\xbf\xba\x45\x87\x9c\xeb\xab\x5e\xaf\x10\xec\x5e\xf1\xf1\xf4\x45\xe6\x29\x33\x16\x9d\x87\x01\xa3\x1d\x0c\x16\xab\xe1\xbb\xdc\xbe\xac\xbb\x5f\x8a\xb9\x82\x97\x03\x87\xdc\x71\x81\x4b\x76\x43\x14\x2b\xa5\x41\x39\xd7\xc2\xeb\xdc\x02\x99\x2c\x19\xa1\xd7\x94\x17\x74\x5c\x40\xac\xb3\x9d\xdc\xcd\xd5\xd9\xda\x7a\x04\x3b\x00\x11\x64\xd2\xdf\x47\x8b\x2d\x01\xe7\x11\x7f\x5c\xb1\xf9\xf8\x92\x22\x58\x85\xcc\xae\x62\x59\x75\xa2\x64\x89\x8f\x60\x9e\x7e\x0e\xb9\x63\x34\xcf\x89\xe6\x53\xc1\x27\x3c\xa3\xc2\x90\x82\x1a\x26\xb2\xf9\x88\xb8\xf6\xb5\x3a\xf8\x3e\x14\x33\x8a\x87\x3c\x7f\x21\x55\x49\x0b\xbf\xc9\x63\x9a\x5d\xc9\xc9\x04\x66\x6d\x9e\x77\xa1\x6d\x8e\x58\xe1\x9e\x50\x2d\x05\x2e\xce\xb4\xa6\xd3\x1e\xc4\x0a\xfa\xd2\x5b\x01\xca\xa5\xa2\xe0\x29\xb9\x82\xb4\x9e\x50\xfa\x6a\xb3\x3e\xd9\x41\xf9\xe2\x76\x4d\xf1\xba\x80\xaf\xaa\x16\x86\x5b\xf2\xd7\xea\x58\x47\xc0\xc7\x7a\x27\x54\xd7\x2e\xe5\xda\xff\x41\xb9\x0d\x57\x94\x0e\x92\xd7\xae\xa1\xb7\x05\xc2\x77\x27\xc2\x6f\x91\xd4\x43\x9e\x53\xf7\x5d\x88\xf8\x08\x60\xb3\x7f\x71\x6e\xa1\x76\xc5\xd4\x1b\xe9\xf2\x00\x2a\xe5\x35\x48\xf1\xb7\xaf\xfe\x3e\xba\x8e\xe3\x16\xe0\xe7\x56\xe4\x38\xb4\xf0\x96\x4c\x4d\xb1\x6e\x1c\x23\x25\x15\x7c\xc2\xb4\xc5\x90\xb9\x45\x27\xe7\x8f\xd2\xb4\x64\xe4\xc6\x22\x12\x46\x0d\x2f\xbc\x5e\x47\xfa\xfa\x79\xc1\x03\x16\x9d\x68\x63\xda\x38\x50\xf2\x10\xce\x02\xda\x44\xdc\xb2\xac\x36\x70\xff\x20\xce\x92\x1c\x08\x69\x3f\xeb\x18\x6f\x75\x59\x8f\x51\x7c\x86\x65\x17\x5e\x0d\xd3\x12\x85\x34\xd1\xe9\x3e\xb8\xb3\xba\x1e\x57\xb8\xaf\x6c\x62\xe5\xa8\x37\xa3\x6f\xbe\xe9\xbe\x39\x98\x1d\x07\x6b\x6a\x96\xd5\x8a\x9b\xb9\x25\xbc\xec\xd6\x8c\x26\xfa\x2f\x4a\xd6\xd5\x31\x14\xf5\x75\x8c\x79\x46\xc1\x65\x80\xa9\x74\x78\x21\x9b\x4b\x61\x11\xf5\x19\xe6\xc6\x54\x41\xee\xd8\xb6\xbc\xee\x36\x79\xe2\x88\xb3\xbd\x31\xcd\xb5\xd4\x23\x72\x21\xb5\xe6\x16\x33\x43\x05\xff\x1e\xc9\x9b\x3b\x2e\x19\xd9\xf1\x85\xc8\x46\x04\x34\xe9\xdd\x96\x8e\xba\xbe\x57\xac\x11\x22\x46\xd9\xd5\xdf\x42\x73\x37\x43\x0c\x9d\xb6\xf2\xbf\x07\xf6\x24\xe2\xad\x68\xba\xbc\x6e\x31\x42\xc0\xed\xd2\xb6\x6f\xff\x27\x6f\x02\x23\x67\x8b\x48\xdb\xae\x1c\xe0\xea\xe4\x77\x3f\xb4\x6f\xd9\x8c\x5e\xb3\xa5\xac\xb7\x92\xf9\x68\x09\x07\x82\x6b\xd4\x7d\x41\xab\xda\x85\x54\xfc\x50\x87\x5d\x6b\x56\x42\x91\xe5\x7b\x44\x80\x65\x52\xce\x78\x4e\x0a\x29\xa1\x08\x6d\x5d\x11\x21\x73\x66\x2f\x00\x04\xc1\xd2\x42\x0f\xc8\xe5\x91\x7b\xb0\x8a\x96\xc4\xd6\x27\x20\xd9\x56\x2c\x5b\xf2\xc0\x93\x59\xa9\xa2\xae\xbf\x28\xd6\x74\xcf\x0c\x69\xe5\xb6\x4b\x57\x70\x02\xb2\xc9\xc0\x22\x37\xe3\xd3\x19\x53\xa4\x60\xd7\x0c\x02\x7f\x26\x7c\x4a\xb0\x09\x71\xe9\x5a\xd4\xf8\x78\x7b\xa9\xa0\x29\xaa\xe2\x79\x77\xc3\xd0\xa2\xb4\x66\x8f\xf4\x46\xaa\xab\x42\xd2\x3c\xaa\x09\xaf\x49\xc1\xaf\x18\x39\x61\x55\x21\xe7\xae\xaf\x8c\xc8\xc9\xa5\xa1\x86\x4d\xea\xe2\xb2\xc7\x51\xf4\xb3\xea\xe8\x4c\xf3\xad\x59\x75\xec\xe2\x0b\x56\x9d\xb3\xcb\xe3\xcb\xb3\x67\x9f\x39\xb8\x81\x8f\x0e\x36\xe1\x39\xc7\x83\xf0\x9f\xbb\x45\xd0\x0d\x49\x51\x77\xfd\x25\xc6\x3a\x5e\x48\x65\x68\xb1\x05\xc1\x39\x9b\xd1\xea\xa8\x36\xb3\x13\xae\x33\x4b\x41\xd2\xc8\xcf\x77\x66\x8d\xaa\xc8\x33\x70\xd6\x39\x65\x89\x70\x7f\x49\xdc\x73\xc7\x7f\x3d\xba\x20\xb4\xb6\x28\x6c\x78\x06\x42\xd1\x56\x5c\xbb\x24\xda\x9b\x4b\xec\xf8\x95\x74\x67\xdc\x9c\x0f\xec\x8b\x7f\x6a\x97\x76\x65\xd7\x92\x39\x97\x65\x53\xbe\x24\x74\x3e\xab\x84\x4e\x60\x1c\xdb\xd2\x1d\xb8\xe0\x86\x53\x23\xd5\x2e\xe4\x90\xb5\x80\x09\x61\xbc\xb5\x36\xb2\x74\x24\xe1\xcc\x3f\x01\x55\x37\x7a\xb9\x85\xef\x2c\xd6\xc4\x06\x43\xe0\x10\x1c\xcb\x99\x30\x4c\x4d\x68\xc6\x16\xea\x05\x0f\xc0\x06\x8e\x30\x71\xff\x4c\x67\x68\xfe\xe8\x42\xfe\x2b\xe0\x83\x7f\x7a\xfb\xc7\x28\x63\xf4\x4f\x41\xdb\x70\xf6\xf8\x58\xb1\x10\x2c\xeb\x6e\x55\x4f\x81\x3d\x3f\xa7\xe1\x0b\xfc\x67\xb1\x90\xfd\x80\x5b\xfb\x6f\x35\x2d\xf0\x48\xfa\x1c\x77\xff\xd7\x6c\xa1\xc2\xd6\x6f\x49\x1b\x31\xdd\xbe\x05\x2c\xc4\x7a\x34\x40\x99\xd1\x8e\x24\xdc\x66\x1a\x45\x85\xb6\x28\x96\xc6\x56\xb2\xef\xb4\xaf\x7d\x72\x60\xb2\xaa\x73\x32\x6f\x82\x72\x57\xa1\xd4\x95\xfb\x8f\x4e\xd3\xa4\xea\x00\x51\xd4\x22\xd6\x84\x70\xeb\x3f\x23\x52\xbf\x0f\x1d\x20\xfa\xed\xd6\xd6\x33\x8e\x81\x4e\x6d\x3d\x00\xdb\x81\x11\x6e\x40\xbc\xd5\xa8\x52\x90\xf7\x5c\x1b\xac\xaa\x8b\x0f\x43\x15\x3d\xac\x22\x6f\x75\xd4\x0b\x22\x15\xe1\xd5\x7f\xd0\x3c\x57\x6f\x51\xf2\xf4\x2e\x51\xd5\xbd\xa8\x23\xd7\x2e\x26\x0f\xea\x39\x7a\x23\xc5\x81\x99\x57\x3c\xa3\x45\x31\x27\x9f\x8f\x2f\x60\x05\x4d\xfe\xf0\xbb\xd7\xa0\xb4\x7e\xf3\xf5\xef\x5e\xf7\xbc\x42\x2f\x45\xe8\x17\xc6\xb3\x08\x61\x7e\x06\xe9\xd3\xbb\x56\xe2\xb6\x55\x90\x16\xda\x9c\x5a\xfd\xf0\x12\xeb\xb1\x5a\xe1\xc8\xb1\x3b\x24\x04\xf6\x76\x05\x51\x2f\xa5\x16\xf9\x52\xf9\x34\x1a\x2f\x95\x4f\x5f\x2a\x9f\xbe\x54\x3e\xbd\x7f\xc4\x76\xce\x6d\xf3\xa3\x18\x16\xe8\x2a\x79\x57\x6e\x42\x91\xe9\xe2\x4b\x17\x99\x3a\xa2\x5a\x57\xc2\x9b\xe2\x00\xe3\xaa\x3a\x7d\xda\x84\x34\xdd\x2f\x4e\xce\x2f\xff\xe3\xfd\xd1\xb7\xa7\xef\x61\x57\x5d\xf1\x1e\x7b\xbd\xb9\x48\xee\x3b\xd9\x1a\x89\xe9\x77\xde\xdb\xcb\xd3\x16\x0b\x19\xda\x82\x9c\xbf\xbb\xdc\x30\x39\xfb\x29\x0e\x6f\xd1\xa6\x29\x26\xdd\x4f\xe9\xb9\x65\xe0\xd8\x9f\x6a\xa6\xb6\xd3\xa6\x68\x67\xd2\x77\xbc\x6f\x97\xdd\xb6\xad\xfe\x16\x5f\x71\x77\xb6\x66\x60\xef\x86\x8c\xe4\x5f\x26\x8d\xd6\x1e\x11\x1e\xdb\xb3\x4f\xa0\x7d\x4a\xb4\xe8\xa7\x11\xab\x54\xdd\xc5\x7a\x75\x7c\x51\x51\x63\x32\xcb\x48\x50\xbc\x50\x56\xcc\xb3\x02\x1e\xd3\xda\x0b\x1b\xff\xba\xf7\xb8\x5a\xe8\x21\x7e\x5c\x50\x5e\x6e\x4b\x20\x58\x0a\x0c\xfe\xe7\x25\x06\xd9\xb4\xb2\xa1\x5b\x51\x77\xdd\x42\x6d\x16\x5b\xa8\xc3\x8a\xad\x80\x37\x10\xca\x2a\x9a\x75\x15\x45\xbb\x61\x45\xb3\x13\x43\x8f\x20\xcd\x47\xf8\x09\xf4\x77\x7f\x86\x82\x08\xc0\xbd\xa5\x6a\xd5\x61\xed\x6d\x13\xa7\x00\xc8\x62\xe3\x44\xba\x09\x4a\x12\xaa\x43\xca\x0d\xa6\xeb\x24\xe8\xb0\xb8\x93\x38\x4b\xbe\x48\x79\xe5\xc7\x27\x36\x97\x6f\xd3\x54\x5e\xcd\xa4\x91\x62\x37\xba\x42\x2c\x83\xa5\xcd\x5a\x2e\xe0\x89\xe3\x10\x19\x1b\xb1\x26\x2c\xe3\x1b\xa2\x3c\x17\xd2\x75\x5d\xec\x66\x8a\x4c\xdd\xb8\x82\xd8\xc5\x32\x88\x57\x17\x13\x5b\xfa\x92\xbb\xd5\x36\xa7\x7f\xd7\x83\xb3\x93\x2d\x70\x91\xe7\x10\x26\xf7\x85\xb6\x90\x7d\xa2\xb0\xb7\xfe\x35\xc0\xf2\x44\x3d\x81\xec\x44\xfe\x8c\xcf\x4e\x9c\x21\xc2\x37\xfc\xd1\x8e\x2e\x90\xfb\x09\xd5\x56\x74\x0a\xa9\xcc\x8d\x54\x5b\x6e\x94\xde\x86\x62\xa1\x8e\x92\xfb\xee\x4e\x73\xb4\x27\xa2\xe6\x6d\xd0\x36\xea\xd1\xb3\xf8\x5e\xf6\xa4\x3a\x01\x74\x4f\x83\x9e\xdb\x7c\xe4\x57\x18\x65\xb2\x8c\x7a\xf3\x90\x9b\x19\x43\x29\xf4\xf8\xf2\xec\x03\x9f\x22\x80\xfe\x5d\xc8\x84\x51\x53\x2b\x36\x9c\x52\xd3\x0d\x20\xae\x49\xb7\x68\xbf\x2d\x73\x21\xc4\xa1\x7f\x65\x4e\x74\x09\x9c\x28\xba\x61\xab\x38\xd2\x97\xc0\x90\x9e\x0f\x23\xda\x39\x9d\xe7\xa5\x41\x76\x6b\x78\xe2\x91\xe4\x7c\xfc\x64\xce\xd1\x69\x71\xb3\x11\x15\x68\x60\x3b\xee\xb9\xad\x88\x06\x4a\xfe\x27\xf0\x9b\xde\x52\x41\x98\x09\xe3\xfb\x80\x4d\xd2\xa2\xb0\x27\x2b\x05\x0b\x69\x79\xba\x49\x32\xc5\x2c\xcb\x92\x56\x2e\xe1\x34\x97\x37\xe2\x86\xaa\x9c\x1c\x5d\x9c\x3d\x3d\xd7\xe9\x5d\xe2\x1f\xef\xd1\x07\x99\x6f\x9d\xfe\x47\xa0\x80\x54\x01\x65\x44\xec\x1f\x63\x6e\x34\xd6\x76\x84\x4a\x8b\x26\x76\xb2\x58\xf1\x2a\x04\xfd\x43\x25\x8f\x71\x20\x0e\x09\x94\x16\x41\x64\x66\x68\xe1\x22\x95\xc6\xcc\xdc\x30\x26\xc8\xeb\xd7\xaf\x31\xbe\xe2\xf5\xef\x7f\xff\x7b\xc8\xe0\x26\x39\xcb\x78\x79\xf7\x41\x78\xea\xb7\x6f\xde\x74\x07\xe5\xdf\x8f\x3e\xbc\x27\x34\x03\x1b\x19\x19\x4b\x33\x73\x10\x01\xea\xc5\x8b\xea\x01\xf9\x3f\x97\x1f\xcf\xbd\x1c\xa2\x17\xbe\x05\xcc\x0e\xdb\xd9\xc3\x06\xe4\xaa\xc3\x70\xa8\xf5\xd3\x44\x40\x50\x33\x0b\x75\x4e\x28\x44\xa2\x45\xf5\x74\x1c\xbd\xec\x91\x50\x05\xcd\xeb\xf9\x74\x06\xc7\xc2\x05\xdc\xc2\x82\x67\xae\x41\x03\xc6\xc5\x60\x7a\xb4\x2f\xea\x89\xc5\x4b\xbc\x08\xd1\x79\x65\xbb\x65\x03\x4c\x68\x76\xa5\x52\x06\xc1\x46\xa2\x98\xae\x0b\x03\x0d\xbc\xc6\xcc\x01\xd1\x60\xac\x66\x9d\x31\x70\x37\x42\xd8\x1d\xe9\xdb\x36\x5d\xf0\x14\xd8\xa9\xaf\x05\xb7\x42\xd9\x24\x54\xa1\x46\x02\x0e\x0e\x57\x72\x4a\xb3\x19\x61\xc2\x40\xab\x0b\x44\x3d\xfb\x78\xe7\xa5\x67\x54\xe4\x96\xa6\x58\x56\x80\x60\x3c\xdb\xf8\xf3\x74\x91\xac\x17\x61\xc7\x5b\x35\xb4\x1a\x4e\x4a\x0b\x29\xa6\xf1\xc5\x6c\x04\xeb\xa8\x86\x50\x0f\x1a\x04\x89\x8d\x50\x51\xd8\x1e\x0c\x3a\x5f\xb5\xab\x72\xa4\xb1\xc0\xd6\x98\xf5\xb9\x7f\x49\xe2\x97\xd3\x44\x30\x13\x92\x61\x61\xeb\xcf\xaa\xd6\xe6\xdb\xda\x22\x64\x9f\xd9\xd2\xc6\x34\x13\x72\x7c\x07\x3a\x0c\x08\x76\x31\x56\xe0\x53\xcd\x32\xa6\xf1\xf2\xfe\x03\xcb\x8e\x98\xe6\xe9\x7f\xe0\xb1\xf5\x84\x42\x4e\x96\x01\xe2\x4b\xbd\x71\x61\x39\x39\xad\x8d\x1c\xd6\x55\x4e\x43\xd9\xeb\x8e\xe5\x02\x9b\x71\x54\x54\x33\x3a\x20\x53\x1a\x29\x8d\x77\xe1\x88\x2e\x8c\xb3\x6e\xc0\x2f\x7a\xaf\xbe\xe2\x8d\x2d\x4b\x72\x01\xa9\x70\x13\x8a\xc0\x8f\x05\x2d\x19\x14\xe8\x41\x70\x7b\x82\x90\xc9\x72\xcc\x85\xab\x7c\x37\x81\xd2\x80\x4c\xa1\x17\x12\xca\xde\x91\x82\x8e\x59\xe1\x00\x90\xaa\xf7\x2b\x7f\xe7\xcb\x29\x31\x65\xf9\x9b\x26\x74\x3a\x55\x4c\x6b\x7e\xcd\x5c\x8d\x41\xfe\x4b\x80\x06\x3a\x80\x9d\x7e\xf0\xf5\x17\x35\xb1\xca\xa1\x61\xdd\x7b\x20\xe1\x08\xdd\xc5\x2c\x7a\x37\x36\x84\x11\x21\xa7\x5a\x1a\xa6\x78\x06\xab\xba\xa3\xd6\x44\xd7\xd9\x8c\x50\x8d\xd9\x87\x43\x28\xb4\xd8\x7f\xd7\x9b\xb2\x2a\x58\xb9\x71\xc6\x68\xee\x4b\xcd\x59\xa5\xaa\xaa\x58\x3e\x22\xe4\xd8\x92\x9f\x09\xcf\xa8\xc1\x42\x62\x24\x67\x79\x5d\x15\x1c\x6d\x84\x3d\xc1\xf8\x3c\x63\x44\xaa\x9c\x41\x45\x49\x39\x81\xe0\xfb\xb0\x58\x24\x1b\x42\x85\x79\x6e\xd7\x1f\x73\xa3\xa8\x9a\xa3\x04\xe5\xce\xb2\x27\x10\x96\xfb\x64\x50\xbc\x0e\xd6\x02\x78\xa0\xd2\x0d\xe9\xde\x74\xc7\x8f\x24\x4c\x80\xf4\xb6\x0d\x36\xa3\x47\xfc\xa5\x1f\x69\x78\x92\x1d\x70\xb5\x2f\xdd\xcd\xee\x3b\x59\x6a\xb6\x64\x07\xc2\x06\xea\xfc\x5d\x52\x19\x0a\x80\x9a\x6c\xe6\x24\xc5\x36\xa9\x22\x04\xed\x47\xb4\x5f\x76\x0c\x0e\x57\x4a\x91\x7b\x12\x19\xf2\xe9\x99\x19\x59\x75\xd3\xd4\xb4\x28\xe6\x43\x76\x6b\x99\xbd\x25\x66\x20\x3d\x41\x4f\x35\x48\xc4\xaf\x85\x66\x66\x90\x00\x10\x20\x42\x95\xc2\x12\xb6\x9a\xec\xe1\xfb\x0b\x09\xfd\x10\xf6\x70\x31\xab\x62\x8f\x6b\x83\x49\x3a\x83\xe5\x3f\x49\xb1\x27\xd7\x4c\xcd\xdd\xba\xbd\xa7\x4b\x76\x55\x49\xd2\x3b\x42\x80\x42\x99\x6c\x76\x7a\x5b\x29\x2c\xd5\x92\x64\xce\x85\xeb\xb2\xb8\x04\x96\xf1\xf7\x9a\x52\x1b\xb1\x3d\x31\x02\x0e\x82\x49\x2c\xf1\x27\xc0\x25\x8e\xce\x4f\xfa\xb3\x07\x1c\xfd\x15\x9f\xf6\xe8\xa9\x06\xb5\x47\x7a\x9a\x83\xe3\x68\xc5\x9e\xbb\x16\x0b\xfe\x1b\xec\x8b\x8a\x85\xd5\x74\xb0\xe4\x50\x72\xc5\x1c\x9b\xa4\xc2\xb9\x20\xdc\xc3\xc9\x80\x54\x0c\xea\x37\x62\x99\x4a\x36\x87\xc5\x70\xfd\x34\x27\x9f\xf8\x52\xe2\x48\xc5\x49\x9b\x31\xb4\x2f\x9f\x70\x36\x7f\x58\x89\xa6\x4c\x4b\x8b\x70\x5c\xb1\xce\x8e\x9c\x65\xa3\x75\x8b\x2c\x26\x79\x4b\x0d\xdc\x01\xfb\x41\xa8\x81\x14\xd0\x9e\x42\x03\x55\x4d\x8c\x4c\x85\x6c\x24\x5d\x76\x64\x7b\xf8\x03\x7d\xb4\x2d\x4b\x48\x78\x48\x04\x6f\x3b\x56\xe1\x8a\xcd\xf7\x35\xde\x79\xcb\x21\x66\xbc\x02\xd5\x1c\x98\xbd\x9c\x24\xbe\xf8\x38\x7e\x80\xc2\xe6\x1e\x1c\xe4\x2c\x67\x62\x40\xce\xa5\xb1\xff\x9c\xde\x72\xed\x74\x98\x13\xc9\xf4\xb9\x34\xf0\xc9\xce\xe3\x03\x6e\xd5\x73\xc1\x06\x67\xfd\xe7\x90\x18\x07\x6c\x18\x14\x75\xd8\x12\x7f\xea\xbe\x9a\x73\xc0\x1c\xae\xc9\x19\x34\x41\xc6\xa3\x4a\x0a\x10\x64\x65\xfa\xca\xd6\x16\x1c\x6f\xaf\x83\xba\xec\x2e\x7b\xfc\x2e\x3c\x0e\x5b\xa4\x6a\x21\xcb\x13\x81\xe6\xc0\x02\x2f\x04\x7e\x03\x4d\x4f\xaa\x82\x66\x2c\xf7\x3d\x15\xa8\xdd\x55\x6a\xd8\xb4\x63\xfe\xf3\x7d\xa3\x64\x6a\x0a\x0e\x96\xac\x47\x9f\xa5\xbb\x23\xb5\x60\x86\x23\xa9\x78\x86\xe3\x51\x2e\xf1\xa3\x54\x53\x79\xf2\x25\x40\xee\x7f\x6f\xd9\xec\x63\x68\x15\xc9\x28\x51\x04\x26\x4a\xbf\x25\xad\x2c\x15\xfa\x2f\x2b\xe4\xc2\x85\xfb\x6f\x52\x51\xae\xf4\x88\x1c\xf9\x2e\x14\xf1\x77\xce\x8e\x14\x4d\x93\x0c\xb0\x0a\xf2\x31\x7f\xae\xf9\x35\x2d\x5c\xc5\x64\x2a\x08\xc3\x8e\x1e\x16\xc6\x45\xd5\x6a\x40\x6e\x66\x52\xa3\xc4\x1c\x4a\x6f\xec\x5d\xb1\xf9\xde\x20\x81\x3d\xd5\x8f\x98\xf2\xed\x9d\x89\xbd\xc6\xe7\xd8\xa2\x4f\x41\x6f\x80\xdc\xc3\x3d\xf8\x6e\xef\xa9\x74\xba\x84\x72\x3d\xcd\x73\x8e\xa5\xad\x2f\x92\x8b\xbb\x49\xc9\x47\xfa\xaa\x17\xcd\xe8\x5b\xab\x06\xc7\xe3\x99\xd1\xfc\xcd\x5c\xe2\x76\x18\xcf\x7d\x57\x19\x67\xb2\xba\x6b\xd1\x4a\x00\x08\xd8\xc4\x22\xfb\x99\xbd\x12\x2d\x23\x64\x2a\x33\x52\x12\x64\xf1\xc5\xda\x77\xf1\x48\xad\x7c\xa5\x6a\x36\x20\xb9\x14\xfb\xc6\xb9\x10\xe2\x9e\x50\x8b\xbd\x25\xf2\x25\xa7\x7e\xa0\x0f\x13\x80\x42\x15\x83\x16\x18\xbe\x1f\x96\xb3\x77\x62\xd7\x28\xf0\x55\x19\x1f\x2f\x6c\xff\x5c\x06\x48\xdf\x02\x46\x0e\x10\x57\xc6\x48\x48\xe0\x02\xd0\x1f\x37\x06\xa6\x41\xbc\x08\xa4\xb6\xff\x2b\x01\x14\xab\xd0\x1b\x78\x67\x53\x6c\x09\x4d\xb7\xbf\x30\x25\x13\xac\xbb\xc4\x40\x9e\xea\x36\xf5\x89\x6b\x6c\x46\x9f\x22\x0e\xcd\x68\x5d\xa5\x4f\xa0\x0c\x5f\xbb\xe0\x25\x68\x78\x16\xd5\x84\x56\x12\x11\x01\x22\x4a\xe1\x8b\x31\xec\xcb\x4e\x11\x99\x06\x5d\x76\x91\xcc\x6c\xe8\x80\x89\xbc\xc7\x29\xe4\x94\x07\xbc\x2a\x9f\x67\xac\xf1\x0c\xcb\x09\x40\xe9\x1d\xe5\x8f\x73\xa1\x42\x95\xe2\x5a\x60\xc1\x5e\x8c\xe1\x4b\xe7\x90\x4d\x86\x5a\x18\xe3\xfa\x81\x56\x09\x23\x4d\xc2\x9c\x90\x13\xac\x4a\x24\x9a\x74\x2c\x6b\xe3\x4b\x35\xbb\xef\x73\x6a\x28\x34\xa5\xc2\xb8\x89\xdd\x70\xe1\xa6\xb3\xc3\x26\x52\x91\xd3\x5f\x57\x8c\x80\x6e\x67\x1c\x0c\x08\xa3\xd9\xcc\x6a\x3b\x43\x0c\x6d\xb5\x7a\x9a\x57\xc8\x4e\xec\x41\xa1\x12\x24\x17\x05\x86\x14\x57\x28\x60\x84\xbf\x38\x51\xb4\xb6\x0f\xc2\xf0\xa9\x57\xda\x25\x74\x38\xf5\x4c\x34\x49\xf1\x09\x20\xf1\xee\x11\xdf\xc9\xd3\x19\xb8\x61\x47\xc0\x5a\x15\xed\x97\x8f\x51\x64\xb9\xfd\x59\xb8\xf4\x09\xa0\x58\xf2\xf6\x4d\x3d\x76\xcb\xc3\x5c\x44\x7a\x2d\xee\xac\x6f\x85\x9a\x44\x30\x60\x8b\x34\xfb\xd2\xd4\x1b\xfb\xa3\xaa\xf0\xd0\x06\x15\x32\x83\x9b\x4e\x64\x0e\x5b\xc2\x71\xa6\x30\xda\x45\x47\xaf\x59\xe8\x62\xca\x94\x92\xca\xbe\x3f\xd3\x9a\x70\x38\xa7\x92\xaa\x2b\x96\x07\x69\x7c\x44\x2e\xec\x46\x79\xcb\x5e\x02\x48\x94\x97\x22\x7c\x8f\x54\xfb\xea\x4e\x31\x07\x30\xf7\x47\xa3\x7d\xd7\xbe\x5d\xa1\x80\x8d\x7c\xc8\x7e\x9e\x8a\xe2\xa7\x31\xe3\x25\x33\xde\xb5\x68\xd3\x07\x5a\x69\x34\x8e\x5a\x31\x1a\xdc\x41\x92\x50\xdc\x11\x17\x25\x44\x7b\x17\x9b\x68\x46\x62\xe3\x44\x5a\x87\x63\x3a\x67\x63\x82\x50\x20\x1c\xa9\x1d\x8c\x09\x9d\x8b\xf7\x39\x16\x1d\x0e\x39\x7a\x98\xd6\x5b\x9d\xd0\xce\x5c\xf6\x48\xaa\x59\x1c\x8f\xe5\x22\x82\x74\x05\xae\xc9\x47\x6f\xad\x58\x2f\xe5\xc6\x60\xe5\xe1\x14\xda\x90\x1f\x3b\x94\x73\xb3\x38\x76\x2d\x07\x67\x71\x9c\x4d\xb0\xbd\x70\x5b\x08\x71\xec\x31\x4e\xab\x0a\x0a\x48\xaf\xc6\x92\x8b\x63\x7b\xc9\x39\x8b\x63\x2b\xc9\x3a\x8b\x23\x45\xf2\xce\xe2\xe8\x9f\xcc\xb3\x38\xd2\xd8\x53\x70\x3c\x16\x71\x02\x11\x81\xfb\x16\xc0\xb1\xb1\xc6\xa9\x1b\x20\xf0\x83\x29\xac\x8a\x18\x43\x42\x9a\xe4\xc4\x39\x24\x4b\x74\xac\x65\x51\x1b\x04\x21\xfd\x22\xb1\xcc\x08\x2f\xe9\xbd\x50\x69\x04\xc5\xc5\xe5\x22\x49\x14\x34\x09\x14\xcf\x52\xae\xf5\x78\x9e\x97\xd4\xbe\xd4\x5d\x75\xbd\xa4\x6f\x19\x80\x63\x37\x1a\x07\xe0\xd8\x89\xf6\x01\x1e\x94\xf4\x4d\x04\x70\xec\x52\x9d\xef\xf6\x48\x7a\x49\xfb\xb7\x15\xf0\xe3\x91\xbc\x67\xa1\x83\x32\xca\x4a\xf3\xd0\x55\xb3\x65\xa0\x80\xf2\xfd\x46\xa3\xfd\xc4\xc7\x00\x61\x1f\xce\xfe\x76\xad\x74\x4e\x91\xc7\x72\x46\xfb\x8a\x06\x47\x17\x67\x09\xed\xbf\xd1\xac\xf7\x58\x80\xe3\x27\x5e\x6c\xc0\xeb\x8c\xd6\x06\x9f\xa1\xf9\x36\x8e\xfc\x3f\x69\x76\xd4\xd5\x79\x4a\x22\x6e\xef\xbe\xcd\xe9\xce\x8b\xbf\xb3\x92\x62\xdc\x73\x2e\xc2\x40\x23\x5d\x09\x89\x46\xa6\x74\xb2\x18\xd6\x42\xf5\x99\x7e\xfd\xd3\x54\xc9\xee\xdb\xa7\x76\xd4\xaa\x04\xbb\xdf\xa3\x3b\xd6\xe2\x68\x61\xcb\xfe\x27\xbf\x89\xce\x65\x89\xce\x84\xc8\xaf\x51\xc9\xfc\x2d\x06\x59\x51\x21\xa4\xc1\x18\xea\x01\xba\xe7\xf5\xc0\x05\x2a\x44\x05\x75\x45\x4e\x6a\x9e\x63\x36\x66\xa8\x8c\xb9\xff\xaf\x95\x56\x01\x1b\x78\x91\x06\x9d\xc8\x23\x65\x42\xd0\x8a\xff\xc0\x54\x9f\xde\xdd\xcb\x46\x0b\xb9\xdc\xfc\x1e\x93\x74\x36\x63\x25\x85\xff\x7c\xe7\x37\xc8\x12\x6d\x97\x9b\x0c\xce\x12\xa6\x4a\x2b\xf8\x0e\x5a\x55\xae\xf6\xae\xdf\x24\xc8\x93\x6b\xc6\xa3\x84\xd5\x86\x33\x7f\xb4\xed\xbc\x68\xa9\xff\xf6\x8a\x82\x85\x12\x02\x0d\x7c\x75\xeb\xe0\x8e\xb2\x92\xc4\x35\xee\xff\x8e\x6f\xdd\x63\x06\x16\xe2\x78\x0e\xd6\xe8\xae\x56\xe8\x41\x90\xd2\xdb\xd6\xe3\x64\x80\xbd\x58\xa1\x1f\x1e\x2f\x56\x68\x37\x5e\xac\xd0\x6b\x8f\x47\xb3\x42\x47\x22\x9d\xe7\xb0\x4b\xcc\xc8\x71\xa7\x38\x6f\x4b\x6e\xba\xc8\x8f\xd0\x27\xe5\x0d\xc0\xde\xfa\x2b\x55\xdb\xbd\xbf\x3f\x1a\xed\xa3\x83\x7f\x14\x9c\x58\xb5\x99\x0c\xff\x40\x98\xc8\x64\x6e\xe7\xf9\x0c\xf3\x2b\x6d\x40\xdd\x69\x2c\x7a\x31\x2c\xa5\x5f\x2b\x0e\x11\x80\xb9\xd3\xca\x8d\x09\xd9\x96\xaf\x8e\xf8\xee\x31\x85\xf3\x84\xec\xa5\x11\xee\x3d\xe4\xfe\x28\xdc\x81\x32\xe5\xa4\xfc\xa6\xee\x63\xc1\x4b\xee\xb2\x14\x2d\x3d\x65\xda\xa4\x4a\x3e\x21\xe4\x00\x27\x1f\x65\x55\x3d\x70\x0b\x8d\x4a\x56\x4a\x35\x1f\x84\xc5\xec\x97\xad\xd5\xdd\x13\x87\xa0\x5c\x64\xb5\x52\x4c\x98\x62\xde\xaf\x00\xff\xb2\xf1\x4c\xb4\x0c\x7f\x52\x3b\xac\x64\x04\xe4\x4a\x13\xa7\xdb\x8c\x36\xc5\x3b\xf6\xcb\xa0\x3b\x23\xec\x36\xf0\x7b\xd7\x4a\x65\xd0\x58\x40\xed\xa7\x4c\x5c\x93\x6b\xaa\x74\x2a\x0a\x43\x1e\x4b\xaf\xc8\xf9\x35\xd7\x8f\x98\x82\x7d\xe9\x84\x16\xf4\x35\xca\xda\x54\xb5\x71\xec\xce\x93\x08\x76\x5b\x49\x2b\x8a\x06\xd2\xb0\xa0\x9e\xbd\xe9\x6b\xf2\x8e\x47\x45\x8d\x61\x4a\xbc\x25\xff\xf7\xe0\xa7\x5f\xff\x73\x78\xf8\xe7\x83\x83\xbf\xbd\x1e\xfe\xaf\xbf\xff\xfa\xe0\xa7\x11\xfc\xc7\x57\x87\x7f\x3e\xfc\xa7\xff\xe3\xd7\x87\x87\x07\x07\x7f\xfb\xee\xc3\x5f\x3e\x5f\x9c\xfe\x9d\x1f\xfe\xf3\x6f\xa2\x2e\xaf\xf0\xaf\x7f\x1e\xfc\x8d\x9d\xfe\x7d\xcd\x49\x0e\x0f\xff\xfc\x3f\x13\xbe\x04\x15\xf3\x8f\xc9\x78\x02\x8e\xe1\xa3\xc8\x35\xed\xb9\x1f\x37\xd3\x94\x0b\x33\x94\x6a\x88\x8b\xbc\x85\x34\x9c\x64\x4b\x79\xd4\x7c\x3c\x1a\xd3\x48\x55\x81\x83\x06\xf5\x7b\xc7\x89\xc8\xe3\x6a\xd8\x8f\xe6\x9e\xc6\xba\xd3\x09\xfd\x30\x38\xe1\x3d\x2e\x18\xf7\xe5\x8b\xf7\x65\x9d\xf1\xe5\x47\xe0\x5f\x22\x3a\xbc\x84\xdf\x93\xe7\x1f\x7e\x8f\x67\xf9\x12\x7b\xff\x12\x7b\xff\x12\x7b\xdf\x7b\xa6\x1d\xf5\x92\xbe\xc4\xde\xfb\xf1\x1c\xbc\x1d\x2f\xb1\xf7\x6b\x8c\x17\xaf\xc7\xca\xf1\xe2\xf5\x68\x8d\x7f\x71\xaf\xc7\x4b\xec\x7d\xc7\x45\x5e\x62\xef\x57\x8d\x97\xd8\xfb\x97\xd8\xfb\x97\xd8\xfb\x97\xd8\xfb\x0e\x30\x2d\x8b\xbd\x47\xe4\x5f\x16\x81\xef\xec\x4d\x4d\xf8\xfd\xbf\x60\xf4\xbd\xb6\xe8\x97\xb1\xa3\x2c\x93\xb5\x30\x9f\xe5\x15\xeb\x19\x9b\xb8\x60\xfd\xbd\x33\xbb\x25\x43\xf7\x59\x83\xef\x3e\xbc\x93\xa6\xe1\x2f\xb2\xbf\x06\xad\x73\xce\x44\x0a\x6f\x4e\x7a\xe6\xe8\x61\xf3\x12\xa2\x95\xb8\x45\xce\xf2\xe6\x0b\xc7\x39\x8d\x45\x9a\x11\x39\x22\x8a\x65\xbc\xe2\xae\xa8\x26\xc5\xcf\x13\x00\x02\xf4\xc1\xb5\x27\x9d\x5b\xaa\xc1\x8a\x49\x60\x55\xa1\x6d\xa9\x8a\x6c\xa4\x4e\xca\x5b\x00\x34\x85\xf1\xcb\xbe\x12\xea\x3c\xa0\xe1\xdc\x70\xcd\x88\x9e\xc9\xba\xc8\x89\x62\xff\xe9\x95\x2e\xb7\x23\x9f\x63\x18\x62\x47\x72\x1a\x60\xa2\x57\x77\x27\x41\x2b\x6e\xef\x33\xdb\xad\x2a\x89\xec\xb6\xe2\xd8\x01\xfc\x92\x65\x52\xe4\x3b\xe9\x96\xb9\x03\x64\xa3\x18\x41\x4c\x0e\xd6\x80\x0e\x7d\xa7\xae\x69\xc1\x73\x2b\xa3\xf9\x90\x6f\x24\xa3\x29\xae\x1d\x52\xe2\x70\xab\x74\x83\x51\x84\x56\x95\x92\x34\x9b\x31\x1d\xc1\x8b\xd6\x08\xd7\x7f\xbe\x5f\xc3\xde\x78\x54\x45\x3d\xe5\x02\x4d\x1a\xb0\xaa\x97\x60\xa5\xf1\x69\x34\xee\xa5\x17\x41\xfe\x1c\x81\x63\x7f\x9e\x00\x18\x54\xa6\x8c\x9a\x43\xb6\x8e\x8c\x81\xc0\x9d\xe1\x93\xf8\x0f\x4d\x64\x91\x83\xbc\x41\x05\xf9\xc3\x6b\x52\x31\x95\x21\x59\x4a\xe2\xc0\xd3\xd0\x77\xca\xc2\x51\x58\x8d\xd9\x8a\x32\xf7\x2f\xff\xf5\x6f\xc8\x4c\xd6\x4a\x8f\x4e\x22\x02\xf0\x06\x3e\x4b\x81\x2d\x22\x6f\xe2\xa2\x0d\x29\x18\xd5\x86\xbc\x79\x4d\x4a\x2e\x6a\x93\xae\xbe\x63\x2a\x6b\x4b\x64\x67\xf9\xdd\x6f\x7a\xce\xf6\x08\xd5\x22\x93\x50\x92\xd8\xaa\x02\xff\x1d\x4c\x2b\xce\xa3\x08\xbd\xed\x49\x25\xb9\x30\x8b\x86\x16\x27\x71\xa5\xe4\x56\xe0\xc9\xdc\x09\x7e\x90\xd8\xc4\xf0\x73\x2d\xc7\x73\xd3\x49\x74\x4a\x71\xe8\x6e\xf9\x76\x07\x8e\x7f\x73\x1f\xe2\x11\x4b\x14\x43\x66\x56\xe9\x05\xbb\xac\x9e\x51\xc5\x5c\xd7\xcc\x7d\x4d\x0a\x3e\x61\xdd\x3b\xd8\x9d\xd8\x85\xa1\xa6\xe4\xdb\xb0\x2e\xd7\x24\x0f\x1f\x07\xd3\x2c\x17\x43\xa3\x18\x0b\x20\x83\xae\x0f\x1e\x64\x52\x48\x31\x8d\xbb\xb7\x76\x01\xa5\xa7\x88\xdf\x4f\xb0\x1f\x12\xc5\xa6\x5c\x1b\xd5\xcd\xed\x37\xec\xce\x30\xfb\x6a\x01\x53\x25\xeb\xce\xc5\x37\x53\x91\x2d\x00\xc2\x9b\x78\x7d\xa0\x87\xeb\xe5\xda\xbd\xe6\xb0\x63\x75\x0e\xc7\x60\x8d\x8e\x73\xf5\x26\x3b\x8a\xd1\xfc\xa3\x28\x3a\xfb\x4c\x53\x6d\xb4\x87\x03\xed\x69\x20\x55\x4d\x24\xc4\xd6\xcd\x58\xb8\xbe\xbe\x75\x32\x98\xea\x80\x86\xb0\x1c\x35\x1d\xfb\xf3\x21\x84\xad\x47\x9e\xc2\x1e\x1d\xde\x23\x59\x64\x42\x0b\xdd\xb3\xe7\x75\x1f\x5b\x8b\xbf\xbe\xdb\x3f\x20\x84\xa3\x4d\xd0\x5d\x3d\x7c\xa9\x48\x59\x17\x86\x57\x45\x73\x58\x9f\xfc\x0f\x9c\x18\xdc\xdd\x56\xd8\x28\xae\x34\x8a\xe4\xa0\x1a\x38\xc7\x5b\x4b\x98\x31\x20\xec\x20\xc0\xc0\x84\x81\xee\xfc\x90\x7c\xcc\x2a\xaa\x68\xc0\x94\x4c\x96\x25\xed\x51\xb6\x1d\xe3\x8b\x28\xe4\x50\xa0\x10\x63\x45\x67\x45\x8b\x66\x87\xa2\x60\xf3\x6d\x5d\x6b\xc3\x04\x15\x9d\x43\x26\x53\xe1\x0c\x42\x41\xe4\x4d\xa8\x22\x30\xe5\xd7\x4c\x2c\xde\x67\x67\x8e\xf8\x96\x66\x57\x4c\x74\xb7\x6f\x7e\xaf\xfd\x19\xe7\x73\x41\x4b\x9e\xd1\xc2\xd2\x03\x25\xaf\xb9\x25\x07\x2c\x5f\x58\x57\x0f\x9c\x09\x1f\x9b\x90\xfa\xe6\xd5\xa8\xd8\x6d\xeb\xe0\x6a\xcd\x3a\x87\xf8\xa7\x3a\x36\x0b\xc3\x63\xf1\x3c\x8d\x11\x1d\x8a\x5f\x67\xcc\xeb\xc5\x76\xbd\x6d\xed\x37\xbe\x5f\x92\x1d\xf7\xd8\x1c\xd1\x28\x90\x6a\x43\x38\x2a\xf6\x1f\x2b\x2c\xaf\x9a\xfb\x04\xbb\xc5\xbb\xe0\xda\x93\xf7\xe3\x37\x1d\xf7\x43\x8d\x3b\x09\x99\x29\xd0\x4e\x8d\xf3\x36\x63\xf9\x44\x73\xa9\xc9\xb7\xd0\x95\xe3\x84\x81\x19\xe5\xa9\x95\x86\x4f\xdf\x9e\x3c\xa0\x30\x58\xa8\x13\x2b\x0b\x4b\x7d\x75\xec\x96\x96\x55\xc1\xf4\xe8\xea\x0f\xe0\xad\x73\xf4\xeb\x95\x1a\xe7\xaf\x3e\x9d\x1e\x9d\x7c\x38\x1d\x95\x5d\xe8\xe6\x96\x35\x13\x5e\xd2\x69\x37\x3d\x7e\x48\x4a\x29\xb8\x91\xaa\x0b\x83\xed\xab\x98\x4c\xf4\x67\xbb\x6f\x5b\x26\xd2\x08\x85\x37\xa4\x34\x3d\xf8\x11\x21\x9d\xdd\xc4\x0b\xcc\xf6\x9e\xcc\x65\x4d\x6e\x28\xf6\xf7\x82\xab\xd4\x5d\x3c\xfe\xcc\xab\xb7\xe4\x54\xe8\x5a\xb1\xa6\xaf\xe9\x22\x08\x96\xab\xfa\x9b\xe0\x79\x2b\xdc\x5a\x6c\xec\x05\xfd\x64\xe0\xf1\xee\x70\x9c\xba\x7b\xf1\x96\xec\xb1\x5b\xf3\x9b\xbd\x01\xd9\xbb\x9d\x68\xfb\x8f\x30\x13\xbd\x37\x22\x67\x65\x55\xf0\x8c\x9b\x62\x6e\x6f\x14\x53\x2a\x38\xfa\xf1\x07\x0b\x79\x06\xdd\x21\xd9\xd0\xc1\xae\x8d\x54\x74\xca\xfc\x45\xfe\x95\x1a\x77\x15\x7b\x7a\x33\x40\xb8\x84\xdb\x46\x66\x00\x22\x78\x14\x80\xf4\xe3\x47\xfd\x1a\xa1\x74\x25\xa5\xbf\x9a\xc9\x9b\xa1\x91\xc3\x5a\xb3\x21\xef\xea\x96\xed\x7d\x32\x57\x6c\x0e\x09\x72\x5b\x3e\x1b\x07\x46\xcb\x64\x6b\x24\x44\x26\xc0\xe7\x56\xdb\xf9\xf4\xed\xc9\xf7\xba\x8f\x5b\x2d\xb2\x88\xbc\x62\x26\x7b\x95\xb1\x6a\xf6\xca\xad\xfc\xaf\x7a\xfe\x51\x3c\xcb\x9d\x3d\xe9\x34\xa1\xe7\x99\xdb\xc6\x28\x0f\x07\x8a\xca\x99\x2c\x0a\x96\x79\xc7\xe1\x31\xab\x66\xe1\x81\x67\x7d\xf2\x7d\x72\x62\x7a\x66\xc2\xec\x9e\x33\xc2\x8e\x4a\xca\xce\xf1\x54\xa9\x50\xcf\xc2\xd0\xe6\x33\xf0\x49\x3f\x36\x13\x11\x2f\x35\x4e\x2b\x44\x3c\x4f\x72\xd5\x55\x9c\x79\x16\xc6\xe8\x4f\xfe\x4b\xcd\x0c\x48\xb1\x5c\x10\x2c\xb0\xf9\xc1\x4a\xd5\xbb\x60\x75\xde\x09\x54\xea\x63\xf4\xc6\x1c\xec\x1e\xe5\x74\x52\x61\x42\x00\x04\x54\xfc\x28\x1c\x9a\xd6\x66\xc6\x84\xe1\x19\x86\xbc\xb8\xa4\xf1\x58\x16\x22\x67\x13\x34\x3e\xe6\x3d\x62\x36\xe5\x35\x53\x8a\xe7\x4c\x93\xde\xc2\x50\xec\x74\xe2\xc5\xb3\x46\xad\x5e\xe1\x92\x29\xa2\x13\xfb\x06\xec\xa7\x8c\xaa\x48\x1f\xa4\xbf\x1b\xe1\xf9\x3b\x11\x98\xff\x18\x21\xf9\xbb\x18\x8c\x9f\x28\x9c\xb1\x7f\x00\x7e\xfa\x90\xf2\x9d\xf1\xa8\xb4\xc4\x4e\xf8\x24\x99\xd8\x49\xf3\x92\xf7\x28\xef\xba\x03\x24\x3d\x8d\xe0\x09\xfb\xb0\xf1\x24\x3a\xa3\x05\x3b\xfb\xb8\x2d\xdf\x87\x5b\xbe\xed\xff\xb8\x74\x1f\x56\x4c\x69\xae\xa1\xe4\x87\x77\xc5\x19\x43\xb3\x99\xf3\x46\xf8\x20\x08\x29\xc8\x77\xe1\xde\x10\x21\xf3\xae\xb1\x8d\xb1\x03\xc4\xc3\xb0\xda\x09\xe2\xc1\xff\xb2\xa2\xa6\xa6\xd4\xb0\x9b\x8e\xfa\xfb\xb0\x11\x1b\xbb\xfe\x1e\x0c\xe3\x2f\xbe\x8d\xa5\x8e\x85\xfe\xfe\x8b\x90\xeb\x7f\x67\xee\xc7\xf7\x58\x8c\xee\xf1\x55\xa4\x60\x03\x30\xe3\x56\x5c\xc7\x38\x02\x1d\xbe\x9d\x74\x13\x46\xdc\xad\x4b\x82\x7f\x6e\x2e\x8f\x45\x70\x90\x34\xcf\x15\xd3\xda\x8b\xcb\x9e\xc0\x1d\x5d\x9c\x91\xbf\xe0\xe3\x5b\xdb\xbd\x4a\x49\x83\x66\xd0\x13\x59\x52\xde\x39\xe1\xad\xb5\x07\x8b\x93\xfa\xcd\x88\x35\x59\xbf\x09\x17\xe1\x59\xe2\x1e\xb6\xda\x6c\xd3\x96\xbc\x56\x2c\x27\xce\x71\xb5\xb5\x5d\xda\x39\x0b\xd1\x1d\x9b\x0d\x39\xb0\xdf\xbd\xba\x51\xdc\xb0\xc3\x51\x63\x2d\x5a\x30\x25\x75\xb7\xed\x3e\xa2\x09\xea\x8b\x34\xdc\x44\xe1\x37\xbe\x64\x59\x63\xac\xf1\xc8\x0f\xe2\x78\x48\x5b\xeb\xb1\xaa\xd0\x1c\x72\x19\xa2\x6c\x52\xb0\x04\x81\xae\x1a\xaa\x92\xa1\x55\x68\x40\xde\xcb\x29\x17\x9e\xbd\x48\x97\x4d\x34\xa1\xdd\xcd\x33\x2f\xf6\x91\x3b\xe3\xc5\x3e\xf2\x62\x1f\x79\xb1\x8f\xdc\x3f\xb4\x2e\x4e\x05\x1d\x17\xdd\x53\xc7\xdb\xd9\xf5\x61\x3a\xf2\xae\xa0\x53\xc2\xe0\x8f\x57\x39\xd7\xf6\x5f\x72\x79\xf9\x1e\x42\xb0\x6b\xe1\x4d\xe7\x80\x9b\x4e\xfa\x0a\xf5\xa4\x91\x97\x6e\x8f\x8d\xa1\x98\xf3\xa1\x47\x05\xb5\x64\x8c\xac\x01\x85\x70\x91\xdb\x5d\x63\xba\x55\x31\xc2\x3d\x01\xfc\x8c\x86\xaa\x94\x98\x74\x3d\x66\x96\x5a\x65\x57\x17\x51\x14\xb4\x54\xf6\x33\x11\x7d\x94\x44\xf9\x48\x34\x67\x4a\x35\x64\x01\xa4\x3e\xa8\x70\x91\xca\x79\x1d\xcd\xe7\xa5\x71\x2f\x84\x5c\xba\x83\x84\xef\xa8\xd6\x32\xe3\x4d\xde\x02\xc4\xde\x34\x22\x7a\x0e\x22\xfa\xd6\x36\x19\xf5\xe0\x34\x1b\x82\xea\xf7\x12\xcd\xc4\x23\xb6\x7b\x82\xea\x58\x13\xe1\xc2\xef\xdb\xd6\x36\x01\xaf\x5a\x9f\x8e\x06\xa9\x88\x44\x03\xc9\xe2\x3e\x06\x82\xb0\x18\x77\xee\x4b\xe2\x3a\xdc\xeb\x6c\x71\xc2\x01\x51\xa0\x5c\x2f\xc1\x5a\xae\x03\x49\x82\x62\xe9\x5b\x39\xad\xee\x15\xc4\x93\x18\x78\x51\xdf\x68\x27\x4e\xe1\x67\x2e\x82\x1d\x68\x75\x25\xab\xba\xc0\xb4\xfd\xb0\x69\xc9\x42\xc8\x37\x89\x46\x45\xd8\x9e\xde\x66\xdb\x57\xf3\x88\x4a\x4d\x6e\xfb\x42\xc6\x55\x2f\x37\x2f\x6f\xea\xef\x28\x58\x27\xc9\x78\xee\xa7\x4b\x60\xf1\xdc\x7e\x75\xd3\x54\xd5\x4c\xbb\x5b\x97\x5b\x55\x50\x5b\x16\x9c\xd7\xbf\xfb\xcd\x6f\x7a\x08\x43\x5c\xb1\xcc\x48\xc8\x3c\x74\x95\xa5\x43\xc4\x2c\x55\x0c\x74\x7f\x2c\x3d\xea\xed\xcb\x98\x79\x66\x7a\xc5\x75\x6c\xaf\xfc\xe9\x56\xca\x9d\xa6\x28\xb8\xd1\xbf\x9c\x69\xaf\x00\xcd\x64\x51\xf3\xd0\x2a\xe1\x6c\xcb\xad\x12\xb6\xda\x20\x61\x9b\x6d\x11\xb6\xd7\x0c\x61\x8b\x2d\x10\xb6\xdd\xf8\x60\x2b\xed\x0e\xb6\x1e\xd0\xfd\xf4\x0d\x0d\x92\xd4\x25\x4c\x51\x93\xb0\x6f\xcb\x82\x9e\xf5\x0c\xd3\xd4\x32\xec\xdd\x94\xe0\x29\x5a\x11\x24\xb2\x71\xf6\x6f\x3b\x90\xb6\xe6\xd4\xb6\x5b\x0c\xec\x90\xe8\x8d\x63\x37\xdb\x09\x6c\xa5\x89\xc0\xb6\x5b\x07\x6c\xb1\x61\x40\xba\xc2\x75\xa9\x9a\x03\xf4\x2f\x58\x97\x96\x70\x6c\xa9\xfc\xff\x23\x16\xfd\x7f\x92\x52\xff\x8f\x5d\xe0\x7f\x37\x93\xdb\xfa\x16\x0c\xef\x5d\x26\x5c\x27\xaa\x13\x9e\x2a\x06\x64\x17\xcc\xe2\x0d\x24\x4b\xdd\x0b\xbe\x0b\x24\xde\x03\xa8\x1e\x02\x7e\xe2\x8a\x62\x4f\xcf\x3a\x71\x06\xd6\x93\xd8\x60\x49\x6f\x5b\x39\x42\x22\x3b\x09\xbc\x49\xcc\xe5\x08\xc0\xc7\xcb\x85\x88\xe8\xf0\xf1\xd3\x07\x42\x87\xa5\x1f\x08\x85\xf6\x5b\xb7\x63\xc1\xd0\x2f\x51\xc1\xeb\x8c\x5d\x8c\x0a\x7e\xaa\x0a\x26\x5f\x5e\x60\x66\xfe\x12\x98\x19\x8f\x1d\x0c\xcc\xd4\xad\x86\xf3\xde\x21\x0a\x6c\x17\x54\x4b\x39\xb6\x42\xaa\xaf\x1c\xd8\xd0\xe0\xa3\x8b\xb3\xce\xab\x67\x8a\x41\x57\x00\x5a\xe8\xd1\x32\x9d\xd3\x87\x1f\x39\x0d\xd7\xeb\x9a\xd4\x18\x56\x56\x9d\x4b\x7a\xbd\xc4\x65\x2e\x19\x2f\x71\x99\x2f\x71\x99\x2f\x71\x99\xf7\x8f\x5d\x8e\x2e\x9a\xd5\x25\x15\x43\xcb\x4f\x21\xa8\xb3\x95\x4e\xb2\x20\xa6\x8f\x88\xe3\x80\xbd\x88\x16\x96\xf2\x85\x02\xcf\xb5\xe0\x3f\xd7\xac\xf1\x74\x04\x95\x6d\x07\xe2\xc0\x00\x8e\xdd\x39\x2e\xd4\x64\x17\xf8\x6c\x26\xef\xd4\x07\x74\x7b\x19\x8e\xce\xb3\xc6\x7e\x47\x06\x8b\xb7\x1c\x93\x66\xc6\x50\xd9\xbe\x58\x50\xb6\x5b\x36\x5d\x47\xc8\x81\x8e\xf6\xf3\x0e\xc7\x9a\xa0\x45\x51\xfb\xee\xae\x43\xca\x98\x91\x92\x2b\x25\x95\x8b\x54\x8b\x5f\x1f\x13\x9f\xf8\x74\x66\x98\x42\x0b\x29\xa6\x67\x74\x27\x9f\x97\xcc\xb8\x5b\x00\xb7\xc8\x48\x42\x05\x16\x7a\xb5\xff\xed\x8b\x7c\xc0\xd6\x78\x09\x64\xcc\x66\xf4\x9a\xcb\xba\x47\x51\xb5\x4b\x94\xa7\xf6\xdc\x94\xa0\x2b\xcc\x65\x1d\x62\x51\x6a\x6d\x37\x23\x9c\x82\xbe\x8b\x07\x9d\x97\x3e\x6f\x26\x05\xb3\x79\x2e\xbd\x33\x7a\xc8\x6e\xb9\x36\x77\xf7\xdc\xa3\x80\x8b\x7d\xda\xca\x65\xbe\xd6\x95\xe5\xbe\x3f\x74\xae\x09\x9c\xe2\x0a\xb7\x80\x68\x9b\x40\xae\x2f\xe1\xab\x87\x0c\x20\xae\xb9\x10\xd6\x47\x27\x25\xcd\x66\x5c\x24\xa8\x87\xfb\x43\x0b\xb0\x96\x25\x64\x44\x8e\x8a\xa2\xc9\x63\xd2\x21\x75\xd0\x5b\x46\xda\x2f\x65\x0f\xa9\x13\x38\x16\x73\x15\xcb\x21\xce\x0a\x45\x2c\xc8\x4f\xd4\x7c\xe4\x16\x18\x5d\x97\x37\x54\xb1\x51\x26\x4b\x72\x7c\x79\x46\x72\xc5\x3b\xb6\xfb\xda\x72\xfe\x39\x1e\xf1\x45\x37\xd7\xf5\x97\x66\xef\x79\xb1\xf5\xec\x94\xad\x27\xa4\x30\x14\x3c\x9b\x9f\x9d\xa4\x4d\x8b\xc0\x39\xbd\xa0\xa9\x43\x4a\x84\xfd\x9c\x7c\x4b\x35\xcb\xc9\x07\x2a\xe8\x14\x1d\x56\x07\x97\x17\xdf\x7e\x38\xb4\x08\x0f\xce\xb8\xb3\x93\xa5\x79\x13\x97\xf1\xe4\xe7\xdb\x2a\xaf\x4e\x16\xb7\x2e\x99\x6c\x7f\x67\xd6\x8e\xdb\xb7\xb5\xca\xf3\x24\x88\xad\x17\x3d\x9c\xc0\x4b\xaa\xf1\x5f\x2c\x36\x1b\xc3\x44\x05\xdf\x19\x52\x2f\xb2\xd4\xeb\x32\xbf\x7a\xea\x0d\xb8\xeb\x8d\xb4\xfa\xe3\x15\x9b\x6f\x4c\xbd\x87\x70\x82\x3d\x17\xc7\xf7\x28\xe9\xfd\x2d\x89\xa2\x48\x99\x55\x10\xae\x17\x35\xb7\x46\x64\x5c\xeb\x5c\x2f\x8d\xa2\x86\x4d\xe7\x27\xac\x2a\xe4\xdc\x62\xf1\x45\x14\xb8\x83\x8f\x8e\x51\x94\x56\x63\x9a\x11\x55\x17\xd0\x78\x21\xbf\xd3\x8e\x51\x30\x96\x37\x64\x9e\x0b\x6d\x68\x51\xd8\x03\x84\xf9\x57\x42\xb4\xb6\x70\xb0\xae\x18\x30\x44\x38\x1f\x7c\xaa\xdd\x8e\xf8\xfc\xa1\xd3\x5e\x5f\x10\x80\xe5\x1f\xc6\xb7\x4d\x22\x21\xd7\x8e\x79\xec\x22\x30\x20\x45\xfb\x54\x17\x96\x41\x17\x79\xbb\x7d\x33\xaa\x1c\x0e\x15\xb0\x35\x04\xd0\x3f\xfb\x92\xce\x04\x28\x99\x6e\x85\x42\x44\x3f\x5f\x6b\x7d\xec\x10\x7d\x33\x43\x09\xd4\x4e\x4c\x68\x55\x15\x1c\xab\x0c\x48\xe5\x82\x70\x23\x7f\xf2\xdd\xc7\xd6\x21\xb5\x1b\x8a\xa1\x9b\x89\x9d\x43\x72\xcd\xd4\x78\x1d\xfb\xdb\xa6\x12\x25\xad\x38\x84\x33\xad\x4d\xc2\xba\x0a\x8d\x47\x17\x67\xb8\xd0\x32\x0f\xbf\xff\x12\x11\xc2\x1d\xb5\x0f\xe8\xc1\x74\x34\xe7\x06\x08\x9d\xa3\x8e\x2e\xce\xb0\x21\x9b\x6b\x1e\xd5\xb8\x06\xac\xc6\x4e\x31\xf9\xb2\xe9\x79\x4b\xa7\x76\x46\x43\xa4\x60\x9b\x74\x4f\xb5\x10\x30\x51\x97\x0c\x1b\x53\x05\x60\x08\x17\xb0\x4e\x80\xa2\xf1\x40\xa0\x55\x79\x44\xf6\xf6\x62\x9d\x10\xcb\xb3\xa8\x08\x6e\x20\x75\x7b\x5f\xb5\x9e\xb2\x74\xad\x79\xb1\x75\x39\xfc\xe6\x51\xcf\x1b\x46\x39\x77\xe0\x98\x09\x22\x77\x84\x14\x9f\xdc\x7e\x7f\xff\xe9\xfd\xa3\x23\xe8\x79\x7b\x39\xd7\x1e\x88\x41\x6b\xd3\x8a\x2a\xc3\x69\x41\x6a\x55\xf8\xf0\x42\xac\x44\xe2\x32\x02\x67\xf4\x3a\x6a\xbd\x34\x22\xe4\x2b\xc4\x4a\x87\x0c\x48\xca\xc0\x28\xea\x5a\x91\x4d\xea\xa2\x18\x90\x09\x17\xd4\x32\x32\x56\x91\x28\xc8\x6b\x6d\x88\x2f\xb9\xc8\x98\xdd\xa6\xa1\xc7\x4b\x02\x90\x7b\xb3\x51\xa0\x69\x10\xa3\x19\xbb\x5c\x10\x14\x4b\xdf\x32\xb0\x0b\x4f\xa4\x22\xc7\x45\xad\x0d\x53\x9f\xa4\x65\xc3\x4d\xba\x09\x99\x28\x59\x12\x1a\x7f\xfd\x2d\x17\xf9\x46\x99\x50\x9f\x80\xb5\x67\x54\x10\xc6\x21\x30\xca\x2e\x0d\xf1\xd0\x16\xd9\x9b\x4b\x75\xa0\xeb\x6c\x66\xb7\x68\xaf\x92\xb9\xde\xb3\xd4\x79\x0f\xdd\x8d\x7a\xef\xd0\xfe\xb5\xf8\xae\x98\xbd\x11\xfd\xee\x15\xad\xf8\xde\xe1\x80\xc0\x86\x43\x70\x9e\x5c\x3f\x1a\xef\x0b\xbd\x47\x7e\xc3\xc0\xd4\xd7\xe9\x16\x7d\x8a\x67\x80\x8b\x21\x9a\xd0\xb7\x9b\x19\x37\x98\xaf\x63\x6f\x0a\xfa\x00\x42\xaf\x99\x45\x46\x4a\xc8\x91\x77\xa2\xd9\xab\x55\x32\xea\xe3\x75\xd9\x35\x53\x73\x33\x73\x0d\x2c\x3c\x15\x7d\x39\x39\xb8\x19\xbd\x4e\xcd\x91\x32\x7f\x42\xcd\x75\x03\x9a\x70\xe7\x84\xf6\xbf\xda\x5f\x64\x49\x0d\x0f\xfe\xd7\x3e\x0f\x10\xc2\x3a\x9d\xc5\x0f\xf6\x97\xed\x73\xc0\x8f\x90\x99\x04\x72\xf8\xfe\xbd\x0b\x4f\xc1\x0d\xff\x8e\x0b\xf0\x7a\x83\x3c\xe4\x6b\x01\xb8\x43\x5b\x7a\x52\x00\xe1\xbf\xec\x29\xdd\x55\xba\xd6\x55\x94\x56\xc0\xe8\xf5\xcc\xfb\xa6\x5a\x39\x81\x53\x56\x3f\xc8\x7c\xf9\x25\x6e\x21\xc9\x59\xf4\x70\x88\x25\x6e\xcc\x9c\x6e\x2e\xa7\x39\xcd\xab\xa5\x5a\xe8\xea\x33\x5d\x71\x7e\xf7\x41\xd2\xd8\xe9\x80\xec\x47\xdf\x7c\x6e\x02\x23\xc8\xa4\xa0\xd3\x06\x17\x81\x88\xa3\x64\x7f\x7c\xf9\x83\x7f\x05\x4d\xee\x29\x3d\xfc\xa0\xea\xf4\x90\xb2\x34\x6c\x76\xe9\xde\x27\xee\x75\x65\x3c\xac\x31\x85\xc9\xef\xc7\xa6\x75\xe2\xbe\xcc\x4a\x53\xfd\x7d\xfb\xef\x4d\xeb\x34\xc2\x04\xdf\x39\xce\x9b\x42\x20\xdb\x04\x64\xb8\xcb\x1f\x5a\x68\xf2\x00\xbc\xf7\x20\xed\x15\x9b\xdf\x48\x95\x3f\x8c\xb0\x47\x81\x98\xf9\x9f\x78\x65\xde\x07\x83\xa1\x39\x5e\x2e\x75\xec\x74\x46\xd5\x95\xc0\x17\x74\xcc\x8a\x87\x41\xbf\x47\x31\xf8\x40\x2b\xfb\x3a\x4d\xca\x26\x5a\xa4\x5c\x94\x19\x6a\xa7\x98\xe7\xe3\x33\xd2\xa4\x9a\x52\xc1\x7f\xc1\x3c\xd7\xcc\x52\x0a\xa9\xf8\x2f\xcb\x51\xed\x00\x7d\xfa\x68\xe3\x2a\x58\x66\x0e\x1d\xd6\x2f\x25\xd9\x0f\x5c\x0b\x9a\xe7\x1c\x45\xb0\x8b\x07\x30\x78\xf5\x7e\x71\x71\xb5\xc9\x49\xc3\xf3\x98\x66\xd3\x38\xf6\x1e\xf1\x98\x57\x90\x85\x87\x6f\xee\xea\x30\xba\x35\xd8\x53\xad\x56\x24\x8a\xac\xfc\x7d\x49\x39\x72\xed\xe5\x6d\xbc\xee\xd9\x5d\x87\x4d\xd4\xc9\xd6\x96\x96\xda\xf7\x0b\xb3\x3d\xc1\xbd\xea\xb5\xe1\xac\xa4\xbc\xeb\x8e\xe1\xe8\x71\x64\x25\x35\xb5\xe2\x66\x29\xa7\x5e\xfd\x43\x2e\xbe\xab\xc7\xec\x07\xa6\xb4\x3d\x8f\x4d\x7f\x2e\x20\xe3\xec\xe8\xe2\x6c\xe9\xb6\xa4\xe1\xc8\xf7\x1a\x32\xc0\x6e\xe6\x20\xb7\xe2\x22\xa9\x05\x2d\xc7\x7c\x5a\xcb\x5a\x17\xf3\xd8\x83\x42\xc9\x15\x17\xf9\x88\x90\x33\x34\xab\x8a\x7d\x43\xa8\x90\x62\x5e\xba\x47\x45\x56\xd4\x39\x6b\xcd\x78\x1f\x2b\x93\x84\x5e\x4b\x9e\x13\x5a\x1b\x59\x52\xc3\x33\x92\x49\xa6\x32\x28\xa2\x1a\xcf\x5f\x6b\x46\x68\x6b\xc6\xe6\xb7\x59\xad\x8d\x2c\x49\x49\x95\x9e\xd1\xa2\xb8\x0f\x25\x12\x48\x07\x60\x4e\xbb\xf7\x5b\xbb\x2b\xf7\x7e\x79\xbd\x62\x1f\x1e\xbe\x0e\xb0\x70\xaf\xeb\x60\x81\xeb\x35\xc1\xf5\xfd\x48\xbd\xc6\x1c\xae\x02\xee\xd2\xbe\x1c\x2d\xfc\xfc\x3c\x63\xa4\xaa\xc7\x05\xd7\xa0\xc2\x03\xe1\x9a\x93\x31\x9b\x71\x97\x7a\xf3\x30\xc5\xba\xf7\x88\x1f\xda\xe7\x55\x24\xe3\xc1\x1d\x5a\x41\xe1\x57\xfe\xd6\x71\xc0\xb3\x92\x4e\xd7\x10\xed\xef\xb9\xbe\xef\x2d\xd9\xa7\x62\x1e\xf8\x29\x34\x53\xd5\x03\x22\x95\x4b\x24\xf6\xba\x9f\x72\x5f\x85\x16\xc1\x8a\x7c\x74\x3b\xea\xf2\xa2\xdd\x35\x80\x2a\x03\x4c\x4d\xa4\x2a\xed\xbe\x73\x45\x26\xb5\x00\x6b\xf8\x3d\x7a\x21\xc4\xf0\x01\xff\x71\xc6\x4c\x5a\x68\x19\x88\x01\x1c\x9b\xf0\x80\x11\xaa\xc9\x0d\x2b\x0a\x0c\x23\xc2\xce\xaf\x51\xd9\xe6\xa6\x96\x65\x13\x4a\x38\x5e\xae\x5b\xe6\x7c\xca\xb4\x21\x07\x97\x7f\x3d\x3a\x04\x81\x08\x8c\x75\x73\x62\xe8\x74\xb4\x10\x1f\x8e\xc1\xa4\x56\xdc\xca\x6b\x10\xcb\x32\x6a\x68\x21\xa7\x18\x81\x66\x49\x8a\xfd\x7d\x55\xd0\x39\xa4\x71\x55\x54\x41\xae\x60\x86\x06\x4b\xa2\x6a\x71\x5f\x9b\xf1\xc7\xe3\x94\x0f\xd3\xa4\x55\x3d\xb5\x57\xb8\x87\x1f\xa6\x39\x0f\xf4\x09\x7e\x5c\x16\xac\x58\x55\xd0\x7b\x0c\x56\x77\xe8\x45\x53\xfa\xd0\xea\x2d\x60\xd8\x90\x82\x85\x39\x46\xe4\x12\xf1\xa9\xa4\x26\xc3\xf8\x90\x7f\x94\xcc\xd0\x9c\x1a\x3a\xb2\xca\xfd\x3f\xda\x25\x92\x64\x91\xdb\x89\xee\x3f\xe8\x7b\x60\x46\x51\x5c\x3e\x4c\xe3\xde\x5b\xd5\x22\x3c\x0e\x0a\x97\xbf\xb7\x2b\x2d\x64\x3d\xc9\x1b\xbc\xfe\xe9\xad\xd5\xad\x57\xba\xf2\x5b\xb0\x2e\xfe\xa8\x6d\x7b\x2a\xda\x6f\xe2\xb0\xb5\x64\xc2\xe8\x11\x1c\x4d\xfc\x09\xf8\x13\x8e\xce\x4f\xee\x37\xc7\x3e\x6c\x48\x7a\xc0\x70\xb4\xbe\xcf\xe6\x68\x05\xec\xde\x65\xe3\xbe\x69\xfb\x12\x7d\xa1\x0c\x28\xc3\x84\xc5\x1b\xa8\x08\x5c\x09\x1e\x5e\xb1\x2c\x9e\x73\x53\xca\xa5\x51\x0a\xef\x37\xb6\xad\xe5\x11\x5e\xc7\x0f\xfc\x50\x65\x9d\x61\x78\x8d\x7b\x1f\x5a\xcf\x2d\xfc\x60\xf5\x9b\xfb\xaa\xdb\xe0\x99\x40\x59\x05\x6f\xf9\x0f\xc7\xb0\xae\x1b\x7d\x4d\x63\xa1\x7f\xd5\x0d\x00\x7d\xd0\x09\x18\xb0\xa0\x15\xc4\x7b\xc5\xe6\xfb\x4e\xd3\xb5\x37\x68\xc6\x2b\xac\xdf\xe4\x7c\x82\x0f\x1d\x3f\x8e\x1f\x68\xc1\xf3\xb0\x00\xde\xa5\x33\x31\x20\xe7\xd2\xd8\x7f\x4e\x6f\xb9\x36\x68\x63\x38\x91\x4c\x9f\x4b\x03\x9f\x24\xd9\x29\x04\x30\xe5\x3e\x39\x33\x08\x3a\x80\xe0\xba\x47\xc6\x12\xb7\x1f\xd8\x43\xa1\x91\xf7\xec\xd3\x67\xc2\x0a\x34\xf8\xca\x0f\x2c\x11\x8a\xc2\x69\xb7\x80\x2f\x96\x20\xa4\x18\xfa\x1c\xad\xbb\x2b\xb8\x7d\x94\xaa\xb5\x8d\x9d\x17\x73\x0b\x61\x7a\x03\x7c\xc3\xb5\xe7\x4b\x41\x0c\xa1\xde\x34\xfc\xa0\x5d\xba\x64\x6a\x0a\xbe\xdd\xec\x01\x5f\xe4\xba\x16\xf9\xb5\xec\xf0\x6b\x5b\xdf\x3b\xd9\xdc\x3b\xfc\x08\x78\xd2\xfb\x7b\xed\x73\x64\x03\x7c\x8c\xa6\x42\xaa\x5f\xa2\xe1\xee\xbf\x2c\x71\x87\x23\xfd\x6f\x28\xa8\xa8\x47\xe4\x88\x68\x2e\xa6\x05\x6b\x7d\xe7\xdc\xed\xd1\x34\x2b\x96\xaa\x20\x4b\xf1\xe7\x9a\x5f\xd3\xc2\xb2\x19\xc8\x0a\x09\xa5\x58\xe4\xe4\x0e\xb3\x1d\xb8\xc2\x89\x96\x20\x06\x31\x76\xef\x8a\xcd\xf7\x06\x2b\xd3\x64\x62\x8c\xde\x3b\x13\x7b\x4d\x8d\xa1\x16\x96\x06\x9e\x06\x92\xf1\x1e\x7c\xb7\xd7\x9d\x6f\xaf\xe4\x50\xeb\x5b\x19\xc9\xc3\x28\xb7\x59\xee\x9d\xbe\xe2\xcb\xc3\x92\xd6\x41\x12\x2f\x5f\x1e\xe8\x43\xb0\xab\x09\x46\xa0\x08\x96\x02\x97\x84\xfd\x34\xae\xe8\x6c\x35\x96\x2b\x5e\x55\x4d\xb9\xed\xba\x9a\x2a\x9a\x33\x32\x55\xb4\xba\xe7\xd2\x6e\x26\x9d\xa2\x88\xbb\x6c\xc9\x15\x6a\xd9\xee\xeb\x40\xf7\x9c\xf5\x0a\xab\xc3\xca\xdf\xdd\xb0\xf1\x4c\xca\x2b\xa8\x8c\x03\x78\xf7\x88\x26\xb5\x1f\x71\xad\x93\xe6\x33\x6f\xee\xd0\x24\x67\x86\xf2\x02\x42\x04\x3f\xbe\xff\xe0\x82\x08\xbd\xac\xe6\xa1\x5c\x4e\x33\x12\xe8\x86\x34\x77\x71\xb2\x9f\xd8\x35\x67\x37\xce\x72\x76\x1f\x89\x1a\x92\x29\x13\x10\xa0\xb6\x22\xcc\x74\x48\x34\xcf\xd9\x29\xa4\x5a\xdf\x3f\x51\x0f\x27\xd9\x3d\x30\x3f\x44\x2b\x56\xf3\xba\x07\xf9\xdc\x1a\x3c\x2e\x58\x50\x2e\xa4\x5a\x51\x59\x7e\xbd\x32\x6b\xeb\x95\x50\x0b\x59\xca\xbf\xf9\xcd\x37\x2b\xf8\xca\x2d\x2f\xeb\xf2\x2d\xf9\xdd\x6f\x7f\xfb\xcd\x6f\xef\x7f\x8c\x0b\x7c\xec\xcd\xfd\xef\xe7\x6e\xdb\xf1\xa7\x93\x1d\xd8\xef\x3c\xc4\x7b\xaf\x76\xc0\xaf\x31\xd5\x84\xf2\xa2\x56\x2e\x5d\x62\x4d\xed\xf1\x5d\xfc\x1b\x70\x9e\x36\x69\xb5\xd4\xcf\xe8\xe3\x8c\x5d\xfc\xf1\x84\x0b\xa6\xc9\x4c\xde\x90\x5a\x28\x96\xc9\xa9\xe0\xbf\xb0\x1c\x8b\xe5\x6a\x0c\x80\x83\x56\xf2\x1e\xc5\x09\x13\x79\x25\xb9\x30\xc0\x62\x67\x54\xe4\xc5\xaa\x58\xa5\x35\xde\x34\xbe\xc1\xbd\xb6\x0c\xb8\xd1\x46\x1b\xf6\xa1\xf9\xc5\xc2\x76\xd9\x77\xf6\xae\x66\xe4\x72\xb8\x6d\xbd\xde\x14\x09\xe3\xe5\x0a\x9b\xcb\x12\x18\x37\x33\x09\xa0\xa9\x03\x3e\xfb\xb9\x66\x6a\x0e\x79\xbb\x8d\xe2\x16\x45\x14\x7f\x6e\xca\x37\xfa\x77\x74\x42\x25\xbd\xd7\x27\x40\x96\x98\x64\x22\x51\xab\x09\x70\x5b\x80\x0a\x7e\xc3\x30\x4c\xc7\x7b\x7d\xc9\x11\x11\x75\x51\xac\x58\xe9\x9e\x49\x84\x5c\xe5\x39\xc6\xb1\x96\xfd\x61\x3d\xc3\xc0\xba\x26\x28\x1c\xdb\x33\x44\xc5\x2f\x9e\x48\x8b\xda\x34\x9c\x78\x4b\x06\x2a\x1c\x5d\xcc\x54\x38\x36\x48\x5f\x58\x3f\x75\x61\xbd\x92\xd0\x6b\x98\xaf\x70\x6c\x92\xdb\xb0\x66\x21\xe7\xc7\x34\x68\xe1\xd8\x28\x06\x6e\x3d\xe3\xd6\x12\xd0\xd7\x8c\x73\x7f\x44\x43\x17\x8e\xc7\x30\x77\xe1\xd8\x68\x1f\xd7\x31\x7d\xe1\xe8\xb2\x8b\x4f\x60\x06\x73\xef\xfc\x94\xc6\xb0\x07\x96\x4c\x6c\x12\xc3\xb1\xb6\x61\xcc\x01\xb7\x51\xc0\xea\x06\xc1\xaa\x1b\x06\xaa\xf6\x08\x52\xed\xfc\xd3\x35\x8c\x67\x38\x36\xc3\xe8\x27\x34\xa4\xf9\x05\x9f\xcc\x9c\x86\xe3\xa9\x8d\x6a\x38\xd6\xe6\xa7\x9b\x19\xd8\xe2\xc9\x1f\x40\xd7\x2e\x85\xae\x14\xe3\xe2\x5a\x62\xbf\xcf\x8d\x94\x88\x4f\x77\x7e\xb8\xa0\x4b\xdc\x00\x1b\x75\xca\x44\xd0\xbe\x62\x9d\x6a\x26\xe5\x15\xa9\xf5\xc3\x1e\xb5\x95\xef\xfd\x40\x7a\x6c\x12\x25\x78\x93\x1b\xf6\xa9\x2e\xd8\x8f\xdc\xcc\x3e\x36\x25\x57\xe0\x9a\x99\xba\x2a\x60\x2f\xa2\x2f\x2c\x5e\x7e\x6a\x94\x93\x33\x83\x24\x36\x93\x65\xc9\x44\x8e\xd1\x96\x25\xbd\x5a\x8d\xf0\xda\xaa\xb7\x98\x55\x50\x14\xa8\xc2\xc1\x52\xec\xb6\xa2\xa2\x51\x56\xae\x2d\xa3\x5e\x85\xc2\x6b\x22\xf0\xba\x32\xd9\xda\x79\xa6\x1b\xcb\xdb\x8b\x79\xa5\x51\x62\x68\x2b\x7f\x94\x8c\x59\x21\xa1\xa6\x14\x66\x4e\x60\x96\xd1\xda\xa9\x96\x67\x13\xff\x2b\x27\x39\xb9\x3e\x45\x4c\x4c\x9b\x42\xf3\xba\xe0\x19\x0b\x2c\x53\xae\x53\xcc\xe7\x93\x93\xa6\xd7\x13\xd0\xd7\xe1\x7d\x6b\xf2\xbd\x0d\x78\x5e\x0f\x7e\x47\x2b\xfe\xb0\x29\x10\x47\x87\x93\xf7\x53\xc7\x67\x7f\xed\x3f\x5b\xe7\xf4\xfd\xc3\x2f\xe7\xbf\x6a\xf4\x38\xff\xa6\xd4\x54\xea\xe3\x6f\x53\xd4\x46\x06\x0e\x67\xbf\xc0\x5a\x32\xaa\x2c\xb3\x07\x4b\xfe\x90\x1c\x7f\x3a\x3d\xfa\x7c\x3a\x20\xdf\x5f\x9c\xc0\xbf\x27\xa7\xef\x4f\xed\xbf\xc7\x1f\xcf\xcf\x4f\x8f\x3f\x5b\xe1\xf9\xab\x07\x41\x80\x46\xce\x45\x81\xa7\x6f\x25\x14\xd9\x26\xe6\x54\xcc\xc9\xa4\x36\x96\x22\x37\xc0\xb4\xa0\xa4\x68\x42\xa4\x79\xbe\x4e\xb2\xe3\x17\x87\x83\xad\x33\x0f\x07\xba\x68\xb5\x8d\xf6\xcc\xf5\xce\x76\x79\xfd\x0f\xbf\xd9\xd3\x20\xf9\xda\x79\x9a\x9b\xe2\x78\xb7\x14\xce\xff\xf1\xe0\xbc\xef\xa4\x22\xec\x96\x96\x55\xb1\x46\x86\xdc\x7e\x25\x73\xbd\xef\x72\x75\xed\x7f\x3f\xbc\xed\xf0\x93\x57\x85\x9c\xee\x87\x14\x5f\x46\x0a\x39\x25\xba\x1e\x87\xfc\x6d\x10\x04\xd7\x9a\xed\x2b\x3f\x4d\x2b\x19\x75\x10\x92\xbc\xa3\x59\xd7\x06\xae\x35\x67\x3c\xc1\x26\x70\xbd\xd2\x19\x2d\x58\x6b\x26\xfb\xc1\xa6\x00\x7d\xf5\x6a\xf9\x1b\x7a\x4d\x85\xab\x85\x19\xd7\xa1\x14\x37\xbc\xc8\x33\xaa\xf2\x3b\xe4\x02\x44\x3f\xbc\x4d\x80\x39\xd8\x18\x50\x80\xe0\xd8\x2c\x8d\x85\x20\x1f\xb6\x58\x5d\x33\x55\xd0\x0a\xf3\x00\xa1\xa3\x25\xc4\x2d\xaf\x01\xe2\x09\xab\x18\xd4\x11\xc0\x26\x5e\x8c\x30\x91\x15\x12\x2a\x5d\xa2\xd4\x39\x68\x1f\x0b\x46\x39\xfb\x86\x3b\xeb\xe6\x87\x7f\xe1\xec\x15\x12\xca\x52\x53\x1d\xcc\x52\xbb\xb7\x1a\xad\xcf\x3f\x7e\x70\x1e\x34\x06\x06\x2d\x9b\x91\x3d\x57\x44\x62\x6f\x40\xf6\x42\xe1\xd1\xdc\x69\xe4\x7b\x5f\x3d\x5c\xd2\x39\x4c\x10\x57\x0e\x00\x85\xdd\x45\x3a\x0c\x01\xce\xb8\x50\x0b\x60\xb7\x8f\xd1\x58\x1b\xf4\xa6\x28\xaf\x15\x29\x9d\xab\x05\xde\xa1\xbd\xd0\xc3\x33\xc5\x2f\x7a\x07\xea\xa6\x42\x47\x6f\x88\xf7\xbe\x6a\x4d\x6f\x7c\x75\x72\x22\xa4\x3b\x3c\xc5\x2c\x36\xae\x4a\x05\x88\xc7\x65\xeb\xee\x85\x18\x97\xb8\x2a\x31\x57\xa4\xa2\x8a\x09\x13\x80\x7f\x78\x5a\xd7\xc4\x19\x8c\x31\x5f\xed\xad\x77\x2b\x57\x5e\xa2\x28\xac\x61\x4d\x5b\xc5\x65\xf8\xc5\x71\x41\xb5\x5e\xe2\xf0\x04\x1e\x60\x27\x76\xb5\xe9\x2d\xef\x75\x31\x1f\xd0\xca\x74\x46\xaf\x57\xbc\xea\x1a\x40\x1b\xaa\xa6\xcc\xac\x0e\x48\xa0\x62\xfe\x71\x65\x13\x88\xe1\xda\xad\xe1\x86\x1d\x2c\x46\x5c\x98\xa1\x54\x43\xfc\xc9\x5b\x62\x54\x7d\x9f\xdd\xc1\xf0\x92\xc9\xda\x5c\xb2\x4c\x8a\xe5\x49\xc3\xee\xb9\x64\x11\x16\x1b\x64\x52\xbb\x20\x9f\x23\x2f\x7e\xc7\x9d\x69\xbc\x39\xaa\x91\xcd\x7d\x60\x4f\xbb\xb8\xe8\xc7\xf7\x1f\xfa\x1c\x36\x81\x0a\x52\xab\x4f\xf2\x07\xc7\x93\xc5\x34\x40\xea\x20\x5f\xf9\xb3\x0f\xb5\xd9\xfc\x47\xc7\x21\x60\x64\xf5\xd3\x6e\x33\x56\x17\x7a\xbc\xf7\xfd\xb5\xa1\xa6\xbe\x83\x0d\x0f\xb1\x22\x47\xdf\x2f\xb1\x90\x83\x53\xef\x2f\x61\xaa\xd8\x67\x15\xd7\x90\x43\x8d\x0e\x8b\x68\xc2\x73\x3e\xa3\x64\x44\xdc\x0f\xed\x95\x35\x8a\x72\x34\x87\xd1\xcc\xd4\xf4\xae\xcb\xdd\xfe\xd8\x65\xa3\x2c\xaf\x1c\xbb\xc2\x20\xb6\xca\x08\x96\x31\x65\xf4\x7b\xaa\xcd\xf7\x55\x4e\xef\xa9\x21\xb0\x90\x65\xa2\x0d\xdc\x29\xd4\x69\x6f\x04\xcb\x2d\x13\x72\x5b\x82\xf3\x91\x1b\x4b\xdd\x6b\x9c\x71\xc9\x84\x0f\x60\xa5\xbf\x63\xf6\xe7\x43\xbb\xd4\x72\xa8\x3f\x49\xbb\x27\x47\x4b\x69\x54\x3b\x99\xe7\x21\x68\x2d\x47\x53\x30\x1b\x11\xec\x76\x99\x54\xd9\x1f\xe2\x82\x51\xb1\x3c\xd9\xb2\x05\xeb\x31\x3e\xb7\x39\x4e\xb9\x05\xc8\xcd\x8c\x5b\x75\x0b\x6b\x2d\x68\xe2\x85\xd8\x9c\x15\xec\x9e\x92\x0b\x3d\xf3\x7f\xdc\x0a\x27\x6e\x81\xbe\xa1\xd3\x17\xed\xe9\x82\xc7\xdb\xe9\x96\x2e\x2b\xb7\xd1\xd2\x9c\xec\x13\x6c\x15\x8b\x2f\x0c\xc2\xdb\xb8\x90\xd9\x15\x16\x35\x87\xa2\x66\xfc\x17\xa6\x56\x08\x19\xe0\x45\xe4\x22\xe7\x59\x08\x57\xa8\x94\x9c\x2a\xa6\x5b\x5b\x8d\x35\x60\x35\xce\x6e\xd7\xb4\x7b\x1e\xd6\x95\xaa\xf1\xed\xd4\xc2\x95\xbd\x78\x9a\x14\x25\xaf\x97\x43\xfe\x66\xcb\x97\x7e\x57\x45\xc7\xfa\x92\xd0\x15\xc3\x19\x68\x68\xe9\x92\xac\x5f\x7d\x77\x7f\xea\x71\xd2\xfc\xa1\x55\x09\xd0\xf8\x04\xf7\x7d\x6f\x56\x3e\xb5\x22\x55\x7a\x5d\x57\xc0\x03\x29\xd1\x64\x7d\xd5\x29\x80\xbc\xce\x6c\x49\x73\x2a\x92\x87\xc9\xac\x51\x0d\x78\x93\xe0\x97\x75\xbb\x47\x6d\xe4\xf6\x16\x9b\xb4\x4d\x69\xdd\x96\x46\x99\x72\xb5\x53\x30\x3e\x6e\x22\xd5\xbd\x6a\x5b\x3a\xe0\x57\x27\xd0\x3f\x38\x91\x95\x69\xef\x0f\x44\x6f\x33\x6e\x4f\x41\xc3\x4f\x06\x84\x92\x19\xd7\x46\x2a\x17\x21\x62\x19\xa0\x51\x54\x68\xfc\xfe\x5e\x5e\xd1\x37\xb4\xfd\x38\x80\x40\x68\x55\x31\xaa\xbc\x9f\xde\xb1\x33\xaa\xc1\x88\x9a\x49\x95\x2f\x05\xcc\x9b\x64\x96\x8a\x63\x4b\x97\x4f\x50\x3b\xa4\xa0\xda\x7c\x0e\x30\x58\x99\x62\x4d\x6a\xdc\x96\x98\xdc\x2b\x36\x6f\xe3\x6b\x58\x4a\xd1\x7c\x29\x09\x15\xce\x50\x75\xdf\x12\x6b\xe1\xd7\xc3\x72\x49\xf3\x6e\x28\x00\x76\x7a\xaf\x9b\x20\xec\x45\xaf\xf8\x34\x90\x97\x4c\xeb\x95\x09\xe5\x0b\x95\x6c\xa0\xe3\x14\x09\x1d\xa7\xdc\xcf\x3d\xb3\x47\xc1\x01\x73\x2b\x7c\x65\xe6\xf9\xfd\xa8\x46\x40\x4c\x40\x33\x48\xb8\x56\xbd\x8e\xac\x9a\x51\xbd\xee\xcb\x84\x5b\x14\x72\x78\xd6\xbe\x0e\x6b\x42\xa3\x18\xd5\xab\x6a\x73\x6c\x12\x04\x3d\x56\x9c\x4d\xc8\x31\x2d\x59\x71\x4c\x75\xca\x9d\x07\xf2\xb0\xca\x54\xc3\x46\xd3\x11\xd9\xff\x14\x85\xc9\x9c\x4b\xf3\x81\x99\xfd\x6e\x7b\xb3\x1e\x21\x78\x54\x12\xd0\x5b\x1d\x79\xf8\xc2\xf7\xbc\xea\xbd\x21\x5c\x71\xb1\x77\xe2\x4a\xaf\xae\x4b\x73\xdf\x35\x6e\x5f\xe0\x5a\x81\x79\x32\xeb\x7a\x91\x1f\xa8\x75\x71\xdf\xe5\x5d\xe7\xda\x6e\xe9\xc2\x6e\x72\x55\x1f\x78\xfb\x30\xc5\xe5\x52\x53\xcf\x9d\x8d\xf8\xdc\x52\xa7\xc1\x57\x14\xc7\xc6\x63\x27\x2a\xae\xad\x92\x97\x52\x30\xda\x6e\xfd\x28\x77\xa8\xf7\x7e\xbf\x42\xf2\x1f\xae\xe6\xf3\x7d\x6b\x53\xe5\xe0\x7f\xb3\x18\xf0\x94\xe1\x72\x27\x7e\x55\x67\x80\x09\xfd\x6f\xe0\x2f\xf4\xee\x07\xc8\x5a\xf8\x71\x60\x24\xa9\x14\xbb\x86\x3c\x0a\x01\xf9\xa1\x8c\x08\xa6\xed\x45\x39\x5c\xb1\xfc\x9a\x2a\xdb\x7a\xea\xda\xc3\xaa\xf4\x83\x6a\x32\x79\xf8\x68\xfd\x43\xab\x0e\x18\xc7\xba\x5a\xe1\x1a\x5a\xf7\x06\xea\xe0\xc3\x3a\xd5\x06\x93\x3d\x28\x60\x6e\x38\xdf\x72\xc3\xf3\xe2\x58\x68\x55\x63\x7f\xf2\x09\xe8\x39\x46\x5a\x64\x96\x2a\x67\xd0\x85\x09\xc9\x7c\x68\x94\x17\x1b\x99\x3f\x2d\xd2\x40\x88\xb9\x6f\x63\x78\xaa\xd7\xaa\x6b\x9e\x6e\xcf\x1f\x2c\x0a\xb7\xf6\x7c\x3b\x50\xe1\xee\x41\x04\x7a\xdc\x92\x57\x38\x1e\xc2\xba\xed\xe3\xdb\x3a\xd5\x4e\x57\xe2\xd8\x23\x15\x1b\xd4\x4c\x5d\xb3\xbc\xe5\x61\x74\xdd\xd0\xda\x9f\x45\xfe\xe8\x66\x7e\xb7\xed\xe4\xbf\xfe\xfb\x7f\xfc\xbf\x00\x00\x00\xff\xff\xe0\x67\x7b\x8a\xc4\xcb\x0b\x00") func operatorsCoreosCom_clusterserviceversionsYamlBytes() ([]byte, error) { return bindataRead( @@ -125,7 +125,7 @@ func operatorsCoreosCom_clusterserviceversionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5b\x4b\x73\x23\xb7\xf1\xbf\xeb\x53\x74\xc9\x07\xdb\x55\x22\xe9\xdd\xff\xe1\x9f\xd2\x4d\x91\xe3\x94\x12\xdb\x51\x2d\xd7\x7b\x71\xed\xa1\x39\xd3\x24\x61\x61\x00\x18\x0f\x72\x19\xc7\xdf\x3d\xd5\xc0\xcc\x70\x48\xce\x8b\x5c\xad\x14\x5c\x24\xce\x00\x8d\x7e\xa0\xbb\x7f\x0d\x60\xd0\x88\x0f\x64\x9d\xd0\xea\x16\xd0\x08\xfa\xe4\x49\xf1\x2f\x37\x7d\xfa\x8b\x9b\x0a\x3d\xdb\xbc\xb9\x7a\x12\x2a\xbf\x85\xfb\xe0\xbc\x2e\xde\x91\xd3\xc1\x66\xf4\x3d\x2d\x85\x12\x5e\x68\x75\x55\x90\xc7\x1c\x3d\xde\x5e\x01\xa0\x52\xda\x23\x3f\x76\xfc\x13\x20\xd3\xca\x5b\x2d\x25\xd9\xc9\x8a\xd4\xf4\x29\x2c\x68\x11\x84\xcc\xc9\x46\xe2\xd5\xd4\x9b\xef\xa6\x6f\xfe\x7f\xfa\xf6\x0a\x40\x61\x41\xb7\x20\x94\xf3\x28\xa5\x91\xa8\xdc\x54\x1b\xb2\xe8\xb5\x75\xd3\x4c\x5b\xd2\xfc\xa7\xb8\x72\x86\x32\x9e\x62\x65\x75\x30\xb7\xd0\xda\x27\x51\xab\x38\x41\x4f\x2b\x6d\x45\xf5\x1b\x60\x02\x5a\x16\xf1\xff\x24\xe1\x43\x9a\xf4\x51\xa2\x8a\x4f\xa5\x70\xfe\x9f\xc7\x6f\x7e\x14\xce\xc7\xb7\x46\x06\x8b\xf2\x90\xd5\xf8\xc2\xad\xb5\xf5\x3f\xef\x27\xe6\x89\x84\x49\xaf\x84\x5a\x05\x89\xf6\x60\xd4\x15\x80\xcb\xb4\xa1\x5b\x88\x83\x0c\x66\x94\x5f\x01\x94\xba\x29\x89\x4c\x00\xf3\x3c\xea\x1b\xe5\xa3\x15\xca\x93\xbd\xd7\x32\x14\xaa\x9e\x84\xfb\xe4\xe4\x32\x2b\x8c\x8f\x3a\x7d\xbf\x26\x58\x0a\xeb\x3c\xdc\xcf\x3f\x80\x50\xe0\xd7\x14\x65\x02\xbd\x84\x4c\x06\xe7\xc9\xce\xc9\x6e\x44\x46\xe5\x12\x88\xf3\xd7\xe4\x00\x7e\x73\x5a\x3d\xa2\x5f\xdf\xc2\x94\xd5\x3d\xed\x1e\xf4\xeb\x77\x1f\x1b\xe3\x92\x0d\xef\xe7\x1f\x1a\xcf\xfc\x8e\x25\x74\xde\x0a\xb5\xea\xe3\x18\x8d\xb1\x7a\x83\x12\x0a\x9d\x53\x0f\x2f\x55\xbf\x93\x69\xef\x4e\x5f\x74\xcc\xdd\x4e\x32\x2a\xbf\x8d\xe4\xc1\x8b\x44\x72\xa1\xb5\xa4\x72\xb5\x54\x9d\x37\x6f\x50\x9a\x35\xbe\x29\x1f\xba\x6c\x4d\x05\xee\x8d\xa4\x0d\xa9\xbb\xc7\x87\x0f\xff\x37\x3f\x7a\x01\x87\xba\x68\x2c\x39\xc8\xd9\xd9\xc8\x45\x03\x96\x0b\x27\xfa\x18\x1b\x12\xc1\x51\xb4\xe8\xde\x03\x4e\xd8\xd4\x8b\xdf\x28\xf3\x8d\xc7\x96\x7e\x0f\xc2\x52\xde\x9c\x9d\x35\x52\xb9\xf2\xd1\x63\xd6\x4e\xe3\x91\xb1\x3c\x97\x6f\x78\x52\x6a\x8d\x58\x72\xf0\xfc\x48\xb2\xff\x4c\x8e\xde\x02\xb0\x42\xd2\xc8\x03\x59\x4b\x17\xa0\xbc\xd4\x22\x8b\xe9\xd7\xc2\x81\x25\x63\xc9\x91\xf2\x7b\x35\xa8\x52\xca\xe9\x09\x71\x5e\xae\x64\x1d\xfb\x65\x90\x39\x47\xa4\x0d\x59\x0f\x96\x32\xbd\x52\xe2\xdf\x35\x75\x07\x5e\x27\x1f\x41\x4f\xce\x43\x74\x32\x85\x12\x36\x28\x03\xdd\x00\xaa\xfc\x84\x76\x81\x3b\xb0\xc4\xf3\x42\x50\x0d\x8a\x71\x88\x3b\xe5\xe5\x27\x6d\xd9\x84\x4b\x7d\x0b\x6b\xef\x8d\xbb\x9d\xcd\x56\xc2\x57\xb1\x36\xd3\x45\x11\x94\xf0\xbb\x59\x0c\x9b\x62\x11\xd8\x9e\xb3\x9c\x36\x24\x67\x4e\xac\x26\x68\xb3\xb5\xf0\x94\xf9\x60\x69\x86\x46\x4c\xa2\x30\x2a\xc6\xdb\x69\x91\x7f\x65\xcb\xe8\xec\x8e\x26\x6e\x75\x00\xa8\x02\xdf\x99\xc6\xe2\x90\x08\xc2\xf1\xca\x8b\x04\x93\xb0\x7b\x9b\xf0\x23\x56\xe3\xbb\xbf\xcd\xdf\x43\xc5\x51\xb2\x5b\x32\xd1\xbe\x6b\x8b\x86\x2a\x6b\xb1\x66\x85\x5a\x92\x4d\x23\x97\x56\x17\x91\x2a\xa9\xdc\x68\xa1\x7c\xfc\x91\x49\x41\xca\x83\x0b\x8b\x42\x78\x17\x97\x35\x39\xcf\x86\x3c\x25\x7c\x1f\x73\x13\x2c\x08\x82\xc9\xd1\x53\x7e\xda\xe5\x41\xc1\x3d\x16\x24\xef\xd1\xd1\x8b\xdb\x8e\x6d\xe4\x26\x6c\x90\xd1\xd6\x6b\x66\xde\xd3\x01\x27\x5e\x0f\x50\x25\xcd\x4e\x73\x37\xa2\xce\xdc\x50\x56\x7b\x63\x1d\x65\xee\x8c\x91\x22\x4b\x6e\x57\xaf\x36\x76\x9c\x45\x1d\x9a\xe8\xd8\x4d\x3a\xd9\xe9\x0a\x44\x90\x12\xde\x69\x20\x3f\x7c\x75\x32\x11\xbf\x1a\x95\xd8\xa0\x27\x8a\x41\x8c\x64\x69\xea\xd3\x37\xc3\xee\xc1\xad\xca\x41\xec\x26\xbc\x4e\x83\x23\xbb\xcf\x6c\x46\x4b\x91\xed\x60\xa9\x2d\x87\xad\x86\xca\x4f\xd7\x1c\xb7\x07\x0f\x45\x70\x71\xe5\x6a\x45\x6c\x84\xeb\xbb\xe0\x75\x81\x5e\x64\xd7\xa0\x2d\x5c\xff\x84\x2a\xa0\xbc\x6e\x1b\xde\xb9\x76\xf6\x62\xb6\x69\xbf\x3d\xc1\xed\x5b\xb7\x96\xbb\x69\xa1\xb5\xb8\x6b\x79\x2b\x3c\x15\xad\xc3\x06\xb8\x5f\x91\xe2\x8c\xd7\x92\x6e\xf6\x43\x39\x86\xaf\xc8\x9e\xbc\x4f\x0b\xb7\x7b\x5c\xc7\x94\x69\x58\x0d\xd3\xce\x1a\xef\x3c\xfa\x70\x22\xe7\xd0\x6a\x6a\x3a\x64\x24\xd0\x08\x9e\x25\x1e\x58\x6a\x5b\x24\x87\xc4\x85\x0e\x29\x30\xa6\xc9\x40\x2f\x4f\x45\xf0\x64\x5c\xed\x77\xec\xb9\x99\x2e\x8c\x24\x7f\x08\x2d\xa6\x57\xa7\x91\x39\xd1\xe4\xc0\xec\x2d\x0a\x19\x27\xc2\xcc\x07\x94\x71\x3e\x2a\xe1\xc8\xce\x79\x2a\x8e\xd7\xe2\x85\x31\x20\x43\x8f\x52\xaf\xe6\xad\x59\x8d\x3b\x98\x35\x3a\x3a\xc7\xb3\xbd\x27\x15\x38\xfc\x97\x6b\xf7\x2e\xcb\x74\x50\xfe\x1d\x2d\x2f\x76\xf6\x6e\x92\x60\x69\x49\x96\x54\x56\x02\x1a\x97\x3a\x00\xa6\x1e\xe0\xd7\xe8\x39\x46\x04\xd7\x12\xcb\xa2\xda\x34\xe4\x3a\x95\x07\x79\x8d\xf0\x2a\x43\x75\xfb\x7b\xab\x9e\x87\x54\x03\xbd\x10\xae\x55\x23\x77\x8f\x0f\x15\x48\x4b\xd8\x8c\x2a\x89\x5b\x70\x58\x93\xc1\x0e\xff\xe2\xb6\x14\x24\xf3\x08\xcb\xc7\x70\xd0\x61\x13\x6e\x0f\xa5\xfa\x23\x46\xf1\x1a\x10\x8c\xa0\x8c\x0e\xd0\x62\x54\x25\x61\x5e\x3e\xe4\x74\x6c\xa9\x7c\x77\x93\x90\x47\x0f\xab\x90\xaa\xbd\x12\x55\x7a\x14\x0a\x90\xd1\x90\xc8\xe1\x1f\xf3\x7f\xfd\x3c\xfb\xbb\x4e\xd2\xb0\xbd\xc9\xb9\xe4\x25\x05\x29\x7f\x03\x2e\x64\x6b\x40\xc7\xc2\xf0\xda\x67\xdf\xa2\x69\x81\x4a\x2c\xc9\xf9\x69\x49\x8d\xac\xfb\xf5\xed\xc7\x2e\x4d\x02\xfc\xa0\x2d\xd0\x27\x64\xf7\xbd\x01\x91\xf4\x5f\x43\xac\x72\xe1\xc5\x14\xc4\xc2\xd7\x34\x61\x2b\xfc\x3a\xb2\x6a\x74\x5e\x0a\xb9\x8d\x42\x78\x7c\xe2\x1c\x93\x84\x08\x5c\x2c\x3e\xb5\xc6\xb8\xd4\xae\x53\x4d\x58\xb3\xfa\x07\xd7\x3f\x7f\x5e\xc3\x37\xdb\x35\x59\x82\x6b\xfe\x79\x9d\x18\xa9\xa1\x35\x3f\xab\x56\xca\x9e\xa1\xe8\x06\xde\x8a\xd5\x8a\x6c\x87\x23\x70\x8b\xf0\x8f\x21\xd3\xb7\x9c\xf5\xc4\x12\x94\x6e\x10\x89\xa4\xd9\x5e\x86\x32\xb1\x14\x94\x9f\x30\xf8\xeb\xdb\x8f\xd7\xf0\xcd\xa1\x1e\x3a\x27\x13\x2a\xa7\x4f\xf0\x36\xd5\xcd\xc2\xb1\xae\xbe\x9d\xc2\xfb\xb8\x22\x76\xca\xe3\x27\x9e\x2b\x5b\x6b\x47\x0a\xb4\x92\x3b\x96\x70\x8d\x1b\x02\xa7\x0b\x82\x2d\x49\x39\x49\xe0\x29\x87\x2d\xee\xda\x22\x71\xd5\x2a\x53\xf1\x32\x45\x30\x68\xfd\x40\x41\x53\x6a\x63\xc8\x91\xda\xb0\x7d\xd5\xc6\xfa\x50\xc4\xfa\x23\x3d\xfb\x15\x11\xf2\x68\x9d\xc4\x12\xfd\x33\x75\xf2\x73\x63\x0d\x5f\xa4\x93\xa7\xb0\x20\xab\xc8\x53\x54\x4b\xae\x33\xc7\x1a\xc9\xc8\x78\x37\xd3\x1b\x4e\x11\xb4\x9d\x6d\xb5\x7d\x12\x6a\x35\xe1\x45\x3a\x49\x2b\xc1\xcd\xe2\x76\xd6\xec\x2b\xd5\x02\x67\xcf\x52\x41\x27\x7a\x39\x57\x0f\x91\xd0\x6b\x2a\x83\xe7\x77\xb3\x4b\x75\x51\x55\x30\xe7\xe4\xbc\x1e\x8d\xcc\x53\xe8\xc9\x8e\xe9\x72\x6c\xd8\xae\x45\xb6\xae\x76\x2f\x1a\xb1\xb9\xc0\x3c\x05\x6f\x54\xbb\x57\xf3\x2c\xd6\x78\xb0\xcc\xd3\x6e\x52\xee\xd8\x4e\x50\xe5\xfc\xbf\x13\xce\xf3\xf3\x4b\x55\x1c\xc4\x67\x07\xa1\x5f\x1e\xbe\x7f\x5d\x7f\x0b\xe2\xd2\x88\xf3\x69\xb2\x9f\x7c\x52\xa0\x99\x94\xa5\x90\xd7\x85\xc8\x4e\xfa\x2f\x82\xca\x25\xfd\xa8\xf5\x53\x30\xad\x00\xed\x40\x63\x7f\x6d\xf6\xae\x2a\xcd\xb2\x4c\x17\x6a\x62\xac\x5e\x59\x46\x1d\x8d\x5d\x11\x30\x41\x4a\x40\x95\x43\x50\x06\xb3\x27\x5c\x51\x39\x69\x4c\xa4\xc4\x90\x54\x97\x3b\x2b\xb1\xc0\xeb\x86\x98\x17\x54\x73\x9d\xdc\xa7\xdd\xa4\x92\xcf\x0e\x36\x2b\xc4\xc0\x3c\xc6\x3a\xa3\xe4\x7b\x98\xdf\x41\x50\xdc\x57\x82\xa4\x76\x54\x88\xbc\xa3\xae\x6c\x3e\x01\x91\xb3\x5f\x2d\x45\x4b\xd1\x59\x75\x31\xd8\x89\x3b\x26\x5c\xde\x49\x6c\xab\x75\x60\x04\x7c\x87\x13\x3e\xbb\xe1\xdb\x81\x35\xee\x8f\x86\x55\x16\xa9\x02\x55\xa9\xe5\x83\x6e\xf1\x49\x69\x05\x16\x09\xb6\xe8\x62\xe4\x93\x1b\xca\xe3\x86\x5d\xb7\x97\x0e\x5a\x64\x9c\xb4\x30\xaa\x64\x69\x91\xf7\x82\xc2\xa5\xc9\xf8\x40\x4d\x30\xa2\x88\x69\xe1\xa9\x27\x02\xa6\xf6\x32\x05\x4d\x6a\xaf\x59\xd6\xa4\xf6\xba\xc5\x4d\x6a\x2f\x5e\xe2\xa4\xf6\xa2\x85\x4e\x6a\x2f\x57\xee\xa4\x76\x61\xd1\x53\xea\x67\x9c\x13\xf6\x15\x40\xa9\x9d\xe7\x7f\xe7\x15\x43\xa9\xbd\x7a\x49\x74\x96\xc6\xfa\xca\xa3\x4b\x34\x76\x5e\xa9\xd4\xa9\xb1\x2f\x5a\x30\x9d\xad\xa0\xde\xe2\xe9\x52\x2d\x9d\x59\x48\x7d\x29\x55\xf5\x96\x53\x67\x69\x6a\x64\x69\x75\x89\xbe\xbe\x5c\x99\xd5\xa9\xd6\xff\x8d\x62\xeb\x2c\x03\xf4\x14\x5e\x97\x28\xfd\xac\x22\xac\x53\x8f\x5f\xb2\x14\x3b\x43\x3b\xe7\x95\x65\xa9\x65\x5a\xa5\x0b\x38\x3d\x68\xf4\x10\x53\xd7\x03\x8e\xcf\x6c\x58\x52\x94\x07\xa7\x26\xcd\x72\x68\x08\x36\x77\x95\x5e\xa9\xf5\x14\x60\x4d\x22\x03\xd8\x7b\xb8\x26\x4a\x6d\x52\x1e\x35\x0d\x74\xe2\x39\x7b\xba\x8c\x43\xfa\x00\x12\x9d\x7f\x6f\x51\xb9\xa8\xd7\xf7\x62\x28\x5b\x1d\x59\xe4\x47\xe4\xf2\x52\x14\x75\x35\x99\xec\x03\xbe\x26\x59\x16\x2e\xf1\xa0\xb5\x3c\x43\x63\x7c\xa9\xb4\x5f\x77\x15\x97\xfb\x36\xd2\x31\xb9\xa5\x33\xbb\x5b\xc8\xd1\xd3\x84\x39\x1a\x14\xfb\x97\x78\x69\xe1\xd9\x44\xe6\x5a\xcd\x58\xbd\x68\xbb\x06\xf1\x42\x52\x15\xe4\x1c\xae\xce\x13\xe7\x0e\xd6\xa1\x40\x05\x96\x30\xc7\x85\xa4\x8a\x08\xe3\xd7\x78\x2d\x41\xad\x20\x27\x8f\x42\xba\xc6\x69\xe8\xde\xbe\xcf\x26\xac\x25\x74\x43\x59\x0d\x4e\x6f\xb7\xa5\x61\xf1\xe8\xff\xc0\x1e\x5f\xbb\x68\xe4\x2f\xc1\x69\xfb\xb9\x73\x2f\xa7\xf3\xea\xf4\xf8\x90\xc9\x9b\xea\xfe\xc1\x7b\x1b\xe8\x06\x7e\x40\xe9\xe8\x06\x7e\x51\x4f\x4a\x6f\x9f\x8f\xdf\xd8\xf1\x2c\xbd\xee\x4c\xe4\xaa\xe6\xf3\x19\x58\xd9\xef\xe2\x8c\x0c\xf6\x0f\xf5\x80\x6a\x27\xae\xdc\x89\x99\x04\x25\x7e\x0f\x87\x65\x61\x7d\x90\xfb\xcd\x71\xc1\x78\x3f\xff\x10\x17\x47\xda\x56\x71\xa9\x6c\xac\x8a\xf0\xfb\xf9\x07\xf7\xed\x40\x6e\xe8\x95\xca\xf4\x6e\x48\x8c\xc7\x03\x8f\xe8\xd7\x47\x55\xaf\xd4\x59\xe3\x4a\xe2\x7e\x6f\xce\x84\xf6\x73\xea\xaa\x3d\xf8\xaf\x1d\xb3\x2e\x32\x94\x72\xc7\x05\xa0\x28\xd8\x9f\x6b\xf0\x36\x94\x0c\xfb\x05\x1e\x91\x57\x4e\x7c\x94\x96\x4b\xca\xbc\xd8\x50\x63\x78\x65\x9f\xb4\x1f\x49\x79\x29\xe1\x67\x31\x57\xed\xf4\x8d\x64\xed\x5d\xd9\xbd\x5a\x5f\xcd\x65\xb3\xd7\x77\x49\x34\x96\xfc\x69\xad\x29\x82\xa5\x0e\x2a\x07\xf4\xd1\x70\x17\xf2\x7c\x78\x13\xe3\xe5\x6e\xf9\xf4\xc3\xae\xe7\xd9\x8b\xee\x5c\xec\x8d\xdb\x37\x35\x9a\xeb\x03\x73\xfb\xa0\x49\x9f\x28\x0b\xa5\x43\x74\x10\x1f\x73\xf7\x6b\x10\xab\x0d\xaf\xf0\x73\x30\xd3\xa8\x20\x3d\x36\xcb\x8f\x45\x2d\xcf\x3a\xe9\x20\xa8\x18\xe5\x98\xfd\xb9\xbd\x1d\xe5\xbf\x4b\xa9\x3d\x6e\x9c\x67\x58\x90\xcc\xd0\x51\x7e\x9c\xf1\x13\xe4\x1f\x93\xe6\x47\x30\x3a\x94\xda\x47\x90\xe8\xcf\xb6\x5d\x77\x43\x6b\xa1\x63\xee\x4d\xbd\x16\xd5\x1d\xa7\xba\xa8\x39\x58\xdf\x1c\x7e\x10\x32\xb2\x31\x95\xa5\x2b\xbc\xc8\xba\xda\xae\xf5\xc5\x81\xb4\xc7\xda\x63\x1c\xfc\xa7\x0a\x3c\x32\x1f\x11\x58\x4e\x4e\x80\x65\x99\x7c\xf7\xc0\xb2\x63\xf7\xb6\x79\x0f\x2f\x66\xed\x02\x77\xf1\x52\x6c\x61\xb4\xf5\x98\x4e\xd6\x82\xca\xc9\x3a\x8f\x2a\x67\x7a\xdb\xf5\x8e\x35\xd6\xee\xd7\xac\xb2\x35\x3a\x10\xde\x41\xda\x2e\xf0\xa5\xbd\xcf\xbe\xe6\x19\xef\xc8\x0d\xea\xa8\x61\xab\x47\x1e\x50\xe3\x98\x83\xc9\x53\x7e\x3f\xb0\x6b\xaf\x11\xfb\x19\x93\xd8\x73\x77\xf3\x73\xa3\xfa\xdc\x93\x39\x0e\xd6\x0d\x21\x54\xac\x19\x36\x22\x4f\xf7\x17\xc9\x80\x50\xcf\x13\x93\x87\x4f\x13\xd3\x29\x59\xb7\x57\x4e\xea\xad\xad\xce\x0e\x3d\x65\xf7\x70\x4e\xd0\x26\x7d\x49\x34\x14\x3a\xba\xae\xff\xa6\x56\x4b\xf1\x99\xd1\xb6\xfb\x32\x6e\x6a\xe3\x81\x29\x9b\xbc\xfa\x42\xad\xc7\xf4\x8d\xaf\x12\xe2\xc5\x75\x6f\x4b\x50\xc7\x00\xb4\x0f\xac\x0e\x2d\x0d\x18\xbb\xbd\x32\x66\x73\x65\x92\xbe\x6d\xeb\xed\xf1\x24\x5a\x3e\x4a\x69\x76\x60\x94\xd8\xdb\x61\x7f\xa5\x79\x64\xb7\xb8\x47\xdc\xdb\xb7\x3c\x58\xed\xec\x33\x6e\xb7\x27\x7d\xd8\xf7\x1c\x3b\xa1\xc3\xe7\x40\x23\x09\x55\x07\x99\xcf\x42\x6c\xf8\xac\x65\x24\xa1\xbd\x69\x9e\x99\xdc\x88\x83\x8e\x91\x34\x37\x63\x0e\x01\x9e\x01\xf0\x9c\x17\x29\xca\x6d\x8e\x9e\x3c\x67\xd0\x7a\x91\x05\x89\x76\x1f\x32\x62\xe2\x18\x17\x24\x2e\x0b\x8b\xce\xa3\xf5\x5d\x90\x79\x8c\x84\xf3\x8a\x40\x25\x5a\xdc\xff\xdb\xae\x49\xd5\x87\xd2\xe9\x93\x5c\x58\xd0\x8a\x33\xb8\x31\x72\xd7\xa5\xf4\xb4\xe1\x5f\x7d\xe8\x23\x85\xf3\x94\x57\x1f\x93\x46\x90\x32\xf6\xc2\x50\xa7\x61\xbb\xa0\xbd\x23\xbb\xa1\xfc\x16\xbc\x0d\xf5\x23\xaf\x2d\xe3\xbd\x83\x67\x61\x51\xf3\xb7\xd7\x58\xb9\x52\xe0\x8f\x3f\xaf\xfe\x1b\x00\x00\xff\xff\x5e\x78\xe2\x80\xe3\x3c\x00\x00") +var _operatorsCoreosCom_installplansYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xcc\x5b\x4b\x73\xe3\x36\xf2\xbf\xfb\x53\x74\x39\x87\x24\x55\x96\x94\xc9\xff\x92\xf2\xcd\x7f\x67\xb3\xe5\xdd\x24\xeb\x1a\x4d\xe6\x92\xca\xa1\x45\xb6\x24\xc4\x20\x80\xe0\x21\x59\x9b\xcd\x77\xdf\x6a\x80\xa4\x28\x89\x2f\x69\x3c\xf6\xe2\x62\x8b\x04\x1a\xfd\x40\x77\xff\x1a\x00\xd1\x88\x8f\x64\x9d\xd0\xea\x16\xd0\x08\x7a\xf6\xa4\xf8\x97\x9b\x3e\x7d\xe7\xa6\x42\xcf\x36\xef\xae\x9e\x84\xca\x6f\xe1\x3e\x38\xaf\x8b\xf7\xe4\x74\xb0\x19\x7d\x4f\x4b\xa1\x84\x17\x5a\x5d\x15\xe4\x31\x47\x8f\xb7\x57\x00\xa8\x94\xf6\xc8\x8f\x1d\xff\x04\xc8\xb4\xf2\x56\x4b\x49\x76\xb2\x22\x35\x7d\x0a\x0b\x5a\x04\x21\x73\xb2\x91\x78\x35\xf5\xe6\x9b\xe9\xbb\xef\xa6\xdf\x5c\x01\x28\x2c\xe8\x16\x84\x72\x1e\xa5\x34\x12\x95\x9b\x6a\x43\x16\xbd\xb6\x6e\x9a\x69\x4b\x9a\xff\x14\x57\xce\x50\xc6\x53\xac\xac\x0e\xe6\x16\x5a\xfb\x24\x6a\x15\x27\xe8\x69\xa5\xad\xa8\x7e\x03\x4c\x40\xcb\x22\xfe\x9f\x24\x7c\x48\x93\x3e\x4a\x54\xf1\xa9\x14\xce\xff\xf3\xf8\xcd\x8f\xc2\xf9\xf8\xd6\xc8\x60\x51\x1e\xb2\x1a\x5f\xb8\xb5\xb6\xfe\xe7\xfd\xc4\x3c\x91\x30\xe9\x95\x50\xab\x20\xd1\x1e\x8c\xba\x02\x70\x99\x36\x74\x0b\x71\x90\xc1\x8c\xf2\x2b\x80\x52\x37\x25\x91\x09\x60\x9e\x47\x7d\xa3\x7c\xb4\x42\x79\xb2\xf7\x5a\x86\x42\xd5\x93\x70\x9f\x9c\x5c\x66\x85\xf1\x51\xa7\x1f\xd6\x04\x4b\x61\x9d\x87\xfb\xf9\x47\x10\x0a\xfc\x9a\xa2\x4c\xa0\x97\x90\xc9\xe0\x3c\xd9\x39\xd9\x8d\xc8\xa8\x5c\x02\x71\xfe\x9a\x1c\xc0\xef\x4e\xab\x47\xf4\xeb\x5b\x98\xb2\xba\xa7\xdd\x83\x7e\xfd\xe6\xb7\xc6\xb8\x64\xc3\xfb\xf9\xc7\xc6\x33\xbf\x63\x09\x9d\xb7\x42\xad\xfa\x38\x46\x63\xac\xde\xa0\x84\x42\xe7\xd4\xc3\x4b\xd5\xef\x64\xda\xbb\xd3\x17\x1d\x73\xb7\x93\x8c\xca\x6f\x23\x79\xf0\x22\x91\x5c\x68\x2d\xa9\x5c\x2d\x55\xe7\xcd\x3b\x94\x66\x8d\xef\xca\x87\x2e\x5b\x53\x81\x7b\x23\x69\x43\xea\xee\xf1\xe1\xe3\xff\xcd\x8f\x5e\xc0\xa1\x2e\x1a\x4b\x0e\x72\x76\x36\x72\xd1\x80\xe5\xc2\x89\x3e\xc6\x86\x44\x70\x14\x2d\xba\xf7\x80\x13\x36\xf5\xe2\x77\xca\x7c\xe3\xb1\xa5\x3f\x82\xb0\x94\x37\x67\x67\x8d\x54\xae\x7c\xf4\x98\xb5\xd3\x78\x64\x2c\xcf\xe5\x1b\x9e\x94\x5a\x23\x96\x1c\x3c\x3f\x92\xec\x3f\x93\xa3\xb7\x00\xac\x90\x34\xf2\x40\xd6\xd2\x05\x28\x2f\xb5\xc8\x62\xfa\xb5\x70\x60\xc9\x58\x72\xa4\xfc\x5e\x0d\xaa\x94\x72\x7a\x42\x9c\x97\x2b\x59\xc7\x7e\x19\x64\xce\x11\x69\x43\xd6\x83\xa5\x4c\xaf\x94\xf8\x77\x4d\xdd\x81\xd7\xc9\x47\xd0\x93\xf3\x10\x9d\x4c\xa1\x84\x0d\xca\x40\x37\x80\x2a\x3f\xa1\x5d\xe0\x0e\x2c\xf1\xbc\x10\x54\x83\x62\x1c\xe2\x4e\x79\xf9\x49\x5b\x36\xe1\x52\xdf\xc2\xda\x7b\xe3\x6e\x67\xb3\x95\xf0\x55\xac\xcd\x74\x51\x04\x25\xfc\x6e\x16\xc3\xa6\x58\x04\xb6\xe7\x2c\xa7\x0d\xc9\x99\x13\xab\x09\xda\x6c\x2d\x3c\x65\x3e\x58\x9a\xa1\x11\x93\x28\x8c\x8a\xf1\x76\x5a\xe4\x5f\xd8\x32\x3a\xbb\xa3\x89\x5b\x1d\x00\xaa\xc0\x77\xa6\xb1\x38\x24\x82\x70\xbc\xf2\x22\xc1\x24\xec\xde\x26\xfc\x88\xd5\xf8\xfe\x6f\xf3\x0f\x50\x71\x94\xec\x96\x4c\xb4\xef\xda\xa2\xa1\xca\x5a\xac\x59\xa1\x96\x64\xd3\xc8\xa5\xd5\x45\xa4\x4a\x2a\x37\x5a\x28\x1f\x7f\x64\x52\x90\xf2\xe0\xc2\xa2\x10\xde\xc5\x65\x4d\xce\xb3\x21\x4f\x09\xdf\xc7\xdc\x04\x0b\x82\x60\x72\xf4\x94\x9f\x76\x79\x50\x70\x8f\x05\xc9\x7b\x74\xf4\xea\xb6\x63\x1b\xb9\x09\x1b\x64\xb4\xf5\x9a\x99\xf7\x74\xc0\x89\xd7\x03\x54\x49\xb3\xd3\xdc\x8d\xa8\x33\x37\x94\xd5\xde\x58\x47\x99\x3b\x63\xa4\xc8\x92\xdb\xd5\xab\x8d\x1d\x67\x51\x87\x26\x3a\x76\x93\x4e\x76\xba\x02\x11\xa4\x84\x77\x1a\xc8\x0f\x5f\x9d\x4c\xc4\xaf\x46\x25\x36\xe8\x89\x62\x10\x23\x59\x9a\xfa\xf4\xcd\xb0\x7b\x70\xab\x72\x10\xbb\x09\xaf\xd3\xe0\xc8\xee\x33\x9b\xd1\x52\x64\x3b\x58\x6a\xcb\x61\xab\xa1\xf2\xd3\x35\xc7\xed\xc1\x43\x11\x5c\x5c\xb9\x5a\x11\x1b\xe1\xfa\x2e\x78\x5d\xa0\x17\xd9\x35\x68\x0b\xd7\x3f\xa1\x0a\x28\xaf\xdb\x86\x77\xae\x9d\xbd\x98\x6d\xda\x6f\x4f\x70\xfb\xd6\xad\xe5\x6e\x5a\x68\x2d\xee\x5a\xde\x0a\x4f\x45\xeb\xb0\x01\xee\x57\xa4\x38\xe3\xb5\xa4\x9b\xfd\x50\x8e\xe1\x2b\xb2\x27\xef\xd3\xc2\xed\x1e\xd7\x31\x65\x1a\x56\xc3\xb4\xb3\xc6\x3b\x8f\x3e\x9c\xc8\x39\xb4\x9a\x9a\x0e\x19\x09\x34\x82\x67\x89\x07\x96\xda\x16\xc9\x21\x71\xa1\x43\x0a\x8c\x69\x32\xd0\xcb\x53\x11\x3c\x19\x57\xfb\x1d\x7b\x6e\xa6\x0b\x23\xc9\x1f\x42\x8b\xe9\xd5\x69\x64\x4e\x34\x39\x30\x7b\x8b\x42\xc6\x89\x30\xf3\x01\x65\x9c\x8f\x4a\x38\xb2\x73\x9e\x8a\xe3\xb5\x78\x61\x0c\xc8\xd0\xa3\xd4\xab\x79\x6b\x56\xe3\x0e\x66\x8d\x8e\xce\xf1\x6c\xef\x49\x05\x0e\xff\xe5\xda\xbd\xcb\x32\x1d\x94\x7f\x4f\xcb\x8b\x9d\xbd\x9b\x24\x58\x5a\x92\x25\x95\x95\x80\xc6\xa5\x0e\x80\xa9\x07\xf8\x35\x7a\x8e\x11\xc1\xb5\xc4\xb2\xa8\x36\x0d\xb9\x4e\xe5\x41\x5e\x23\xbc\xca\x50\xdd\xfe\xde\xaa\xe7\x21\xd5\x40\x2f\x84\x6b\xd5\xc8\xdd\xe3\x43\x05\xd2\x12\x36\xa3\x4a\xe2\x16\x1c\xd6\x64\xb0\xc3\xbf\xb8\x2d\x05\xc9\x3c\xc2\xf2\x31\x1c\x74\xd8\x84\xdb\x43\xa9\xfe\x88\x51\xbc\x06\x04\x23\x28\xa3\x03\xb4\x18\x55\x49\x98\x97\x0f\x39\x1d\x5b\x2a\xdf\xdd\x24\xe4\xd1\xc3\x2a\xa4\x6a\xaf\x44\x95\x1e\x85\x02\x64\x34\x24\x72\xf8\xc7\xfc\x5f\x3f\xcf\xfe\xae\x93\x34\x6c\x6f\x72\x2e\x79\x49\x41\xca\xdf\x80\x0b\xd9\x1a\xd0\xb1\x30\xbc\xf6\xd9\xb7\x68\x5a\xa0\x12\x4b\x72\x7e\x5a\x52\x23\xeb\x7e\xfd\xf6\xb7\x2e\x4d\x02\xfc\xa0\x2d\xd0\x33\xb2\xfb\xde\x80\x48\xfa\xaf\x21\x56\xb9\xf0\x62\x0a\x62\xe1\x6b\x9a\xb0\x15\x7e\x1d\x59\x35\x3a\x2f\x85\xdc\x46\x21\x3c\x3e\x71\x8e\x49\x42\x04\x2e\x16\x9f\x5a\x63\x5c\x6a\xd7\xa9\x26\xac\x59\xfd\x93\xeb\x9f\xbf\xae\xe1\xab\xed\x9a\x2c\xc1\x35\xff\xbc\x4e\x8c\xd4\xd0\x9a\x9f\x55\x2b\x65\xcf\x50\x74\x03\x6f\xc5\x6a\x45\xb6\xc3\x11\xb8\x45\xf8\xc7\x90\xe9\x6b\xce\x7a\x62\x09\x4a\x37\x88\x44\xd2\x6c\x2f\x43\x99\x58\x0a\xca\x4f\x18\xfc\xf5\xdb\xdf\xae\xe1\xab\x43\x3d\x74\x4e\x26\x54\x4e\xcf\xf0\x6d\xaa\x9b\x85\x63\x5d\x7d\x3d\x85\x0f\x71\x45\xec\x94\xc7\x67\x9e\x2b\x5b\x6b\x47\x0a\xb4\x92\x3b\x96\x70\x8d\x1b\x02\xa7\x0b\x82\x2d\x49\x39\x49\xe0\x29\x87\x2d\xee\xda\x22\x71\xd5\x2a\x53\xf1\x32\x45\x30\x68\xfd\x40\x41\x53\x6a\x63\xc8\x91\xda\xb0\x7d\xd5\xc6\xfa\x50\xc4\xfa\x23\x3d\xfb\x0d\x11\xf2\x68\x9d\xc4\x12\xfd\x13\x75\xf2\x73\x63\x0d\x5f\xa4\x93\xa7\xb0\x20\xab\xc8\x53\x54\x4b\xae\x33\xc7\x1a\xc9\xc8\x78\x37\xd3\x1b\x4e\x11\xb4\x9d\x6d\xb5\x7d\x12\x6a\x35\xe1\x45\x3a\x49\x2b\xc1\xcd\xe2\x76\xd6\xec\x0b\xd5\x02\x67\xcf\x52\x41\x27\x7a\x39\x57\x0f\x91\xd0\x5b\x2a\x83\xe7\x77\xb3\x4b\x75\x51\x55\x30\xe7\xe4\xbc\x1e\x8d\xcc\x53\xe8\xc9\x8e\xe9\x72\x6c\xd8\xae\x45\xb6\xae\x76\x2f\x1a\xb1\xb9\xc0\x3c\x05\x6f\x54\xbb\x37\xf3\x2c\xd6\x78\xb0\xcc\xd3\x6e\x52\xee\xd8\x4e\x50\xe5\xfc\xbf\x13\xce\xf3\xf3\x4b\x55\x1c\xc4\x27\x07\xa1\x5f\x1e\xbe\x7f\x5b\x7f\x0b\xe2\xd2\x88\xf3\x3c\xd9\x4f\x3e\x29\xd0\x4c\xca\x52\xc8\xeb\x42\x64\x27\xfd\x17\x41\xe5\x92\x7e\xd4\xfa\x29\x98\x56\x80\x76\xa0\xb1\xff\x6f\xf6\xae\x2a\xcd\xb2\x4c\x17\x6a\x62\xac\x5e\x59\x46\x1d\x8d\x5d\x11\x30\x41\x4a\x40\x95\x43\x50\x06\xb3\x27\x5c\x51\x39\x69\x4c\xa4\xc4\x90\x54\x97\x3b\x2b\xb1\xc0\xeb\x86\x98\x17\x54\x73\x9d\xdc\xa7\xdd\xa4\x92\xcf\x0e\x36\x2b\xc4\xc0\x3c\xc6\x3a\xa3\xe4\x7b\x98\xdf\x41\x50\xdc\x57\x82\xa4\x76\x54\x88\xbc\xa7\xae\x6c\x3e\x01\x91\xb3\x5f\x2d\x45\x4b\xd1\x59\x75\x31\xd8\x89\x3b\x26\x5c\xde\x49\x6c\xab\x75\x60\x04\x7c\x87\x13\x3e\xbb\xe1\xdb\x81\x35\xee\x8f\x86\x55\x16\xa9\x02\x55\xa9\xe5\x83\x6e\xf1\x49\x69\x05\x16\x09\xb6\xe8\x62\xe4\x93\x1b\xca\xe3\x86\x5d\xb7\x97\x0e\x5a\x64\x9c\xb4\x30\xaa\x64\x69\x91\xf7\x82\xc2\xa5\xc9\xf8\x40\x4d\x30\xa2\x88\x69\xe1\xa9\x27\x02\xa6\xf6\x3a\x05\x4d\x6a\x6f\x59\xd6\xa4\xf6\xb6\xc5\x4d\x6a\xaf\x5e\xe2\xa4\xf6\xaa\x85\x4e\x6a\xaf\x57\xee\xa4\x76\x61\xd1\x53\xea\x67\x9c\x13\xf6\x15\x40\xa9\x9d\xe7\x7f\xe7\x15\x43\xa9\xbd\x79\x49\x74\x96\xc6\xfa\xca\xa3\x4b\x34\x76\x5e\xa9\xd4\xa9\xb1\xcf\x5a\x30\x9d\xad\xa0\xde\xe2\xe9\x52\x2d\x9d\x59\x48\x7d\x2e\x55\xf5\x96\x53\x67\x69\x6a\x64\x69\x75\x89\xbe\x3e\x5f\x99\xd5\xa9\xd6\xff\x8d\x62\xeb\x2c\x03\xf4\x14\x5e\x97\x28\xfd\xac\x22\xac\x53\x8f\x9f\xb3\x14\x3b\x43\x3b\xe7\x95\x65\xa9\x65\x5a\xa5\x0b\x38\x3d\x68\xf4\x10\x53\xd7\x03\x8e\xcf\x6c\x58\x52\x94\x07\xa7\x26\xcd\x72\x68\x08\x36\x77\x95\x5e\xa9\xf5\x14\x60\x4d\x22\x03\xd8\x7b\xb8\x26\x4a\x6d\x52\x1e\x35\x0d\x74\xe2\x39\x7b\xba\x8c\x43\xfa\x00\x12\x9d\xff\x60\x51\xb9\xa8\xd7\x0f\x62\x28\x5b\x1d\x59\xe4\x47\xe4\xf2\x52\x14\x75\x35\x99\xec\x03\xbe\x26\x59\x16\x2e\xf1\xa0\xb5\x3c\x43\x63\x7c\xa9\xb4\x5f\x77\x15\x97\xfb\x36\xd2\x31\xb9\xa5\x33\xbb\x5b\xc8\xd1\xd3\x84\x39\x1a\x14\xfb\x97\x78\x69\xe1\xc5\x44\xe6\x5a\xcd\x58\xbd\x68\xbb\x06\xf1\x4a\x52\x15\xe4\x1c\xae\xce\x13\xe7\x0e\xd6\xa1\x40\x05\x96\x30\xc7\x85\xa4\x8a\x08\xe3\xd7\x78\x2d\x41\xad\x20\x27\x8f\x42\xba\xc6\x69\xe8\xde\xbe\x2f\x26\xac\x25\x74\x43\x59\x0d\x4e\x6f\xb7\xa5\x61\xf1\xe8\xff\xc0\x1e\x5f\xba\x68\xe4\xcf\xc1\x69\xfb\xb9\x73\x2f\xa7\xf3\xea\xf4\xf8\x90\xc9\x9b\xea\xfe\xc1\x07\x1b\xe8\x06\x7e\x40\xe9\xe8\x06\x7e\x51\x4f\x4a\x6f\x5f\x8e\xdf\xd8\xf1\x2c\xbd\xee\x4c\xe4\xaa\xe6\xf3\x05\x58\xd9\xef\xe2\x8c\x0c\xf6\x0f\xf5\x80\x6a\x27\xae\xdc\x89\x99\x04\x25\xfe\x08\x87\x65\x61\x7d\x90\xfb\xd5\x71\xc1\x78\x3f\xff\x18\x17\x47\xda\x56\x71\xa9\x6c\xac\x8a\xf0\xfb\xf9\x47\xf7\xf5\x40\x6e\xe8\x95\xca\xf4\x6e\x48\x8c\xc7\x03\x8f\xe8\xd7\x47\x55\xaf\xd4\x59\xe3\x4a\xe2\x7e\x6f\xce\x84\xf6\x73\xea\xaa\x3d\xf8\x2f\x1d\xb3\x2e\x32\x94\x72\xc7\x05\xa0\x28\xd8\x9f\x6b\xf0\x36\x94\x0c\xfb\x05\x1e\x91\x57\x4e\x7c\x94\x96\x4b\xca\xbc\xd8\x50\x63\x78\x65\x9f\xb4\x1f\x49\x79\x29\xe1\x27\x31\x57\xed\xf4\x8d\x64\xed\x7d\xd9\xbd\x5a\x5f\xcd\x65\xb3\xd7\x77\x49\x34\x96\xfc\x69\xad\x29\x82\xa5\x0e\x2a\x07\xf4\xd1\x70\x17\xf2\x7c\x78\x13\xe3\xf5\x6e\xf9\xf4\xc3\xae\x97\xd9\x8b\xee\x5c\xec\x8d\xdb\x37\x35\x9a\xeb\x03\x73\xfb\xa0\x49\xcf\x94\x85\xd2\x21\x3a\x88\x8f\xb9\xfb\x35\x88\xd5\x86\x57\xf8\x39\x98\x69\x54\x90\x1e\x9b\xe5\xc7\xa2\x96\x17\x9d\x74\x10\x54\x8c\x72\xcc\xfe\xdc\xde\x8e\xf2\xdf\xa7\xd4\x1e\x37\xce\x33\x2c\x48\x66\xe8\x28\x3f\xce\xf8\x09\xf2\x8f\x49\xf3\x23\x18\x1d\x4a\xed\x23\x48\xf4\x67\xdb\xae\xbb\xa1\xb5\xd0\x31\xf7\xa6\x5e\x8b\xea\x8e\x53\x5d\xd4\x1c\xac\x6f\x0e\x3f\x08\x19\xd9\x98\xca\xd2\x15\x5e\x64\x5d\x6d\xd7\xfa\xe2\x40\xda\x63\xed\x31\x0e\xfe\x53\x05\x1e\x99\x8f\x08\x2c\x27\x27\xc0\xb2\x4c\xbe\x7b\x60\xd9\xb1\x7b\xdb\xbc\x87\x17\xb3\x76\x81\xbb\x78\x29\xb6\x30\xda\x7a\x4c\x27\x6b\x41\xe5\x64\x9d\x47\x95\x33\xbd\xed\x7a\xc7\x1a\x6b\xf7\x6b\x56\xd9\x1a\x1d\x08\xef\x20\x6d\x17\xf8\xd2\xde\x67\x5f\xf3\x8c\x77\xe4\x06\x75\xd4\xb0\xd5\x23\x0f\xa8\x71\xcc\xc1\xe4\x29\xbf\x1f\xd8\xb5\xd7\x88\xfd\x8c\x49\xec\xb9\xbb\xf9\xa9\x51\x7d\xee\xc9\x1c\x07\xeb\x86\x10\x2a\xd6\x0c\x1b\x91\xa7\xfb\x8b\x64\x40\xa8\x97\x89\xc9\xc3\xa7\x89\xe9\x94\xac\xdb\x2b\x27\xf5\xd6\x56\x67\x87\x9e\xb2\x7b\x38\x27\x68\x93\xbe\x24\x1a\x0a\x1d\x5d\xd7\x7f\x53\xab\xa5\xf8\xc4\x68\xdb\x7d\x19\x37\xb5\xf1\xc0\x94\x4d\x5e\x7d\xa1\xd6\x63\xfa\xc6\x57\x09\xf1\xe2\xba\xb7\x25\xa8\x63\x00\xda\x07\x56\x87\x96\x06\x8c\xdd\x5e\x19\xb3\xb9\x32\x49\xdf\xb6\xf5\xf6\x78\x12\x2d\x1f\xa5\x34\x3b\x30\x4a\xec\xed\xb0\xbf\xd2\x3c\xb2\x5b\xdc\x23\xee\xed\x5b\x1e\xac\x76\xf6\x19\xb7\xdb\x93\x3e\xec\x7b\x89\x9d\xd0\xe1\x73\xa0\x91\x84\xaa\x83\xcc\x17\x21\x36\x7c\xd6\x32\x92\xd0\xde\x34\x2f\x4c\x6e\xc4\x41\xc7\x48\x9a\x9b\x31\x87\x00\x2f\x00\x78\xce\x8b\x14\xe5\x36\x47\x4f\x9e\x33\x68\xbd\xc8\x82\x44\xbb\x0f\x19\x31\x71\x8c\x0b\x12\x97\x85\x45\xe7\xd1\xfa\x2e\xc8\x3c\x46\xc2\x79\x45\xa0\x12\x2d\xee\xff\x6d\xd7\xa4\xea\x43\xe9\xf4\x49\x2e\x2c\x68\xc5\x19\xdc\x18\xb9\xeb\x52\x7a\xda\xf0\xaf\x3e\xf4\x91\xc2\x79\xca\xab\x8f\x49\x23\x48\x19\x7b\x61\xa8\xd3\xb0\x5d\xd0\xde\x91\xdd\x50\x7e\x0b\xde\x86\xfa\x91\xd7\x96\xf1\xde\xc1\xb3\xb0\xa8\xf9\xdb\x6b\xac\x5c\x29\xf0\xe7\x5f\x57\xff\x0d\x00\x00\xff\xff\x73\xdc\xf0\xf8\xe3\x3c\x00\x00") func operatorsCoreosCom_installplansYamlBytes() ([]byte, error) { return bindataRead( @@ -145,7 +145,7 @@ func operatorsCoreosCom_installplansYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_olmconfigsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x6d\x6f\xdb\xc8\x11\xfe\xee\x5f\x31\x50\x0f\x38\x29\x27\x51\x76\xae\xc8\xdd\xa9\x1f\x8c\x40\xd7\x1c\x8c\x26\x48\x10\xbb\x29\x50\xd7\x2d\x46\xe4\x90\xdc\x7a\xb9\xcb\xee\x8b\x6d\x5d\xd3\xff\x5e\xcc\x2e\xdf\x64\x89\xb2\x0f\x49\xcb\x2f\x12\xf7\x65\x76\x66\x9e\x99\x67\x66\x89\xb5\xf8\x44\xc6\x0a\xad\x56\x80\xb5\xa0\x07\x47\x8a\xdf\x6c\x72\xfb\xa3\x4d\x84\x5e\xde\x9d\x9d\xdc\x0a\x95\xad\x60\xed\xad\xd3\xd5\x47\xb2\xda\x9b\x94\x7e\xa6\x5c\x28\xe1\x84\x56\x27\x15\x39\xcc\xd0\xe1\xea\x04\x00\x95\xd2\x0e\x79\xd8\xf2\x2b\x40\xaa\x95\x33\x5a\x4a\x32\x8b\x82\x54\x72\xeb\x37\xb4\xf1\x42\x66\x64\x82\xf0\xf6\xe8\xbb\xd3\xe4\xec\x87\xe4\xe5\x09\x80\xc2\x8a\x56\xa0\x65\x95\x6a\x95\x8b\xc2\x26\xba\x26\x83\x4e\x1b\x9b\xa4\xda\x90\xe6\x9f\xea\xc4\xd6\x94\xf2\x01\x85\xd1\xbe\x5e\xc1\xc1\x35\x51\x56\xab\x07\x3a\x2a\xb4\x11\xed\x3b\xc0\x82\x0f\x09\xff\xa3\x7d\xef\xdf\xbe\x5b\x87\x23\xc3\x98\x14\xd6\xfd\x69\x77\xfc\xad\xb0\x2e\xcc\xd5\xd2\x1b\x94\x43\x25\xc3\xb0\x15\xaa\xf0\x12\xcd\x60\xe2\x04\xc0\xa6\xba\xa6\x15\xac\xa5\xb7\x8e\xcc\x09\x40\x63\x73\xa3\xc7\xa2\x31\xf8\xee\xac\x51\xcb\xa6\x25\x55\xd8\x2a\x09\x6c\x9a\x7a\xfd\xe1\xe2\xd3\xf7\x97\x8f\x26\x00\x32\xb2\xa9\x11\xb5\x0b\x1e\xec\xd4\x04\x61\x01\xc1\x34\x38\xf1\x9f\x5a\x2b\x2b\x36\x92\x20\xd7\x06\xa2\x62\xde\x08\x55\xf0\x9e\x64\x20\xcf\x6d\x59\x53\xbd\xf9\x27\xa5\x6e\x30\x6c\xe8\x5f\x5e\x18\xca\x86\x47\xb3\xe2\x2d\xee\x83\xe1\xda\x30\x12\x6e\xe0\xe5\xf8\x0c\xa2\x6c\x67\xfc\x91\x0d\x9f\x17\x8f\x66\x01\xd8\xf4\xb8\x13\x32\x0e\x39\xb2\xe0\x4a\x6a\x9d\x48\x59\xe3\x2f\xd0\x39\xb8\x52\x58\x30\x54\x1b\xb2\xa4\x62\x10\xf2\x30\xaa\xc6\xa4\x64\x4f\xf8\x25\x19\x16\x04\xb6\xd4\x5e\x66\xec\x9a\x3b\x32\x0e\x0c\xa5\xba\x50\xe2\xd7\x4e\xba\x05\xa7\xc3\xb1\x12\x1d\x59\x07\x42\x39\x32\x0a\x25\xdc\xa1\xf4\x34\x07\x54\xd9\x9e\xec\x0a\xb7\x60\x88\xcf\x05\xaf\x06\x12\xc3\x16\xbb\xaf\xcb\x3b\x6d\x08\x84\xca\xf5\x0a\x4a\xe7\x6a\xbb\x5a\x2e\x0b\xe1\xda\x2c\x4c\x75\x55\x79\x25\xdc\x76\x19\x12\x4a\x6c\x3c\x47\xfb\x32\xa3\x3b\x92\x4b\x2b\x8a\x05\x9a\xb4\x14\x8e\x52\xe7\x0d\x2d\xb1\x16\x8b\x60\x8c\x0a\x99\x98\x54\xd9\xef\xda\x78\xb0\x8f\x0e\x8e\x98\x5b\xc7\xf1\xb0\x33\x15\x92\xe2\x37\x82\xc5\x09\x13\xc3\x2f\x0a\x8c\xc6\xf6\x98\xf0\x10\xbb\xf1\xe3\x1f\x2f\xaf\xfa\x08\x0d\xb8\x45\x88\xfa\xa5\x07\x3c\xd4\xa2\xc5\x9e\x15\x2a\x27\x13\x77\xe6\x46\x57\x41\x2a\xa9\xac\xd6\x42\xb9\xf0\x92\x4a\x41\xca\x81\xf5\x9b\x4a\x38\x1b\x62\x98\xac\x63\x20\xf7\x05\xaf\x03\x6b\xc1\x86\xc0\xd7\x19\x3a\xca\xf6\x97\x5c\x28\x58\x63\x45\x72\x8d\x96\xfe\xef\xd8\x31\x46\x76\xc1\x80\x3c\x1b\xbd\x21\x27\xef\x6f\xd8\x4b\x71\x80\x96\x50\x47\xe1\xee\xf8\xe5\xb2\xa6\x94\x41\x66\x2f\xf3\xae\xc0\x2a\xa8\x06\x04\xd4\x22\xfb\xd8\x51\xa3\x87\x8f\x13\x07\x3f\x39\x21\x7b\xe6\xc0\xcc\x23\x15\xdf\x34\x0b\x43\xd1\x41\xa1\xa2\x8e\xcc\xe4\xcc\x03\x2d\xf1\x21\x33\xe1\xfb\xb7\xef\x3a\xb9\xfb\x78\x1e\x55\xf5\x29\x75\x83\x5a\xc2\xf2\x31\x6b\x5d\x0b\xca\xd6\x97\x9f\x46\x96\x3d\x9d\x51\xed\xf3\xf3\x63\x81\x8c\x80\xb7\x94\x31\x33\x35\xa7\xb1\x51\xdf\x5a\x98\xc4\x45\xb0\xbe\xfc\x34\x69\x6d\x1c\x95\xcb\xd8\x75\xc5\x13\x84\xb2\x0e\xa5\xa4\x0c\xb0\xcd\xa2\x50\xb5\x62\x11\x9b\xc3\x7d\x49\x86\x00\xdb\xe1\x51\xa9\x61\x79\xd6\x09\x66\x5d\xb5\xe2\x44\x47\x07\x25\x5a\xd8\x10\xa9\xc1\x61\x42\x01\xaa\x51\x61\xef\x1b\x29\xbf\x70\xa9\x8f\x32\x1c\x9a\x82\x9c\x05\x94\x32\xd6\xf8\x1a\xd3\xc3\x38\xc6\xe7\x2f\x25\x29\x30\x44\x8a\xdd\x94\xcd\x03\xfa\xf7\x42\x4a\x66\x7a\x43\xe8\x28\x18\x3b\x70\x9c\x9d\x04\xcf\x10\xa6\xe5\xa8\xd0\x1d\xdf\xf4\xc6\x8e\x69\x11\x23\x6a\xa3\xb5\xa4\x11\x63\x6b\x4c\x6f\xb1\xa0\x48\x73\x97\x5b\x95\x5e\x70\x99\xb9\x43\xf9\xa5\xc1\xf3\x61\x4c\xf0\x4e\x10\x85\xea\x1a\xb3\x7a\xab\xd2\x58\xe3\x78\x4d\xae\xc7\x81\x6e\x54\x36\x36\x88\x86\x5a\x67\x36\x69\x8f\x1b\x8c\x41\x4d\x46\xe8\x4c\xa4\x28\xe5\x16\xd2\x92\xd2\x5b\x3e\x68\x3c\x7e\x1c\x3a\x6f\x39\x69\xd7\xe8\x50\xea\xe2\x32\xd6\xae\x3f\x44\xc6\x67\xd6\x11\xb9\x68\x5a\x81\x28\x1b\x3c\xb7\x5f\x90\x79\x13\x0a\xff\xb1\x80\xaf\xd0\xc1\x94\x92\x22\x81\xc9\xab\xd3\x6a\x32\x4b\xe0\x8d\x6e\x6a\x49\x8d\x06\x2b\x72\x64\xe6\xa0\x95\xdc\x42\xa9\xbd\xb1\x30\x9d\x94\x93\xd9\x1c\x2a\xa1\xbc\xdb\x2b\xa0\xfd\x33\x9d\x54\xbc\x0c\x55\x06\x96\x52\xad\x32\xde\x69\x27\xb3\x50\xb0\x36\xd4\xa9\x9d\x25\x31\x20\xb9\xe6\x74\x63\xf3\xa3\x0e\x69\x6c\xcc\x28\x47\x2f\x5d\xd7\x8e\xc4\xf2\xda\xc9\x80\x7b\xe1\x4a\xa1\xa2\x57\x86\x20\x1c\x8f\xc9\x03\xe5\x63\x88\xb0\xe3\x5e\x67\x05\x7f\x9f\x5e\x9f\x2e\x7e\xba\xf9\x6e\xfa\xb7\x24\xfe\x99\x9d\x4f\xed\xe7\xea\x73\x39\x9b\x7d\xf7\xcd\xc9\x3e\x7a\xcf\x2c\x26\x11\xe9\xb6\x9c\xc4\xb7\xff\x75\x41\x61\x6c\xc4\xe0\x8e\x72\x48\x28\x1a\x83\xdb\x03\xb3\xc2\x51\x35\x46\xfa\x43\x0b\xd7\xed\x19\x7d\x31\xca\xc8\xa1\x90\xd1\x3c\xa6\x43\x64\xe0\x5c\xec\x5c\x09\x52\x6f\x4c\xe8\x58\x1c\xf3\x51\xdb\xce\xbe\xfe\x70\x01\x1f\x47\xac\x7f\xd2\x07\xf1\x39\xdc\xbe\xf7\xcf\x02\x24\x5a\x77\x65\x50\xd9\xa0\xf0\x95\xa8\xc6\x02\x91\x7b\x7e\x6b\xb1\x18\x9f\x37\x84\x76\x34\xfb\x16\x0d\xc0\xa3\xd3\x6c\xcb\x61\x6a\x7c\xa2\xde\xc2\x01\x1b\xc6\x56\x3e\x9f\x37\x0f\x49\x6d\x43\x95\x67\xc0\xf1\x40\x00\xaf\x43\xdb\x75\xab\x29\x8b\xad\x29\x43\xdd\x04\xb6\xd3\x80\x4a\xbb\x72\x3c\x23\xf9\xb9\x0a\x1c\x17\xaf\x24\x1b\xe2\xa2\x1b\x53\xda\xab\x8c\x8c\xdc\x32\xcd\xf5\xe7\xa5\x25\xaa\x82\x29\x05\x2e\xf2\x58\x1c\x85\x0d\xcc\x72\xab\xf4\xbd\x0a\xac\xa2\x1a\x6e\x64\x19\x41\xe3\x4e\x22\x47\x57\x2e\x88\xaf\x3e\x51\x4c\x68\xde\xd3\x94\x6a\xc7\x95\x72\x5c\xc9\x67\x10\x47\x4b\xb5\x2b\xe0\x96\x7a\xe1\xc6\xa3\xaa\x89\xa9\xaf\x81\x57\x23\x2a\xde\x41\x4a\x5f\x21\x97\x7d\xcc\x42\x77\xd4\xcd\x29\x2e\x44\xe1\x2e\xd2\x66\x24\x6e\xb4\x8f\x0d\x4f\x0f\xdf\x93\x08\x35\xac\x8e\x0a\xa8\xaa\xdd\xb6\xf1\xc6\x17\xfa\xac\xc2\x87\xb7\xa4\x0a\x57\xae\xe0\xfb\x97\x3f\xbc\xfa\x71\x64\xa1\xde\x04\x62\xcf\x7e\x21\x45\xb1\xe0\x7d\x0d\xef\xed\x4b\x1d\xdc\xc7\x82\x7b\x92\xf6\x5e\x91\x14\xfd\x9a\xd8\x92\xed\x64\xc1\x3d\x5a\xb0\xe4\x60\x83\xdc\x5d\xf8\xfa\xb8\x3b\xb9\xfc\x86\x6e\x50\xa5\x34\x07\x91\x1f\x3e\x46\xd8\x96\x23\xe5\x16\xce\x5e\xce\x61\xd3\x60\x96\xc4\xec\x4a\x7a\x5a\xbf\x7e\xb8\x49\x0e\x18\x23\x2c\xfc\x34\x7f\xa4\x29\xb7\xa6\x3e\x90\x30\x87\xe9\x11\x25\xb9\xb6\x86\x8f\x29\xcc\xd9\x4d\xfd\x3d\xc0\xd9\xd4\x59\xf2\x54\x24\x70\x83\x55\x1c\x69\xa2\xdb\xf4\x11\xca\xbd\xfa\xfd\x78\xc0\x08\x25\x2a\x5f\xad\xe0\x74\x64\x49\x64\xe4\xaf\x11\x1e\x51\x52\x5f\xcf\x90\x69\xb9\x30\x58\x55\xe8\x44\x0a\x22\xe3\x2b\x6b\x2e\xc8\x0c\x53\x8c\x3d\xd2\x6c\xcc\x43\x97\x35\x70\xfe\xb7\xb6\xa1\xd1\x67\x25\xdd\x07\xa3\x33\x9f\x92\x09\x7d\x61\xd3\xf3\xa4\x43\xe6\xe5\x5b\x72\xc8\xca\xa6\x95\xa5\x07\xc6\xaa\xfb\xe4\x12\x1a\xb3\x8a\x50\x09\x55\xd8\x46\x19\x61\x23\xff\xcd\x8f\x9c\xcb\xdb\xee\x4b\x62\xd6\xee\x9b\x2e\x0b\x68\x82\x25\x56\x64\x64\xf8\xc2\x04\x85\x47\x83\xca\x11\x65\xcc\xab\xc7\xe9\xa3\x6b\xdd\x3a\x96\xc7\xfe\xfb\xc2\x93\x4c\xd2\x10\x50\x64\x6e\x36\xb8\xf9\x7a\x11\x78\xe8\xeb\x11\xd0\xd9\xe9\xcb\xa3\x71\xd7\xad\x3b\x72\x3d\x68\x9b\xc7\xeb\xd7\x8b\xbf\xe2\xe2\xd7\x9b\x69\xf3\xe7\x74\xf1\xd3\x3f\xe6\xab\x9b\x17\x83\xd7\x9b\xd9\xf9\x37\x23\x92\x0e\x77\x94\xfd\xb3\x13\xc3\xfd\xe5\x61\x27\xd8\xe6\xa1\x10\xeb\x1c\xae\x8c\xa7\x39\xbc\x41\x69\x69\x0e\x7f\x56\xa1\x4e\x7e\xa1\xd3\x48\xf9\x6a\x5c\x3b\xee\x6c\x26\x7c\xea\xe4\xf8\x92\xa0\xd2\xf1\x35\x8d\xba\xc7\xda\xf9\xe7\x39\x89\x97\x36\x1f\x45\x5a\x22\x1c\x7c\xe1\x82\x40\xc8\x90\x6b\x9d\xd0\x03\x56\xb5\xa4\x24\xd5\xd5\xf2\xc8\x17\xb0\x1d\x15\x7e\x4b\x91\x3b\x7b\xf5\x8c\xe8\x99\x5e\xc7\x18\xb9\x99\x5e\x2f\x9a\x7f\x2f\xda\xa1\xd9\x39\xdf\x48\x8e\xcd\xcf\x5e\x2c\x67\xe7\xd3\x41\xe4\xdd\x5c\x2f\xfa\xb0\x4b\x6e\x5e\xcc\xce\x07\x73\xb3\x36\x08\x63\xf9\x58\x81\x33\xbe\xad\x0b\xd6\x69\xc3\x9d\xca\xce\x98\xdf\x74\xdf\x56\x7b\xe7\x37\x11\x0b\xff\xfe\xcf\xc9\x7f\x03\x00\x00\xff\xff\x92\x21\x92\xe4\x62\x19\x00\x00") +var _operatorsCoreosCom_olmconfigsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xbc\x58\x6d\x6f\xdb\xc8\x11\xfe\xee\x5f\x31\x50\x0f\x38\x29\x27\x51\x76\xae\x48\x13\xf5\x43\x10\xe8\x9a\x83\xd1\x04\x09\x62\x37\x05\xea\xba\xc5\x88\x1c\x92\x5b\x2f\x77\xd9\x7d\xb1\xad\x6b\xfa\xdf\x8b\xd9\xe5\x9b\x2c\x51\xf6\x21\xe9\xf1\x8b\xc4\x7d\x99\x9d\x99\x67\xe6\x99\x59\x62\x2d\x3e\x93\xb1\x42\xab\x15\x60\x2d\xe8\xde\x91\xe2\x37\x9b\xdc\xbc\xb4\x89\xd0\xcb\xdb\xb3\x93\x1b\xa1\xb2\x15\xac\xbd\x75\xba\xfa\x44\x56\x7b\x93\xd2\x4f\x94\x0b\x25\x9c\xd0\xea\xa4\x22\x87\x19\x3a\x5c\x9d\x00\xa0\x52\xda\x21\x0f\x5b\x7e\x05\x48\xb5\x72\x46\x4b\x49\x66\x51\x90\x4a\x6e\xfc\x86\x36\x5e\xc8\x8c\x4c\x10\xde\x1e\x7d\x7b\x9a\x9c\xbd\x4c\x4e\x4f\x00\x14\x56\xb4\x02\x2d\xab\x54\xab\x5c\x14\x36\xd1\x35\x19\x74\xda\xd8\x24\xd5\x86\x34\xff\x54\x27\xb6\xa6\x94\x0f\x28\x8c\xf6\xf5\x0a\x0e\xae\x89\xb2\x5a\x3d\xd0\x51\xa1\x8d\x68\xdf\x01\x16\x7c\x48\xf8\x1f\xed\xfb\xf0\xee\xfd\x3a\x1c\x19\xc6\xa4\xb0\xee\xcf\xbb\xe3\xef\x84\x75\x61\xae\x96\xde\xa0\x1c\x2a\x19\x86\xad\x50\x85\x97\x68\x06\x13\x27\x00\x36\xd5\x35\xad\x60\x2d\xbd\x75\x64\x4e\x00\x1a\x9b\x1b\x3d\x16\x8d\xc1\xb7\x67\x8d\x5a\x36\x2d\xa9\xc2\x56\x49\x60\xd3\xd4\x9b\x8f\xe7\x9f\x7f\xbc\x78\x30\x01\x90\x91\x4d\x8d\xa8\x5d\xf0\x60\xa7\x26\x08\x0b\x08\xa6\xc1\x89\xff\xd4\x5a\x59\xb1\x91\x04\xb9\x36\x10\x15\xf3\x46\xa8\x82\xf7\x24\x03\x79\x6e\xcb\x9a\xea\xcd\xbf\x28\x75\x83\x61\x43\xff\xf6\xc2\x50\x36\x3c\x9a\x15\x6f\x71\x1f\x0c\xd7\x86\x91\x70\x03\x2f\xc7\x67\x10\x65\x3b\xe3\x0f\x6c\xf8\xb2\x78\x30\x0b\xc0\xa6\xc7\x9d\x90\x71\xc8\x91\x05\x57\x52\xeb\x44\xca\x1a\x7f\x81\xce\xc1\x95\xc2\x82\xa1\xda\x90\x25\x15\x83\x90\x87\x51\x35\x26\x25\x7b\xc2\x2f\xc8\xb0\x20\xb0\xa5\xf6\x32\x63\xd7\xdc\x92\x71\x60\x28\xd5\x85\x12\xbf\x74\xd2\x2d\x38\x1d\x8e\x95\xe8\xc8\x3a\x10\xca\x91\x51\x28\xe1\x16\xa5\xa7\x39\xa0\xca\xf6\x64\x57\xb8\x05\x43\x7c\x2e\x78\x35\x90\x18\xb6\xd8\x7d\x5d\xde\x6b\x43\x20\x54\xae\x57\x50\x3a\x57\xdb\xd5\x72\x59\x08\xd7\x66\x61\xaa\xab\xca\x2b\xe1\xb6\xcb\x90\x50\x62\xe3\x39\xda\x97\x19\xdd\x92\x5c\x5a\x51\x2c\xd0\xa4\xa5\x70\x94\x3a\x6f\x68\x89\xb5\x58\x04\x63\x54\xc8\xc4\xa4\xca\x7e\xd7\xc6\x83\x7d\x70\x70\xc4\xdc\x3a\x8e\x87\x9d\xa9\x90\x14\xbf\x12\x2c\x4e\x98\x18\x7e\x51\x60\x34\xb6\xc7\x84\x87\xd8\x8d\x9f\xfe\x74\x71\xd9\x47\x68\xc0\x2d\x42\xd4\x2f\x3d\xe0\xa1\x16\x2d\xf6\xac\x50\x39\x99\xb8\x33\x37\xba\x0a\x52\x49\x65\xb5\x16\xca\x85\x97\x54\x0a\x52\x0e\xac\xdf\x54\xc2\xd9\x10\xc3\x64\x1d\x03\xb9\x2f\x78\x1d\x58\x0b\x36\x04\xbe\xce\xd0\x51\xb6\xbf\xe4\x5c\xc1\x1a\x2b\x92\x6b\xb4\xf4\x9b\x63\xc7\x18\xd9\x05\x03\xf2\x64\xf4\x86\x9c\xbc\xbf\x61\x2f\xc5\x01\x5a\x42\x1d\x85\xbb\xe3\x97\x8b\x9a\x52\x06\x99\xbd\xcc\xbb\x02\xab\xa0\x1a\x10\x50\x8b\xec\x43\x47\x8d\x1e\x3e\x4e\x1c\xfc\xe4\x84\xec\x99\x03\x33\x0f\x54\x7c\xdb\x2c\x0c\x45\x07\x85\x8a\x3a\x32\x93\x33\x0f\xb4\xc4\x87\xcc\x84\x1f\xde\xbd\xef\xe4\xee\xe3\x79\x54\xd5\xc7\xd4\x0d\x6a\x09\xcb\xc7\xac\x75\x2d\x28\x5b\x5f\x7c\x1e\x59\xf6\x78\x46\xb5\xcf\x4f\x0f\x05\x32\x02\xde\x52\xc6\xcc\xd4\x9c\xc6\x46\x7d\x6f\x61\x12\x17\xc1\xfa\xe2\xf3\xa4\xb5\x71\x54\x2e\x63\xd7\x15\x4f\x10\xca\x3a\x94\x92\x32\xc0\x36\x8b\x42\xd5\x8a\x45\x6c\x0e\x77\x25\x19\x02\x6c\x87\x47\xa5\x86\xe5\x59\x27\x98\x75\xd5\x8a\x13\x1d\x1d\x94\x68\x61\x43\xa4\x06\x87\x09\x05\xa8\x46\x85\x7d\x68\xa4\xfc\xcc\xa5\x3e\xca\x70\x68\x0a\x72\x16\x50\xca\x58\xe3\x6b\x4c\x0f\xe3\x18\x9f\xbf\x96\xa4\xc0\x10\x29\x76\x53\x36\x0f\xe8\xdf\x09\x29\x99\xe9\x0d\xa1\xa3\x60\xec\xc0\x71\x76\x12\x3c\x43\x98\x96\xa3\x42\x77\x7c\xd3\x1b\x3b\xa6\x45\x8c\xa8\x8d\xd6\x92\x46\x8c\xad\x31\xbd\xc1\x82\x22\xcd\x5d\x6c\x55\x7a\xce\x65\xe6\x16\xe5\xd7\x06\xcf\xc7\x31\xc1\x3b\x41\x14\xaa\x6b\xcc\xea\xad\x4a\x63\x8d\xe3\x35\xb9\x1e\x07\xba\x51\xd9\xd8\x20\x1a\x6a\x9d\xd9\xa4\x3d\x6e\x30\x06\x35\x19\xa1\x33\x91\xa2\x94\x5b\x48\x4b\x4a\x6f\xf8\xa0\xf1\xf8\x71\xe8\xbc\xe5\xa4\x5d\xa3\x43\xa9\x8b\x8b\x58\xbb\xfe\x18\x19\x9f\x59\x47\xe4\xa2\x69\x05\xa2\x6c\xf0\xdc\x7e\x41\xe6\x4d\x28\xfc\xc7\x02\xbe\x42\x07\x53\x4a\x8a\x04\x26\x2f\x4e\xab\xc9\x2c\x81\xb7\xba\xa9\x25\x35\x1a\xac\xc8\x91\x99\x83\x56\x72\x0b\xa5\xf6\xc6\xc2\x74\x52\x4e\x66\x73\xa8\x84\xf2\x6e\xaf\x80\xf6\xcf\x74\x52\xf1\x32\x54\x19\x58\x4a\xb5\xca\x78\xa7\x9d\xcc\x42\xc1\xda\x50\xa7\x76\x96\xc4\x80\xe4\x9a\xd3\x8d\xcd\x8f\x3a\xa4\xb1\x31\xa3\x1c\xbd\x74\x5d\x3b\x12\xcb\x6b\x27\x03\xee\x84\x2b\x85\x8a\x5e\x19\x82\x70\x3c\x26\x0f\x94\x8f\x21\xc2\x8e\x7b\x9d\x15\xfc\x63\x7a\x75\xba\x78\x75\xfd\xc3\xf4\xef\x49\xfc\x33\x7b\x3d\xb5\x5f\xaa\x2f\xe5\x6c\xf6\xc3\x77\x27\xfb\xe8\x3d\xb1\x98\x44\xa4\xdb\x72\x12\xdf\xfe\xdf\x05\x85\xb1\x11\x83\x3b\xca\x21\xa1\x68\x0c\x6e\x0f\xcc\x0a\x47\xd5\x18\xe9\x0f\x2d\x5c\xb7\x67\xf4\xc5\x28\x23\x87\x42\x46\xf3\x98\x0e\x91\x81\x73\xb1\x73\x25\x48\xbd\x31\xa1\x63\x71\xcc\x47\x6d\x3b\xfb\xe6\xe3\x39\x7c\x1a\xb1\xfe\x51\x1f\xc4\xe7\x70\xfb\xde\x3f\x0b\x90\x68\xdd\xa5\x41\x65\x83\xc2\x97\xa2\x1a\x0b\x44\xee\xf9\xad\xc5\x62\x7c\xde\x10\xda\xd1\xec\x5b\x34\x00\x8f\x4e\xb3\x2d\x87\xa9\xf1\x91\x7a\x0b\x07\x6c\x18\x5b\xf9\x74\xde\x3c\x24\xb5\x0d\x55\x9e\x01\xc7\x03\x01\xbc\x0e\x6d\xd7\xad\xa6\x2c\xb6\xa6\x0c\x75\x13\xd8\x4e\x03\x2a\xed\xca\xf1\x8c\xe4\xe7\x32\x70\x5c\xbc\x92\x6c\x88\x8b\x6e\x4c\x69\xaf\x32\x32\x72\xcb\x34\xd7\x9f\x97\x96\xa8\x0a\xa6\x14\x38\xcf\x63\x71\x14\x36\x30\xcb\x8d\xd2\x77\x2a\xb0\x8a\x6a\xb8\x91\x65\x04\x8d\x3b\x89\x1c\x5d\xb9\x20\xbe\xfa\x44\x31\xa1\x79\x4f\x53\xaa\x1d\x57\xca\x71\x25\x9f\x40\x1c\x2d\xd5\xae\x80\x5b\xea\x85\x1b\x8f\xaa\x26\xa6\xbe\x05\x5e\x8d\xa8\x78\x07\x29\x7d\x85\x5c\xf6\x31\x0b\xdd\x51\x37\xa7\xb8\x10\x85\xbb\x48\x9b\x91\xb8\xd1\x3e\x36\x3c\x3d\x7c\x8f\x22\xd4\xb0\x3a\x2a\xa0\xaa\x76\xdb\xc6\x1b\x5f\xe9\xb3\x0a\xef\xdf\x91\x2a\x5c\xb9\x82\x1f\x9f\xff\xe1\xc5\xcb\x91\x85\x7a\x13\x88\x3d\xfb\x99\x14\xc5\x82\xf7\x2d\xbc\xb7\x2f\x75\x70\x1f\x0b\xee\x49\xda\x7b\x45\x52\xf4\x6b\x62\x4b\xb6\x93\x05\x77\x68\xc1\x92\x83\x0d\x72\x77\xe1\xeb\xe3\xee\xe4\xf2\x1b\xba\x41\x95\xd2\x1c\x44\x7e\xf8\x18\x61\x5b\x8e\x94\x5b\x38\x7b\x3e\x87\x4d\x83\x59\x12\xb3\x2b\xe9\x69\xfd\xea\xfe\x3a\x39\x60\x8c\xb0\xf0\x6a\xfe\x40\x53\x6e\x4d\x7d\x20\x61\x0e\xd3\x23\x4a\x72\x6d\x0d\x1f\x53\x98\xb3\x9b\xfa\x7b\x80\xb3\xa9\xb3\xe4\xb1\x48\xe0\x06\xab\x38\xd2\x44\xb7\xe9\x23\x94\x7b\xf1\xfb\xf1\x80\x11\x4a\x54\xbe\x5a\xc1\xe9\xc8\x92\xc8\xc8\xdf\x22\x3c\xa2\xa4\xbe\x9e\x21\xd3\x72\x61\xb0\xaa\xd0\x89\x14\x44\xc6\x57\xd6\x5c\x90\x19\xa6\x18\x7b\xa4\xd9\x98\x87\x2e\x6b\xe0\xfc\xef\x6d\x43\xa3\x4f\x4a\xba\x8f\x46\x67\x3e\x25\x13\xfa\xc2\xa6\xe7\x49\x87\xcc\xcb\xb7\xe4\x90\x95\x4d\x2b\x4b\xf7\x8c\x55\xf7\xc9\x25\x34\x66\x15\xa1\x12\xaa\xb0\x8d\x32\xc2\x46\xfe\x9b\x1f\x39\x97\xb7\xdd\x95\xc4\xac\xdd\x37\x5d\x16\xd0\x04\x4b\xac\xc8\xc8\xf0\x85\x09\x0a\x8f\x06\x95\x23\xca\x98\x57\x8f\xd3\x47\xd7\xba\x75\x2c\x8f\xfd\xf7\x85\x47\x99\xa4\x21\xa0\xc8\xdc\x6c\x70\xf3\xf5\x22\xf0\xd0\xb7\x23\xa0\xb3\xd3\xe7\x47\xe3\xae\x5b\x77\xe4\x7a\xd0\x36\x8f\x57\x6f\x16\x7f\xc3\xc5\x2f\xd7\xd3\xe6\xcf\xe9\xe2\xd5\x3f\xe7\xab\xeb\x67\x83\xd7\xeb\xd9\xeb\xef\x46\x24\x1d\xee\x28\xfb\x67\x27\x86\xfb\xcb\xc3\x4e\xb0\xcd\x43\x21\xd6\x39\x5c\x1a\x4f\x73\x78\x8b\xd2\xd2\x1c\xfe\xa2\x42\x9d\xfc\x4a\xa7\x91\xf2\xd5\xb8\x76\xdc\xd9\x4c\xf8\xd4\xc9\xf1\x25\x41\xa5\xe3\x6b\x1a\x75\x8f\xb5\xf3\x4f\x73\x12\x2f\x6d\x3e\x8a\xb4\x44\x38\xf8\xc2\x05\x81\x90\x21\xd7\x3a\xa1\x7b\xac\x6a\x49\x49\xaa\xab\xe5\x91\x2f\x60\x3b\x2a\xfc\x9a\x22\x77\xf6\xe2\x09\xd1\x33\xbd\x8a\x31\x72\x3d\xbd\x5a\x34\xff\x9e\xb5\x43\xb3\xd7\x7c\x23\x39\x36\x3f\x7b\xb6\x9c\xbd\x9e\x0e\x22\xef\xfa\x6a\xd1\x87\x5d\x72\xfd\x6c\xf6\x7a\x30\x37\x6b\x83\x30\x96\x8f\x15\x38\xe3\xdb\xba\x60\x9d\x36\xdc\xa9\xec\x8c\xf9\x4d\xf7\x6d\xb5\x77\x7e\x13\xb1\xf0\x9f\xff\x9e\xfc\x2f\x00\x00\xff\xff\xf7\x33\xa2\x7e\x62\x19\x00\x00") func operatorsCoreosCom_olmconfigsYamlBytes() ([]byte, error) { return bindataRead( @@ -165,7 +165,7 @@ func operatorsCoreosCom_olmconfigsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\xdb\xb8\x11\x7f\xd7\xa7\xd8\xb9\x76\xa6\x76\x46\xa2\x62\x5f\x27\x77\xa7\x97\x4c\xc6\xed\x75\x32\x4d\x9a\xcc\xc5\xbd\x87\xba\x6e\x6f\x49\xae\x24\x34\x24\xc0\xe2\x8f\x6c\x5d\xdb\xef\xde\x59\x80\x14\x29\x91\x94\x9c\xc6\x93\xde\x78\xc0\x17\x5b\x04\xb0\x58\xec\x9f\xdf\xe2\x07\x02\x2b\xf1\x23\x69\x23\x94\x5c\x00\x56\x82\xee\x2d\x49\xfe\x65\x92\x8f\xdf\x9a\x44\xa8\xf9\xe6\x62\xf2\x51\xc8\x7c\x01\x57\xce\x58\x55\xfe\x40\x46\x39\x9d\xd1\xef\x68\x29\xa4\xb0\x42\xc9\x49\x49\x16\x73\xb4\xb8\x98\x00\xa0\x94\xca\x22\xbf\x36\xfc\x13\x20\x53\xd2\x6a\x55\x14\xa4\x67\x2b\x92\xc9\x47\x97\x52\xea\x44\x91\x93\xf6\xc2\x9b\xa9\x37\xcf\x93\x8b\x6f\x92\xcb\x09\x80\xc4\x92\x16\xa0\x2a\xd2\x68\x95\xce\x94\xcc\xfd\x2c\x26\x69\x5e\x99\x24\x53\x9a\x14\xff\x29\x27\xa6\xa2\x8c\x27\x5a\x69\xe5\xaa\x76\xd8\x5e\x9f\x20\xb3\xd1\x07\x2d\xad\x94\x16\xcd\x6f\x80\x19\xa8\xa2\xf4\xff\x87\x75\xbe\xab\x65\x5c\x35\x53\xfb\xb6\x42\x18\xfb\xc7\xe1\xf6\x37\xc2\x58\xdf\xa7\x2a\x9c\xc6\x62\x48\x79\xdf\x6c\xd6\x4a\xdb\x3f\xb5\xaa\xf0\xd4\xd9\xde\x24\x46\xc8\x95\x2b\x50\x0f\x88\x98\x00\x98\x4c\x55\xb4\x00\x2f\xa1\xc2\x8c\xf2\x09\x40\x6d\xc0\x5a\xe2\xac\xb6\xde\xe6\xa2\x9e\xc0\x64\x6b\x2a\xb1\x99\x0e\x58\xac\x7c\xf5\xfe\xf5\x8f\x5f\x7f\x38\x68\x00\xc8\xc9\x64\x5a\x54\xd6\xbb\xa3\xb7\x46\x10\x06\xb0\x0e\x01\x68\x62\x00\xd4\x12\xec\xb6\x22\xf8\xa9\xd7\xff\x27\xb8\x5b\x8b\x6c\xcd\xc3\x9c\xa1\x1c\xac\xe2\xa5\x6e\x68\x0b\x42\x2e\x95\x2e\x7d\x88\xf0\xdb\x77\x6f\xde\x02\xa6\xca\x59\xb0\x6b\x02\x63\xd1\x7a\xb1\x28\x77\x26\x48\x3a\x4a\xf2\x6c\x0b\x50\xe9\x3f\x28\xb3\x9d\xd7\x9a\xfe\xe9\x84\xa6\xbc\xbb\x1e\xb6\x46\x13\x99\x9d\xd7\x95\x66\xb9\xb6\xe3\xff\xf0\x74\xf2\x60\xef\xfd\x81\x61\xfe\x3d\x3b\x68\x05\x60\x7b\x86\x91\x90\x73\x52\x90\xf1\x4b\xa9\x3d\x43\x79\xed\x04\x6f\xac\xb5\x30\xa0\xa9\xd2\x64\x48\x86\x34\x69\x16\xeb\x97\x94\xf4\x84\x7f\x20\xcd\x82\x38\x76\x5c\x91\x07\x1b\x6a\x0b\x9a\x32\xb5\x92\xe2\xe7\x9d\x74\xc3\xb6\xe4\x69\x0b\xb4\x64\x2c\x08\x69\x49\x4b\x2c\x60\x83\x85\xa3\x29\xa0\xcc\x7b\xb2\x4b\xdc\x82\x26\x9e\x17\x9c\xec\x48\xf4\x43\x4c\x5f\x97\xb7\x4a\x93\x77\xdf\x02\xd6\xd6\x56\x66\x31\x9f\xaf\x84\x6d\x70\x22\x53\x65\xe9\xa4\xb0\xdb\xb9\x4f\x79\x91\x3a\xce\xc3\x79\x4e\x1b\x2a\xe6\x46\xac\x66\xa8\xb3\xb5\xb0\x94\x59\xa7\x69\x8e\x95\x98\xf9\xc5\xc8\x90\xdc\x65\xfe\x2b\x5d\x47\x95\x39\x98\x38\xf8\xdc\x58\x2d\xe4\x6a\xaf\xc9\xa7\xeb\x27\x3a\x8b\x53\x38\xc4\x72\x10\x18\x16\xdb\xfa\x84\x5f\xb1\x19\x7f\xf8\xfd\x87\x6b\x68\x34\x0a\x7e\x0b\x2e\x6a\xbb\x0e\x58\xa8\xf1\x16\x5b\x56\xc8\x25\xe9\x30\x72\xa9\x55\xe9\xa5\x92\xcc\x2b\x25\x64\x88\xf5\xac\x10\x24\x2d\x18\x97\x96\xc2\x1a\x1f\xc3\x64\x2c\x3b\xb2\x2f\xf8\xca\xe3\x2a\xa4\x04\xae\xca\xd1\x52\xde\xef\xf2\x5a\xc2\x15\x96\x54\x5c\xa1\xa1\x2f\xee\x3b\xf6\x91\x99\xb1\x43\x1e\xec\xbd\x6e\xd5\xe8\x0f\xe8\xa5\x38\x40\x03\xf5\xa3\xee\xee\x81\xd0\x87\x8a\x32\xc0\xa2\x50\x77\xec\xf0\xac\x70\xc6\x92\x06\xcc\x4b\x21\x47\x00\xe9\x38\x12\xd5\x78\x35\x85\x4a\x59\x5e\x3c\x16\xc5\x16\xd4\x86\xb4\x16\x39\x07\x4e\x18\xa3\xa9\x52\xda\x52\x0e\xe9\xd6\x4b\x1a\xc2\xb1\xa3\x0b\x1d\x07\xa9\xb0\xe4\xaa\x50\xdb\x92\x03\xb0\xdf\xd8\x48\x45\xad\x71\x3b\xd0\x2a\x2c\x95\x83\xc3\x8e\x38\x8a\x9f\x7a\x91\x43\xfa\x7c\xc6\x94\x7b\xde\x6b\x4b\x0d\xc7\x20\x0a\x69\x20\x27\x8b\xa2\x30\xb0\x54\x1a\x94\x24\x40\x0e\x01\x1b\x80\x94\x20\x73\x5a\xfb\x04\x6a\x3c\xe5\x73\xed\xd5\xfb\xd7\xbb\xfa\xd4\x4f\x03\x38\x6e\xf7\xf0\x0c\x57\x93\xf6\xe1\xba\x62\x0c\xae\x68\xb4\x5d\x13\x9a\xba\xa4\x0f\x35\xb3\xc6\xee\x30\x51\xda\x66\x56\x70\xb0\xf1\x58\x58\x84\xa7\x40\x63\xaf\x35\x4a\xe3\x2d\x79\x2d\x4a\x1a\xeb\x79\x1a\x2a\x8f\x49\x65\x08\x0d\xd5\xc6\x58\xb0\xfc\xc2\x7b\x64\xe7\x42\xbb\xeb\x4d\x79\x80\x3f\xf6\x5f\x58\x37\x67\x11\x4a\x65\xd7\xd4\x4b\x89\xee\x73\xcd\xde\xac\xcb\x5e\x4a\x70\xb7\x26\xe9\x27\x71\x32\x27\x5d\x6c\x39\xdf\xda\xf9\xb2\x35\xca\x15\xe5\x09\xc0\x6b\x8e\x03\xb4\xac\x20\x23\xe6\x47\xa9\xee\xe4\x94\x07\x4a\x70\xa6\x41\x77\xaf\xf1\x4e\x22\x87\xcc\x52\x10\x97\xd7\x20\xc6\x17\x88\x2c\xa3\xca\x62\x5a\x8c\x44\x11\x9c\x4a\x99\xe6\x09\xe0\xb2\x00\x86\xed\x19\x4f\x3c\xd2\xb3\x8e\xa9\xc7\xf0\x57\x2d\x2a\xd4\xb9\xb5\x2b\x51\x72\x44\xe6\xbc\x98\xb6\x4d\xe6\x22\x43\x5f\xef\x9a\x34\x6b\xc1\xaf\x75\xdf\x49\x0f\x71\xa9\x4b\x89\x51\x92\xca\xca\x6e\x6b\x6b\x7c\xa6\xcd\x4a\xbc\x7f\x43\x72\x65\xd7\x0b\xf8\xfa\xf2\x9b\x17\xdf\x8e\x74\x54\xa9\xe1\x82\x9b\xff\x81\x24\x43\xec\xc0\xde\xed\x7f\xb1\x5e\x5f\x6a\xa7\xe6\x7b\xf3\x24\x4d\xed\x4a\x56\x6d\x1f\x1f\x75\xfb\x59\x70\x87\x06\x0c\x59\x48\x91\xb7\xc0\xae\x3a\x6e\xce\xef\x95\x06\x21\x8d\x45\x99\xd1\x14\xc4\x72\x78\x1a\x61\x1a\xe0\x2b\xb6\x70\x71\x39\x85\xb4\xf6\x59\x12\xb2\x2b\x69\x49\xc7\xcd\xfd\x6d\x32\xb0\x18\x61\xe0\xbb\xe9\x81\xa6\xbc\xbd\x71\x1e\x59\x39\x4c\x8f\x28\x79\x27\xec\x9a\xf7\x45\x1e\x88\xeb\x2d\xe7\x00\x10\xd3\x6e\x25\xa7\x22\x81\x37\xaa\x2b\xd2\x27\xd3\x47\x48\xfb\xe2\xb7\xe3\x01\x23\xa4\x28\x5d\xb9\x80\xe7\x23\x5d\x02\x22\x3f\x46\x78\x04\x49\x6d\x91\x42\x86\xe5\x95\xc6\x92\xb7\x10\x19\x88\x9c\x77\x06\x4b\x41\xba\x9b\x62\x6c\x91\x7a\x20\x17\xb3\x3d\xe3\xff\xc6\xd4\x30\xfa\xa0\xa4\x7b\xaf\x55\xee\x32\xde\x64\xaa\xa5\xdf\x12\x89\xa5\xc8\xba\xc8\xcb\x3b\x31\x9f\x95\x81\x8c\x00\xdd\xb3\xaf\x76\xdb\x7a\x66\x02\x50\x12\x4a\x21\x57\xa6\x56\x86\xb7\xa8\x8c\x7f\xd3\x23\xf3\xf2\xb0\xbb\x35\x31\x6a\x07\x7a\x53\x4b\xd3\x7e\x25\x46\xe4\xa4\x29\x07\x84\x95\x43\x8d\xd2\x12\xe5\x8c\xab\xc7\xe1\xa3\x96\xd2\x41\x79\x6c\xf7\xb0\x27\x91\xa4\x06\xa0\x80\xdc\xbc\xe0\x7a\x87\xec\x71\xe8\xf1\x00\xe8\xe2\xf9\xe5\xd1\xb8\xdb\xf5\x1b\xed\x54\xa1\x65\x32\xb6\x80\xbf\xdd\xbc\x9a\xfd\x05\x67\x3f\xdf\x9e\xd5\xff\x3c\x9f\x7d\xf7\xf7\xe9\xe2\xf6\x59\xe7\xe7\xed\xf9\xcb\x5f\x8f\x48\x0a\x09\xfe\xc0\x18\xae\x6b\x6d\xb3\x57\x6a\xe2\x63\xea\x0b\xb1\x5a\xc2\xb5\x66\x5a\xf8\x3d\x16\x86\xa6\xf0\x67\xe9\xeb\xe4\x67\x1a\x8d\xa4\x2b\xc7\xb5\xe3\x9d\xcd\x57\x3c\xeb\x57\xc7\xbb\x78\x95\x8e\xf7\xa9\xd5\x1d\xe9\xe3\x75\x7d\x98\x91\xfc\xe1\x85\x5a\x76\x81\xb0\xc3\xa2\xc0\x03\x32\x2c\x95\x4a\xe8\x1e\xcb\xaa\xa0\x24\x53\xe5\xfc\x08\xcb\xda\x53\xe1\x53\x8a\xdc\xc5\x8b\x07\x44\xcf\xd9\x4d\x88\x91\xdb\xb3\x9b\x59\xfd\xdf\xb3\xe6\xd5\xf9\xcb\xb3\xbf\x26\x47\xdb\xcf\x9f\xcd\xcf\x5f\x9e\x75\x22\xef\xf6\x66\xd6\x86\x5d\x72\xfb\xec\xfc\x65\xa7\xed\xbc\x1f\x84\x5c\x48\x44\x46\xaf\xb2\x4c\xb9\x2f\x46\x3e\x86\x63\xfe\x14\x5a\xf7\x99\x60\xc8\x86\x86\x0b\xee\x53\xba\x01\x1e\xc8\x84\x3c\x94\xb3\x40\xf9\x12\x8f\x56\x75\x4e\x31\xd6\x58\x8d\xa2\xf0\xa9\x85\x99\x75\x58\xf4\xad\xb5\xe3\x8f\x60\xb6\xc6\x52\xf9\x48\xf4\xaf\x2d\xef\x91\x8a\x31\x16\xf4\xb9\x49\x64\x6d\x63\x52\x23\x6b\x83\xc8\xda\x22\x6b\x8b\xac\x2d\xb2\xb6\xc8\xda\x22\x6b\x8b\xac\x0d\x22\x6b\x3b\x54\xe1\x69\xb0\xb6\x50\x3e\x16\x60\xb5\x6b\xea\x82\xb1\x4a\xf3\x4e\x05\x96\xec\xaa\xe6\xa5\x4b\x77\x9f\x5d\x5b\xeb\xd7\x21\x0b\xff\xfa\xcf\x04\xba\xb7\x0a\x2e\x9b\x51\xf1\x56\x41\xbc\x55\x10\x6f\x15\xb4\x4f\xbc\x55\xf0\x74\x6f\x15\x3c\xe8\x78\xa9\x7b\xd1\x60\xff\x70\x29\xdc\x06\xd8\x3b\x4c\xf2\xbb\xb2\x4a\xab\x8d\xc8\x7b\x61\x09\x07\xd7\x14\xfc\xce\xdd\x1f\x33\xa5\xa2\x10\x76\xcb\x22\x4a\x94\xae\x7b\xf5\x80\xbe\xcc\xc5\x83\x78\xf2\xd4\x7d\xe2\xc9\xd3\x58\xbf\x78\xf2\x34\xa6\x62\x3c\x79\x8a\x27\x4f\xf1\xe4\x29\x9e\x3c\xc5\x93\xa7\x78\xf2\x14\x4f\x9e\xe2\xc9\xd3\xbe\x0a\x4f\xe3\xe4\xa9\x6b\xb9\x78\x51\xf9\xff\xcd\x51\x22\xf1\x88\xc4\x23\x12\x8f\x48\x3c\x22\xf1\x88\xc4\x23\x12\x8f\x48\x3c\x22\xf1\x80\x48\x3c\x0e\x55\x78\x6a\xc4\xe3\x97\x7a\x51\xf9\xc4\xad\xe4\x77\x6f\xde\x76\x3e\x68\x87\x0f\xdd\x6d\x8d\x84\x35\x6e\x08\x52\x22\xb9\xab\xfb\xf1\xbb\xce\x98\xba\xf1\xbb\x4e\xa4\x57\x91\x5e\x45\x7a\xf5\x59\xd6\x8b\xf4\x2a\xd2\xab\x48\xaf\x0e\x9f\x48\xaf\x06\xfb\x45\x7a\xd5\x3e\x91\x5e\xed\xa9\xf0\x34\xe8\xd5\xb1\x1b\xc5\xdd\x77\xa7\x2e\x14\xff\x37\x00\x00\xff\xff\x09\x64\x1a\xc0\x70\x4e\x00\x00") +var _operatorsCoreosCom_operatorconditionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x5a\x5f\x73\xdb\xb8\x11\x7f\xd7\xa7\xd8\xb9\x76\xa6\x76\x46\xa2\xec\x5c\x27\xcd\xe9\x25\x93\x71\x7b\x9d\x4c\x93\x26\x73\x71\xef\xa1\xae\xdb\x5b\x92\x2b\x09\x0d\x09\xb0\xf8\x23\x5b\xd7\xf6\xbb\x77\x16\x20\x45\x4a\x24\x25\xa7\xf1\xa4\x1d\x0f\xf8\x62\x8b\x00\x16\x8b\xfd\xf3\x5b\xfc\x40\x60\x25\x7e\x24\x6d\x84\x92\x0b\xc0\x4a\xd0\xbd\x25\xc9\xbf\x4c\xf2\xe9\xa5\x49\x84\x9a\x6f\x2e\x27\x9f\x84\xcc\x17\x70\xe5\x8c\x55\xe5\x0f\x64\x94\xd3\x19\xfd\x96\x96\x42\x0a\x2b\x94\x9c\x94\x64\x31\x47\x8b\x8b\x09\x00\x4a\xa9\x2c\xf2\x6b\xc3\x3f\x01\x32\x25\xad\x56\x45\x41\x7a\xb6\x22\x99\x7c\x72\x29\xa5\x4e\x14\x39\x69\x2f\xbc\x99\x7a\x73\x91\x5c\xbe\x4c\x2e\x26\x00\x12\x4b\x5a\x80\xaa\x48\xa3\x55\x3a\x53\x32\xf7\xb3\x98\xa4\x79\x65\x92\x4c\x69\x52\xfc\xa7\x9c\x98\x8a\x32\x9e\x68\xa5\x95\xab\xda\x61\x7b\x7d\x82\xcc\x46\x1f\xb4\xb4\x52\x5a\x34\xbf\x01\x66\xa0\x8a\xd2\xff\x1f\xd6\xf9\xbe\x96\x71\xd5\x4c\xed\xdb\x0a\x61\xec\x1f\x86\xdb\xdf\x0a\x63\x7d\x9f\xaa\x70\x1a\x8b\x21\xe5\x7d\xb3\x59\x2b\x6d\xff\xd8\xaa\xc2\x53\x67\x7b\x93\x18\x21\x57\xae\x40\x3d\x20\x62\x02\x60\x32\x55\xd1\x02\xbc\x84\x0a\x33\xca\x27\x00\xb5\x01\x6b\x89\xb3\xda\x7a\x9b\xcb\x7a\x02\x93\xad\xa9\xc4\x66\x3a\x60\xb1\xf2\xf5\x87\x37\x3f\x7e\xfb\xf1\xa0\x01\x20\x27\x93\x69\x51\x59\xef\x8e\xde\x1a\x41\x18\xc0\x3a\x04\xa0\x89\x01\x50\x4b\xb0\xdb\x8a\xe0\xa7\x5e\xff\x9f\xe0\x6e\x2d\xb2\x35\x0f\x73\x86\x72\xb0\x8a\x97\xba\xa1\x2d\x08\xb9\x54\xba\xf4\x21\xc2\x6f\xdf\xbf\x7d\x07\x98\x2a\x67\xc1\xae\x09\x8c\x45\xeb\xc5\xa2\xdc\x99\x20\xe9\x28\xc9\xb3\x2d\x40\xa5\x7f\xa7\xcc\x76\x5e\x6b\xfa\x87\x13\x9a\xf2\xee\x7a\xd8\x1a\x4d\x64\x76\x5e\x57\x9a\xe5\xda\x8e\xff\xc3\xd3\xc9\x83\xbd\xf7\x07\x86\xf9\xd7\xec\xa0\x15\x80\xed\x19\x46\x42\xce\x49\x41\xc6\x2f\xa5\xf6\x0c\xe5\xb5\x13\xbc\xb1\xd6\xc2\x80\xa6\x4a\x93\x21\x19\xd2\xa4\x59\xac\x5f\x52\xd2\x13\xfe\x91\x34\x0b\xe2\xd8\x71\x45\x1e\x6c\xa8\x2d\x68\xca\xd4\x4a\x8a\x9f\x77\xd2\x0d\xdb\x92\xa7\x2d\xd0\x92\xb1\x20\xa4\x25\x2d\xb1\x80\x0d\x16\x8e\xa6\x80\x32\xef\xc9\x2e\x71\x0b\x9a\x78\x5e\x70\xb2\x23\xd1\x0f\x31\x7d\x5d\xde\x29\x4d\xde\x7d\x0b\x58\x5b\x5b\x99\xc5\x7c\xbe\x12\xb6\xc1\x89\x4c\x95\xa5\x93\xc2\x6e\xe7\x3e\xe5\x45\xea\x38\x0f\xe7\x39\x6d\xa8\x98\x1b\xb1\x9a\xa1\xce\xd6\xc2\x52\x66\x9d\xa6\x39\x56\x62\xe6\x17\x23\x43\x72\x97\xf9\x2f\x74\x1d\x55\xe6\x60\xe2\xe0\x73\x63\xb5\x90\xab\xbd\x26\x9f\xae\x9f\xe9\x2c\x4e\xe1\x10\xcb\x41\x60\x58\x6c\xeb\x13\x7e\xc5\x66\xfc\xe1\x77\x1f\xaf\xa1\xd1\x28\xf8\x2d\xb8\xa8\xed\x3a\x60\xa1\xc6\x5b\x6c\x59\x21\x97\xa4\xc3\xc8\xa5\x56\xa5\x97\x4a\x32\xaf\x94\x90\x21\xd6\xb3\x42\x90\xb4\x60\x5c\x5a\x0a\x6b\x7c\x0c\x93\xb1\xec\xc8\xbe\xe0\x2b\x8f\xab\x90\x12\xb8\x2a\x47\x4b\x79\xbf\xcb\x1b\x09\x57\x58\x52\x71\x85\x86\xbe\xba\xef\xd8\x47\x66\xc6\x0e\x79\xb0\xf7\xba\x55\xa3\x3f\xa0\x97\xe2\x00\x0d\xd4\x8f\xba\xbb\x07\x42\x1f\x2b\xca\x00\x8b\x42\xdd\xb1\xc3\xb3\xc2\x19\x4b\x1a\x30\x2f\x85\x1c\x01\xa4\xe3\x48\x54\xe3\xd5\x14\x2a\x65\x79\xf1\x58\x14\x5b\x50\x1b\xd2\x5a\xe4\x1c\x38\x61\x8c\xa6\x4a\x69\x4b\x39\xa4\x5b\x2f\x69\x08\xc7\x8e\x2e\x74\x1c\xa4\xc2\x92\xab\x42\x6d\x4b\x0e\xc0\x7e\x63\x23\x15\xb5\xc6\xed\x40\xab\xb0\x54\x0e\x0e\x3b\xe2\x28\x7e\xea\x45\x0e\xe9\xf3\x05\x53\xee\x79\xaf\x2d\x35\x1c\x83\x28\xa4\x81\x9c\x2c\x8a\xc2\xc0\x52\x69\x50\x92\x00\x39\x04\x6c\x00\x52\x82\xcc\x69\xed\x13\xa8\xf1\x94\xcf\xb5\xd7\x1f\xde\xec\xea\x53\x3f\x0d\xe0\xb8\xdd\xc3\x33\x5c\x4d\xda\x87\xeb\x8a\x31\xb8\xa2\xd1\x76\x4d\x68\xea\x92\x3e\xd4\xcc\x1a\xbb\xc3\x44\x69\x9b\x59\xc1\xc1\xc6\x63\x61\x11\x9e\x02\x8d\xbd\xd6\x28\x8d\xb7\xe4\xb5\x28\x69\xac\xe7\x69\xa8\x3c\x26\x95\x21\x34\x54\x1b\x63\xc1\xf2\x0b\xef\x91\x9d\x0b\xed\xae\x37\xe5\x01\xfe\xd8\x7f\x61\xdd\x9c\x45\x28\x95\x5d\x53\x2f\x25\xba\xcf\x35\x7b\xb3\x2e\x7b\x29\xc1\xdd\x9a\xa4\x9f\xc4\xc9\x9c\x74\xb1\xe5\x7c\x6b\xe7\xcb\xd6\x28\x57\x94\x27\x00\x6f\x38\x0e\xd0\xb2\x82\x8c\x98\x9f\xa4\xba\x93\x53\x1e\x28\xc1\x99\x06\xdd\xbd\xc6\x3b\x89\x1c\x32\x4b\x41\x5c\x5e\x83\x18\x5f\x20\xb2\x8c\x2a\x8b\x69\x31\x12\x45\x70\x2a\x65\x9a\x27\x80\xcb\x02\x18\xb6\x67\x3c\xf1\x48\xcf\x3a\xa6\x1e\xc3\x5f\xb5\xa8\x50\xe7\xd6\xae\x44\xc9\x11\x99\xf3\x62\xda\x36\x99\x8b\x0c\x7d\xbd\x6b\xd2\xac\x05\xbf\xd6\x7d\x27\x3d\xc4\xa5\x2e\x25\x46\x49\x2a\x2b\xbb\xad\xad\xf1\x85\x36\x2b\xf1\xfe\x2d\xc9\x95\x5d\x2f\xe0\xdb\xe7\xbf\x79\xf1\x72\xa4\xa3\x4a\x0d\x17\xdc\xfc\xf7\x24\x19\x62\x07\xf6\x6e\xff\x8d\xf5\xfa\x52\x3b\x35\xdf\x9b\x27\x69\x6a\x57\xb2\x6a\xfb\xf8\xa8\xdb\xcf\x82\x3b\x34\x60\xc8\x42\x8a\xbc\x05\x76\xd5\x71\x73\x7e\xaf\x34\x08\x69\x2c\xca\x8c\xa6\x20\x96\xc3\xd3\x08\xd3\x00\x5f\xb1\x85\xcb\xe7\x53\x48\x6b\x9f\x25\x21\xbb\x92\x96\x74\xdc\xdc\xdf\x26\x03\x8b\x11\x06\xbe\x9b\x1e\x68\xca\xdb\x1b\xe7\x91\x95\xc3\xf4\x88\x92\x77\xc2\xae\x79\x5f\xe4\x81\xb8\xde\x72\x0e\x00\x31\xed\x56\x72\x2a\x12\x78\xa3\xba\x22\x7d\x32\x7d\x84\xb4\x2f\x7e\x3d\x1e\x30\x42\x8a\xd2\x95\x0b\xb8\x18\xe9\x12\x10\xf9\x31\xc2\x23\x48\x6a\x8b\x14\x32\x2c\xaf\x34\x96\xbc\x85\xc8\x40\xe4\xbc\x33\x58\x0a\xd2\xdd\x14\x63\x8b\xd4\x03\xb9\x98\xed\x19\xff\x57\xa6\x86\xd1\x07\x25\xdd\x07\xad\x72\x97\xf1\x26\x53\x2d\xfd\x96\x48\x2c\x45\xd6\x45\x5e\xde\x89\xf9\xac\x0c\x64\x04\xe8\x9e\x7d\xb5\xdb\xd6\x33\x13\x80\x92\x50\x0a\xb9\x32\xb5\x32\xbc\x45\x65\xfc\x9b\x1e\x99\x97\x87\xdd\xad\x89\x51\x3b\xd0\x9b\x5a\x9a\xf6\x2b\x31\x22\x27\x4d\x39\x20\xac\x1c\x6a\x94\x96\x28\x67\x5c\x3d\x0e\x1f\xb5\x94\x0e\xca\x63\xbb\x87\x3d\x89\x24\x35\x00\x05\xe4\xe6\x05\xd7\x3b\x64\x8f\x43\x8f\x07\x40\x97\x17\xcf\x8f\xc6\xdd\xae\xdf\x68\xa7\x0a\x2d\x93\xb1\x05\xfc\xf5\xe6\xf5\xec\xcf\x38\xfb\xf9\xf6\xac\xfe\xe7\x62\xf6\xdd\xdf\xa6\x8b\xdb\x67\x9d\x9f\xb7\xe7\xaf\x7e\x39\x22\x29\x24\xf8\x03\x63\xb8\xae\xb5\xcd\x5e\xa9\x89\x8f\xa9\x2f\xc4\x6a\x09\xd7\x9a\x69\xe1\xf7\x58\x18\x9a\xc2\x9f\xa4\xaf\x93\x5f\x68\x34\x92\xae\x1c\xd7\x8e\x77\x36\xdf\xf0\xac\xdf\x1c\xef\xe2\x55\x3a\xde\xa7\x56\x77\xa4\x8f\xd7\xf5\x61\x46\xf2\x87\x17\x6a\xd9\x05\xc2\x0e\x8b\x02\x0f\xc8\xb0\x54\x2a\xa1\x7b\x2c\xab\x82\x92\x4c\x95\xf3\x23\x2c\x6b\x4f\x85\xcf\x29\x72\x97\x2f\x1e\x10\x3d\x67\x37\x21\x46\x6e\xcf\x6e\x66\xf5\x7f\xcf\x9a\x57\xe7\xaf\xce\xfe\x92\x1c\x6d\x3f\x7f\x36\x3f\x7f\x75\xd6\x89\xbc\xdb\x9b\x59\x1b\x76\xc9\xed\xb3\xf3\x57\x9d\xb6\xf3\x7e\x10\x72\x21\x11\x19\xbd\xce\x32\xe5\xbe\x1a\xf9\x18\x8e\xf9\x53\x68\xdd\x67\x82\x21\x1b\x1a\x2e\xb8\x4f\xe9\x06\x78\x20\x13\xf2\x50\xce\x02\xe5\x4b\x3c\x5a\xd5\x39\xc5\x58\x63\x35\x8a\xc2\xa7\x16\x66\xd6\x61\xd1\xb7\xd6\x8e\x3f\x82\xd9\x1a\x4b\xe5\x23\xd1\xbf\xb6\xbc\x47\x2a\xc6\x58\xd0\xe7\x26\x91\xb5\x8d\x49\x8d\xac\x0d\x22\x6b\x8b\xac\x2d\xb2\xb6\xc8\xda\x22\x6b\x8b\xac\x2d\xb2\x36\x88\xac\xed\x50\x85\xa7\xc1\xda\x42\xf9\x58\x80\xd5\xae\xa9\x0b\xc6\x2a\xcd\x3b\x15\x58\xb2\xab\x9a\x97\x2e\xdd\x7d\x76\x6d\xad\x5f\x87\x2c\xfc\xf3\xdf\x13\xe8\xde\x2a\x78\xde\x8c\x8a\xb7\x0a\xe2\xad\x82\x78\xab\xa0\x7d\xe2\xad\x82\xa7\x7b\xab\xe0\x41\xc7\x4b\xdd\x8b\x06\xfb\x87\x4b\xe1\x36\xc0\xde\x61\x92\xdf\x95\x55\x5a\x6d\x44\xde\x0b\x4b\x38\xb8\xa6\xe0\x77\xee\xfe\x98\x29\x15\x85\xb0\x5b\x16\x51\xa2\x74\xdd\xab\x07\xf4\x75\x2e\x1e\xc4\x93\xa7\xee\x13\x4f\x9e\xc6\xfa\xc5\x93\xa7\x31\x15\xe3\xc9\x53\x3c\x79\x8a\x27\x4f\xf1\xe4\x29\x9e\x3c\xc5\x93\xa7\x78\xf2\x14\x4f\x9e\xf6\x55\x78\x1a\x27\x4f\x5d\xcb\xc5\x8b\xca\xff\x6b\x8e\x12\x89\x47\x24\x1e\x91\x78\x44\xe2\x11\x89\x47\x24\x1e\x91\x78\x44\xe2\x11\x89\x07\x44\xe2\x71\xa8\xc2\x53\x23\x1e\xff\xaf\x17\x95\x4f\xdc\x4a\x7e\xff\xf6\x5d\xe7\x83\x76\xf8\xd0\xdd\xd6\x48\x58\xe3\x86\x20\x25\x92\xbb\xba\x1f\xbf\xeb\x8c\xa9\x1b\xbf\xeb\x44\x7a\x15\xe9\x55\xa4\x57\x5f\x64\xbd\x48\xaf\x22\xbd\x8a\xf4\xea\xf0\x89\xf4\x6a\xb0\x5f\xa4\x57\xed\x13\xe9\xd5\x9e\x0a\x4f\x83\x5e\x1d\xbb\x51\xdc\x7d\x77\xea\x42\xf1\x7f\x02\x00\x00\xff\xff\x37\xf9\x98\x13\x70\x4e\x00\x00") func operatorsCoreosCom_operatorconditionsYamlBytes() ([]byte, error) { return bindataRead( @@ -185,7 +185,7 @@ func operatorsCoreosCom_operatorconditionsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x6d\x6f\x1b\x37\xd2\xdf\xf3\x2b\x06\xee\x03\xd4\x0e\x24\x39\x71\x1f\xf4\x45\x5f\x02\x23\x69\x02\x3f\x4f\xea\x1a\xb1\xd3\x03\x2e\xe7\x3b\x50\xbb\x23\x2d\xcf\xbb\xe4\x1e\xc9\x95\xac\xf6\xfa\xdf\x0f\x33\xe4\xae\x76\xa5\x7d\x91\x1d\xb7\xbd\x3b\x88\x5f\x6c\x2d\xc9\xe1\x70\xde\x67\x48\x8a\x5c\xfe\x84\xc6\x4a\xad\xa6\x20\x72\x89\xf7\x0e\x15\xfd\xb2\x93\xbb\x6f\xed\x44\xea\xd3\xe5\xcb\x67\x77\x52\xc5\x53\x78\x5d\x58\xa7\xb3\x0f\x68\x75\x61\x22\x7c\x83\x73\xa9\xa4\x93\x5a\x3d\xcb\xd0\x89\x58\x38\x31\x7d\x06\x20\x94\xd2\x4e\xd0\x67\x4b\x3f\x01\x22\xad\x9c\xd1\x69\x8a\x66\xbc\x40\x35\xb9\x2b\x66\x38\x2b\x64\x1a\xa3\x61\xe0\xe5\xd2\xcb\x17\x93\x97\xdf\x4c\xce\x9e\x01\x28\x91\xe1\x14\x74\x8e\x46\x38\x6d\x16\x46\x17\xb9\x9d\x94\x3f\xed\x24\xd2\x06\x35\xfd\xc9\x9e\xd9\x1c\x23\x5a\x84\xc7\x6c\xa6\x34\xc6\x78\x78\x25\x2e\xc2\xe1\x42\x1b\x59\xfe\x06\x18\x83\x4e\x33\xfe\xdf\xef\xf1\xc7\x00\xe3\x1d\x81\xe4\xef\xa9\xb4\xee\xff\x77\xfb\xde\x4b\xeb\xb8\x3f\x4f\x0b\x23\xd2\x6d\x84\xb9\xcb\x26\xda\xb8\xcb\xcd\xf2\xbc\xdc\xc2\x77\x49\xb5\x28\x52\x61\xb6\xe6\x3d\x03\xb0\x91\xce\x71\x0a\x3c\x2d\x17\x11\xc6\xcf\x00\x02\x95\x02\x98\x71\x20\xd1\xf2\x65\x80\x6a\xa3\x04\x33\x51\xae\x01\x04\x52\x9d\x5f\x5d\xfc\xf4\xd5\xf5\x56\x07\x40\x8c\x36\x32\x32\x77\x4c\xf3\x7f\x8e\x6b\x3d\xd0\xdc\x1f\x48\x0b\x2e\x41\x28\x94\x74\xa0\xe7\x90\x15\xa9\x93\x0e\x95\x50\xd1\x1a\xe6\xda\xc0\x8f\xef\x7f\x80\x4c\x28\xb1\xc0\xb8\x46\xf9\x06\xc0\x0b\x47\xdc\xb7\xce\x08\xa9\x3c\x34\xa9\xac\x13\x69\xca\xf2\x41\x50\xab\x89\x20\x15\x48\x67\x3d\xb3\x68\xdb\xe0\x34\x08\x20\x0e\xcb\xb9\xc4\x18\x2c\x32\x1a\x4e\x98\x05\xba\xcd\xb0\xc6\x8a\x6e\x4d\x94\xd3\xb3\xbf\x63\xe4\x6a\x9f\x0d\xfe\xa3\x90\x06\xe3\x69\x03\xb9\x31\x94\x62\x5b\xfb\x9c\x1b\xc2\xc8\xd5\x04\xc4\xb7\x9a\x92\x34\xbe\xf7\x13\x94\x1a\xf1\xc1\xcf\x84\x98\x34\x06\x3d\x21\x02\x47\x69\x63\xcc\x23\xde\x5b\x22\x2d\x18\xcc\x0d\x5a\x54\xae\xa2\x91\x50\x61\x4b\x93\x1d\xe0\xd7\x68\x08\x10\x09\x5a\x91\xc6\x44\xec\x25\x1a\x07\x06\x23\xbd\x50\xf2\xe7\x0a\xba\x25\x6a\xd2\xb2\xa9\x70\x68\x1d\x48\xe5\xd0\x28\x91\xc2\x52\xa4\x05\x8e\x40\xa8\x78\x07\x76\x26\xd6\x60\x90\xd6\x85\x42\xd5\x20\xf2\x14\xbb\x8b\xcb\x0f\xda\x10\x7f\xe7\x7a\x0a\x89\x73\xb9\x9d\x9e\x9e\x2e\xa4\x2b\x8d\x48\xa4\xb3\x8c\x44\x69\x7d\xca\xf6\x40\xce\x0a\xe2\xfa\x69\x8c\x4b\x4c\x4f\xad\x5c\x8c\x85\x89\x12\xe9\x30\x72\x85\xc1\x53\x91\xcb\x31\x6f\x46\xb1\x21\x99\x64\xf1\x17\x26\x98\x1d\xbb\xb5\xb0\xe7\xb9\x75\x46\xaa\x45\xa3\x8b\xf5\xf9\x81\xcc\x22\x3d\x27\xc1\x17\x01\xa0\xdf\xec\x86\x27\xf4\x89\xc8\xf8\xe1\xfb\xeb\x1b\x28\x31\xf2\x7c\xf3\x2c\xda\x0c\x6d\xa1\x50\xc9\x2d\xa2\xac\x54\x73\x34\x7e\xe6\xdc\xe8\x8c\xa1\xa2\x8a\x73\x2d\x95\xe3\x1f\x51\x2a\x51\x39\xb0\xc5\x2c\x23\xbd\x20\x19\x46\xeb\x88\x91\xbb\x80\x5f\xb3\xd1\x85\x19\x42\x91\xc7\xc2\x61\xbc\x3b\xe4\x42\xc1\x6b\x91\x61\xfa\x5a\x58\xfc\xdd\x79\x47\x3c\xb2\x63\x62\xc8\xde\xdc\xab\xbb\x94\xdd\x09\x3b\x2a\x0e\x50\xfa\x82\x4e\x76\x37\xac\xdb\x75\x8e\x51\x69\xe1\x68\x26\x5b\x34\xa1\xb6\x4c\x60\xc9\xe1\x6d\x82\x75\x22\x41\x4b\xce\x45\x91\xba\x6d\x4c\x00\x8a\x7c\x61\x44\x8c\xd7\xce\x90\x0f\x5a\x4f\xe1\x8d\x1f\xb9\x35\xb0\xcb\x00\xf1\x16\x31\xc5\xc8\x69\xb3\xdb\xb3\xb5\xd5\xeb\x30\x30\xcc\xf0\xdb\x6c\x6c\xed\x4b\xdb\x6f\x49\xf7\xd8\xe9\x10\xb6\xc0\x36\xc4\x45\xc9\xf7\xf7\xa4\x12\x35\xff\x35\x80\xfd\xf6\x24\xaf\x90\xe4\x86\xc9\x1a\xa6\x62\x86\x69\x45\x8a\xd2\xb6\x67\xac\x71\x70\x93\x60\xe3\x0b\x08\x83\x70\x7e\xf9\xa6\x4d\x23\xea\x1b\x14\xc6\x88\x75\xc7\x08\xe9\x30\xeb\x44\x7c\xd8\xa4\x6c\xda\x79\x0f\xee\xc1\xe8\x94\x3d\x2e\x11\xec\x3a\x1d\x3b\x4e\x6f\x71\x47\x20\xe0\x0e\xd7\x6c\xac\xd9\x27\x04\x7e\xf2\xe0\x9e\x65\x0d\xb2\xd1\x67\x19\xb8\xc3\x35\x4f\xef\xb2\xe1\x4d\xaa\x74\xb2\xbd\x04\xdc\xe6\x56\x9b\x6d\x4c\x4b\xf6\xf6\x97\xdb\xe8\x1c\x34\x24\x63\xbe\xdd\xe1\xba\xaf\x7b\x8b\x4f\x44\x87\xa0\xfd\x9e\x27\xf4\x81\x89\xce\x06\xa1\x64\x83\xc8\xf3\x54\x62\xbb\xcd\xad\xb7\x4e\x2b\xd6\x6c\xe5\x56\x1f\x80\x68\xaf\x40\xd5\x61\xd6\x1c\x8f\x97\x93\x2f\xad\xe7\x3c\x69\x50\x22\xf3\x10\x4e\xf9\x20\x6a\x88\xfd\xbe\xfd\x24\x52\x59\x0b\xed\x58\x97\x2e\xd4\x08\x2e\xb5\xa3\x3f\xdf\xdf\x4b\xf2\x47\x24\x4e\x6f\x34\xda\x4b\xed\xf8\xcb\x93\x50\xca\x23\xf8\x94\x74\xf2\x10\x59\xcd\x94\x57\x77\x22\x44\xdd\xcb\xdb\x09\x5c\xcc\x99\xff\x15\x4d\xa5\x25\xbf\xa9\x4d\xd8\xf2\xc0\x12\x1c\xd6\xf9\x65\xfc\x02\x59\x61\xd9\x29\x2b\xad\xc6\x98\xe5\x6e\xdd\xba\x42\xa0\xa3\x36\x0d\x32\x3e\x7a\xb1\xb0\xd0\x0d\x45\x16\xbe\xc7\x07\x95\x29\xa5\x12\x10\x17\xbc\x61\x8e\x6f\xc8\x0f\xc9\x68\x60\x9d\x0c\xcd\x02\x21\x27\x93\xbc\x0f\x67\xfb\x0c\xa9\x6f\x03\xe6\xb4\x0e\x6c\x50\x4c\x00\xee\xc7\x94\x4f\x1a\x85\x0e\xed\x98\x5c\xc4\x38\xe0\xe1\x74\xd6\xb9\xb7\x47\x4c\x62\x9f\xf4\x9e\x4c\xc5\x7e\x3e\xac\x47\x1e\x6b\xa0\xbc\xd5\xcf\x44\x4e\xb2\xf8\x0b\x19\x77\x66\xe9\xaf\x90\x0b\x69\xec\x04\xce\x39\x4d\x4c\xb1\xd1\x27\x15\x33\xbf\x06\xa6\x67\x29\x4e\xe3\xc8\x4e\x2f\x45\x4a\x6e\x86\xac\x80\x02\x4c\xbd\xd3\xa1\xb4\x6e\xcb\xd9\x8e\x60\x95\x68\xeb\x3d\xc5\x5c\x62\xca\xe1\xf0\xd1\x1d\xae\x8f\x46\xb4\x6c\xe7\x52\x75\x89\x3e\xba\x50\x47\xde\x4d\xed\x48\x69\xe5\xd3\xb4\x4a\xd7\x70\xc4\x7d\x47\x8f\xf7\xdb\xbd\x1e\x4a\xc4\x31\x97\x27\x44\x7a\xb5\x87\x0b\x19\x10\xb9\x86\xcc\x64\x22\xef\x17\x19\x8b\x66\x29\x23\x3c\x8f\x22\x5d\x28\xae\x00\x0c\xc6\x6c\x1d\x12\x73\xbd\x03\xa9\x74\x5c\x22\xce\xa4\x6a\x24\xc8\x3c\x12\x84\x1f\x0a\xab\x44\x46\x09\xac\x64\x9a\xc2\xac\x9d\x6f\x85\xc5\x98\x24\x22\xc6\x3c\xd5\xeb\x8a\x85\xc7\xf6\xc4\x0b\x19\x65\x35\x25\x5b\xb9\x3a\xd1\x1d\x21\x76\xd0\xcd\x52\x16\x1b\x5d\x19\xbd\x94\x31\xc6\xe7\x57\x17\xad\x0c\x68\xc6\xae\x3c\x05\x1c\xa6\xa9\xe5\x1a\x03\x65\x36\x4e\x87\xcc\xa6\x35\x92\xcd\x6b\xf0\x6b\xf5\xa7\x4e\x64\x67\x5a\xa7\x28\x76\xfb\x7d\x44\x5c\x15\x5e\x86\x71\xed\xe0\xd9\xcd\x16\x9c\xe0\x75\xf0\x3e\x4f\x65\x24\x5d\xe9\x85\x37\x91\x37\x67\xe7\x3c\xa9\x5d\xdc\x2f\xe6\x20\x39\x44\xb4\xe8\x46\x9b\xe8\x5e\x5a\x90\x0b\xa5\x4d\xbb\x96\xf4\x1b\xe4\x1e\x33\xfc\x10\x4d\xa8\x59\x4f\x8b\xbb\x8a\xb8\x9d\xf4\x3c\x92\xa0\x1f\x9b\x60\x1a\x85\x94\xb0\x44\xe9\xd0\x7c\x6d\xaa\x51\x56\xa2\x51\x15\xad\xdb\x09\x7c\x93\xa0\x41\x36\x3a\x51\x61\x0c\x2a\x97\xae\xc1\xad\x34\xd8\x22\xcf\xb5\x71\x18\x6f\x2f\xc3\xa6\xa4\x15\x54\x48\xeb\xa6\x2c\xbb\xac\x7d\x6c\xea\x44\x9a\xea\x15\x44\x69\x61\x1d\x9a\xa0\xd4\xa1\x2e\xc4\xec\xcf\xf4\x12\xcb\x22\x8d\xf7\xd6\x5d\xae\x2f\x4f\x84\xc5\x4d\xd1\xc0\x16\x51\x84\x18\x63\xec\x3b\x82\xe7\xc7\xf9\x1c\x23\x27\x97\x98\xae\x21\x43\xc1\xd5\x37\xe1\x36\x38\x29\xdd\x6e\x35\x3d\x9a\x1b\xf2\x6d\x61\xa6\xf0\xde\x95\xa5\x2b\x90\x5c\x9a\x6a\x56\xf4\x4c\x49\xa8\x56\xe8\x89\xb0\x30\x17\x32\x25\x81\x6d\xe7\x03\x46\xc9\x95\xc1\xa5\xc4\xd5\x47\x65\xc5\x1c\xdf\x0a\x99\xbe\xd5\x66\x25\x4c\x5c\xa3\xe8\x03\x88\xd9\xba\x4c\x45\xe0\x01\x62\xd2\x7e\xaa\x3e\x8f\x78\xa0\x72\x2b\xd8\xf3\xca\xe1\xa4\xeb\xd1\x06\xdb\x05\x2a\x22\x27\x51\x6f\x55\x92\xeb\x2a\x25\x9e\xac\x12\x54\x14\x8b\x15\xb3\x4a\x07\xc0\xe0\x1c\x0d\xaa\xdd\x42\x57\x60\x50\x89\x47\x0d\x50\xe5\x6a\x23\xe1\x44\xaa\x17\x4c\xe7\x19\xa2\x2a\xcb\x41\xb0\x92\x2e\x01\xc1\x08\x94\x82\x3c\xef\x48\xb9\xb8\x10\x45\x11\x28\x91\x27\x58\xaa\x5a\x79\xb7\x75\xce\x9f\xce\x3f\x5c\x5e\x5c\xbe\x9b\xb2\x1f\xef\xe3\xe1\xae\xb6\x4a\x0b\x05\x8f\xe2\x4d\xf8\x9a\xa3\xdd\x2d\x8b\xf8\x26\x15\x14\x0a\xef\x73\x8c\x68\x53\x33\x4c\xc4\x52\x92\xb6\x9b\x50\xa1\x5c\xa2\x11\xb3\x14\x21\x16\x4e\x40\xaa\x2d\xc1\x4e\xd1\x5a\x58\xeb\x02\x12\xb1\x44\x88\x11\xf3\x76\x5f\xa8\x62\x34\xd6\x09\x15\xd3\xbe\xf5\x3c\x24\x82\xcd\xed\xc3\x0c\xa9\xb7\xac\x7a\xef\x63\x5b\x06\x8c\x69\x59\x2e\xea\xa8\x06\x51\x43\x55\x64\xed\x86\x7a\xdc\x33\x8b\x7a\xfb\x38\xd1\xac\x9d\x39\xe1\x8a\x1d\x6f\xd0\x53\x3d\xe3\xf1\x55\xfd\xcc\xff\x6a\xab\xa0\x7d\x78\x78\x01\xad\xbb\xaa\x30\x86\x54\x58\xf7\xd1\x8b\xf4\x03\xca\x66\x91\x56\x5e\x2f\x87\x1d\xfa\xeb\x6a\xe8\x76\xa6\xd8\x16\x77\x6c\x00\x3f\xa9\xff\x6d\xc7\x68\x13\x3a\xc7\xe8\x84\x4c\x3d\xc1\xb5\x42\x10\x14\x03\xba\x12\xc9\xe0\xc0\x98\x2b\x58\x9d\x2a\x9c\x5f\x5d\x40\x17\x33\x06\x59\xe2\xdb\x50\xb9\xc7\xb3\xe7\xc6\x08\x65\x19\xe1\x1b\x99\x75\xa5\x0b\x63\xc8\xd0\x5a\xb1\xe8\xee\x37\x28\x6c\x6b\x04\xe7\xbb\xbd\xc8\x75\x76\xd3\x5e\xda\x7d\xe7\x60\x22\xb0\xbb\x87\xa7\x28\xfd\xed\x42\xdd\x94\x9f\xac\x03\x47\x1f\x98\x79\x15\xb7\x5d\x35\x1a\x63\xef\x83\x88\xd5\x41\xd5\x38\x8b\xd3\x2e\x41\xd3\x97\x93\x73\x20\x10\x4e\x86\x66\xe8\x9d\x8d\x3f\xd1\x8b\xd1\xa4\x6b\xb2\x64\x9b\xf5\xa2\x44\xa8\x05\xc6\x13\xf0\x25\x0a\xc1\xe1\x26\x85\xde\x77\x4a\xaf\x14\xe7\x7e\x0a\x0a\x5b\x1e\x80\x30\xc6\x15\x44\x92\x2e\x9f\x2c\x06\x30\xac\x3d\x51\x84\xb9\x23\x7b\x3c\x54\x67\x1c\xc8\xf3\xe7\xda\x64\xc2\x4d\xc9\xaa\xe3\xd8\x75\x4b\x55\x90\xa9\xa7\xe0\x57\x00\xe5\xf3\xf3\xa4\xc8\x04\xf9\x65\x11\xb3\x73\xa9\xfa\x54\x2c\x23\xc1\x6e\xb2\xd4\x48\x31\xd3\x85\x2f\x21\x6e\xd8\x37\xc8\x21\xf2\x79\x33\xe4\x04\x21\xcb\xdd\x3a\x50\xe3\x33\x69\x96\x89\xfb\xf7\xa8\x16\x2e\x99\xc2\x57\x67\xdf\x7c\xfd\x6d\xc7\x40\x3d\xa3\xac\x11\xe3\x77\x3e\x44\x69\x39\xde\x7c\x0c\xf5\x76\xa1\xd6\xab\x93\x44\x9e\x49\x79\xbc\x33\x59\x6c\xc6\x54\xf5\xd7\x8d\x54\xae\x04\xe7\x3c\x30\x13\x96\x63\xf0\x7e\x72\xbe\xa5\x9c\x88\xc2\x22\x15\xe1\x88\xc2\xd3\xd6\x65\xa4\xad\x05\xf9\x2f\xcf\x46\x30\x0b\x3c\x9b\x78\xed\x9a\x6c\xcc\xfa\xa7\xfb\xdb\x49\xcb\x66\xa4\x85\xef\x46\x5b\x98\x52\xae\x5c\xb0\x11\x26\x31\xed\x41\x92\x43\x31\x83\xde\x66\x87\xb0\xba\xc5\x66\x63\xb5\x93\x21\x49\x90\xca\xe1\x02\xbb\xeb\xe7\xa5\xfa\x48\xe5\xbe\xfe\xdf\x6e\x81\x91\x4a\x66\x45\x36\x85\x17\x1d\x43\xbc\x45\x7e\x0a\xf1\xf0\x90\x36\xfe\x4c\x90\x59\x5e\x18\x91\x65\x9c\xf9\xcb\x18\x95\x93\x73\x89\xa6\xae\x62\x3e\x2f\xe2\x89\x73\x3e\xf3\xa8\x11\xff\x4b\x1b\xcc\xe8\x5e\x4a\x77\x65\x74\x5c\x44\x68\x2c\x17\x80\x7d\xf9\x24\xaa\x5b\xde\x75\x8e\x5e\x2b\x7d\x9a\x09\x55\xc0\x59\x56\xb2\x28\x50\x45\xa1\xa4\x5a\xd8\x80\x8c\xb4\xde\xfe\xf5\x55\x6d\x69\xda\x2a\x41\xb2\xda\xcd\xba\x18\xef\xc4\xca\x18\x0d\xc6\x20\x60\x51\x08\x23\x94\x43\x8c\xc9\xae\xf6\x9b\x8f\x00\xa5\x66\xe5\xc5\xe6\x98\x77\xd0\x92\x04\x03\xe4\x2d\x37\x6d\x38\x1c\x22\xfb\x12\xf2\x93\x19\xa0\x97\x2f\xce\x7a\xe5\xae\x1a\xd7\x7d\x04\x24\x9c\x43\xa3\xa6\xf0\xd7\x4f\xe7\xe3\x3f\x8b\xf1\xcf\xb7\xc7\xe1\x9f\x17\xe3\xef\xfe\x36\x9a\xde\x3e\xaf\xfd\xbc\x3d\x79\xf5\x3f\x1d\x90\xda\xe3\xdc\x4d\x6b\xc8\x70\xf0\xb5\x65\x58\x55\xca\xc7\x88\x1d\xb1\x9e\xc3\x8d\x29\x70\x04\x6f\x45\x6a\x71\x04\x1f\x15\xfb\xc9\xcf\x24\x5a\x77\xa8\xef\xdb\x18\x8e\x68\xd5\xa3\xfe\x21\x8c\x52\xff\x98\x80\x6e\x5f\x6d\x75\x3f\x22\xd1\x50\x22\x46\xcd\x10\xd6\x2e\x1a\x00\x1b\x64\x98\x6b\x3d\xc1\x7b\x91\xe5\x29\x4e\x22\x9d\x9d\xf6\x5c\x44\x68\xa0\xf0\x10\x27\xf7\xf2\xeb\x3d\xa4\xe7\xf8\x93\x97\x91\xdb\xe3\x4f\xe3\xf0\xdf\xf3\xf2\xd3\xc9\xab\xe3\xbf\x4c\x7a\xfb\x4f\x9e\x9f\x9e\xbc\x3a\xae\x49\xde\xed\xa7\xf1\x46\xec\x26\xb7\xcf\x4f\x5e\xd5\xfa\x4e\x76\x85\xb0\x96\xbe\x0c\x66\x22\xef\x37\x63\x7d\x14\x42\x81\x8f\x75\x22\xcb\x4b\x89\x6c\x46\x8e\xdb\xb9\x49\x90\x5e\x72\xa0\x1f\xbb\xee\x84\x0c\x92\x79\x38\xf2\x52\xfb\x17\x4b\x9b\xf5\xd0\x5a\x7a\xbd\x73\x11\xa1\xb2\xf0\x8d\x4d\xfd\xbb\xd6\x38\x9b\xb5\xfe\x0f\x38\xdf\xe3\x7a\xc6\xd6\x8c\x5a\xd1\x27\x10\xa6\x59\xca\x0f\x77\x8b\xaa\x5a\xff\x6f\x70\x53\xa3\xfb\x82\x5b\xeb\x16\x28\xe2\x2f\xeb\x80\x41\x1e\xc3\x1e\x3a\x0f\x80\x07\x55\x9a\xfd\xd0\x95\x70\xc9\xe7\x9e\xb0\x5d\x04\x82\xf2\x51\x27\x9f\x7b\xe7\x12\x23\x6c\xdc\xa5\xe3\xf0\x0a\x45\x1c\x3e\x52\xc8\x61\x30\xf4\x8d\xbc\x47\x1f\xb0\x3e\x9b\x3b\x77\x14\xc6\x80\x20\x57\x2c\x63\xf8\xbf\xeb\x1f\x2f\x4f\xdf\xe9\xe0\x55\x29\x09\xb2\x5e\x1b\xf9\x64\x6b\x04\xb6\x88\x12\x10\x94\xc5\x5b\xca\xa6\xaf\xa9\x67\x92\x09\x25\xe7\x68\xdd\x24\x40\x43\x63\x3f\x9d\xdd\x76\x9b\x47\x8a\x74\x83\x45\xe5\x40\x97\xcf\x94\xcb\x0b\x68\x41\x94\x58\xcb\x68\xf3\x15\x4c\x8e\x3d\x19\xd5\x5c\xc7\x61\x93\x2b\xde\x84\x13\x77\x08\x3a\x6c\xa2\x40\x48\xe5\x5d\x8f\x07\x38\x22\x41\xac\xa1\xfa\x0b\xa9\xee\xaf\x47\x70\xbc\xe2\x32\xfa\x11\xfd\x3c\xf2\x88\x54\x17\x0f\xe9\x5b\xcd\x97\x06\x84\x7c\xc8\x6f\xe4\x62\x41\xc1\x4f\xb7\x37\x48\x10\x70\x89\xca\x9d\xb0\x47\x99\x83\xd2\x35\x20\x2a\x1c\x8a\x6d\x8e\xc2\xb6\x11\xfc\x74\x76\x7b\x04\xc7\x4d\x3a\x74\x2e\x26\x55\x8c\xf7\x70\x56\x1d\x81\xe5\x3a\x3e\x09\x55\x75\xbb\x56\x4e\xdc\x73\x06\x91\x68\x8b\xca\x97\xf6\x9d\xf6\xb5\x45\xab\x29\x27\xc6\x34\x1d\xfb\xc0\x31\x86\x15\xd7\x8e\x3a\x57\x2a\x59\xe5\x4f\xe4\x73\x61\xdc\xc0\x75\xcf\x40\x8d\x21\x45\x6a\xbb\xf9\x58\xb6\x7d\x75\x88\x6f\x42\xee\xa9\xd9\x7f\xe0\xfd\xc1\xbd\x69\xa2\x3a\xce\x60\x1f\x42\x93\xcb\x9a\x0c\x3f\x8a\x26\x1b\xa7\x42\x64\x89\x75\x64\x89\x22\x11\xe6\xce\x9e\xea\x25\x19\x7d\x5c\x9d\xae\xb4\xb9\x93\x6a\x31\x26\x21\x1d\x7b\x49\xb0\xa7\xec\x1c\x4f\xbf\xe0\x3f\x9f\x43\x02\x76\xb0\x4f\x41\x07\x7f\x47\xfb\x0f\x24\x06\x47\x0a\xa7\x8f\xa5\x45\x79\xb3\xf3\x21\x3e\xaf\x87\x22\xd7\x65\x1a\xb9\x05\x97\x6c\x83\x3f\x87\x0f\x77\xbb\x6b\xb6\x39\x13\xb1\x37\xde\x42\xf5\x24\x5b\xbf\xb1\x66\x11\xc5\xb9\xf8\x10\xad\xc7\xe1\xa1\xc6\x58\xa8\x78\xcc\x19\xa9\x75\xf4\xfd\xb1\x24\x2e\xe4\x67\x1b\xa1\x8f\x17\x6f\xfe\x58\x7d\x2b\xe4\x63\x2d\xce\x3e\xf7\x45\x7c\x61\x69\x0a\xce\x14\x65\x64\x6d\x9d\x36\x62\x81\xcd\x6f\xc5\xac\xba\xfc\xbe\xa1\x68\xc8\x65\xe1\x97\x5f\xf9\xd3\xe6\x4d\x88\x48\xf3\x44\x9c\x95\x73\x0f\x2f\x43\x6a\xdc\x3a\xbc\x0c\x39\xbc\x0c\x39\xbc\x0c\xd9\x6a\x87\x97\x21\xbf\xcf\xcb\x90\xc3\xcb\x8e\xc3\xcb\x8e\xc3\xcb\x8e\x7a\x3b\xbc\xec\xe8\x6b\x87\x97\x1d\x87\x97\x1d\x87\x97\x1d\x87\x97\x1d\x1d\x4b\x1d\x5e\x76\x1c\x5e\x76\x1c\x5e\x76\x6c\x21\x7b\x78\xd9\xf1\xb8\x53\xcf\xff\xee\x0b\xc0\x87\x73\xf7\xff\x8c\x73\xf7\xc3\x49\xfa\xe1\x24\xfd\x70\x92\x7e\x38\x49\x3f\x9c\xa4\x1f\x4e\xd2\x07\x68\x72\x38\x49\x3f\x9c\xa4\x1f\x4e\xd2\x0f\x27\xe9\x61\x7c\xdf\x49\xfa\x5c\xa4\x76\xef\xa3\xf4\x7f\x05\x00\x00\xff\xff\x87\x29\x4c\xb5\x0d\x53\x00\x00") +var _operatorsCoreosCom_operatorgroupsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\x3b\x5d\x73\x1b\x37\x92\xef\xfe\x15\x5d\xca\x55\x45\x72\xf1\xc3\x76\xae\x72\x09\x5f\x5c\x2a\x3b\x76\xe9\xce\x51\x54\x96\x9c\xab\x3a\x9f\xee\x0a\x9c\x69\x72\xb0\x9a\x01\x66\x01\x0c\x29\x26\x9b\xff\xbe\xd5\x0d\xcc\x70\x86\x9c\x0f\x4a\x56\x92\xdd\x2d\xe2\x45\xe2\x00\x68\x34\xfa\xbb\x1b\x80\xc8\xe5\xcf\x68\xac\xd4\x6a\x06\x22\x97\x78\xef\x50\xd1\x2f\x3b\xb9\xfb\xce\x4e\xa4\x9e\xae\x5e\x3e\xbb\x93\x2a\x9e\xc1\x9b\xc2\x3a\x9d\x7d\x44\xab\x0b\x13\xe1\x5b\x5c\x48\x25\x9d\xd4\xea\x59\x86\x4e\xc4\xc2\x89\xd9\x33\x00\xa1\x94\x76\x82\x3e\x5b\xfa\x09\x10\x69\xe5\x8c\x4e\x53\x34\xe3\x25\xaa\xc9\x5d\x31\xc7\x79\x21\xd3\x18\x0d\x03\x2f\x97\x5e\xbd\x98\xbc\xfc\x6e\xf2\xe2\x19\x80\x12\x19\xce\x40\xe7\x68\x84\xd3\x66\x69\x74\x91\xdb\x49\xf9\xd3\x4e\x22\x6d\x50\xd3\x9f\xec\x99\xcd\x31\xa2\x45\x78\xcc\x76\x4a\x63\x8c\x87\x57\xe2\x22\x1c\x2e\xb5\x91\xe5\x6f\x80\x31\xe8\x34\xe3\xff\xfd\x1e\x7f\x0a\x30\xde\x13\x48\xfe\x9e\x4a\xeb\xfe\x6b\xbf\xef\x83\xb4\x8e\xfb\xf3\xb4\x30\x22\xdd\x45\x98\xbb\x6c\xa2\x8d\xbb\xdc\x2e\xcf\xcb\x2d\x7d\x97\x54\xcb\x22\x15\x66\x67\xde\x33\x00\x1b\xe9\x1c\x67\xc0\xd3\x72\x11\x61\xfc\x0c\x20\x50\x29\x80\x19\x07\x12\xad\x5e\x06\xa8\x36\x4a\x30\x13\xe5\x1a\x40\x20\xd5\xf9\xd5\xc5\xcf\xdf\x5c\xef\x74\x00\xc4\x68\x23\x23\x73\xc7\x34\xff\xdb\xb8\xd6\x03\xcd\xfd\x81\xb4\xe0\x12\x84\x42\x49\x07\x7a\x01\x59\x91\x3a\xe9\x50\x09\x15\x6d\x60\xa1\x0d\xfc\xf4\xe1\x47\xc8\x84\x12\x4b\x8c\x6b\x94\x6f\x00\xbc\x70\xc4\x7d\xeb\x8c\x90\xca\x43\x93\xca\x3a\x91\xa6\x2c\x1f\x04\xb5\x9a\x08\x52\x81\x74\xd6\x33\x8b\xb6\x0d\x4e\x83\x00\xe2\xb0\x5c\x48\x8c\xc1\x22\xa3\xe1\x84\x59\xa2\xdb\x0e\x6b\xac\xe8\x36\x44\x39\x3d\xff\x0b\x46\xae\xf6\xd9\xe0\x5f\x0b\x69\x30\x9e\x35\x90\x1b\x43\x29\xb6\xb5\xcf\xb9\x21\x8c\x5c\x4d\x40\x7c\xab\x29\x49\xe3\x7b\x3f\x41\xa9\x11\x1f\xfc\x4c\x88\x49\x63\xd0\x13\x22\x70\x94\x36\xc6\x3c\xe2\xbd\x25\xd2\x82\xc1\xdc\xa0\x45\xe5\x2a\x1a\x09\x15\xb6\x34\xd9\x03\x7e\x8d\x86\x00\x91\xa0\x15\x69\x4c\xc4\x5e\xa1\x71\x60\x30\xd2\x4b\x25\x7f\xa9\xa0\x5b\xa2\x26\x2d\x9b\x0a\x87\xd6\x81\x54\x0e\x8d\x12\x29\xac\x44\x5a\xe0\x08\x84\x8a\xf7\x60\x67\x62\x03\x06\x69\x5d\x28\x54\x0d\x22\x4f\xb1\xfb\xb8\xfc\xa8\x0d\xf1\x77\xa1\x67\x90\x38\x97\xdb\xd9\x74\xba\x94\xae\x34\x22\x91\xce\x32\x12\xa5\xcd\x94\xed\x81\x9c\x17\xc4\xf5\x69\x8c\x2b\x4c\xa7\x56\x2e\xc7\xc2\x44\x89\x74\x18\xb9\xc2\xe0\x54\xe4\x72\xcc\x9b\x51\x6c\x48\x26\x59\xfc\x95\x09\x66\xc7\xee\x2c\xec\x79\x6e\x9d\x91\x6a\xd9\xe8\x62\x7d\x7e\x20\xb3\x48\xcf\x49\xf0\x45\x00\xe8\x37\xbb\xe5\x09\x7d\x22\x32\x7e\xfc\xe1\xfa\x06\x4a\x8c\x3c\xdf\x3c\x8b\xb6\x43\x5b\x28\x54\x72\x8b\x28\x2b\xd5\x02\x8d\x9f\xb9\x30\x3a\x63\xa8\xa8\xe2\x5c\x4b\xe5\xf8\x47\x94\x4a\x54\x0e\x6c\x31\xcf\x48\x2f\x48\x86\xd1\x3a\x62\xe4\x3e\xe0\x37\x6c\x74\x61\x8e\x50\xe4\xb1\x70\x18\xef\x0f\xb9\x50\xf0\x46\x64\x98\xbe\x11\x16\xff\x70\xde\x11\x8f\xec\x98\x18\x72\x30\xf7\xea\x2e\x65\x7f\xc2\x9e\x8a\x03\x94\xbe\xa0\x93\xdd\x0d\xeb\x76\x9d\x63\x54\x5a\x38\x9a\xc9\x16\x4d\xa8\x1d\x13\x58\x72\x78\x97\x60\x9d\x48\xd0\x92\x0b\x51\xa4\x6e\x17\x13\x80\x22\x5f\x1a\x11\xe3\xb5\x33\xe4\x83\x36\x33\x78\xeb\x47\xee\x0c\xec\x32\x40\xbc\x45\x4c\x31\x72\xda\xec\xf7\xec\x6c\xf5\x3a\x0c\x0c\x33\xfc\x36\x1b\x5b\xfb\xda\xf6\x5b\xd2\x03\x76\x3a\x84\x2d\xb0\x0d\x71\x51\xf2\xc3\x3d\xa9\x44\xcd\x7f\x0d\x60\xbf\x3b\xc9\x2b\x24\xb9\x61\xb2\x86\xa9\x98\x63\x5a\x91\xa2\xb4\xed\x19\x6b\x1c\xdc\x24\xd8\xf8\x02\xc2\x20\x9c\x5f\xbe\x6d\xd3\x88\xfa\x06\x85\x31\x62\xd3\x31\x42\x3a\xcc\x3a\x11\x1f\x36\x29\xdb\x76\xde\x83\x7b\x30\x3a\x65\x8f\x4b\x04\xbb\x4e\xc7\x8e\xd3\x5b\xdc\x11\x08\xb8\xc3\x0d\x1b\x6b\xf6\x09\x81\x9f\x3c\xb8\x67\x59\x83\x6c\xf4\x59\x06\xee\x70\xc3\xd3\xbb\x6c\x78\x93\x2a\x9d\x6c\x2f\x01\xb7\xb9\xd5\x66\x1b\xd3\x92\xbd\xfd\xe5\x36\x3a\x07\x0d\xc9\x98\x6f\x77\xb8\xe9\xeb\xde\xe1\x13\xd1\x21\x68\xbf\xe7\x09\x7d\x60\xa2\xb3\x41\x28\xd9\x20\xf2\x3c\x95\xd8\x6e\x73\xeb\xad\xd3\x8a\x35\x5b\xb9\xd5\x07\x20\xda\x2b\x50\x75\x98\x35\xc7\xe3\xe5\xe4\x6b\xeb\x39\x4f\x1a\x94\xc8\x3c\x84\x53\x3e\x88\x1a\x62\xbf\x6f\x3f\x8b\x54\xd6\x42\x3b\xd6\xa5\x0b\x35\x82\x4b\xed\xe8\xcf\x0f\xf7\x92\xfc\x11\x89\xd3\x5b\x8d\xf6\x52\x3b\xfe\xf2\x24\x94\xf2\x08\x3e\x25\x9d\x3c\x44\x56\x33\xe5\xd5\x9d\x08\x51\xf7\xf2\x76\x02\x17\x0b\xe6\x7f\x45\x53\x69\xc9\x6f\x6a\x13\xb6\x3c\xb0\x04\x87\x75\x7e\x19\xbf\x40\x56\x58\x76\xca\x4a\xab\x31\x66\xb9\xdb\xb4\xae\x10\xe8\xa8\x4d\x83\x8c\x8f\x5e\x2c\x2c\x74\x43\x91\x85\xef\xf1\x41\x65\x4a\xa9\x04\xc4\x05\x6f\x98\xe3\x1b\xf2\x43\x32\x1a\x58\x27\x43\xb3\x44\xc8\xc9\x24\x1f\xc2\xd9\x3e\x43\xea\xdb\x80\x39\xad\x03\x1b\x14\x13\x80\xfb\x31\xe5\x93\x46\xa1\x43\x3b\x26\x17\x31\x0e\x78\x38\x9d\x75\xee\xed\x11\x93\xd8\x27\x7d\x20\x53\x71\x98\x0f\xeb\x91\xc7\x1a\x28\x6f\xf5\x33\x91\x93\x2c\xfe\x4a\xc6\x9d\x59\xfa\x1b\xe4\x42\x1a\x3b\x81\x73\x4e\x13\x53\x6c\xf4\x49\xc5\xcc\xaf\x81\xe9\x59\x8a\xd3\x38\xb2\xd3\x2b\x91\x92\x9b\x21\x2b\xa0\x00\x53\xef\x74\x28\xad\xdb\x71\xb6\x23\x58\x27\xda\x7a\x4f\xb1\x90\x98\x72\x38\x7c\x72\x87\x9b\x93\x11\x2d\xdb\xb9\x54\x5d\xa2\x4f\x2e\xd4\x89\x77\x53\x7b\x52\x5a\xf9\x34\xad\xd2\x0d\x9c\x70\xdf\xc9\xe3\xfd\x76\xaf\x87\x12\x71\xcc\xe5\x09\x91\x5e\x1d\xe0\x42\x06\x44\xae\x21\x33\x99\xc8\xfb\x45\xc6\xa2\x59\xc9\x08\xcf\xa3\x48\x17\x8a\x2b\x00\x83\x31\x5b\x87\xc4\x5c\xef\x41\x2a\x1d\x97\x88\x33\xa9\x1a\x09\x32\x8f\x04\xe1\x87\xc2\x3a\x91\x51\x02\x6b\x99\xa6\x30\x6f\xe7\x5b\x61\x31\x26\x89\x88\x31\x4f\xf5\xa6\x62\xe1\xa9\x3d\xf3\x42\x46\x59\x4d\xc9\x56\xae\x4e\x74\x47\x88\x1d\x74\xb3\x94\xc5\x46\x57\x46\xaf\x64\x8c\xf1\xf9\xd5\x45\x2b\x03\x9a\xb1\x2b\x4f\x01\x87\x69\x6a\xb9\xc6\x40\x99\x8d\xd3\x21\xb3\x69\x8d\x64\xf3\x1a\xfc\x5a\xfd\xa9\x13\xd9\xb9\xd6\x29\x8a\xfd\x7e\x1f\x11\x57\x85\x97\x61\x5c\x3b\x78\x76\xb3\x03\x27\x78\x1d\xbc\xcf\x53\x19\x49\x57\x7a\xe1\x6d\xe4\xcd\xd9\x39\x4f\x6a\x17\xf7\x8b\x05\x48\x0e\x11\x2d\xba\xd1\x36\xba\x97\x16\xe4\x52\x69\xd3\xae\x25\xfd\x06\xb9\xc7\x0c\x3f\x44\x13\x6a\xd6\xd3\xe2\xbe\x22\xee\x26\x3d\x8f\x24\xe8\xa7\x26\x98\x46\x21\x25\x2c\x51\x3a\x34\x5f\x9b\x6a\x94\x95\x68\x54\x45\xeb\x76\x02\xdf\x24\x68\x90\x8d\x4e\x54\x18\x83\xca\xa5\x1b\x70\x6b\x0d\xb6\xc8\x73\x6d\x1c\xc6\xbb\xcb\xb0\x29\x69\x05\x15\xd2\xba\x19\xcb\x2e\x6b\x1f\x9b\x3a\x91\xa6\x7a\x0d\x51\x5a\x58\x87\x26\x28\x75\xa8\x0b\x31\xfb\x33\xbd\xc2\xb2\x48\xe3\xbd\x75\x97\xeb\xcb\x13\x61\x71\x5b\x34\xb0\x45\x14\x21\xc6\x18\xfb\x8e\xe0\xf9\x71\xb1\xc0\xc8\xc9\x15\xa6\x1b\xc8\x50\x70\xf5\x4d\xb8\x2d\x4e\x4a\xb7\x5b\x4d\x8f\xe6\x96\x7c\x3b\x98\x29\xbc\x77\x65\xe9\x0a\x24\x97\xa6\x9a\x15\x3d\x53\x12\xaa\x15\x7a\x22\x2c\x2c\x84\x4c\x49\x60\xdb\xf9\x80\x51\x72\x65\x70\x25\x71\xfd\x49\x59\xb1\xc0\x77\x42\xa6\xef\xb4\x59\x0b\x13\xd7\x28\xfa\x00\x62\xb6\x2e\x53\x11\x78\x80\x98\xb4\x9f\xaa\xcf\x23\x1e\xa8\xdc\x0a\xf6\xbc\x72\x38\xe9\x66\xb4\xc5\x76\x89\x8a\xc8\x49\xd4\x5b\x97\xe4\xba\x4a\x89\x27\xeb\x04\x15\xc5\x62\xc5\xbc\xd2\x01\x30\xb8\x40\x83\x6a\xbf\xd0\x15\x18\x54\xe2\x51\x03\x54\xb9\xda\x48\x38\x91\xea\x25\xd3\x79\x8e\xa8\xca\x72\x10\xac\xa5\x4b\x40\x30\x02\xa5\x20\x2f\x3a\x52\x2e\x2e\x44\x51\x04\x4a\xe4\x09\x96\xaa\x56\xde\x6d\x9d\xf3\xdf\xe7\x1f\x2f\x2f\x2e\xdf\xcf\xd8\x8f\xf7\xf1\x70\x5f\x5b\xa5\x85\x82\x47\xf1\x26\x7c\xcd\xd1\xee\x97\x45\x7c\x93\x0a\x0a\x85\xf7\x39\x46\xb4\xa9\x39\x26\x62\x25\x49\xdb\x4d\xa8\x50\xae\xd0\x88\x79\x8a\x10\x0b\x27\x20\xd5\x96\x60\xa7\x68\x2d\x6c\x74\x01\x89\x58\x21\xc4\x88\x79\xbb\x2f\x54\x31\x1a\xeb\x84\x8a\x69\xdf\x7a\x11\x12\xc1\xe6\xf6\x61\x8e\xd4\x5b\x56\xbd\x0f\xb1\x2d\x03\xc6\xb4\x2c\x17\x75\x54\x83\xa8\xa1\x2a\xb2\x76\x43\x3d\xee\x99\x45\xbd\x7d\x9c\x68\xd6\xce\x9c\x70\xc5\x9e\x37\xe8\xa9\x9e\xf1\xf8\xaa\x7e\xe6\x7f\xb5\x55\xd0\x3e\x3e\xbc\x80\xd6\x5d\x55\x18\x43\x2a\xac\xfb\xe4\x45\xfa\x01\x65\xb3\x48\x2b\xaf\x97\xc3\x0e\xfd\x4d\x35\x74\x37\x53\x6c\x8b\x3b\xb6\x80\x9f\xd4\xff\xb6\x63\xb4\x0d\x9d\x63\x74\x42\xa6\x9e\xe0\x5a\x21\x08\x8a\x01\x5d\x89\x64\x70\x60\xcc\x15\xac\x4e\x15\xce\xaf\x2e\xa0\x8b\x19\x83\x2c\xf1\x6d\xa8\xdc\xe3\xd9\x73\x63\x84\xb2\x8c\xf0\x8d\xcc\xba\xd2\x85\x31\x64\x68\xad\x58\x76\xf7\x1b\x14\xb6\x35\x82\xf3\xdd\x5e\xe4\x3a\xbb\x69\x2f\xed\xbe\x73\x30\x11\xd8\xdf\xc3\x53\x94\xfe\xf6\xa1\x6e\xcb\x4f\xd6\x81\xa3\x0f\xcc\xbc\x8a\xdb\xae\x1a\x8d\xb1\xf7\x41\xc4\xea\xa0\x6a\x9c\xc5\x69\x97\xa0\xe9\xcb\xc9\x39\x10\x08\x27\x43\x73\xf4\xce\xc6\x9f\xe8\xc5\x68\xd2\x0d\x59\xb2\xed\x7a\x51\x22\xd4\x12\xe3\x09\xf8\x12\x85\xe0\x70\x93\x42\xef\x3b\xa5\xd7\x8a\x73\x3f\x05\x85\x2d\x0f\x40\x18\xe3\x0a\x22\x49\x97\x4f\x16\x03\x18\xd6\x9e\x28\xc2\xdc\x91\x3d\x1e\xaa\x33\x0e\xe4\xf9\x0b\x6d\x32\xe1\x66\x64\xd5\x71\xec\xba\xa5\x2a\xc8\xd4\x53\xf0\x2b\x80\xf2\xf9\x79\x52\x64\x82\xfc\xb2\x88\xd9\xb9\x54\x7d\x2a\x96\x91\x60\x37\x59\x6a\xa4\x98\xeb\xc2\x97\x10\xb7\xec\x1b\xe4\x10\xf9\xbc\x39\x72\x82\x90\xe5\x6e\x13\xa8\xf1\x85\x34\xcb\xc4\xfd\x07\x54\x4b\x97\xcc\xe0\x9b\x57\xff\xf1\xed\x77\x1d\x03\xf5\x9c\xb2\x46\x8c\xdf\xfb\x10\xa5\xe5\x78\xf3\x31\xd4\xdb\x87\x5a\xaf\x4e\x12\x79\x26\xe5\xf1\xce\x64\xb9\x1d\x53\xd5\x5f\xb7\x52\xb9\x16\x9c\xf3\xc0\x5c\x58\x8e\xc1\xfb\xc9\xf9\x8e\x72\x22\x0a\x8b\x54\x84\x23\x0a\x4f\x5b\x97\x91\xb6\x16\xe4\xbf\x7c\x35\x82\x79\xe0\xd9\xc4\x6b\xd7\x64\x6b\xd6\x3f\xdf\xdf\x4e\x5a\x36\x23\x2d\x7c\x3f\xda\xc1\x94\x72\xe5\x82\x8d\x30\x89\x69\x0f\x92\x1c\x8a\x19\xf4\x36\x3b\x84\xd5\x2d\x36\x1b\xab\x9d\x0c\x49\x82\x54\x0e\x97\xd8\x5d\x3f\x2f\xd5\x47\x2a\xf7\xed\xbf\x77\x0b\x8c\x54\x32\x2b\xb2\x19\xbc\xe8\x18\xe2\x2d\xf2\x53\x88\x87\x87\xb4\xf5\x67\x82\xcc\xf2\xd2\x88\x2c\xe3\xcc\x5f\xc6\xa8\x9c\x5c\x48\x34\x75\x15\xf3\x79\x11\x4f\x5c\xf0\x99\x47\x8d\xf8\x5f\xdb\x60\x46\x0f\x52\xba\x2b\xa3\xe3\x22\x42\x63\xb9\x00\xec\xcb\x27\x51\xdd\xf2\x6e\x72\xf4\x5a\xe9\xd3\x4c\xa8\x02\xce\xb2\x92\x45\x81\x2a\x0a\x25\xd5\xd2\x06\x64\xa4\xf5\xf6\xaf\xaf\x6a\x4b\xd3\xd6\x09\x92\xd5\x6e\xd6\xc5\x78\x27\x56\xc6\x68\x30\x06\x01\xcb\x42\x18\xa1\x1c\x62\x4c\x76\xb5\xdf\x7c\x04\x28\x35\x2b\x2f\xb6\xc7\xbc\x83\x96\x24\x18\x20\x6f\xb9\x69\xc3\xe1\x10\xd9\x97\x90\x9f\xcc\x00\xbd\x7c\xf1\xaa\x57\xee\xaa\x71\xdd\x47\x40\xc2\x39\x34\x6a\x06\xff\xf7\xf9\x7c\xfc\x3f\x62\xfc\xcb\xed\x69\xf8\xe7\xc5\xf8\xfb\xff\x1f\xcd\x6e\x9f\xd7\x7e\xde\x9e\xbd\xfe\xb7\x0e\x48\xed\x71\xee\xb6\x35\x64\x38\xf8\xda\x32\xac\x2a\xe5\x63\xc4\x8e\x58\x2f\xe0\xc6\x14\x38\x82\x77\x22\xb5\x38\x82\x4f\x8a\xfd\xe4\x17\x12\xad\x3b\xd4\xf7\x6d\x0c\x27\xb4\xea\x49\xff\x10\x46\xa9\x7f\x4c\x40\xb7\xaf\xb6\x7a\x18\x91\x68\x28\x11\xa3\x66\x08\x6b\x17\x0d\x80\x0d\x32\x2c\xb4\x9e\xe0\xbd\xc8\xf2\x14\x27\x91\xce\xa6\x3d\x17\x11\x1a\x28\x3c\xc4\xc9\xbd\xfc\xf6\x00\xe9\x39\xfd\xec\x65\xe4\xf6\xf4\xf3\x38\xfc\xf7\xbc\xfc\x74\xf6\xfa\xf4\x7f\x27\xbd\xfd\x67\xcf\xa7\x67\xaf\x4f\x6b\x92\x77\xfb\x79\xbc\x15\xbb\xc9\xed\xf3\xb3\xd7\xb5\xbe\xb3\x7d\x21\xac\xa5\x2f\x83\x99\xc8\x87\xed\x58\x1f\x85\x50\xe0\x63\x9d\xc8\xf2\x52\x22\x9b\x91\xe3\x6e\x6e\x12\xa4\x97\x1c\xe8\xa7\xae\x3b\x21\x83\x64\x1e\x8e\xbc\xd4\xe1\xc5\xd2\x66\x3d\xb4\x96\x5e\xef\x5d\x44\xa8\x2c\x7c\x63\x53\xff\xa8\x35\xce\x66\xad\xff\x23\x2e\x0e\xb8\x9e\xb1\x33\xa3\x56\xf4\x09\x84\x69\x96\xf2\xc3\xdd\xa2\xaa\xd6\xff\x3b\xdc\xd4\xe8\xbe\xe0\xd6\xba\x05\x8a\xf8\xcb\x3a\x60\x90\xc7\xb0\x87\xce\x03\xe0\x41\x95\x66\x3f\x74\x25\x5c\xf2\xa5\x27\x6c\x17\x81\xa0\x7c\xd4\xc9\xe7\xde\xb9\xc4\x08\x1b\x77\xe9\x38\xbc\x42\x11\x87\x8f\x14\x72\x18\x0c\x7d\x23\xef\xd1\x07\xac\xcf\xf6\xce\x1d\x85\x31\x20\xc8\x15\xcb\x18\xfe\xf3\xfa\xa7\xcb\xe9\x7b\x1d\xbc\x2a\x25\x41\xd6\x6b\x23\x9f\x6c\x8d\xc0\x16\x51\x02\x82\xb2\x78\x4b\xd9\xf4\x35\xf5\x4c\x32\xa1\xe4\x02\xad\x9b\x04\x68\x68\xec\xe7\x57\xb7\xdd\xe6\x91\x22\xdd\x60\x51\x39\xd0\xe5\x33\xe5\xf2\x02\x5a\x10\x25\xd6\x32\xda\x7c\x05\x93\x63\x4f\x46\x35\xd7\x71\xd8\xe4\x9a\x37\xe1\xc4\x1d\x82\x0e\x9b\x28\x10\x52\x79\xd7\xe3\x01\x4e\x48\x10\x6b\xa8\xfe\x4a\xaa\xfb\xdb\x09\x9c\xae\xb9\x8c\x7e\x42\x3f\x4f\x3c\x22\xd5\xc5\x43\xfa\x56\xf3\xa5\x01\x21\x1f\xf2\x1b\xb9\x5c\x52\xf0\xd3\xed\x0d\x12\x04\x5c\xa1\x72\x67\xec\x51\x16\xa0\x74\x0d\x88\x0a\x87\x62\xdb\xa3\xb0\x5d\x04\x3f\xbf\xba\x3d\x81\xd3\x26\x1d\x3a\x17\x93\x2a\xc6\x7b\x78\x55\x1d\x81\xe5\x3a\x3e\x0b\x55\x75\xbb\x51\x4e\xdc\x73\x06\x91\x68\x8b\xca\x97\xf6\x9d\xf6\xb5\x45\xab\x29\x27\xc6\x34\x1d\xfb\xc0\x31\x86\x35\xd7\x8e\x3a\x57\x2a\x59\xe5\x4f\xe4\x73\x61\xdc\xc0\x75\xcf\x40\x8d\x21\x45\x6a\xbb\xf9\x58\xb6\x43\x75\x88\x6f\x42\x1e\xa8\xd9\x7f\xe2\xfd\xc1\x83\x69\xa2\x3a\xce\x60\x1f\x42\x93\xcb\x9a\x0c\x3f\x8a\x26\x5b\xa7\x42\x64\x89\x75\x64\x89\x22\x11\xe6\xce\x4e\xf5\x8a\x8c\x3e\xae\xa7\x6b\x6d\xee\xa4\x5a\x8e\x49\x48\xc7\x5e\x12\xec\x94\x9d\xe3\xf4\x2b\xfe\xf3\x25\x24\x60\x07\xfb\x14\x74\xf0\x77\xb4\xff\x44\x62\x70\xa4\x30\x7d\x2c\x2d\xca\x9b\x9d\x0f\xf1\x79\x3d\x14\xb9\x2e\xd3\xc8\x1d\xb8\x64\x1b\xfc\x39\x7c\xb8\xdb\x5d\xb3\xcd\x99\x88\xbd\xf1\x16\xaa\x27\xd9\xfa\x9d\x35\x8b\x28\xce\xc5\x87\x68\x33\x0e\x0f\x35\xc6\x42\xc5\x63\xce\x48\xad\xa3\xef\x8f\x25\x71\x21\xbf\xd8\x08\x7d\xba\x78\xfb\xe7\xea\x5b\x21\x1f\x6b\x71\x0e\xb9\x2f\xe2\x0b\x4b\x33\x70\xa6\x28\x23\x6b\xeb\xb4\x11\x4b\x6c\x7e\x2b\xe6\xd5\xe5\xf7\x2d\x45\x43\x2e\x0b\xbf\xfe\xc6\x9f\xb6\x6f\x42\x44\x9a\x27\xe2\x55\x39\xf7\xf8\x32\xa4\xc6\xad\xe3\xcb\x90\xe3\xcb\x90\xe3\xcb\x90\x9d\x76\x7c\x19\xf2\xc7\xbc\x0c\x39\xbe\xec\x38\xbe\xec\x38\xbe\xec\xa8\xb7\xe3\xcb\x8e\xbe\x76\x7c\xd9\x71\x7c\xd9\x71\x7c\xd9\x71\x7c\xd9\xd1\xb1\xd4\xf1\x65\xc7\xf1\x65\xc7\xf1\x65\xc7\x0e\xb2\xc7\x97\x1d\x8f\x3b\xf5\xfc\xd7\xbe\x00\x7c\x3c\x77\xff\xe7\x38\x77\x3f\x9e\xa4\x1f\x4f\xd2\x8f\x27\xe9\xc7\x93\xf4\xe3\x49\xfa\xf1\x24\x7d\x80\x26\xc7\x93\xf4\xe3\x49\xfa\xf1\x24\xfd\x78\x92\x1e\xc6\xf7\x9d\xa4\x2f\x44\x6a\x0f\x3e\x4a\xff\x7b\x00\x00\x00\xff\xff\x96\xf8\x2f\x2d\x0d\x53\x00\x00") func operatorsCoreosCom_operatorgroupsYamlBytes() ([]byte, error) { return bindataRead( @@ -205,7 +205,7 @@ func operatorsCoreosCom_operatorgroupsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x1a\xcb\x92\xdb\xb8\xf1\x3e\x5f\xd1\x25\x1f\xbc\x5b\x25\x4a\xb1\x73\x48\x6a\x6e\x53\x63\x6f\x6a\x92\xcd\xac\xcb\x33\xf6\x65\x6b\x0f\x2d\xb2\x25\x22\x22\x01\x2e\x1a\x94\x46\x71\xfc\xef\xa9\x06\x40\x89\xd4\x8b\x9c\xb5\xbc\x83\x8b\x24\x3c\xfa\xfd\x04\x84\x95\xfa\x4c\x96\x95\xd1\xd7\x80\x95\xa2\x27\x47\x5a\x7e\xf1\x64\xf9\x77\x9e\x28\x33\x5d\xbd\xb9\x5a\x2a\x9d\x5d\xc3\x6d\xcd\xce\x94\x1f\x89\x4d\x6d\x53\x7a\x47\x73\xa5\x95\x53\x46\x5f\x95\xe4\x30\x43\x87\xd7\x57\x00\xa8\xb5\x71\x28\xd3\x2c\x3f\x01\x52\xa3\x9d\x35\x45\x41\x36\x59\x90\x9e\x2c\xeb\x19\xcd\x6a\x55\x64\x64\x3d\xf0\x06\xf5\xea\x2f\x93\x37\x7f\x9b\xbc\xbd\x02\xd0\x58\xd2\x35\x98\x8a\x2c\x3a\x63\x79\xb2\xfb\x96\x1a\x4b\x46\x3e\xca\x2b\xae\x28\x15\xf8\x0b\x6b\xea\xaa\xbd\xbb\xb5\x27\x80\x6a\xc8\x40\x47\x0b\x63\x55\xf3\x1b\x20\x01\x53\x94\xfe\x7b\x60\xef\x97\x08\xc3\x4f\x15\x8a\xdd\xbf\x3a\xd3\x3f\x2b\x76\x7e\xa9\x2a\x6a\x8b\x45\x0b\xa7\x9f\x65\xa5\x17\x75\x81\x76\x37\x7f\x05\xc0\xa9\xa9\xe8\x1a\x6e\x8b\x9a\x1d\xc9\x44\x64\x37\xd2\x90\x44\x5e\x57\x6f\x22\x49\x9c\xe6\x54\x62\x43\x20\x08\x28\x7d\xf3\xe1\xee\xf3\x5f\x1f\xf6\x16\x00\x32\xe2\xd4\xaa\xca\x79\xe1\x35\x34\x82\xa5\xca\x12\x93\x76\x0c\x08\x69\x40\xbb\x25\x68\xd2\x3a\xee\x36\x42\x98\x99\xfd\x87\x52\xd7\x9a\xae\xac\x6c\x76\x2d\x29\x85\xd1\x32\x92\xce\xfc\x1e\x1d\xff\x4b\xf6\x56\x01\x84\xfc\x70\x12\x32\xb1\x18\x62\x70\x39\x35\x82\xa0\x2c\xf2\x0c\x66\x0e\x2e\x57\xbc\xe3\xc0\xdb\x90\x4c\xa3\x8e\x74\x4e\x0e\x80\x3f\x90\x15\x40\xc0\xb9\xa9\x8b\x4c\x4c\x6d\x45\xd6\x81\xa5\xd4\x2c\xb4\xfa\xef\x16\x3a\x83\x33\x1e\x6d\x81\x8e\xd8\x81\xd2\x8e\xac\xc6\x02\x56\x58\xd4\x34\x06\xd4\xd9\x01\xec\x12\x37\x60\x49\xf0\x42\xad\x5b\x10\xfd\x11\x3e\xa4\xe5\xdf\xc6\x12\x28\x3d\x37\xd7\x90\x3b\x57\xf1\xf5\x74\xba\x50\xae\x71\xa2\xd4\x94\x65\xad\x95\xdb\x4c\xbd\x3f\xa8\x59\x2d\x96\x33\xcd\x68\x45\xc5\x94\xd5\x22\x41\x9b\xe6\xca\x51\xea\x6a\x4b\x53\xac\x54\xe2\x99\xd1\xde\x91\x26\x65\xf6\xca\x46\xb7\xe3\x3d\xc4\x41\x91\xec\xac\xd2\x8b\xce\x92\x37\xea\x67\x2a\x4b\x2c\x1e\x94\xd8\x4e\x00\x18\x98\xdd\xe9\x44\xa6\x44\x8c\x1f\xdf\x3f\x3c\x42\x43\x51\xd0\x5b\x50\x51\xcb\x00\x4f\x6b\x4b\x24\xab\xf4\x9c\x6c\x38\x39\xb7\xa6\xf4\x50\x49\x67\x95\x51\xda\xf9\x1f\x69\xa1\x48\x3b\xe0\x7a\x56\x2a\x27\x66\xf1\x7b\x4d\xec\x44\x91\x87\x80\x6f\x7d\xd0\x81\x19\x41\x5d\x65\xe8\x28\x3b\xdc\x72\xa7\xe1\x16\x4b\x2a\x6e\x91\xe9\x4f\xd7\x9d\xe8\x88\x13\x51\xc8\x60\xed\xb5\x43\xea\xe1\x81\x03\xbf\x05\x68\x02\xe2\x49\x75\x37\x31\xe2\xa1\xa2\xb4\xe3\x8a\x19\xb1\xb2\xe2\x2a\x0e\x1d\x89\xc3\x75\x02\xe1\x10\xd4\x0e\x5d\xcd\xc3\x90\xfb\xad\x1d\xf4\x66\xc6\x62\x17\x2d\xfc\xa8\x77\x01\x0d\xc5\x20\x1d\x43\x6a\xca\xca\x68\xb1\xab\xa1\x54\x9d\x0e\x66\xe0\xb3\x52\x03\xef\x70\x6d\x8f\xf6\xdb\xed\xd6\x38\x3f\x23\xde\x1a\xbf\xf0\x80\x2e\x80\x63\x0a\x0c\x1d\x09\xb7\x03\xa8\x95\x21\x56\x2e\xba\x38\x46\x93\xa4\x8b\x02\x67\x54\x3c\x50\x41\xe9\xa1\x7a\xfa\x38\x96\xd1\x39\x7f\x7c\xcb\x1e\xf3\x3f\xb7\x4f\x84\xd0\xe0\x81\xc0\xef\x35\xd9\x0d\x98\x15\x59\x89\x16\xe4\x44\x71\x3b\xa1\xd4\x4c\x99\xc4\x5c\xf6\x27\x3b\x62\x79\x7d\x46\x99\x03\xc5\x34\x84\x55\xf0\x21\xdc\xa5\xf9\xfb\x27\x89\x48\xad\xac\x3b\x80\xeb\xfd\x83\x91\x71\xc5\x9e\xcd\x20\x00\x6e\x84\x12\x95\x56\xfa\xa0\x07\x8f\x39\x75\x66\x00\x2d\xc1\xcd\xfd\xbb\x63\x41\x69\x9f\x61\xb4\x16\x37\x67\x76\x29\x47\xe5\x59\x26\xfa\x23\x7c\x77\xdc\x9c\xe1\x25\xe6\x81\x66\x25\x9a\xb9\x76\xa8\x34\xc7\x24\x38\x06\x84\x25\x6d\x7c\xfe\xf4\x69\xba\xf1\x5a\xd9\xdc\x83\xda\x92\xcf\xc5\xde\x34\x96\xb4\xf1\x20\x4e\xa5\xd6\x43\x49\x9d\x35\x8d\x06\xc1\x39\x5f\xda\x8d\x44\xd0\xf7\xee\x31\xc7\x63\x62\x77\x0c\xb1\xc9\x30\x96\xb4\xe9\xdb\xb2\xa7\x4b\x91\x91\xe2\x58\xc4\x88\xce\x64\xc2\x2b\x45\xa6\xb6\x6a\xc2\xaa\x2a\x14\x1d\x4f\x93\xfb\xe3\x64\xf2\x39\x1c\x0d\xfb\xcf\x24\xba\xd7\x00\xdb\xb0\xbb\xc5\xeb\x92\x36\xaf\x39\x58\x89\x78\x60\xae\x2a\x89\x27\xdb\x50\x33\xc4\x54\xc2\xf8\x8c\x85\xca\x76\xc5\xba\xf7\xc7\x3b\x3d\x86\x7b\xe3\xe4\xe3\xfd\x93\x92\xb2\x42\xcc\xef\x9d\x21\xbe\x37\xce\xcf\x5c\x54\x7a\x81\xd8\xef\x21\xbb\x00\xd9\xbb\xaa\x0e\xe1\x43\x84\xd3\x2e\xde\x78\x02\x77\xf3\x4e\x00\x96\xdd\x77\x1a\x8c\x8d\x22\x18\x80\xc6\x57\xec\x01\x55\x40\x52\xd6\xec\xeb\x2d\x6d\x74\x42\x65\xe5\x36\x47\xb1\x44\xd9\x1a\xdb\x11\xed\x37\x21\x8c\xc8\x1e\xa5\x70\x0c\x2b\xa1\x67\x28\x30\xa5\x0c\xb2\xda\x33\xee\xcb\x57\xe9\xf7\x54\x3a\x00\x57\x49\x76\x41\x50\x49\xc8\x1f\xaa\xf5\xbe\x40\x1d\xc6\x80\x70\xdd\x06\x3a\xc8\x94\x00\x9e\x12\x69\xa1\xad\x26\x47\x9c\x48\x4a\x4a\x22\x4d\xce\x94\x67\xf9\xfd\x83\x07\x7d\x2e\xf4\x65\xc0\xf0\xfc\xd9\x63\xbb\x2d\x90\x21\xcb\x94\x58\x89\xdd\x7e\x91\x64\xe2\xd5\xfe\x15\x2a\x54\x96\x27\x70\xe3\x1b\xeb\x82\x3a\x6b\x4a\x7b\x03\x69\x81\xe9\x41\x57\x09\x1a\xc9\x07\x2b\x2c\x24\xb5\x49\x24\xd1\x40\x45\x48\x74\x66\x7e\x90\xf0\xc7\xb0\xce\xa5\x9e\x93\x20\x3b\x57\x54\xf8\xae\x68\xb4\xa4\xcd\x68\x2c\xa8\xcf\xa2\x6b\x7b\xc0\xe8\x4e\x8f\x42\x7a\x3c\xb0\xe8\x6d\x2e\x35\xba\xd8\xc0\xc8\xaf\x8d\xbe\xad\x7e\xe8\xcd\x8a\x98\x65\xfe\xc6\x06\x8b\x0f\x03\x53\xd5\x00\xd3\xec\xd8\x55\x89\x55\xbf\x59\x59\x9a\x9f\x44\xdb\xb1\xa3\x8f\x34\x0f\x02\x68\x95\x98\x73\xb2\xa4\x7d\xe1\x6d\x4e\xd6\x95\xbb\x4a\x74\x1c\x53\x23\x65\xb0\x56\x2e\xef\xd6\xb3\xa7\x24\xda\xef\xe4\x3d\xae\xdd\x65\x42\xa5\xf9\xc7\x86\xec\x60\xef\x5b\x2e\x42\x4e\x6b\xa8\x1d\x03\x69\xab\xd2\xbc\x21\x56\x1a\x9f\xd0\x5c\x89\xb5\x04\xd5\x9d\xc9\x79\x83\x8c\x60\x58\x8d\x72\xfa\xbe\xe7\x0c\xa3\x37\x1f\xee\x9a\x7b\x9d\x70\x9d\x43\x0d\xa3\x3d\xe9\x74\x60\xfc\xdb\xc9\xe0\x19\x44\xdd\x6e\x0f\xb5\xeb\x8b\xd6\x5d\xd0\xb6\xed\xf4\xb7\x0e\x8d\x05\x0d\x21\xb8\x3f\x0b\x0c\xca\x00\xc7\xc9\xdd\x51\xdb\x26\x16\x57\xa8\x0a\x9c\x15\x4d\xdb\x1c\x8a\xa3\xd8\x34\x6f\x89\x7f\x1d\xcc\xe6\xc8\x45\xc7\x31\x36\x06\xd4\xd2\xc3\xab\x69\xa9\x95\x83\xc9\x0e\xd8\x28\xf8\x7b\xb6\x0d\x2f\xa9\xa5\xbb\x65\xf7\x68\x51\xb3\x17\xe0\xa3\x2a\x69\x48\xf2\xdd\x6b\x77\xd9\x81\x53\x25\x45\x6b\x68\x94\xe1\xb6\x60\x29\x0b\x17\x56\x46\x53\xe3\x9b\x3e\x9b\x18\x97\xd3\xc9\x80\xd2\x1e\xcf\x4a\xf6\x00\x73\x63\x4b\x74\xd7\x90\xa1\xa3\x44\x28\x1b\x24\x86\x4f\xfe\x1e\xec\xa2\x22\x58\x23\x8b\x36\x66\x74\x78\x55\xfa\x02\x4c\x96\xc4\x8c\x8b\xe7\x73\x77\x03\x79\x5d\xa2\x78\x17\x66\xde\x8f\x22\x20\x50\x3a\x53\x29\xfa\x1b\xce\x8c\x1c\xaa\x82\x01\x67\xa6\x0e\xde\xb7\x53\xff\xc5\x35\x6c\x09\xb9\x2f\xca\x1e\xe1\x23\x94\x09\x72\x54\x84\xd7\x55\xd5\x6b\xf6\x36\xf0\x3d\xa9\x3e\x7e\xe5\xd7\x4b\x75\xbc\xfe\xdb\x06\xdb\x48\xf0\xd8\x7b\x93\x99\xc3\xa3\xad\x69\x0c\x3f\x61\xc1\x34\x86\x4f\x7a\xa9\xcd\xfa\xf2\xb4\xfb\xcd\xcf\x96\xf7\xa6\xf2\x14\x6e\x69\xbe\x20\x59\xbe\xc0\xfc\x80\x2e\xbf\xe4\xd5\xce\x5d\xac\x95\x7c\x43\xe4\xab\x8c\x4a\x51\x4a\x9d\x07\x15\x50\x9a\x1d\x61\x16\x27\x49\x3b\x65\x29\xae\x8d\xc3\xe5\xfc\x20\x99\xee\x9e\x5f\xa4\xa2\x05\x94\x42\x57\x65\xf0\xcf\x87\x5f\xee\xa7\xff\x30\xb1\x80\xc6\x34\x25\x8e\x89\x49\x2a\xdb\x31\x70\x9d\xe6\x80\xdc\x5c\x40\x3f\xf8\x94\x55\xa2\x56\x73\x62\x37\x89\xd0\xc8\xf2\xaf\x6f\x7f\xeb\x93\xf6\x4f\xc6\x02\x3d\x61\x59\x15\x34\x06\x15\x3b\xd1\xe6\x45\xa2\x55\x7a\x79\x41\x6c\x21\xfb\x2a\xcb\x13\x5c\x99\x2c\x32\xbc\xf6\xac\x38\x5c\x12\x98\xc8\x4a\x4d\x50\xa8\x65\xaf\xcd\x8c\xb8\xa2\xb4\x45\xf6\x17\x8d\x25\x7d\x1d\xc1\x0f\xeb\x9c\x2c\xc1\x48\x7e\x8e\x02\x39\xdb\xe2\x55\xe6\x5a\xee\x10\xc9\x0a\xd7\x3a\x56\x2d\x16\x64\x7b\xc3\xad\x7f\x39\x59\x91\x76\x3f\x4a\xa3\xad\xe6\xa0\x4d\x0b\x94\x47\x20\x7a\xac\x28\x55\x73\x45\xd9\x01\x99\xbf\xbe\xfd\x6d\x04\x3f\x74\x65\xd2\x83\x52\xe9\x8c\x9e\xe0\x6d\xe8\xc3\x14\x8b\xf4\x7e\x8c\x3d\x39\x6f\xb4\xc3\x27\xc1\x98\x4a\x03\xa5\x43\x77\xe3\x0c\xe4\xb8\x22\x60\x53\x12\xac\xa9\x28\x92\xf0\x02\x90\xc1\xda\xdf\x58\xf4\x16\x1f\x41\x85\xa1\xb7\xaf\xd0\xba\x9e\x77\xc1\x8e\x7c\x86\x39\xe1\xb1\xe7\xb2\xee\x78\x9e\xff\xf9\xa7\xb4\x67\x55\xc1\x2f\xf8\x0c\xf5\x87\x24\xe6\xdf\xae\x2f\x28\xb1\xfb\x96\x2f\x7c\x83\xc4\x76\xcd\xa8\x08\x2d\x33\x29\x8b\xbc\x52\xaa\x1c\x4f\xcd\x8a\xec\x4a\xd1\x7a\xba\x36\x76\xa9\xf4\x22\x11\x63\x4f\x82\x15\xf1\xd4\xff\x5b\x60\xfa\xca\x7f\x5c\x4a\x40\x5c\x61\x7a\x71\x29\x79\xa0\x2f\x2f\x2a\xa1\x82\xa7\x97\x90\x54\xd3\x00\x3f\xbf\xe7\xec\x95\xd7\x43\x08\x7c\xe9\x3e\x0e\x89\x49\xeb\x5c\xa5\x79\xf3\xb7\x83\x56\x96\x28\x31\x0b\x69\x04\xf5\xe6\x85\x7d\x56\xf4\x51\x5b\xa1\x6c\x93\xc4\x7f\xd2\x24\xa8\x33\xf9\xce\x8a\x9d\xcc\x5f\x42\x01\xb5\xba\x68\xf0\xfb\x74\xf7\xee\xe5\xcd\x73\xfa\xaa\x56\x97\x88\x74\x43\xee\xb7\xc2\x13\xf6\x35\x38\x5b\x37\xbd\x0b\x3b\x63\xa5\x43\xe9\xcc\xd5\xb3\xed\xcd\xd4\x4e\xde\xb1\x98\x86\x2f\x5f\xaf\xfe\x1f\x00\x00\xff\xff\xf8\xfd\x13\xb9\x8d\x25\x00\x00") +var _operatorsCoreosCom_operatorsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x1a\xcb\x92\xdb\x36\xf2\x3e\x5f\xd1\x25\x1f\x9c\x54\x89\x52\xec\xbd\xa4\xe6\x36\x35\x76\xb6\x66\x37\x3b\x71\x79\xc6\xbe\xa4\x72\x68\x91\x2d\x11\x2b\x12\x60\xd0\xa0\x34\x5a\xaf\xff\x7d\xab\x01\x50\x22\xf5\x22\x27\x96\x77\x70\x91\x84\x47\xbf\x9f\x80\xb0\x52\x9f\xc9\xb2\x32\xfa\x1a\xb0\x52\xf4\xe4\x48\xcb\x2f\x9e\x2c\x7f\xe6\x89\x32\xd3\xd5\x9b\xab\xa5\xd2\xd9\x35\xdc\xd6\xec\x4c\xf9\x91\xd8\xd4\x36\xa5\x77\x34\x57\x5a\x39\x65\xf4\x55\x49\x0e\x33\x74\x78\x7d\x05\x80\x5a\x1b\x87\x32\xcd\xf2\x13\x20\x35\xda\x59\x53\x14\x64\x93\x05\xe9\xc9\xb2\x9e\xd1\xac\x56\x45\x46\xd6\x03\x6f\x50\xaf\x7e\x9a\xbc\xf9\x79\xf2\xd3\x15\x80\xc6\x92\xae\xc1\x54\x64\xd1\x19\xcb\x93\xdd\xb7\xd4\x58\x32\xf2\x51\x5e\x71\x45\xa9\xc0\x5f\x58\x53\x57\xed\xdd\xad\x3d\x01\x54\x43\x06\x3a\x5a\x18\xab\x9a\xdf\x00\x09\x98\xa2\xf4\xdf\x03\x7b\xbf\x45\x18\x7e\xaa\x50\xec\xfe\xd9\x99\xfe\x55\xb1\xf3\x4b\x55\x51\x5b\x2c\x5a\x38\xfd\x2c\x2b\xbd\xa8\x0b\xb4\xbb\xf9\x2b\x00\x4e\x4d\x45\xd7\x70\x5b\xd4\xec\x48\x26\x22\xbb\x91\x86\x24\xf2\xba\x7a\x13\x49\xe2\x34\xa7\x12\x1b\x02\x41\x40\xe9\x9b\x0f\x77\x9f\xff\xf6\xb0\xb7\x00\x90\x11\xa7\x56\x55\xce\x0b\xaf\xa1\x11\x2c\x55\x96\x98\xb4\x63\x40\x48\x03\xda\x2d\x41\x93\xd6\x71\xb7\x11\xc2\xcc\xec\xdf\x94\xba\xd6\x74\x65\x65\xb3\x6b\x49\x29\x8c\x96\x91\x74\xe6\xf7\xe8\xf8\x6f\xb2\xb7\x0a\x20\xe4\x87\x93\x90\x89\xc5\x10\x83\xcb\xa9\x11\x04\x65\x91\x67\x30\x73\x70\xb9\xe2\x1d\x07\xde\x86\x64\x1a\x75\xa4\x73\x72\x00\xfc\x81\xac\x00\x02\xce\x4d\x5d\x64\x62\x6a\x2b\xb2\x0e\x2c\xa5\x66\xa1\xd5\x7f\xb6\xd0\x19\x9c\xf1\x68\x0b\x74\xc4\x0e\x94\x76\x64\x35\x16\xb0\xc2\xa2\xa6\x31\xa0\xce\x0e\x60\x97\xb8\x01\x4b\x82\x17\x6a\xdd\x82\xe8\x8f\xf0\x21\x2d\xff\x32\x96\x40\xe9\xb9\xb9\x86\xdc\xb9\x8a\xaf\xa7\xd3\x85\x72\x8d\x13\xa5\xa6\x2c\x6b\xad\xdc\x66\xea\xfd\x41\xcd\x6a\xb1\x9c\x69\x46\x2b\x2a\xa6\xac\x16\x09\xda\x34\x57\x8e\x52\x57\x5b\x9a\x62\xa5\x12\xcf\x8c\xf6\x8e\x34\x29\xb3\x57\x36\xba\x1d\xef\x21\x0e\x8a\x64\x67\x95\x5e\x74\x96\xbc\x51\x3f\x53\x59\x62\xf1\xa0\xc4\x76\x02\xc0\xc0\xec\x4e\x27\x32\x25\x62\xfc\xf8\xfe\xe1\x11\x1a\x8a\x82\xde\x82\x8a\x5a\x06\x78\x5a\x5b\x22\x59\xa5\xe7\x64\xc3\xc9\xb9\x35\xa5\x87\x4a\x3a\xab\x8c\xd2\xce\xff\x48\x0b\x45\xda\x01\xd7\xb3\x52\x39\x31\x8b\x3f\x6b\x62\x27\x8a\x3c\x04\x7c\xeb\x83\x0e\xcc\x08\xea\x2a\x43\x47\xd9\xe1\x96\x3b\x0d\xb7\x58\x52\x71\x8b\x4c\xff\x77\xdd\x89\x8e\x38\x11\x85\x0c\xd6\x5e\x3b\xa4\x1e\x1e\x38\xf0\x5b\x80\x26\x20\x9e\x54\x77\x13\x23\x1e\x2a\x4a\x3b\xae\x98\x11\x2b\x2b\xae\xe2\xd0\x91\x38\x5c\x27\x10\x0e\x41\xed\xd0\xd5\x3c\x0c\xb9\xdf\xda\x41\x6f\x66\x2c\x76\xd1\xc2\x8f\x7a\x17\xd0\x50\x0c\xd2\x31\xa4\xa6\xac\x8c\x16\xbb\x1a\x4a\xd5\xe9\x60\x06\x3e\x2b\x35\xf0\x0e\xd7\xf6\x68\xbf\xdd\x6e\x8d\xf3\x33\xe2\xad\xf1\x0b\x0f\xe8\x02\x38\xa6\xc0\xd0\x91\x70\x3b\x80\x5a\x19\x62\xe5\xa2\x8b\x63\x34\x49\xba\x28\x70\x46\xc5\x03\x15\x94\x1e\xaa\xa7\x8f\x63\x19\x9d\xf3\xc7\xb7\xec\x31\xff\x6b\xfb\x44\x08\x0d\x1e\x08\xfc\x59\x93\xdd\x80\x59\x91\x95\x68\x41\x4e\x14\xb7\x13\x4a\xcd\x94\x49\xcc\x65\x7f\xb2\x23\x96\xd7\x67\x94\x39\x50\x4c\x43\x58\x05\x1f\xc2\x5d\x9a\xbf\x7f\x92\x88\xd4\xca\xba\x03\xb8\xde\x3f\x18\x19\x57\xec\xd9\x0c\x02\xe0\x46\x28\x51\x69\xa5\x0f\x7a\xf0\x98\x53\x67\x06\xd0\x12\xdc\xdc\xbf\x3b\x16\x94\xf6\x19\x46\x6b\x71\x73\x66\x97\x72\x54\x9e\x65\xa2\x3f\xc2\x77\xc7\xcd\x19\x5e\x62\x1e\x68\x56\xa2\x99\x6b\x87\x4a\x73\x4c\x82\x63\x40\x58\xd2\xc6\xe7\x4f\x9f\xa6\x1b\xaf\x95\xcd\x3d\xa8\x2d\xf9\x5c\xec\x4d\x63\x49\x1b\x0f\xe2\x54\x6a\x3d\x94\xd4\x59\xd3\x68\x10\x9c\xf3\xa5\xdd\x48\x04\x7d\xef\x1e\x73\x3c\x26\x76\xc7\x10\x9b\x0c\x63\x49\x9b\xbe\x2d\x7b\xba\x14\x19\x29\x8e\x45\x8c\xe8\x4c\x26\xbc\x52\x64\x6a\xab\x26\xac\xaa\x42\xd1\xf1\x34\xb9\x3f\x4e\x26\x9f\xc3\xd1\xb0\xff\x4c\xa2\x7b\x0d\xb0\x0d\xbb\x5b\xbc\x2e\x69\xf3\x9a\x83\x95\x88\x07\xe6\xaa\x92\x78\xb2\x0d\x35\x43\x4c\x25\x8c\xcf\x58\xa8\x6c\x57\xac\x7b\x7f\xbc\xd3\x63\xb8\x37\x4e\x3e\xde\x3f\x29\x29\x2b\xc4\xfc\xde\x19\xe2\x7b\xe3\xfc\xcc\x45\xa5\x17\x88\xfd\x1e\xb2\x0b\x90\xbd\xab\xea\x10\x3e\x44\x38\xed\xe2\x8d\x27\x70\x37\xef\x04\x60\xd9\x7d\xa7\xc1\xd8\x28\x82\x01\x68\x7c\xc5\x1e\x50\x05\x24\x65\xcd\xbe\xde\xd2\x46\x27\x54\x56\x6e\x73\x14\x4b\x94\xad\xb1\x1d\xd1\x7e\x13\xc2\x88\xec\x51\x0a\xc7\xb0\x12\x7a\x86\x02\x53\xca\x20\xab\x3d\xe3\xbe\x7c\x95\x7e\x4f\xa5\x03\x70\x95\x64\x17\x04\x95\x84\xfc\xa1\x5a\xef\x0b\xd4\x61\x0c\x08\xd7\x6d\xa0\x83\x4c\x09\xe0\x29\x91\x16\xda\x6a\x72\xc4\x89\xa4\xa4\x24\xd2\xe4\x4c\x79\x96\xdf\xbf\x78\xd0\xe7\x42\x5f\x06\x0c\xcf\x9f\x3d\xb6\xdb\x02\x19\xb2\x4c\x89\x95\xd8\xed\x17\x49\x26\x5e\xed\x5f\xa1\x42\x65\x79\x02\x37\xbe\xb1\x2e\xa8\xb3\xa6\xb4\x37\x90\x16\x98\x1e\x74\x95\xa0\x91\x7c\xb0\xc2\x42\x52\x9b\x44\x12\x0d\x54\x84\x44\x67\xe6\x07\x09\x7f\x0c\xeb\x5c\xea\x39\x09\xb2\x73\x45\x85\xef\x8a\x46\x4b\xda\x8c\xc6\x82\xfa\x2c\xba\xb6\x07\x8c\xee\xf4\x28\xa4\xc7\x03\x8b\xde\xe6\x52\xa3\x8b\x0d\x8c\xfc\xda\xe8\xdb\xea\x87\xde\xac\x88\x59\xe6\x6f\x6c\xb0\xf8\x30\x30\x55\x0d\x30\xcd\x8e\x5d\x95\x58\xf5\x9b\x95\xa5\xf9\x49\xb4\x1d\x3b\xfa\x48\xf3\x20\x80\x56\x89\x39\x27\x4b\xda\x17\xde\xe6\x64\x5d\xb9\xab\x44\xc7\x31\x35\x52\x06\x6b\xe5\xf2\x6e\x3d\x7b\x4a\xa2\xfd\x4e\xde\xe3\xda\x5d\x26\x54\x9a\x7f\x6c\xc8\x0e\xf6\xbe\xe5\x22\xe4\xb4\x86\xda\x31\x90\xb6\x2a\xcd\x1b\x62\xa5\xf1\x09\xcd\x95\x58\x4b\x50\xdd\x99\x9c\x37\xc8\x08\x86\xd5\x28\xa7\xef\x7b\xce\x30\x7a\xf3\xe1\xae\xb9\xd7\x09\xd7\x39\xd4\x30\xda\x93\x4e\x07\xc6\xbf\x9d\x0c\x9e\x41\xd4\xed\xf6\x50\xbb\xbe\x68\xdd\x05\x6d\xdb\x4e\x7f\xeb\xd0\x58\xd0\x10\x82\xfb\xb3\xc0\xa0\x0c\x70\x9c\xdc\x1d\xb5\x6d\x62\x71\x85\xaa\xc0\x59\xd1\xb4\xcd\xa1\x38\x8a\x4d\xf3\x96\xf8\xd7\xc1\x6c\x8e\x5c\x74\x1c\x63\x63\x40\x2d\x3d\xbc\x9a\x96\x5a\x39\x98\xec\x80\x8d\x82\xbf\x67\xdb\xf0\x92\x5a\xba\x5b\x76\x8f\x16\x35\x7b\x01\x3e\xaa\x92\x86\x24\xdf\xbd\x76\x97\x1d\x38\x55\x52\xb4\x86\x46\x19\x6e\x0b\x96\xb2\x70\x61\x65\x34\x35\xbe\xe9\xb3\x89\x71\x39\x9d\x0c\x28\xed\xf1\xac\x64\x0f\x30\x37\xb6\x44\x77\x0d\x19\x3a\x4a\x84\xb2\x41\x62\xf8\xe4\xef\xc1\x2e\x2a\x82\x35\xb2\x68\x63\x46\x87\x57\xa5\x2f\xc0\x64\x49\xcc\xb8\x78\x3e\x77\x37\x90\xd7\x25\x8a\x77\x61\xe6\xfd\x28\x02\x02\xa5\x33\x95\xa2\xbf\xe1\xcc\xc8\xa1\x2a\x18\x70\x66\xea\xe0\x7d\x3b\xf5\x5f\x5c\xc3\x96\x90\xfb\xa2\xec\x11\x3e\x42\x99\x20\x47\x45\x78\x5d\x55\xbd\x66\x6f\x03\xdf\x93\xea\xe3\x57\x7e\xbd\x54\xc7\xeb\xbf\x6d\xb0\x8d\x04\x8f\xbd\x37\x99\x39\x3c\xda\x9a\xc6\xf0\x0b\x16\x4c\x63\xf8\xa4\x97\xda\xac\x2f\x4f\xbb\xdf\xfc\x6c\x79\x6f\x2a\x4f\xe1\x96\xe6\x0b\x92\xe5\x0b\xcc\x0f\xe8\xf2\x4b\x5e\xed\xdc\xc5\x5a\xc9\x37\x44\xbe\xca\xa8\x14\xa5\xd4\x79\x50\x01\xa5\xd9\x11\x66\x71\x92\xb4\x53\x96\xe2\xda\x38\x5c\xce\x0f\x92\xe9\xee\xf9\x45\x2a\x5a\x40\x29\x74\x55\x06\xff\x78\xf8\xed\x7e\xfa\x77\x13\x0b\x68\x4c\x53\xe2\x98\x98\xa4\xb2\x1d\x03\xd7\x69\x0e\xc8\xcd\x05\xf4\x83\x4f\x59\x25\x6a\x35\x27\x76\x93\x08\x8d\x2c\xff\xfe\xf6\x8f\x3e\x69\xff\x62\x2c\xd0\x13\x96\x55\x41\x63\x50\xb1\x13\x6d\x5e\x24\x5a\xa5\x97\x17\xc4\x16\xb2\xaf\xb2\x3c\xc1\x95\xc9\x22\xc3\x6b\xcf\x8a\xc3\x25\x81\x89\xac\xd4\x04\x85\x5a\xf6\xda\xcc\x88\x2b\x4a\x5b\x64\x7f\xd1\x58\xd2\xd7\x11\xfc\xb0\xce\xc9\x12\x8c\xe4\xe7\x28\x90\xb3\x2d\x5e\x65\xae\xe5\x0e\x91\xac\x70\xad\x63\xd5\x62\x41\xb6\x37\xdc\xfa\x97\x93\x15\x69\xf7\xa3\x34\xda\x6a\x0e\xda\xb4\x40\x79\x04\xa2\xc7\x8a\x52\x35\x57\x94\x1d\x90\xf9\xfb\xdb\x3f\x46\xf0\x43\x57\x26\x3d\x28\x95\xce\xe8\x09\xde\x86\x3e\x4c\xb1\x48\xef\xc7\xd8\x93\xf3\x46\x3b\x7c\x12\x8c\xa9\x34\x50\x3a\x74\x37\xce\x40\x8e\x2b\x02\x36\x25\xc1\x9a\x8a\x22\x09\x2f\x00\x19\xac\xfd\x8d\x45\x6f\xf1\x11\x54\x18\x7a\xfb\x0a\xad\xeb\x79\x17\xec\xc8\x67\x98\x13\x1e\x7b\x2e\xeb\x8e\xe7\xf9\x9f\x7f\x4a\x7b\x56\x15\xfc\x82\xcf\x50\x7f\x49\x62\xfe\xed\xfa\x82\x12\xbb\x6f\xf9\xc2\x37\x48\x6c\xd7\x8c\x8a\xd0\x32\x93\xb2\xc8\x2b\xa5\xca\xf1\xd4\xac\xc8\xae\x14\xad\xa7\x6b\x63\x97\x4a\x2f\x12\x31\xf6\x24\x58\x11\x4f\xfd\xbf\x05\xa6\xaf\xfc\xc7\xa5\x04\xc4\x15\xa6\x17\x97\x92\x07\xfa\xf2\xa2\x12\x2a\x78\x7a\x09\x49\x35\x0d\xf0\xf3\x7b\xce\x5e\x79\x3d\x84\xc0\x97\xee\xe3\x90\x98\xb4\xce\x55\x9a\x37\x7f\x3b\x68\x65\x89\x12\xb3\x90\x46\x50\x6f\x5e\xd8\x67\x45\x1f\xb5\x15\xca\x36\x49\xfc\x27\x4d\x82\x3a\x93\xef\xac\xd8\xc9\xfc\x25\x14\x50\xab\x8b\x06\xbf\x4f\x77\xef\x5e\xde\x3c\xa7\xaf\x6a\x75\x89\x48\x37\xe4\x7e\x2b\x3c\x61\x5f\x83\xb3\x75\xd3\xbb\xb0\x33\x56\x3a\x94\xce\x5c\x3d\xdb\xde\x4c\xed\xe4\x1d\x8b\x69\xf8\xf2\xf5\xea\x7f\x01\x00\x00\xff\xff\xbc\x5e\x93\xfd\x8d\x25\x00\x00") func operatorsCoreosCom_operatorsYamlBytes() ([]byte, error) { return bindataRead( @@ -225,7 +225,7 @@ func operatorsCoreosCom_operatorsYaml() (*asset, error) { return a, nil } -var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\xe4\xb6\x95\x28\xfe\x7f\x3e\x05\x4a\x49\x95\xa4\xa4\xbb\x35\x93\xcd\xdd\xe4\xce\x4d\x25\x25\x4b\x1a\xaf\xae\x3d\x63\xdd\xd1\xd8\xa9\xfd\x79\xbd\x6b\x88\x44\x77\x23\x22\x01\x9a\x00\x5b\xd3\x59\xe7\xbb\xff\x0a\xe7\x00\x20\xd9\x2f\x02\xfd\x92\xc6\x4b\xfc\x61\x8f\xd8\x24\x9e\x07\xe7\xfd\xa0\x05\xff\x8e\x95\x8a\x4b\xf1\x86\xd0\x82\xb3\x4f\x9a\x09\xf3\x97\x1a\x3d\xfe\x49\x8d\xb8\xbc\x98\xbd\xfe\xd5\x23\x17\xe9\x1b\x72\x55\x29\x2d\xf3\x0f\x4c\xc9\xaa\x4c\xd8\x35\x1b\x73\xc1\x35\x97\xe2\x57\x39\xd3\x34\xa5\x9a\xbe\xf9\x15\x21\x54\x08\xa9\xa9\x79\xac\xcc\x9f\x84\x24\x52\xe8\x52\x66\x19\x2b\x87\x13\x26\x46\x8f\xd5\x03\x7b\xa8\x78\x96\xb2\x12\x3a\x77\x43\xcf\x5e\x8d\x5e\xff\x71\xf4\xfb\x5f\x11\x22\x68\xce\xde\x10\x55\x3d\xa8\xa4\xe4\x05\xf4\x34\x92\x05\x2b\xa9\x96\xa5\x1a\x25\xb2\x64\xd2\xfc\x2f\xff\x95\x2a\x58\x62\xc6\x98\x94\xb2\x2a\xde\x90\x95\xef\x60\x77\x6e\x2a\x54\xb3\x89\x2c\xb9\xfb\x9b\x90\x21\x91\x59\x0e\xff\xc6\x25\xde\x37\x46\x85\xc7\x19\x57\xfa\xab\xa5\x9f\xbe\xe6\x4a\xc3\xcf\x45\x56\x95\x34\x5b\x98\x2d\xfc\xa2\xa6\xb2\xd4\xef\xeb\xb1\xcd\x58\xaa\x7a\x68\xfe\xdb\xbe\xc8\xc5\xa4\xca\x68\xd9\xee\xe4\x57\x84\xa8\x44\x16\xec\x0d\x81\x3e\x0a\x9a\xb0\xf4\x57\x84\xd8\xed\xb2\x7d\x0e\x09\x4d\x53\x38\x02\x9a\xdd\x95\x5c\x68\x56\x5e\xc9\xac\xca\x85\x1f\xd3\xbc\x93\x32\xdf\xeb\x1b\xf2\x71\xca\x48\x41\x93\x47\x3a\x61\x6e\xbc\x07\x96\x12\x2d\xfd\x07\x84\xfc\x5d\x49\x71\x47\xf5\xf4\x0d\x19\x99\x2d\x1e\x99\x1d\x6c\xfc\x8c\xe7\x73\x87\x9d\x34\x9e\xeb\xb9\x99\xae\xd2\x25\x17\x93\x4d\xc3\x27\x54\xd3\x4c\x4e\x08\x82\x11\x19\xcb\x92\xe8\x29\x23\x66\x28\x3e\xe6\x2c\x75\xf3\xdb\x30\x23\xfc\x74\x69\x4e\xf7\x8b\x8f\x83\xa7\x34\xa5\x42\xb0\x8c\xc8\x31\xa9\x8a\x94\x6a\xa6\x88\x96\xf5\xfe\x6c\xde\x1e\xfb\xf1\xd2\x6c\xae\x96\x9e\xaf\x98\x0e\xbe\x3a\x7b\x4d\xb3\x62\x4a\x5f\xdb\x87\x2a\x99\xb2\x9c\xd6\x67\x28\x0b\x26\x2e\xef\x6e\xbf\xfb\x97\xfb\x85\x1f\x48\x7b\x29\x4d\x10\x25\x8f\x8c\x15\xaa\xbe\x14\xa4\x2a\xcc\x9a\xcc\xe2\xc8\xc3\x9c\xe8\x92\x26\x8f\x5c\x4c\x60\xe9\x13\x5c\xef\x15\x1e\x8c\x1a\x2d\x4d\x59\x3e\xfc\x9d\x25\xba\xf1\xb8\x64\x3f\x55\xbc\x64\x69\x73\x2a\x66\x67\x1d\x26\x58\x78\x6c\xf6\xa9\xf1\xa8\x28\xcd\xb4\x74\xe3\x1e\x62\x6b\xa0\xa2\xd6\xf3\x85\x65\xfe\x3c\x5c\xf8\x95\x10\xb3\x3b\xf8\x25\x49\x0d\x5e\x32\x0b\x9a\x32\x77\x5d\x58\x6a\xb7\xd4\x1c\xb0\x9e\x72\x45\x4a\x56\x94\x4c\x31\x81\x98\xca\x3c\xa6\xc2\xae\x72\xb4\xd4\xf9\x3d\x2b\x4d\x47\xe6\x4a\x57\x59\x6a\x10\xda\x8c\x95\x9a\x94\x2c\x91\x13\xc1\xff\xe1\x7b\x87\x4d\x34\xc3\x66\x06\x82\x34\x81\x0b\x29\x68\x46\x66\x34\xab\xd8\x80\x50\x91\x2e\xf5\x9d\xd3\x39\x29\x99\x19\x97\x54\xa2\xd1\x23\x7c\xa2\x96\xe7\xf2\x4e\x96\x8c\x70\x31\x96\x6f\xc8\x54\xeb\x42\xbd\xb9\xb8\x98\x70\xed\x50\x75\x22\xf3\xbc\x12\x5c\xcf\x2f\x00\xeb\xf2\x87\xca\x1c\xfd\x45\xca\x66\x2c\xbb\x50\x7c\x32\xa4\x65\x32\xe5\x9a\x25\xba\x2a\xd9\x05\x2d\xf8\x10\x16\x23\x10\xc9\xe6\xe9\xaf\x4b\x8b\xdc\xd5\xc2\xc0\x2b\x2f\x12\x71\x68\x33\xf2\xb0\x0c\x3e\x25\x5c\x11\x6a\x3b\xc4\xc5\xd6\x67\x62\x1e\x99\x6d\xfc\x70\x73\xff\x91\xb8\x19\xe1\xb9\xe1\x11\xd5\xaf\xae\xd8\x21\x77\x5a\x66\x67\xb9\x18\xb3\x12\xbf\x1c\x97\x32\x87\x5e\x99\x48\x0b\xc9\x85\x86\x3f\x92\x8c\x33\xa1\xcd\x4d\xcf\xb9\x56\x00\xd6\x4c\x69\x73\x90\xcb\x1d\x5f\x01\x69\x23\x0f\xcc\xe2\x88\x74\xf9\x95\x5b\x41\xae\x68\xce\xb2\x2b\xaa\xd8\xd1\xcf\xce\x9c\x91\x1a\x9a\x03\x09\x3e\xbd\x26\xe1\x5e\xfe\x60\xe9\xd6\x13\xe2\x48\xee\xda\xe3\x6e\xa2\xa0\xfb\x82\x25\xfe\x3a\x52\x41\x2e\x8b\x22\xe3\x09\xde\x38\x3d\xa5\x9a\x24\x54\x98\xed\xe4\x42\x69\x9a\x65\x6c\xf1\x76\xac\x9d\xc5\x3a\xfc\x43\x00\xd9\x2c\x90\x2b\xf7\x78\x89\x66\xb4\x7f\xf0\x64\x76\xe1\x8d\x75\xb8\xca\x34\x8b\xf9\x97\x7f\xd8\xb0\xe5\x04\x59\xa2\x31\x9f\xac\xfa\x6c\xed\x5e\x5e\xc1\x27\xc0\x4c\x51\x2e\x94\xed\xa2\x2a\x71\x37\x6b\xda\x69\xa8\x29\x6d\x71\x12\xcb\x70\xb8\x71\x67\xbb\xd6\x6c\x1a\x1d\x03\xeb\x37\x5f\xfd\x6b\x37\x02\x70\xed\x76\x5c\xcf\x7c\x40\xe4\x8c\x95\x25\x4f\x2d\xea\x2e\x64\x7a\xaa\x00\xb1\xa6\x55\x06\x84\x4a\x0a\xa5\x4b\xca\x57\x5e\x7a\xd7\x04\xcf\xcc\xe2\x87\x54\xe3\x0d\x62\x8a\x3c\xf1\x2c\x23\xbf\x15\x52\xff\xd6\x8f\x00\x03\xc8\x92\x4f\xb8\xc7\xce\x8a\x70\xe1\xc6\x05\xb2\x6e\xf9\x12\xa9\xd8\x42\x87\xeb\x07\xff\x56\x31\xc2\xf2\x42\xcf\x1d\x9a\x3a\xfb\xef\x7f\x9e\x1b\x9a\xc0\x4a\xaa\x1a\x03\xb6\xfa\x5b\x8b\xe9\xb1\x75\x9c\x14\x09\x38\x2d\xd8\x17\x99\xb2\xcb\x8e\x53\x23\x8b\x27\x77\xcd\x90\xfd\x51\xf0\xb9\x3f\xf5\xe6\xa1\x94\x55\xc6\x94\x67\xe1\xcc\xde\x6d\xe8\x3c\x60\x2d\xa1\xeb\xc1\xf7\xd8\x98\x95\x25\x4b\xaf\x2b\x73\xcb\xee\xfd\xac\x6e\x27\x42\xfa\xc7\x37\x9f\x58\x52\xe9\x15\x2c\xc5\xc6\xa5\x6f\x00\x5a\xd7\x0c\xdf\x68\x77\x82\x95\x08\x65\x38\x23\x60\x1d\xed\x0f\x66\x4b\x80\x2d\x30\x3b\xa8\x10\xeb\x29\xaa\xb9\x1a\xcf\x3b\x07\x30\x3b\xea\xf7\x9c\x7d\x32\x14\x0f\x78\xff\xc6\x6d\x37\x8c\x1c\x10\x37\xce\xb2\x74\x40\x1e\x2a\x4d\xb8\x06\xca\x97\x4c\xa5\x54\xcb\xd8\x6e\xb1\x51\x3c\x5a\x98\xd7\x8c\x4b\x60\x5c\x88\x14\x06\x58\x49\x6e\xc8\x15\x30\x4c\xac\x39\xfc\x08\x56\x5e\x7f\xc6\x17\xa9\xcd\x72\xcb\xa5\xd2\xf5\x71\x19\xd2\x0f\x17\x50\x30\xf2\xc4\xf5\x14\xfe\x98\x94\x0c\x99\x26\x55\xe5\x66\xd0\x27\xc6\x27\x53\xad\x06\x84\x8f\x56\x50\xd2\xc5\x66\x00\x90\xd1\x64\xda\x98\x56\xce\x98\x56\x84\x66\x99\x5b\x42\x13\x6a\x91\x7a\xe4\x86\x81\x20\x67\x8e\xc3\xe8\x1c\xc5\x72\x07\x03\x4f\x7d\x16\x01\x6f\xe5\x71\x0d\x08\xd3\xc9\xe8\x7c\xd0\xd9\x7d\x22\xf3\xc2\x20\x04\x0a\x7b\xf0\x30\x27\x5c\x1b\xde\x1d\xb9\xa1\x52\x56\x13\xdc\x29\x96\xd9\x89\x3b\x5e\x16\x0e\xdf\x30\x97\x20\x0d\xae\x20\x37\x8b\xed\x04\x37\xf7\xc4\xb1\xab\x66\x38\x8e\x9b\x04\xfb\x97\x53\x9d\x4c\x2d\x1a\x4e\x64\x59\x32\x55\x48\x61\x7a\xc6\x5f\x6e\xea\xb5\xfd\x1f\xf3\x4e\xe7\x78\xa6\xd3\x33\x75\x5e\x1f\xf6\x94\x4f\xa6\xee\xac\x69\x89\xe8\xb8\x0d\x23\x5d\x47\x8e\xa8\x84\x96\x25\xed\xba\x47\x5c\xb3\xbc\x03\x91\x90\x2d\x6e\x3f\x21\x97\xc2\x22\xfb\x1a\xb0\x1b\x20\xa6\x59\x99\xfb\x8d\x04\x28\x04\xb4\xa7\x70\x13\x78\x6e\x38\x21\xae\x2d\x98\x93\x57\x01\xe3\x9d\x99\x9b\x40\xb8\x3e\x55\x70\x6b\x87\xb2\x38\x1f\x91\x4b\x22\x2a\x8f\x78\x36\x4d\x41\x48\x3f\x03\xdb\x91\x99\x96\x92\x75\x5f\xdd\xf8\x28\x0c\x7d\x63\x5b\xcf\xa0\x2d\xb7\xa1\x9d\x3f\x13\x01\x97\xd0\xbc\x8e\xbb\xd6\xf9\x6a\x28\x21\x71\x6f\xbb\x39\x84\xbc\xbd\x00\x31\x97\x78\x73\x14\xcb\x58\xa2\x0d\x35\x64\x65\x3e\x20\x54\x29\x99\x70\x23\x2a\xd4\xb0\xdf\xbe\x50\xb8\x92\xee\xbd\x27\xb1\xfb\x4f\xa2\xd7\x4f\x40\x1a\x6d\xdf\xef\xd0\xef\x96\x76\x23\xe3\x4a\x1b\x04\xd5\xde\x95\x16\xde\x7d\x98\xc3\xaf\xa7\x8a\x64\xf4\x81\x65\x1b\xf8\xaa\xc5\x16\x7e\xf9\xeb\x16\x88\x06\xd6\x2c\x28\x08\x21\xd4\x6d\x11\x1a\x1a\xeb\xb6\x72\xaf\x87\x13\x10\x83\x1c\x53\x8f\xac\xe0\x80\x50\xf2\xc8\xe6\x03\x44\xe9\xc2\xab\x70\xa2\xa6\x00\x1d\x97\x0c\x09\xba\x81\xbb\x47\x36\x87\x0e\x37\xb3\x9b\x2b\xbb\x8a\x85\x3b\x6c\x31\x18\xa0\x6e\x43\x33\xd1\xc8\x2f\xb6\xd8\xa0\xf8\xab\x81\xed\x91\x6d\x64\x9f\x57\xb5\x25\x65\x23\x80\x3b\x9c\x07\x1c\x12\x50\x60\x07\x0f\xd4\x88\xc8\x6c\xb5\xfe\x61\x73\xdb\x28\x70\x6e\x6a\x6e\xf7\x76\x5a\x57\xe4\x05\x31\xed\x83\xd7\xe1\x20\xbc\x9f\x2a\x84\x57\x83\x77\xa6\x1c\x94\x95\xe6\xa2\x00\x1a\x89\x07\x5a\x6c\xdf\xd1\x8c\xa7\x0d\x1d\xa8\x61\x36\x6e\xc5\x80\xbc\x97\xda\xfc\xef\xe6\x13\x57\x86\xc7\xbc\x96\x4c\xbd\x97\x1a\xfe\x1c\x91\x2f\x35\x5e\xbd\xaf\x03\xf1\x72\xdd\xb6\x3e\x03\x5c\xdf\xb1\x4f\xe0\x52\x20\x12\x35\x3b\xdc\xd4\xc4\xa9\x91\x91\xcc\x81\x45\xb7\x3b\x67\xb0\xd6\xad\x30\x42\x01\xee\x5c\xf4\x50\xa0\x8c\x45\x39\x1b\x87\xcc\x2b\x05\xaa\x34\x21\xc5\x10\xd8\xa8\x95\x63\xe2\x01\x99\x71\x9b\x47\xb4\xc7\xe1\xd7\x0f\xfd\xa5\x36\xc3\x7e\xad\x07\x8d\x8f\xa3\xc7\x6d\x0c\x36\xa5\x33\x60\xed\xb9\x98\x64\x9e\x89\x1f\x90\xa7\x29\x4f\xa6\x28\x3d\x82\x26\x4c\xb3\xb2\x28\x99\xe1\x18\x28\xe8\xcc\xcc\x93\x09\x2b\xe3\x41\xff\xa3\x11\x0d\x70\x7c\xd4\x77\x67\x34\x61\x29\x49\x41\x64\x41\xd5\x2b\xd5\x6c\xc2\x13\x92\xb3\x72\xc2\x48\x61\x48\xff\x76\x00\x1f\x47\x89\xb1\x45\xd3\xe3\xe6\x80\x5b\xdc\x30\x42\x3e\x0d\x1f\xab\x07\x56\x0a\xa6\x99\x1a\x1a\xfe\x64\x68\x67\xaf\x65\xce\x93\xe0\xce\xf6\xd2\x0d\xf0\x59\x6f\x8d\xdc\x76\x24\x16\x0b\x64\xc4\x9e\xc5\xea\x59\xac\x9e\xc5\xea\x59\xac\x9e\xc5\x0a\x6e\x3d\x8b\xb5\xf3\xf0\x3d\x8b\xd5\xb3\x58\x47\x67\xb1\x5a\x5d\xe4\xb4\x88\xed\x01\xf5\x72\x5b\x28\x02\xff\x86\x0a\xdd\x45\xcd\x1f\x30\x7c\xce\xaf\xa1\xad\x02\x34\x7c\xcc\xbd\x25\x4e\x1f\x41\x6d\x68\x2d\x91\x25\x15\x13\x46\x5e\x0f\x5f\xbf\x7a\x15\xa3\x20\xb4\xe0\x1c\xf4\xc5\x58\x96\x39\xd5\xf0\xcd\xbf\xfc\xbe\xe3\x8b\x1d\x4e\x65\x9d\xbd\xe4\x38\x86\x3a\x8b\x79\xbc\x6d\xa6\xc5\x22\xaf\xb1\xa5\x01\x19\x13\x52\x93\x9c\x69\x42\xbb\x79\xb2\xa6\xda\x9d\xe7\x6c\xe0\xcc\xa1\x88\x76\xac\xdb\x88\x33\x0a\xa6\x44\x0a\x6b\x7a\x31\x87\xdf\x7d\xb8\x5b\xad\x20\x61\x54\x31\x43\xe2\x1f\x98\x59\x45\xb7\x29\x50\x13\x25\x73\x33\x6b\x2e\xb4\x43\x62\x66\x09\xcc\x1d\x0c\x39\x63\xa3\xc9\x88\xa4\x15\x74\x4b\x85\xf5\x83\x39\xc7\xd5\xaa\xb9\xd2\x2c\xef\xb6\x05\x1a\x62\x58\xc2\xff\xcc\xb6\xe8\x72\x0e\x16\xf2\x19\x13\xba\xa2\x59\x36\x27\x6c\xc6\x13\xed\xf7\x0f\xdc\x76\xb8\x56\x41\x3b\x15\xc1\x46\x87\xb3\xce\xc3\xa5\x1b\xda\x45\xa4\x62\x38\xdf\xa5\xbe\x43\x70\x4e\xeb\x06\x7c\xb0\x2b\x19\xad\x95\x09\xb5\xe9\x17\xcd\xb6\xf0\x4f\x00\xee\x6f\x3e\x74\x5b\xd9\x48\x34\xfd\x89\xa0\x39\xdb\xb1\x56\xd6\xe0\x25\x4b\x6b\x7c\x5b\x5e\xe9\x0a\x93\x17\xae\xbd\x75\x6b\xe4\x38\x70\x40\x3d\x65\x68\xa4\xbc\x7c\x7f\x1d\xb6\x63\xc4\x3a\x07\x7c\x94\x85\xcc\xe4\x64\xde\x3c\x5e\xd8\x4e\x30\xff\xd9\x79\xa0\xaf\x0e\xb2\xe0\x06\xe6\xdf\x2f\xc0\x43\x6f\x1a\xea\x4d\x43\xbd\xde\x02\x5a\xaf\xb7\xe8\xf5\x16\xbd\xde\x22\xac\xf5\x7a\x8b\x9d\x87\xef\xf5\x16\xbd\xde\xa2\x37\x0d\x2d\xb7\x9e\xc5\xea\x6e\x3d\x8b\xb5\xb1\xf5\x2c\x96\x6f\x3d\x8b\xd5\xb3\x58\x3d\x8b\xd5\xb3\x58\x3d\x8b\x75\xac\x6e\x76\x35\x0d\xed\x34\x85\xed\x06\x2f\x64\xba\x43\xf0\x56\x21\xd3\x0d\xb1\x5b\xa8\xd3\x4f\xe4\x30\x93\x09\xd5\x36\xcc\xd6\x7c\x62\xad\x50\x8a\xe6\x68\xa6\x18\x90\x7f\x48\xc1\x30\x9a\xc5\x5c\x0f\x30\x16\x48\x3d\x65\xa5\x79\xfd\x4c\x9d\x6f\x0c\x21\xe8\x63\xbf\xfa\xd8\xaf\x3e\xf6\x6b\x6d\x7b\x31\xb1\x5f\x53\xaa\x10\x6e\x91\x34\xae\x0f\x05\x6b\xe0\xa4\x8f\xac\xcc\x7f\xa1\x91\x60\x06\xdc\x2d\x38\x42\x92\x88\x1a\xa4\x70\x67\x52\x6b\xf0\x67\xe9\x5d\x7b\x3f\xac\x58\x0d\x8b\xa2\x69\xca\x52\x52\xb0\x72\x88\x20\x2a\xc9\x98\x8b\x74\xc5\x5a\xdd\xfe\x74\xa3\x87\x03\x86\x62\xb5\xd7\x11\xf4\xcd\x61\xe2\xb1\xda\x13\xd9\xc2\xa8\xd8\xb4\x8c\xb6\x88\xe0\x8b\x88\xce\x8a\x95\xd0\x87\x44\x5b\x83\xe2\x57\x81\x32\x7a\xbc\x98\x0d\xc2\xb1\x33\x3f\x6e\xa9\x7e\x8a\x12\x85\x2e\xad\x3c\xfe\x53\xc5\xca\x39\xc4\xe7\xd7\x62\xa7\xcf\x45\x62\x3d\x62\xb8\x22\x09\x55\x48\x56\x63\x58\xe5\xdb\x31\x46\x4d\x8a\x2a\xcb\x06\xd8\xcf\xe2\x65\x75\x68\x0e\xe0\x40\x48\xf3\x7b\xb4\x46\x2c\x52\x45\xb3\x9d\x0e\x64\x7b\x2b\x2c\x59\x3c\xa7\xc5\xae\x50\x37\xe6\x54\x87\x78\x2c\x2b\x75\x87\x2b\xac\xe9\xd1\xf6\x71\x6c\xdb\x0a\x30\x5b\x89\x2f\x3b\xcb\xeb\x1b\xf6\x64\x07\xbd\x22\xbc\x1c\x3d\x99\xfd\xe8\x16\xc9\xf6\xfa\x45\xb2\xb5\x8e\x91\x6c\xa5\x67\x24\xdb\xea\x1a\xc9\x0e\xfa\x46\xb2\x9d\xce\x91\x2c\x42\x9b\x39\x21\xcb\xf8\x1e\x46\xfd\x48\x76\x13\xce\xb7\x57\x43\x92\x3d\x5c\xac\xe6\xf8\x8d\xcc\x4e\x87\xd3\x4b\x92\x50\xdd\x24\x5c\xab\x96\x7a\xf2\xd8\xe7\xb2\x9d\x6a\x92\xec\xe9\x54\x5c\x66\x1c\xd0\x85\x1d\x4b\x59\x49\x9e\x5f\x61\xb9\x71\x0a\x76\xf8\x60\x0d\xdf\x56\xa3\xef\xa0\x15\x24\x3b\x69\x06\xc9\xf6\xda\x41\xb2\x2b\xb0\xef\x4d\x4b\xb8\xd7\xae\x80\x4f\xfa\x1a\xfc\xd0\x76\xe0\xb6\xa2\x6f\x60\x63\x58\xe4\x2e\x72\x5a\x98\xdb\xf7\xdf\x86\x89\x00\xc0\xfc\x27\x29\x28\x2f\x95\x91\x6e\xac\x5e\xbb\xf9\x9b\x55\xdf\x35\xba\x89\x9e\x40\x61\x06\x36\x34\x7e\x46\x33\xc3\xe4\xa0\xd3\xaf\xd5\x41\x98\xb9\x2c\xb2\x90\x03\xf2\x04\x09\xb3\x0c\x79\x43\xcd\x04\x57\xe4\xe4\x91\xcd\x4f\x06\x41\xea\x81\x76\x6b\xde\xec\x93\x5b\x71\x82\xac\xd3\xd2\xbd\xf4\x7c\x96\x14\xd9\x9c\x9c\xc0\x6f\x27\xfb\xe6\x51\xb7\xe0\x8f\x9a\xa9\x59\xb7\x65\x3f\xb6\xba\x4e\xbb\x2a\xb8\x49\x0b\xfa\xbe\x62\xf3\x6d\x1d\x11\xa2\x60\xfe\x5d\x6b\x44\xc7\x50\x03\x98\x19\xd9\xdd\xf3\x4d\x98\x99\x15\x58\x26\xab\xa3\x42\x75\x15\xcf\xb2\x88\xd1\x1e\x18\xd1\xf4\x91\x81\x85\x47\x42\x6a\x39\x9e\x32\x4c\xa6\x87\xa0\x03\x23\x19\x90\xa9\x14\xa4\xc7\x25\x99\x94\x8f\x55\xe1\x40\xcf\x65\x93\x8c\x18\x92\x8b\x44\xe6\xce\xa7\x1e\xfd\x5a\x07\x36\xc1\xdc\x23\x9b\x0f\x31\x07\x26\x3e\x87\x81\x81\x04\x58\xd5\xc4\x8f\x2d\xc1\xfc\x47\x42\x15\xf9\x11\x98\x4a\x41\xce\xe0\xc3\xf3\x1f\x63\x5c\x0a\xfc\x06\xa2\xf6\x55\x56\x80\x59\x98\x21\x96\x76\x82\x6a\x71\x6f\x37\xed\x58\xc4\xd0\x2e\x53\x5c\x73\x33\x4e\xd1\xde\x70\x46\x85\xe6\xe7\x5e\x49\x33\x22\x00\x07\xc0\x25\xa7\x52\x9c\x6a\x9c\x9f\xc3\x6b\xae\x83\x18\xaf\x03\xbf\xef\xb5\xc5\x0f\xad\x05\x78\xe4\x29\x1b\xd3\x2a\xd3\x36\x1b\xa9\x41\x7d\x40\xe9\x23\x46\xf8\xe8\xec\x25\x96\xe1\x1f\xcb\xf2\x81\xa7\x29\x13\x10\xe2\xe0\xa6\xff\x20\x5d\x40\x50\x0d\xee\x06\xb3\xb5\xce\x38\x66\xd8\xcb\x4c\xc9\xc1\x62\x8f\x89\xcf\x56\x6a\x6e\xd1\xd3\x94\x89\xf6\x00\x84\x2b\xb3\xa9\x8a\x45\x30\xb5\x47\x71\xfd\xd9\x1d\xe7\x6d\xed\x7a\xc5\xd5\x33\xe0\xbd\xc5\x41\x7b\xd4\x17\x84\xfa\x84\xd4\x3d\xf6\xfb\x6c\xb1\xdf\x12\xd0\xef\x03\x01\x2e\x75\xda\xe3\xc0\x68\x1c\x28\x5c\x1a\xe4\x67\xb6\x02\xa0\x62\x0c\xbd\x58\xdd\x94\x54\xad\x33\x83\x40\xaf\xed\xf4\x65\x2e\x0c\x0e\xf0\x2c\xf4\x90\x3a\x63\x68\x25\x6c\x32\x78\x30\x87\xd6\xc3\x22\xbe\x58\xb4\xb9\x47\x8c\xe9\x04\x17\x29\x98\x02\x15\x3b\xf3\xfe\x15\x8d\x61\xa0\xd7\x98\xa5\x40\x28\x5c\xad\x3e\x14\xe9\x62\x70\x5c\xdd\x37\xe8\xf5\x73\x46\x85\x22\x27\xce\xc5\xe3\x54\xd5\x6f\x9c\x44\xdd\x37\x97\xfa\xd2\x8f\x0d\x99\x8e\x9b\xe9\x2e\xeb\xa1\x7b\x3b\x4a\x6f\x47\x69\xb6\xde\x8e\xb2\x3c\x89\xde\x8e\xb2\xae\xf5\x76\x94\xad\xc6\xef\xed\x28\xed\xd6\xdb\x51\x7a\x3b\x4a\x6f\x47\xe9\xed\x28\xbd\x1d\xa5\xb7\xa3\x84\x7e\xb4\x0f\x3b\x4a\x2d\x06\x1d\x43\x8e\x6e\x8a\xac\xd6\x4f\x1c\xab\x6c\x51\xcd\x93\x3a\x2a\xd4\xbd\x85\xff\x7a\x2e\xa1\xba\x29\x06\xef\x2a\x52\x37\x05\xf4\x25\x0d\x46\xb4\x44\xbd\x56\x7e\xf6\x12\xf6\xd2\x18\x7b\x12\xad\x7f\xe1\xca\xa5\x86\x03\xeb\x31\xae\xc3\x47\x17\xca\x62\x0b\xf7\x3d\xb0\x3a\xce\x25\x25\x67\x4e\xd7\x7a\x6e\x0e\x5c\x48\xdd\xfe\x51\x68\x3e\xac\xdf\xf0\x0e\xc2\xa0\x12\x76\xd9\xdc\x62\x36\xdd\xc9\x2c\xb5\xee\x51\x2c\x94\xbd\xac\xa1\xcd\xe0\x7f\x56\xb6\x66\xcb\x95\xad\xa4\x06\xa1\x69\x65\x25\x84\x61\x8f\xa4\xb0\x51\x1c\x11\x33\x41\xd2\x82\x6a\x5e\x7b\x2b\x51\x98\x82\x35\x82\x44\x55\x1f\x53\x23\x00\x80\x6a\x2c\x93\x68\x73\x2e\x49\x61\x95\xe4\xe6\x09\xf6\x13\x31\x09\x7f\x61\x61\x3f\xb9\x5f\x51\xcc\x5d\xbd\x81\x3b\xda\x9c\x2c\x57\x70\x8e\x34\xcb\xe4\x53\x0c\x7d\x8a\xbc\x11\x5b\x27\x07\x0c\x86\xde\xa7\xe8\x2c\x82\x0b\xde\xf2\xa1\xbc\x7a\x9f\x6a\x70\x63\xeb\x53\x0d\xbe\x8c\x54\x83\x0d\x3b\x68\x33\xe7\x60\xf7\x5e\x41\x4e\xc2\x83\xe6\x1c\x24\xe4\x6f\x53\x06\xb7\xa8\x64\x68\xbc\xac\x32\xcd\x8b\x3a\xca\x58\xe1\x09\x65\x28\x52\x8f\x6d\x34\x60\xfb\xf6\x9a\xd9\xd0\x64\xda\x39\xd4\xc2\x2d\x87\xf1\x20\x6a\x59\x01\x36\xc5\x88\x39\xd0\xbf\x63\xa2\x3f\x27\x6b\x63\xd8\x21\x7f\xee\x68\xaa\x20\xfc\x77\xed\x0a\x86\x36\x6c\xe0\x8a\x9c\x19\xea\x98\xcd\xad\xd5\xb8\x85\x08\x5b\x64\x35\x60\x00\xd4\x83\xcd\x98\x63\x50\x27\x7c\xc6\x44\x4d\x7d\xcf\xd4\xf9\xb9\xe3\x89\x17\xf9\x87\x80\xde\x77\xe1\x30\x42\xb0\x76\x2c\x67\xb0\x40\xef\x03\x46\x58\xc1\x11\xfc\xb9\x41\x65\xff\xd2\xcd\x13\x04\x0c\x82\x57\xda\x85\x67\x36\x0e\xba\xe6\x05\x3a\x7b\x39\x60\x14\x5c\x4c\xa8\x55\x9c\x56\x7c\x8b\x10\xab\x6d\x33\x65\x1e\x36\xb4\xea\xa0\x61\x55\x9f\x4f\x42\xcb\x67\x36\xff\x7d\x06\xd9\x98\x5e\x88\xb9\xaf\x4f\xc7\xb4\xae\x3d\x57\x3a\xa6\x83\x9b\xf3\x3e\xbb\xac\x4c\x47\x35\xdf\x1d\xc7\x74\xf7\x99\x65\x65\x7a\x16\x53\xdd\x0b\xcf\xcf\x74\x38\x13\x5d\x9f\xfc\xe8\x79\xf2\x4b\xc6\x9a\xe1\xb6\xbf\x55\xcf\x6a\x7e\x7b\x56\xd3\xdb\xf3\x9b\xdd\xb6\xe2\x55\x76\x35\xb7\x45\x5f\x93\x5d\xcd\x6c\xdb\xb8\xec\x6f\x07\xcf\xc7\x0b\x51\x3a\xb2\x8f\xfe\xcb\x08\x4d\x7a\x26\xc7\xfc\xe7\x72\xca\x3f\xac\x43\xfe\x33\x84\x22\x1d\x25\x0c\x29\x96\xec\x47\x11\xfb\xdd\x70\xd7\x36\x14\x79\xcb\x90\xa3\x2d\xf1\xd7\x31\x43\x8d\x7e\x01\x28\x6c\xab\x10\xa3\x1e\x8b\x3d\x13\x16\xdb\x5f\x48\xd1\xb1\xc2\x89\x7e\x61\xb8\x6c\xcb\xd0\xa1\xbd\x69\xb7\x0f\x13\x32\x74\xec\x70\xa1\x03\x84\x0a\x3d\x47\x98\xd0\x01\x42\x84\x7a\x9b\x40\x60\xeb\x6d\x02\xa1\xad\xb7\x09\xac\x6b\xbd\x4d\x60\xb1\xf5\x36\x81\xde\x26\xd0\xdb\x04\x7a\x9b\xc0\xf2\x80\xbd\x4d\xa0\xb7\x09\x84\xb5\xde\x26\x70\x1c\x9b\x40\x6c\xd8\xcd\x76\xb0\xfc\x3c\xe1\x36\xc7\x0d\xb5\xd9\x7f\x98\xcd\x33\x86\xd8\xfc\xc2\x14\x2e\xd1\xe1\x34\xdb\x81\xf9\x4b\x09\xa3\x79\x19\x21\x34\xcf\x1e\x3e\xb3\x6b\xe8\xcc\x7e\xc2\x66\x22\xa0\x7d\x4b\x38\x2f\x64\x7a\x29\x34\xdf\xb5\xf0\x51\x13\x00\xd7\x55\x3f\xa2\x33\xc9\x53\x52\x54\xda\x16\x5c\xe9\x2b\x20\x75\xc2\xc0\x71\x2a\x20\xb5\x0e\xaf\x2f\x83\xb4\xa9\xbd\x98\x32\x48\xeb\xce\xac\xaf\x85\xd4\x6e\x7d\x2d\xa4\xbe\x16\x52\x5f\x0b\x09\x5b\x5f\x0b\xa9\xaf\x85\xd4\xe7\xf0\xeb\x73\xf8\xf5\x39\xfc\xc2\xbf\xea\x73\xf8\xad\x6f\x7d\x0e\xbf\x98\xd6\xe7\xf0\x0b\x1e\xbd\xcf\xe1\xd7\xe7\xf0\x8b\x1b\xb8\xcf\xe1\x47\xfa\x1c\x7e\x7d\x0e\xbf\xcf\x38\x87\x5f\x5f\x0b\xe9\xb3\x28\x08\xd2\x57\x03\x89\x18\xfb\x65\x55\x03\xe9\x6b\x21\x6d\x1c\xa4\xaf\x85\xd4\xa3\xbe\xbe\x16\xd2\x2f\x16\xfb\xf5\xb5\x90\x02\x06\xe9\x6b\x21\xf5\xb5\x90\x36\xb6\xbe\x16\x52\x6f\x47\x21\xbd\x1d\xa5\xb7\xa3\xc4\x7e\xd5\xdb\x51\xd6\xb7\xde\x8e\x12\xd3\x7a\x3b\x4a\xf0\xe8\xbd\x1d\xa5\xb7\xa3\xc4\x0d\xdc\xdb\x51\x48\x6f\x47\xe9\xed\x28\x9f\xb1\x1d\xa5\xaf\x85\xd4\xd7\x42\xea\x6b\x21\xf9\x91\xfb\x5a\x48\x7d\x2d\x24\x68\x7d\x2d\xa4\x80\x11\xfa\x5a\x48\x9f\x6b\x2d\xa4\x56\x3c\xd0\xe7\x5b\x10\x29\x7e\x19\x7d\x55\xa4\xbe\x2a\xd2\x9a\xd6\x57\x45\xea\xab\x22\xad\x6a\x7d\x55\xa4\xbe\x2a\xd2\x86\xd6\x67\x40\x0c\x6c\x7d\x06\xc4\xd0\xd6\x67\x40\x5c\xd7\xfa\x0c\x88\x8b\xad\xcf\x80\xd8\x67\x40\xec\x33\x20\xf6\x19\x10\x97\x07\xec\x33\x20\xf6\x19\x10\xc3\xda\xf3\x1b\xe0\xfe\x67\x64\x40\xec\xab\x22\xbd\xc8\x92\x22\x7d\x3d\x91\x8e\xf6\x72\xea\x89\xf4\x55\x91\x5a\x9d\xf7\x55\x91\x7a\x14\xd6\x57\x45\xfa\xec\xb0\x58\x5f\x15\x69\x45\xe7\x7d\x55\xa4\xbe\x2a\x52\x5f\x15\xa9\xb7\x09\x74\xb6\xde\x26\xd0\xdb\x04\x9a\xad\xb7\x09\x2c\xb6\xde\x26\xd0\xdb\x04\x7a\x9b\x40\x6f\x13\x58\x1e\xb0\xb7\x09\xf4\x36\x81\xb0\xd6\xdb\x04\xfa\xaa\x48\x7d\x55\xa4\xbe\x2a\x12\xb4\xbe\x2a\x52\x5f\x15\xa9\xaf\x8a\xb4\xf2\x63\x50\xb4\xa2\x64\xb3\x0e\xb2\x43\x61\xf9\xb2\xee\xca\x72\xf0\x95\x50\xba\xac\x12\x5d\x95\x2c\x85\x03\xc3\xc3\x34\x8c\x81\xd2\xb2\x74\x56\x01\x28\x31\x73\xcd\x8a\x4c\xce\x0d\xb5\x1d\x90\x3b\x99\x0e\xc8\xe5\xdd\xed\x3d\x2b\x67\x3c\x61\x0e\xfa\xbe\xb1\x34\x7d\xfd\xbe\x7d\x9c\x17\x3c\xa1\x59\x06\x1a\x8b\x7a\x36\x39\x9d\x3b\x5d\xf2\xc3\x9c\xb0\x4f\x9a\x95\x82\x66\x44\x4b\x99\xa1\xf9\xc5\x4c\x06\x10\x62\xc9\x74\xc9\xd9\x8c\x11\x5a\x3e\x70\x5d\xd2\x72\x4e\x72\xa6\x69\x4a\x35\x5d\x3f\xea\xb7\x8a\x35\x63\x34\xb4\x24\x45\xc9\x86\x78\x03\x5a\xf3\x00\xd8\xfc\xe6\xeb\x77\xee\x7e\xd3\x34\x75\x01\x09\x0e\xc2\xef\xab\x07\xbf\xdb\xa7\xeb\xb9\xad\xd4\xef\x96\x1a\x00\x78\x5a\x15\x4d\xc1\x15\xee\xd9\x5a\x89\x34\x80\x2d\x89\x63\x42\x3a\xe1\x93\x89\xd9\xae\xa0\x75\x23\x66\x6d\xcd\x1e\x13\x33\x5e\x4a\x01\x7c\xe4\x8c\x96\x9c\x3e\x64\xcc\x5a\xd2\xbc\x7d\xc5\xf2\x76\x6c\x03\xbc\x5c\x79\x3b\x03\x06\xbb\xac\xbd\x92\xdd\xf4\xac\x83\x82\xb5\x56\x7a\x23\x66\xdf\xd1\xb6\x9a\x41\xac\x5c\x12\xb1\x2f\x98\x25\x51\x72\xd5\xbd\xa0\x20\xa6\x33\x44\x1d\x36\x04\x0c\xbf\xf6\x85\x30\xa5\x95\xe9\x62\x33\xbd\x6c\x6d\xcb\x7b\x9a\xd7\x95\xb1\x56\xec\xc6\x88\xbc\xb3\xa2\x31\x25\x57\xff\x75\x7b\x7d\xf3\xfe\xe3\xed\xdb\xdb\x9b\x0f\x9b\xf1\x68\x20\xfe\x04\xd4\x14\x31\xd9\x4e\xa2\xfe\x9d\x3b\x43\xa8\x3e\xc4\x84\x61\xbc\x7e\x73\xf6\xdd\xe5\x87\xff\x7a\x7f\xf9\xee\xe6\x1c\x44\x0a\xf6\xa9\xa0\x22\x65\x5d\x2c\x62\xa5\x5c\x04\x4e\x51\xb2\x19\x97\x95\xca\xe6\x9e\xc2\xae\xbe\x0a\x8b\x77\xc0\xa0\x87\x8e\x51\x0c\x7d\xb4\xd8\x63\x75\xa7\xa0\x06\xa1\x35\x70\xd6\x56\xba\x92\x29\x99\xcd\x58\xda\xa5\xfd\x80\x58\x48\xb7\x1d\xb5\x1d\xb4\xa8\xb4\x53\xf2\x38\xd3\x66\x25\x92\x29\x15\x13\x96\x8e\xc8\xb5\xac\xcc\x68\xbf\xf9\x0d\x6c\x59\xc9\xd2\x2a\xe9\xdc\x31\xd4\xd0\xa1\x40\xfb\x9b\x81\x63\x00\x0c\xd9\x55\x58\xd5\x4c\x25\xb4\x70\x9b\xda\x3c\x15\x35\x17\x9a\x7e\x7a\x13\x52\x1f\xed\xe4\x37\x8d\x0f\x4f\x5c\xbd\x3a\x69\xa6\x87\xcc\x12\xae\x28\x83\x52\x63\x19\x39\x69\xbe\xdd\xd5\xf7\x8d\x99\x1f\x4b\x9b\xb0\x83\x91\x87\x6c\xc6\x4a\x50\x0e\x59\xc8\x19\x90\x92\x4d\x68\x99\x66\x4c\x41\xcc\xdb\xd3\x94\x41\xf1\x40\x94\x74\xf1\xa0\x3a\xc6\x62\x5e\x91\x25\x64\xa7\x82\xf1\x1a\xad\xcc\x80\x6b\x4f\x3a\x96\x11\x73\xf3\xde\x96\xb2\xa3\x04\x55\xeb\xf6\xdd\x43\x50\x8d\xb7\xc5\xaf\x02\xd7\x53\x6b\xc4\x18\x35\xb1\xbc\x32\xdc\xe9\xb8\xb6\x91\x9b\xe7\x01\x76\xf2\x60\x59\x3e\x5c\x99\x9f\x48\x31\xe6\x93\x77\xb4\xf8\x8a\xcd\x3f\xb0\x71\x64\x7c\x1f\x32\xe6\x56\x3d\x0d\xec\xae\xa1\x0e\xd8\x61\x37\x5b\x79\xc0\x70\xae\x10\x93\x49\x9c\xc5\x23\xd8\xce\xb1\x54\x58\x0e\x45\x04\xcb\xc6\xef\x9d\xd9\x26\x41\x04\x6e\xe5\xe4\x82\x05\xc2\x26\x45\xb4\xa8\x20\xd8\x04\xf0\xb1\xe6\x48\xb9\x22\x6c\x3c\x66\x89\xe6\x33\x96\xf9\x48\x63\x5b\xd9\xd2\x46\xfe\x3e\xd0\xe4\xf1\x89\x96\xa9\x82\x5a\x89\x54\xf3\x07\x9e\x71\x3d\x0f\xa9\x43\x89\xcd\x0a\x35\x36\x38\xd9\xe9\xcd\x85\xd2\x14\xd0\x97\xab\xa8\x68\x76\x18\xd9\x7e\xea\x0c\xd7\x78\x1b\x5d\x58\x6f\xf0\x70\x50\xdb\x2f\x61\xa5\x21\x70\xd9\x9c\x3c\x95\x32\x5c\x34\x7b\x27\x21\x9e\x77\x2c\xdf\x90\xa9\xd6\x85\x7a\x73\x71\x51\x8b\x4e\x23\x2e\x2f\x52\x99\xa8\x8b\x44\x8a\x84\x15\x5a\x5d\xc8\x99\xa1\x8b\xec\xe9\xe2\x49\x96\x8f\x5c\x4c\x86\x66\x01\x43\xbc\x40\xea\x02\x64\xe1\x8b\x5f\xc3\xff\x0e\x01\x65\xc4\xf9\xf6\xbc\x21\x27\x27\x01\xef\xcb\x02\xb9\xf7\x2d\x20\xf3\x1e\x04\xfc\x79\x8b\x8c\x78\xc4\x62\x48\x04\xd7\x0a\xee\x95\x33\x52\x58\x2e\x24\x62\xd9\x0f\x52\x66\x8c\x76\x7b\x5b\xed\xa2\x99\x04\xb0\x8f\xc7\xaa\x41\xf7\xb2\x46\xbd\x78\xb9\xec\xf5\x2c\x64\xfa\x86\xa8\xaa\x28\x64\xa9\x55\x2d\x34\x1a\xa0\x18\xb4\xff\x04\xb5\xc9\x80\xfc\xe8\x1f\xa2\x57\xd7\xf7\xa7\x7f\xfe\xea\xe6\xdf\xff\x72\xfa\xc3\x8f\xcd\xdf\x1a\xe2\x63\xe3\x85\x80\x69\xaa\x82\x25\x23\x21\x53\xf6\x1e\x66\x00\x7f\x5a\xee\xee\x32\x49\x64\x25\xb4\xfd\x41\x53\x5d\xa9\xd1\x54\x2a\x7d\x7b\xe7\xff\x2c\x64\xba\xf8\x57\x80\x8d\xf3\x80\x74\x05\xf6\xfa\x8e\xea\x80\xc8\xfd\x28\xea\x42\x0b\xfe\x1d\x2b\x55\x40\xae\x0a\x6c\x2d\x78\xb1\x5f\x36\x4b\xe1\xe6\x14\xfe\xf9\xd6\x4d\xd7\xe0\xde\xa7\x92\x6b\x0d\x2e\x87\x36\x59\x80\x1c\x0f\xdc\x95\x46\x46\x6a\xf6\x3a\x4a\xaf\x1a\x8c\x39\xfc\xae\x6d\xb1\x38\x98\xbd\x5d\x99\x57\x6c\x58\x87\xcb\x25\x75\xe0\xe5\xdd\x2d\x99\xe1\x6e\x1c\x60\x21\xbb\xa0\x02\x17\x80\xfd\xf6\x28\x28\xc1\x8d\xe6\x36\xce\xcb\x5f\x6f\xd0\xc2\xe4\xc3\xc1\x49\xc6\x73\x6e\x0d\xfc\xb6\x00\x72\x08\xed\x38\xc3\xcf\x46\x49\x51\x0d\x6c\x17\xa3\x9c\xe5\xb2\x9c\xfb\x3f\x59\x31\x65\xb9\x91\x38\x86\x4a\xcb\x92\x4e\xd8\xc0\x0f\x80\x9f\xf9\xbf\xf0\xc3\xd6\x14\x96\xbf\x46\x41\x35\xa9\x4a\xc3\x7b\x64\x73\x87\xe2\x42\xb4\x97\x07\x44\x07\xc1\xc5\xa5\xe3\xb0\x81\x3f\xae\xf7\xdb\x31\x76\xa7\x5e\x45\x83\xac\xa1\x5f\x15\x48\x2a\x33\x99\x55\x39\x53\x03\x4f\xa0\x51\x14\x15\x33\x23\xb3\xa8\xd3\x43\x20\x80\x94\xcf\xb8\xda\xca\x3f\xf4\xde\xdb\xd9\xc0\x28\x55\x69\x23\xa4\x63\x92\xa1\x46\xf5\x72\xa9\x40\x48\xf5\x39\x0e\x5a\x58\xed\x75\x08\xb3\x42\x48\x41\xb5\x66\xa5\x78\x43\xfe\xf3\xec\x3f\x7e\xf7\xf3\xf0\xfc\xaf\x67\x67\xdf\xbf\x1a\xfe\xef\x1f\x7e\x77\xf6\x1f\x23\xf8\xc7\x6f\xcf\xff\x7a\xfe\xb3\xfb\xe3\x77\xe7\xe7\x67\x67\xdf\x7f\xf5\xee\xcb\x8f\x77\x37\x3f\xf0\xf3\x9f\xbf\x17\x55\xfe\x88\x7f\xfd\x7c\xf6\x3d\xbb\xf9\x21\xb0\x93\xf3\xf3\xbf\xfe\x26\x68\x7a\x54\xcc\xbf\x09\xc0\x1a\xd8\x86\x5b\x64\x6e\xaa\xbf\xda\xd6\xa4\xc5\x85\x1e\xca\x72\x88\x9f\xbf\x21\xba\xac\x42\xb8\x68\x77\x6c\xdb\xc0\xb9\x2b\xfd\xfc\xa6\xc6\x78\x9e\x3a\x1c\x00\x90\x77\x21\x00\x8a\x25\x25\xd3\xfb\x92\xb2\xb1\x37\x47\x00\x17\x8c\xa3\xbd\xe0\x5d\x0b\xde\x3e\xe1\x0c\xec\x57\xcd\x3a\x8c\x4b\x99\x8f\x48\x43\x93\x3b\x03\x47\x38\xfb\xde\x23\x0b\x8c\x58\xe8\x05\xf5\x5e\x50\xef\x05\xf5\xb6\xa0\x7e\x8f\x77\xe8\x85\x4b\xe9\x4c\xcc\x36\x29\x7b\x23\x4c\x82\x6f\x21\x7b\x5c\xd3\x2c\xe8\x98\x6b\x2d\x49\x21\x8b\x2a\xa3\x7a\x8d\x29\x23\xc2\x46\xe8\x23\xe8\x9c\xc1\xc5\x80\x14\xd8\xe3\x2c\xe1\xcb\x57\x1b\xa5\xc8\x65\x96\x11\x2e\x10\xbd\x99\x0e\xd6\x8e\xe0\x6c\x1e\x25\x43\xce\x9a\x50\x34\x08\xce\xcc\x94\x9f\x6c\xce\xbb\x86\x29\x87\x2b\x23\x98\x97\x9a\x8b\xc9\x08\x73\xe2\x21\x81\xb2\x8a\x7c\x2e\x7c\x66\xbc\xb5\x43\x7a\x86\xcd\x7b\xc4\x2d\x25\xc3\x44\x7f\x0b\xa5\xdd\x32\x61\x96\x9a\x3e\x82\x11\x2a\x61\x29\x13\xc9\x06\x13\xc9\x77\xe8\x65\xe7\xf6\xec\xc1\x88\x19\x60\xc6\x45\x8c\x42\xd2\xaa\xc8\x78\x62\xce\xc7\xcc\x3c\xae\xef\xdb\x3c\xaf\x34\x18\x04\x8f\x65\xad\x35\x90\x66\x4d\x0e\x0d\xa3\x2d\xd0\x37\x2f\xee\x79\x8f\x70\xaf\x2f\x03\x9b\x0a\x5e\xca\xf5\x87\x1f\xc4\x12\x84\x11\x6e\x6f\x52\xe8\xe4\x74\x96\x28\x76\xad\xe3\x6b\x53\xea\x63\x5b\x45\xc2\xe8\x74\x3c\x8d\xde\x96\x3e\x1f\x93\x36\x1f\x91\x2e\x6f\x4f\x93\x9f\x8f\x1e\x47\xd1\xe2\x70\x3a\x1c\x4e\x83\x23\x14\xe5\xb1\x74\x37\x9c\xe6\x6e\x2b\x09\x15\x25\x1b\xf3\x4f\x11\x58\xe1\x1b\xa7\xa3\xd0\xec\x93\xb6\x3e\x4d\x05\x13\xde\x03\x56\xd8\x1b\x05\xce\x4b\x47\xf7\xd6\x40\x71\x21\x1e\xcf\xdd\xaf\x12\x47\x7a\x24\xd7\x23\xb9\x56\xeb\x91\x5c\xa7\x90\xf1\x92\x30\x9c\x90\x69\x67\x24\x7c\xe8\x6d\x7a\xdf\xe8\x6b\x21\x40\x16\x9d\x88\xdc\xc2\x75\x59\xd5\xfe\x27\x85\x04\x88\x1e\x73\x5d\x7b\x39\xaf\x07\xb4\xfb\x15\x3d\x82\xfb\xb2\xfd\xf2\x54\xb9\x44\x0f\x0b\xfd\x2f\xe4\x1c\x47\x7f\xd2\xcd\x63\x45\x82\x32\xb2\x90\x15\x26\xc4\xb8\xa0\x4a\xf1\x89\x18\x16\x32\x1d\x9a\x51\x2e\x36\xb2\xdb\xc7\x74\x29\xf5\x1a\xe7\x5d\x8f\xfb\x83\xb7\xc7\x34\xf8\x7a\x83\xd6\x2a\xcd\x1a\xc6\x1a\xaf\xc6\x77\x79\x06\x02\xe4\xc6\x4e\x29\x65\xc7\xc3\xc9\xa9\xa0\x13\x36\xb4\x93\x1d\xfa\xc9\x0e\xfd\xdc\x76\x38\xaf\x10\x62\x96\x64\x94\x6f\x0e\xda\x88\x21\x61\x57\xd0\x9b\x4d\xde\xee\xa3\x6a\x16\x52\x28\x3b\x71\x92\x0b\x34\x68\xbb\x9f\xf0\xe3\xcd\x66\x71\xb8\x2c\x3e\x0b\xce\x8a\x83\xdc\xf8\x35\xd0\x48\x1b\x97\x9a\x15\x53\x67\xfc\x77\xb6\x33\x5e\x32\x45\x98\xa0\x0f\x99\x75\x2a\xdc\xd8\xd9\xf5\x5c\xd0\x9c\x27\x0e\xf8\x2e\x33\x08\x9c\xe0\x52\x90\x31\xa3\xba\x2a\x19\x99\x50\xcd\x42\x66\xe4\xa9\x36\xf7\xd0\x46\x6e\x35\x49\xa8\x40\x7b\xa3\xf5\x7a\x37\x78\xc4\xaf\x74\xa3\x21\x3f\x2c\x70\x27\x20\x5c\xa7\x75\xf6\x1f\x9a\xe7\xd4\x74\x6a\x94\x82\x11\x26\x74\x09\x59\xcc\xee\x64\x6a\x28\xce\xa8\xf5\x76\x87\xdb\x41\x30\x7b\x16\xaa\x4d\xef\x70\x7c\x26\x2f\x87\xd3\x6b\xd0\x8d\x26\x43\xde\xda\xd2\x42\xa6\xa3\x15\x37\x25\x3c\x3d\xfd\x9d\x4c\x6d\x7c\x8f\x6e\xc1\x9b\xb9\x44\x00\x6a\x39\x7d\x74\x51\x37\xde\x14\x44\x67\x94\x67\x01\x9e\xa7\x04\xd2\x49\x29\x9e\x1a\x19\x21\x00\xa5\xfa\x89\x85\x73\x49\xd6\xb0\x7d\x88\x43\xf8\x80\x5d\xbb\x24\x0a\xb0\xff\xc9\x54\x2a\x26\xe0\xbe\x51\x37\xb6\x2f\x02\xe3\xc0\x3e\x45\xd4\x19\xc2\x89\xde\x8e\x91\xfb\x1d\x10\x36\x63\xe5\x5c\x43\x29\x06\x97\xb0\x0b\xbb\x31\xe3\xe7\x34\x6d\xec\xfa\x80\x48\xc3\xae\x3d\x71\x15\x72\x00\x80\x27\x70\x7e\xaa\xca\xb4\x67\xc1\xed\xec\xf7\x76\x1a\xcb\xc1\x49\x86\xb9\x7b\xec\xcc\xc4\xd6\x79\x21\xd7\x45\x3d\xe5\xb4\x58\xfb\x15\xfa\x4a\xec\x8b\x76\x7d\x8d\xbe\x1c\xf8\xc9\x83\x35\x99\xe7\xf4\x13\xcf\xab\x9c\xd0\x5c\x56\x18\xed\xbc\xcc\x57\x04\x05\x82\xed\x83\x4b\x58\xc1\x1d\xa8\x75\xec\x01\x09\x47\xab\xf1\xe1\xca\x2f\xd4\xd8\x1f\x64\xe4\x8f\x33\xee\x47\x18\xf5\xb7\x36\xe6\x3b\xb7\x9d\x7d\x01\xb2\x45\x69\x4b\xa0\xcc\x45\x27\x28\x3b\xfa\xba\x19\x96\x6f\xc7\xf5\x18\x5c\x11\x99\x73\xad\xad\x77\x4c\x83\x02\x0c\x08\xd7\x2d\x57\x12\x7b\xc1\xf8\x18\x09\x0d\x57\x84\x7d\x2a\x32\x9e\x70\xf0\x48\x72\x5e\x68\x9b\xf9\x3f\x8f\x13\x6d\x1a\x02\x9e\x17\x98\x88\x00\x2e\xca\xd0\xb1\x96\x36\x66\xc0\xcf\xd2\x06\xb9\xb0\x4f\x09\x63\xa9\x9d\x48\x7f\x5f\xfb\xfb\x1a\x7d\x5f\xd5\x9e\x34\x14\x4d\xed\x44\x1d\x13\xed\xb5\x14\xe6\x2a\x41\xbc\x32\xea\x0b\x1c\x74\x6d\xba\x98\x37\x2e\x63\xe6\x07\x06\x46\xb9\x7b\xa6\x95\x8d\xbe\x86\x9e\x36\xa9\xdb\x96\x32\xf0\xf9\x2c\x9b\x2e\x95\x01\x05\x7d\x62\xe3\x8d\x3a\x76\x75\x83\xf0\xac\x17\xd9\x5b\x50\x81\xb0\xbc\xc8\xa8\xae\x15\x24\x3b\x04\xb9\x86\x30\xf1\x31\x49\xea\x9e\x37\x2d\xdd\x61\xc4\xb6\x4e\x36\xf8\x19\xd3\xcb\x6d\x9b\x50\xee\x00\x02\x63\xb7\xeb\x55\x60\x62\xb8\x70\xc1\x32\xc8\x37\xeb\xd0\xe9\xde\x22\xc4\xb0\xf0\x94\x6e\xf1\x72\xd8\x81\xd3\xb6\x1d\x2a\x51\x5b\xc4\xee\x85\x26\x63\x8b\xdf\xbb\x23\x25\x5c\x3b\x7a\x8a\xb5\x63\x26\x55\x8b\x4a\xa3\x16\x93\x18\x27\x38\x29\xce\xf6\xbe\xb4\x31\xc9\x70\xb6\xfc\x30\x30\xe5\x59\x0c\xec\x1e\x39\xad\xd9\x91\x13\x99\x3d\x47\xea\xb2\x83\xc9\x0f\x01\xa0\x19\x6f\xf0\xd3\x32\xb3\x39\xdb\xc3\x0c\x40\x1f\xeb\xf7\x61\x3b\x6a\xd7\xed\x46\x4f\xc7\x71\x26\xdb\x08\xd9\x1f\x1d\x9f\x6b\xb0\x53\x3d\x69\x80\x71\xad\x69\x32\xb5\x09\xc8\xf0\x17\x03\x09\x62\x4e\x0c\x10\x68\xa4\xe4\x36\x07\xd2\xa6\x73\x9e\x32\xa2\x4b\x28\x9a\xfb\x67\x7f\x21\x06\x68\xf2\xff\x4b\x23\xcf\x84\x2f\xfb\xea\x81\xf1\xcf\xee\x5f\x7f\xd9\x31\xfb\x48\x18\x93\x83\x53\xda\x27\xaf\x7a\x03\x3d\x12\x2e\x52\xf0\x3b\x44\x56\x08\x37\x0f\x07\x33\x5b\x0b\xeb\x1e\xd9\xcc\x4d\x98\x06\xcd\x5a\x66\xc1\x41\xb1\x7e\xb9\x93\x75\x00\xbf\xcc\x5a\x35\xe1\x1d\x1f\xfc\x1d\x66\xe4\xbd\xb4\xf5\xb3\xd9\x80\xdc\x81\x76\xb8\x7e\x02\x77\xfe\xbd\xc4\x4a\xda\x1d\xa9\x28\x02\xd1\x7f\x27\xcf\x18\xb7\x9f\x5f\xd5\x0c\x25\x6e\x4c\x8b\xa1\xac\x2f\x56\x93\xa5\xdc\xb8\xb1\x8f\x6c\xde\xb9\xab\x96\x49\xb0\xcc\xac\x55\x8d\x7b\x18\x75\x44\x1e\xf9\x86\xff\xe3\x2c\x7c\xf9\x03\x17\x38\x15\x1c\xd8\x9d\x33\x8c\xed\xce\xc3\x48\x20\x59\x16\x30\x89\xc0\xdd\x0e\xe3\x78\xe3\xb6\xfc\x9b\x08\x4e\xd7\xd3\x8b\xae\x2d\x5d\xc5\xdf\x36\x98\xda\x9b\x9f\x2a\x9a\x8d\x5a\x79\x3f\xf0\x51\xd7\x75\xb3\xce\xc8\x8b\x74\xf3\x89\x67\x69\x42\x4b\x1b\x11\x07\xe8\x87\x28\x69\xad\xb3\x80\xfd\x92\x4e\xb7\x73\x87\x00\x6b\xe0\x51\xe8\x81\x5b\xd0\x52\xf3\xa4\xca\x68\x49\xcc\x1d\x9f\xc8\x32\x28\xb1\x47\xe7\x61\xd6\xd0\x7c\xcf\x12\x29\xd2\xbd\x0a\xd1\x1f\x17\x3b\x5f\xf4\x31\x2e\x58\xc9\x6d\x09\x67\x9e\xb3\xc5\xeb\x75\xd6\xf2\x4b\xe9\x92\xc3\xc6\x0e\xd9\x79\xdc\x32\x68\x6a\x46\xdb\x36\x65\x2c\x2f\x72\xde\x20\x38\xfe\xb6\x8f\xc8\x17\x73\xa7\xa2\xed\x62\xc8\xb9\x76\xa9\x56\x14\xd3\x2e\x19\x8f\xbb\x8a\xf6\x24\x6b\x34\x32\x96\x25\x24\xb9\x39\x4b\x25\xa6\x67\x99\xf1\x44\x9f\x8f\xc8\xff\xc7\x4a\x19\x90\xc5\x48\xb0\x09\xd6\x1c\xb7\x17\xdb\xeb\xa3\x4a\x46\xad\x6f\xfd\x2b\x72\x86\x65\xe8\x79\x9e\xb3\x94\x53\xcd\xb2\xf9\x39\xaa\xa7\x98\x2d\x64\x1f\x02\x35\x21\x6a\x45\x0c\x98\x84\x77\xff\xf5\x0f\x1b\xde\x3c\x40\xf6\x29\x9b\xe1\xa6\xde\x58\x74\xa0\x5b\x80\x1e\x9f\x36\xb1\x53\xde\x5f\x2b\x9f\x35\x83\x08\xea\xc4\x95\x0e\x37\x7b\xd8\xfa\xbb\x01\x50\x4a\x4a\x36\x81\xfb\x89\x77\x6e\xc7\xdb\x89\x11\xb5\xef\x64\x25\xd6\xdb\x40\x5a\xfb\xf6\xb5\x55\xc1\x7d\xd7\xf8\x30\x36\x6d\xdc\x7e\x19\xc2\xc6\x4c\x1a\x56\x17\x4a\xc0\xd4\x02\x1c\x98\x41\x6c\xf8\x56\x1d\x7a\x12\x60\x2c\xdf\x63\x2a\x38\x98\x4b\x47\xf2\x85\xbd\x24\x8c\xf3\x03\xed\xf3\x2a\x40\x22\x03\xbb\x73\x0b\x39\xd1\x5c\xc9\x2d\x00\x60\xdc\xe2\x1a\x82\x61\x32\x2c\xb5\xc1\x8a\x5d\x68\x47\x7a\xed\x26\x39\x7d\x73\xba\x17\xaa\x83\xbb\x51\xca\x82\x4e\xe0\xb2\xee\x73\x53\x16\xfb\x26\x29\xd3\xac\xcc\xb9\x60\x8a\x4c\xe5\x13\xfe\x8e\xcc\x40\x61\xdf\x62\x69\xed\x79\x30\x95\x9d\x3b\x82\xe5\xb5\xea\xec\x73\x88\x3d\xc0\x8f\xf4\x89\xce\x09\x2d\x65\x25\x3a\x93\x08\x00\x17\xed\x29\xc7\xbb\x85\x49\xbf\x97\x82\x79\x67\x94\x2e\x2a\xdb\x22\x6d\x0f\x4c\x53\x73\xe1\x5f\x8f\x5e\xbf\x0a\x9a\xc3\x07\x96\x54\xa5\xe2\x33\xf6\x81\xd1\xf4\x1b\x23\x71\x73\x05\x58\x43\x4b\x72\x3b\xbe\x93\x4a\xf1\x87\x8c\x11\x59\x02\x83\x24\xe8\x43\x66\x98\xfe\xc5\x09\x7b\x0e\x15\x66\x2e\x4b\x52\x09\x2f\x22\x74\xcc\xc2\x92\xf9\xa6\x55\xd4\x74\x72\xbe\x17\x48\x8b\x4c\xd4\x08\x7b\xb9\x60\x9f\x71\xce\xe7\x0e\x57\xed\x65\x5e\xa5\xdd\xec\x7d\x42\xfe\x3b\xbc\xd6\xd0\xf7\x10\x74\x27\x7c\x0c\x56\xbb\x01\x3e\x7a\x2a\xb9\x66\x0d\xba\x75\x36\xa6\x99\x5a\x3c\xac\x8e\x6d\x6f\xe7\xc9\x83\x0e\x42\xf6\xa3\xdb\x3d\xba\x5c\x04\xc3\x7d\xee\xcc\x32\x8c\xd7\xc9\xd6\x9d\x0b\x78\xbd\x6b\x16\x43\xd4\xf8\x72\x4a\x45\x9a\x75\xc2\xb1\x5f\x41\x36\xef\x70\x70\xb4\xde\x02\xf5\x75\x83\x7d\x1c\x34\x99\xd4\x29\x35\x7c\x25\xf0\x92\xa0\xb7\x15\xa9\xbf\x61\x8d\xc3\x8a\x1d\x07\x81\x01\x51\x56\x13\x69\xd8\xeb\x7e\xcd\x95\xbd\xde\xa0\x29\x01\xca\x6d\xf9\xdb\x9c\x76\x66\xb7\x6e\xac\xbf\xde\xcc\x91\x65\xaf\x56\x8c\x56\x23\x97\x85\xf1\xb6\x1d\x6b\x60\xe0\x1d\x59\x72\x9f\xcb\xc5\x31\xbf\x35\xc2\x2e\x0d\xf7\x91\xb3\x7a\x62\x1d\x43\x2d\x4e\xdb\xa3\xc0\xa5\x39\xaf\x9e\x95\x9f\x54\xc7\x38\xdd\x53\x6e\xcb\x33\xa8\x50\xc3\xdc\x99\xb6\xa2\xa0\xa6\x18\x64\x1b\x90\x10\x95\xb0\xb2\x94\xa5\x97\x21\x26\x4c\x80\xb4\x02\x5a\x38\xa7\x48\xb2\xbe\x73\x54\x49\x11\x02\x68\x1d\x87\x6c\xf0\x4c\x37\xf9\xc0\xcf\x3a\x06\x03\x1a\x73\x26\xcb\x85\xdb\xe0\x04\xb0\x15\x94\x24\x76\xf6\x40\x98\xeb\x7e\x11\xa8\x1a\x82\x96\xd9\xc0\x5a\xf8\x97\x63\x7f\x75\xf6\x13\x03\x56\x3d\x1c\x9a\x55\xb4\x3c\x21\xb0\x3d\x35\xa7\xe8\x41\xee\x54\xad\xe7\x1a\x23\xe8\xc3\xc9\x09\x39\xc3\x7e\x4e\x15\x29\xa5\xd4\xfb\x21\xea\x76\x7f\x6e\x3e\x15\x7b\x55\x42\xdd\xd8\xcc\xb3\xa4\x38\xda\x66\x7d\xc1\xa6\x74\xc6\x14\x51\x3c\xe7\x19\x2d\x33\x48\xeb\x79\x8f\xcb\x83\xc8\xb4\x95\xb9\xb3\x03\xf2\x2e\x37\x34\xde\xcd\x79\x36\xba\x3b\xe4\x39\x12\xb7\x06\x73\x44\x40\x6f\xdc\x9a\xa0\x6e\x6e\xa5\x2b\x9a\x65\x73\xc2\x3e\x25\x59\x65\xf0\xe5\x5e\x84\xe5\x6d\xe4\xe4\x45\x11\xb9\xb0\x8e\xfa\x47\x14\x90\xdb\x2a\x4f\xc3\xaf\xa6\x0e\x9c\x40\x20\x46\xb3\x09\xd8\x40\x20\xea\x81\x26\x09\x53\xca\x65\x1e\x98\x37\xb3\x27\xf8\x35\x7c\x2e\x69\xd4\xe9\x93\xba\xc9\xa8\xd2\x3c\xf9\x22\x93\xc9\xe3\xbd\x96\xe5\x5e\x75\x45\xab\xfa\x5f\x48\x4e\x7f\xf9\xb7\x7b\x83\xbc\x1f\x1b\xe9\x9e\xac\x23\x66\xd3\x30\x45\x3b\x06\x7a\xac\x1e\x58\xc6\xf4\xa9\x02\xf9\x91\xe4\x34\x99\x62\x89\x04\x10\x0e\x85\x4f\x28\x66\xd5\xd7\x1b\x8f\x08\xdb\xb5\x99\x25\x14\x1d\x79\x63\xe6\xb8\xbc\x0c\xf4\x37\xb3\xef\x60\x4e\x0e\xd4\x60\x81\x31\xb0\xae\xe5\x3c\xd4\x25\xeb\x62\xa7\x56\xee\x13\x44\xaa\xda\xc4\xe4\xbc\x44\x4f\x37\x3b\x7f\xf6\xa0\x46\x89\xe2\x23\xfa\xa4\x46\x89\xcc\xc9\xd5\xfd\x2d\x49\x4b\x3e\xeb\x0e\x71\x88\x74\x21\xb5\xa9\xfa\x2e\xec\x0d\xff\x35\x7d\x52\x0c\x27\xfa\x60\x26\x0a\xe5\x2d\x02\x70\xc7\x5e\x9d\xa2\x70\x2e\xb7\xd7\x1b\x5f\x0c\x77\x78\x1a\xab\x8f\x66\x8e\x1d\x6f\x6d\xe3\x02\x83\x3d\x3b\x55\xe9\x98\x67\x0c\x55\xc0\x78\xb2\x36\x9c\xda\xa2\x1a\x00\xfa\xb9\xac\xc8\x13\x45\x6b\x06\x10\xb0\xa0\x18\x6b\x5e\xbc\x21\x37\x42\x55\x25\xab\x8d\x64\x8b\x83\xad\x62\xc9\xe1\xa6\x58\x90\x15\x93\x20\xf5\x34\xb6\x9b\x4f\x34\x2f\x32\xa6\xde\x90\x13\xf6\x49\xff\xe1\x64\x40\x4e\x3e\x8d\x95\xf9\x9f\xd0\x63\x75\x32\x22\xb7\xb9\x77\xa1\xe6\x62\xcc\xca\xd2\x87\x65\xe3\x07\x86\x25\x6f\x49\x51\xdd\x63\x1e\x1b\x6e\x49\x9c\xf3\x0b\x98\x87\xba\x35\x69\x64\x2b\x38\xf2\x9d\x3b\x50\x6a\x3c\x10\xfb\x01\xa2\xdb\xb1\xf3\x98\x47\xb9\xca\x95\x7c\xe7\xca\x77\x63\xc0\xc6\x8e\x63\x28\x4f\x1c\xa0\xbc\xf5\x49\x2a\xc9\x45\xca\x66\x17\x2a\xa5\xaf\x07\x30\x55\x65\x23\xc1\xdb\xeb\xa2\x8a\x9c\x84\x65\xae\xbd\x77\x9c\xdb\xa0\xb9\x13\x75\x4f\x06\x11\xbb\x21\xc1\xef\xe5\xd5\x09\x88\x2e\x66\xec\x84\x0a\x92\x31\x3a\xb3\xe2\x1c\xa2\x8c\x39\x1a\x18\x3a\x39\xac\x18\x63\x0d\x69\x1b\x6c\xfe\xe5\xf7\x9d\xe2\x75\x88\x0e\x86\x6c\x05\x4d\xae\x6f\x67\xb5\x29\x2b\x9b\x81\x69\x2c\xcb\xc4\xcb\x9c\x56\x4b\xc3\x34\xe0\x06\x2e\x5a\x76\x8d\x97\x7d\x61\xc3\x12\x8c\x39\x2a\x72\x10\xdf\x47\xdb\x37\x68\x90\x05\xff\xa9\x62\xe4\xf6\xda\xa7\xf3\x66\xa5\xe2\x4a\x1b\x81\x22\x6d\xf1\x3d\x1c\x99\xa1\xb3\xcb\x9c\xfe\x43\x0a\x72\xf3\xc5\xbd\xed\x28\x00\x14\x5f\x34\x82\xa4\xff\xa8\x4a\x66\x78\xbc\xbd\xb2\x96\xae\xd3\x45\x7e\xd2\x3c\x27\xd7\x54\x53\x64\x2b\x6d\x60\x91\xa8\x49\x9e\x61\x0a\x1f\xb8\x48\xed\x4f\x5b\xb2\x84\x7e\xf8\x28\x3e\xb0\x31\x6d\xb3\x79\x5d\x6b\x5c\xc9\xfc\x19\xa8\x41\xee\xcf\xf4\x15\xc5\xff\x1d\x80\x1b\x33\xb3\x79\xdf\x15\xd7\xec\x5e\xfc\xf6\xc3\xed\x9e\xb8\xb6\x04\x38\xfc\xc9\x3b\x99\xc6\xb2\x6e\xa7\x8d\x4f\x1d\x41\xfd\x37\x03\x17\x57\xf8\x9c\xe4\xa6\x4f\x50\x5c\x0d\x40\x79\x4b\xbe\x01\xdd\x26\xfc\xf3\x6f\x25\xd7\x6c\xd4\x9d\x87\x36\x82\x75\x70\x1b\x18\xb9\x0c\xf7\x99\x5b\x42\x33\x45\x4f\x6a\xa0\x1f\x90\x8b\xe5\x0f\x1e\x32\xf9\x40\xec\x95\xdf\xf7\xdc\xbf\xfd\x70\xbb\xc5\xd4\xbf\xfd\x70\xeb\x66\x6e\xfe\x29\xc7\xc7\x9b\xf4\x31\x18\xfe\xb7\x0b\xfc\x77\x0c\x2f\x56\x27\xb7\x5a\xe4\xe2\xf7\xc9\xc2\x8f\x8e\xc6\xbc\x6f\x97\x79\xc8\x8c\xd5\x25\xf4\x73\x11\x90\xc2\xb8\x7d\xf9\xcd\x37\x84\x7d\x2a\x10\xa3\x36\x5c\x26\xef\xa7\x14\xb2\x4e\xbb\x04\x97\x08\x7e\x06\x1e\x95\x21\xd9\x0e\x10\x09\xc5\x12\x17\x86\x1a\xa0\x96\x3e\x7d\xe3\x1c\xc1\xfd\x17\xab\x3f\x78\x07\x01\x98\xe9\x1b\xa4\x01\x04\xe3\x31\xd3\x06\xdc\x9f\xa1\xb9\x42\xf8\x9f\x6c\xdc\x3d\x26\xc1\x52\x4c\x9f\x8f\x5a\xba\x75\x05\x53\xde\x2b\x32\x3a\x0a\xe3\xb9\x64\xc1\x24\x67\xe6\xb7\x0b\xb0\x8f\x9e\x8f\x6a\x8b\x19\x64\x87\xa8\x79\xd3\x80\x31\xcc\xa5\xf8\xb0\x33\xf7\x1a\x97\xa8\xd6\x83\x2c\xac\xa5\x8b\x0f\x32\x98\x61\xef\x7c\x90\xe9\x74\x25\x1f\x04\x3f\xb8\x62\xa7\x87\x64\x85\x60\xa0\x2d\x58\x21\xf8\x6e\x6b\x56\xc8\x20\xc8\x97\xc3\x0a\x61\xea\xc0\x20\x66\x08\xae\x6e\xe7\x9b\xe1\xec\xd0\x51\xee\x6d\xfa\x4b\xba\xb7\xf5\x61\x45\xee\x59\xfd\xa1\x63\x60\x7c\x82\x1c\x97\x92\xbe\x15\x90\x8a\x17\xf1\xde\x52\x03\x5b\x21\x09\xd9\x35\x73\xfd\xbe\x0a\xc8\xae\x1f\x81\xc0\x3d\x60\xc5\xae\xca\x7d\xe7\x16\x85\x44\x0a\x1e\x93\x00\x90\x0e\x9e\x64\xc2\x8a\xe9\x78\xaf\x5e\xce\xa6\xc7\xb7\xf7\x6d\x33\xce\x15\x2b\xa6\xe4\xed\xfd\x0a\x94\x07\x87\x03\xcb\x52\x68\xdc\x39\x55\x24\xe3\x63\x06\x3e\x09\x11\x58\xef\x0a\x47\x6d\xa1\x3c\xef\x8c\xe6\x50\x1c\x2e\xd6\xab\x60\x85\x24\x99\x14\x13\xc3\x1c\x84\xd5\xba\x39\x00\x92\xca\xa5\xe0\x5a\x96\x9b\xbd\x21\xc2\x11\x8f\xeb\xee\x10\x88\xc7\xf5\x6d\xb6\xae\x2e\x0b\xf2\xae\xf1\x94\x92\x44\x66\x19\x4b\xb4\xad\x95\x05\xc7\x1e\xb4\x42\x6c\x2b\x94\x26\xcc\xea\x2c\x47\x8f\x7f\x02\xb5\x89\x55\x90\x5c\xe0\x51\x5e\x7c\xb8\xb9\xbc\x7e\x77\x33\xca\xd3\x5f\x4f\xe5\xd3\x50\xcb\x61\xa5\xd8\x90\x77\x97\xdc\xf8\x8c\xa3\x33\x09\x26\xeb\x08\xa8\xf4\xd5\x66\xb5\x0b\x5b\xa4\xcc\xe5\xfb\x7d\x43\xbe\x55\xe8\xbd\xe1\x3d\x77\x58\x0a\xd6\xec\x01\x29\xa9\x4d\x03\x4a\xf1\xaa\x8e\xab\x2c\xc3\xd3\x34\xf7\x68\xd0\xd4\x47\x5f\x7c\x7e\x0c\x6f\x6b\x13\x5e\x3c\xf7\x7b\xfc\x6b\x11\x43\xb1\xbb\xf9\x67\xb2\xd5\x61\xd5\xbd\xb7\x8f\xeb\xbe\xf5\x1c\xad\x14\x7a\x6a\x0e\xef\x91\xcd\x09\x04\x75\x1b\xc6\xf6\x5b\xc5\xca\x36\x98\x32\x9d\xc0\xee\x5c\x54\x8a\x95\x23\xec\xfe\x05\xee\x7d\x18\x57\x11\x96\x14\x9b\xec\xb0\xf3\x1f\xd8\x78\xd5\xc6\xdb\xc7\x75\x69\x6f\xcb\xf9\xd3\x4a\x4f\x99\xd0\xdc\x66\xb7\xb4\x9c\xd7\xca\x93\x08\xa8\xc2\x8c\xed\xd8\x5b\x1f\x58\xad\x29\xae\xb6\x52\x5f\x8f\xa8\x6e\x7d\x3d\xa2\x97\x51\x8f\x68\x97\x22\x6b\x06\x7b\x1e\x02\xeb\x98\x7e\x21\x51\x5c\x93\x3b\xf1\xa9\xaf\x4a\x9a\x4a\x85\xef\x60\x9d\xdd\x06\x3e\xa1\x69\xce\xbb\xb5\x42\x2f\x10\x93\x27\x5c\xa4\x5d\x9b\x19\x29\x7a\x41\x8f\x6d\xd1\xcb\x3e\xb3\x86\x78\xef\xc4\x45\x9d\x96\x09\x13\x8c\x5b\x87\xad\xb6\xbf\x56\x94\xfc\x85\xc3\xc4\xa9\x9c\xec\xdc\xb6\xd6\x37\xe1\xf7\xa0\x71\x92\x05\x33\x88\x24\x79\x1c\xc9\x72\xb2\x9b\x03\xd6\x22\x54\xe4\x73\xf5\x53\x36\xc4\xb1\x86\x45\x5a\x83\xc5\xb1\x65\xc5\x5f\x88\xa7\xd5\xcb\x33\xbe\xbc\x08\xff\xa9\xfd\x80\x1d\x79\x81\xf2\xd6\x8b\x57\x54\x1e\xe5\x3c\x62\xa4\xaa\x63\xb0\xf6\x35\xa5\x2d\x24\xb7\xd1\xd1\xbe\xec\x29\xe2\x2d\xa7\x35\x35\x9b\x5a\xd0\x92\xe6\x4c\xb3\x12\xa3\x30\x6d\xd4\xa7\x08\xe1\x98\x21\x44\xf4\x9b\x82\x89\x7b\x40\xd0\x3d\x3b\xbe\xba\xf5\xec\xf8\x86\xd6\xb3\xe3\x2b\xdb\x51\xdc\xe6\xdc\x7d\xe7\xa9\x11\xf1\xad\x73\x68\x1d\x93\x61\xb9\xb0\x97\x81\x65\xbb\xb9\x6e\x57\xbb\x2d\x82\xf1\xf6\xdf\x2c\xb0\xd6\x75\x2d\x45\xb4\x62\x40\xb4\x93\xaf\x47\x0a\xb7\x07\xb7\x69\x3f\x9c\x62\x38\xaa\xb3\xe0\xb7\x85\x3b\x56\x10\x64\x34\xba\x6f\x53\x92\xdc\x3c\x79\xe0\xba\xa6\x11\x8a\x69\x52\xb0\x32\xe7\x36\x3f\xae\x14\x24\xb1\x71\x83\xc0\xd1\x19\xee\xcd\x76\x17\xc5\x0f\x0a\x22\x13\x4d\x6d\x56\x27\xf2\xc0\xf4\x13\x63\x82\xbc\x7a\xf5\xea\x15\x88\x36\xaf\xfe\xf8\xc7\x3f\x12\xc8\x35\x9e\xb2\x84\xe7\xcb\x2f\xc2\x5b\xff\xeb\xf5\xeb\x90\x41\xff\xfd\xf2\xdd\xd7\x10\x67\x54\x68\x45\x1e\xa4\x9e\xda\xb1\x4d\x17\xad\xee\xd5\x80\xfc\xdf\xfb\x6f\xde\xd7\x85\x62\xda\xbf\x82\xfc\xe3\xb7\x28\x64\xe4\xa6\x72\xfa\xd5\xbf\xfe\xe1\x0f\x41\xdf\x80\x90\x24\x4b\x08\xe6\xae\x83\xf6\x0a\x17\x6e\x26\xa4\x5e\x4e\xd5\x6c\x59\xa7\xe0\x22\x72\x39\x9f\x4c\xe1\x20\xcc\xfd\x97\x62\x9c\xf1\x44\x23\x91\xc0\xc4\x0f\x08\x12\xb6\x5c\x08\xb5\x59\xd7\xac\x2c\x10\x64\x6a\x4a\xd9\x80\x64\xfc\x91\x91\xb1\xfa\xb2\x94\x55\x51\xe7\x46\xb4\xd5\x2b\x12\x2a\xcc\xf8\x38\x5c\x0d\x77\x8a\x05\x67\x64\x3d\x84\xa7\x78\xa0\xad\x28\xfe\xca\x41\xc7\x0b\x82\xc6\x00\x6b\x32\x3e\xb2\xf9\x10\xa1\xbb\xa0\xdc\x87\xbd\x81\xcb\x2d\x72\x13\x6d\x7e\x24\x09\x2a\x0f\x5d\x97\xb8\x74\x31\xd1\x45\x29\xff\x8e\x40\xc3\x85\x4b\x3b\x66\x95\x0a\xca\xca\x67\x36\x17\xa6\xa8\xed\xd6\x01\x23\xb9\x9c\xce\x86\xd7\xb4\xd9\xa4\xeb\x94\x66\xe4\x76\xdc\x0c\x3c\x86\xa4\xc6\x5c\x99\x49\x40\xa5\x66\x3b\xb7\x80\x51\x56\xcc\xde\xf7\x0b\x77\x43\x21\x84\x55\x62\xa9\x7f\x0c\x27\x0f\x1a\x03\x48\x03\x4c\x9a\xba\xd4\x75\xf5\x28\x18\x2a\x6b\xa3\xa9\xed\xbb\xee\xb4\xfc\x76\x07\xe7\xbc\xb5\x11\xb6\x4c\x57\xf6\x88\x30\x82\xbd\x12\x19\x53\xca\x46\x68\xe7\xb4\x7c\x64\xa9\xc7\xcf\x23\x08\x7b\x56\x81\x19\xc4\x88\xcb\xbd\xcd\x67\xe8\x1a\x91\xd3\x79\x2b\xfb\x8d\x99\xc6\xe9\x68\x74\x8a\xa8\x45\x96\x18\x70\x8f\x58\xc0\x3c\x7f\xa6\x1c\xb9\xad\xbb\x05\xc5\x99\xa9\xcb\x73\x0c\x89\x0b\x25\xa4\x8f\xab\x23\x9a\xa9\xdd\xcb\x10\xdc\x17\x25\x99\x84\xab\x76\xb0\x85\xe4\x17\x77\x6f\x16\x9b\x73\x34\xb9\x16\x27\x1c\x05\x66\x1b\xc7\xb6\x2e\xe7\xb8\xdd\x63\x7b\xdf\x42\xd9\xfb\x68\x06\x3b\x0f\x62\x6d\x56\x4c\x35\x58\x94\xc3\x31\xda\x46\xb0\x20\xfe\xc6\xa6\x4e\xd8\x54\x0f\x70\xb1\x3d\x0b\x5b\x83\xed\xf9\x98\x1b\x6c\xb7\xe3\xc5\xec\x12\x0d\xf4\xd6\x64\x34\x1d\x1d\x0a\xc9\x01\x55\xb7\x63\x70\x2b\xd8\x0e\xcc\xb3\x60\x8b\xe3\x5c\xb0\xc5\xf0\x2f\xd8\xc2\xdc\x4b\xb0\x6d\x7b\xb9\x9c\x3b\x0a\x6e\x8f\x25\x33\x48\x49\xc6\x7e\xf3\x31\x83\x6b\xd1\x40\x2c\x11\x77\xca\x92\x2b\xbc\x56\xf4\x41\xc9\xac\xd2\x38\x44\x7c\x27\x4d\x9a\x07\x93\x74\x29\xc1\xc3\x08\xdd\x62\x77\x0d\x4a\x09\x9c\x08\x92\xa7\x98\xbe\x8e\xe7\x6b\xd4\x17\xb1\xee\x8b\x58\xaf\x69\x2f\xab\x88\xb5\xfb\xcc\xc7\x30\xaf\x2e\xd9\x2f\x4b\x62\x90\x2e\xf0\xf7\x2f\xa9\xb8\x35\xb6\x44\xf1\x18\xc5\x94\xe2\xe4\xec\xca\x67\x3c\x71\x5e\xcd\xb7\x42\xb3\x72\x4c\x13\x76\xde\x54\x58\xb1\x62\xca\x72\x56\x9a\x0d\xb2\xef\xb9\xd4\x1e\x36\xa1\x1b\x79\x98\x3b\xf8\x23\xec\x93\x66\xa5\xd9\xcc\xda\x94\x7a\xfc\x7a\x3b\x38\xee\xbe\x74\x62\xd0\xd9\x41\xd4\x61\xd0\x73\xab\x3c\xa8\xc5\x6b\xf5\xe6\xe1\x5e\xe3\x46\xab\xa6\x6a\x30\xe4\x86\x5f\x49\x01\xfc\x03\xa0\x98\xb9\xac\x4a\x74\x7a\xf0\xf6\xf4\x44\x96\xa5\xe1\x59\x60\x68\xaa\x48\xc9\x26\x46\x88\x2d\xb1\x80\x32\xbc\x91\x55\xe6\xc1\x5e\xa3\xc3\x0e\x6e\x3f\xf6\x86\xe2\x0d\xf1\x71\x01\xbd\x59\x0e\xb3\x28\xe5\x8c\xa7\x8e\xc1\x6c\x62\x69\xae\x48\x41\x55\x23\x1f\x0d\x55\x4a\x26\x1c\x94\x94\xf5\x09\x06\x8c\x84\x12\x3e\x30\xaa\x3e\xcb\x6a\x2b\x7f\x43\xd3\x88\x2d\x21\x5f\x7e\x80\x27\x5c\xc4\x91\x08\x99\xb2\xbb\xea\x21\xe3\x6a\x7a\x7f\x48\x43\xe2\xaa\x71\xd0\x01\x7c\xc9\x33\x70\x9d\x41\x31\xc8\x5c\x29\x14\x07\xbe\xd0\x50\x37\xc3\xc4\x72\x23\x5e\x49\x38\x2d\xd7\x7f\xf3\x8a\x49\xa0\xf1\x19\xb3\xb9\xfa\xae\xee\x37\x87\x37\x63\x7b\x5f\xaf\xc5\x66\xa0\xc2\x8a\x0c\x29\xfb\x56\x14\xad\xe7\x09\xcd\xd6\x57\xa2\x6b\xb6\x36\x8b\xe2\xe8\x12\x8a\x03\x2e\x6f\x15\x02\x20\x37\xb0\xe9\xf6\x88\x37\x8a\x6b\xda\x2c\xdc\xc1\x46\xdd\x85\x0d\x56\x24\x97\x98\x80\x46\x40\x9d\x68\x7c\x09\x8a\x53\xb8\x0f\x1a\x59\xd3\x20\xf9\x2f\xdc\x80\xde\x38\xbb\xa6\xf5\xc6\xd9\x0d\xad\x37\xce\xae\x6c\x47\x71\xae\xa9\x33\xf7\xd2\x46\x92\xd5\x56\xad\x59\xcf\x27\x84\x73\x1c\x1d\x51\x11\x7b\x75\x79\xc1\x59\x5d\x6a\x5d\xf2\x87\x4a\x1f\xa8\xfc\xdd\xc2\x18\xc0\x02\x33\x65\x29\xc7\xd0\x6e\x62\xd2\x40\x58\x56\x19\xe4\x31\x63\x83\xde\x04\xb3\x84\x23\xcf\xb9\x01\xd3\x86\x0f\x4f\x15\x49\x65\x52\xf9\x82\xc4\x70\x3a\xb5\x37\x5b\x68\xbd\xc2\x28\x3c\x1c\x5f\xce\xab\x39\x48\xe7\xd5\x4a\xe5\x93\x30\xd8\xee\xf2\xae\x23\xf7\x44\x3b\xef\x44\xfd\x55\x53\x4c\x71\x8f\x89\x79\x4e\x1f\x64\xa5\x7d\x76\xdf\xff\x61\x66\xf6\x55\x7a\x67\x2d\x49\xa5\xd8\x46\x33\x7a\xad\x4d\xde\x72\x8c\xde\x76\xdf\xdb\xee\x7b\xdb\xfd\xba\xd6\xba\xc7\xb7\x68\x96\x6f\x16\x7d\x6e\xe1\x2f\x97\x2a\x39\x64\xeb\x0e\x6f\x0d\xbd\xae\x31\x2e\x8a\x34\x8b\x89\x2a\x16\xe4\x2c\xbc\xed\xb5\x36\xbe\xe1\x0e\xea\x50\x32\xb0\xc4\xcf\x6f\x39\x3d\x90\x3d\x14\x56\x17\x24\x43\x63\x6b\x47\xdc\xd6\x41\xd2\x58\xca\x1d\xdd\x24\x1a\x1e\x19\x85\x4c\xdf\x60\x55\x4f\x2a\x84\x44\x76\x40\x0d\x6c\xc9\xf3\x81\x0d\x75\x01\x46\xb8\xa0\x09\xca\xa5\x15\x4f\x01\x13\xd4\x11\xeb\xdd\xf1\xb7\xd8\x22\x4f\x80\x44\x9f\x02\x81\x93\x80\x05\x76\x94\x10\x6a\xb6\xd8\x23\x31\x8d\x16\xfc\x3b\x56\xaa\xa0\xfc\x9e\x75\x6b\x27\x9b\xc6\xef\xdd\x49\xa8\x64\xca\x72\x0a\xff\x7c\xeb\x16\x60\xae\xb5\xe1\x77\x35\xc3\xc4\x9e\xac\xcc\x8d\xe0\x35\x68\xf9\xb3\x9f\xcc\xc2\xf2\x62\xba\x16\x2d\xac\x10\x07\x86\xdd\x29\xf0\x37\x2c\xf7\xae\x65\x58\x33\x20\x08\xf4\x3d\xc3\x42\x99\x0b\xee\x30\x80\xb8\x70\x7f\x0e\xbc\xb4\x5d\xa4\x2b\x6c\xc7\xf0\x03\xd8\xd6\xfe\x3f\xf0\xf6\x85\x36\xcb\x13\x3c\x70\x6f\xff\xef\xed\xff\xed\xf6\xc2\xed\xff\x0d\x92\xe7\x30\xe8\x0a\x03\x7f\xd3\x42\xe2\xac\xfc\x0f\xcc\xc9\x16\x56\x7e\x71\xa6\x7b\x67\xb7\x97\x65\xdb\xf1\xec\x74\x34\x3a\x45\xd7\xb3\x5a\xe0\xa9\xf4\x78\xf8\x27\xc2\x44\x22\x53\xd3\xcf\x47\xe8\xbf\x54\x1a\xd8\xa5\x5a\xf3\xd7\x9c\x4b\xee\xc6\x6a\x3a\xaf\x41\xdf\x71\x74\x35\x02\xed\xb9\x0c\xb3\x6f\x77\x61\x2e\x22\xd0\x57\xcd\x7c\xf8\xdc\xb6\x76\x2b\x7c\xad\x04\xcb\x85\xb8\xdf\x15\xc9\x78\xce\x6d\x5d\x58\x73\xdf\x99\xd2\xa1\x8a\x4b\x42\xce\xf0\xe3\x51\x52\x54\x03\xdb\xd1\x28\x67\xb9\x2c\xe7\x03\xdf\x99\xf9\xb1\xd5\xbb\x7d\x03\xab\x76\x24\x55\x59\x32\xa1\xb3\x79\x68\x62\x9e\xba\x1d\x89\xcb\x71\x3b\x75\x40\x26\xc7\x1f\x4e\x58\xfa\xa8\xba\xb5\x6f\x64\x6d\x1d\x06\xf5\xba\x5f\x2d\x96\xe5\xc5\x80\xe7\x41\x6d\x3b\x37\x4f\x99\x98\x91\x19\x2d\x55\xe8\x0d\x20\xdb\xf2\x35\x29\x9f\x71\xd5\x55\x39\x79\xc3\xe2\xee\xbd\xee\x13\x4a\x0e\x56\xba\xa8\xb4\x45\x77\x0e\xc4\x5d\xa5\x09\x0f\xda\x0b\xec\xdb\xeb\x6e\x15\x70\xdd\x0a\xaa\x35\x2b\xc5\x1b\xf2\x9f\x67\xff\xf1\xbb\x9f\x87\xe7\x7f\x3d\x3b\xfb\xfe\xd5\xf0\x7f\xff\xf0\xbb\xb3\xff\x18\xc1\x3f\x7e\x7b\xfe\xd7\xf3\x9f\xdd\x1f\xbf\x3b\x3f\x3f\x3b\xfb\xfe\xab\x77\x5f\x7e\xbc\xbb\xf9\x81\x9f\xff\xfc\xbd\xa8\xf2\x47\xfc\xeb\xe7\xb3\xef\xd9\xcd\x0f\x81\x9d\x9c\x9f\xff\xf5\x37\x11\x93\xa4\x62\xfe\x4d\x30\x4e\xc1\x36\xdc\x8a\xae\xb4\xbf\x8d\x3c\xfa\x05\xde\x8f\x0b\x3d\x94\xe5\x10\x3b\x79\x03\x59\xd0\x83\xbb\x72\x47\xbb\xfd\x1d\xa9\xa9\x56\x5d\xf5\xc4\xb1\xc7\x07\xbe\x04\xbb\x71\xc0\x5b\x3b\x76\x81\xa9\xe8\x9a\xef\x35\xfb\x80\xeb\xb3\x1d\x24\xa5\x59\x5e\xc8\x92\x96\x73\x92\x5a\xe5\xd6\x7c\xa7\xa4\x6f\x3b\x26\x56\x87\x49\xa6\x7c\x33\x8c\x1f\x40\x55\x9c\xb3\x94\x57\xf9\x41\xd2\xb2\x41\xcf\xcd\x4d\x7f\x82\xb2\x23\xb6\xa8\x89\xf3\xf5\xb1\xaf\xb9\x92\x5c\x34\x79\x44\x41\xc5\x9f\x4a\x98\xfe\xb0\x55\x8b\xe2\xe4\x64\xa1\xc6\x37\xe8\xa6\xc1\x09\x46\xa6\xec\x54\xf9\x77\x71\xf0\x48\x25\x31\x9a\x33\xad\x6f\xe4\x99\xed\xea\xdc\x30\x82\xef\x80\x57\x38\x42\x1a\xfe\x20\x68\x21\x91\xc9\x9b\xf8\x3f\xd8\xd7\x86\x2b\x3a\x48\x84\xb7\xeb\xdc\x57\x04\x97\x20\xcc\xd9\xc4\x8b\x63\x92\xc9\xa4\xe1\x00\xd6\x62\x06\x00\x1c\x6e\xdc\x25\x0e\xb7\x15\x1a\xa0\x30\xe3\x22\xaf\x07\xca\xd0\x4c\xa1\x77\x0b\x4f\xa0\x40\x1b\x88\x86\x70\x66\x11\x90\x60\xba\xcd\xe9\x27\x9e\x57\x39\xa9\x94\x99\xad\x14\xed\x5e\xea\xc9\x3e\xb9\x3a\x73\x90\xca\x8e\x0b\xf8\xa8\x25\x1a\x87\xa8\x28\xa7\x8c\xdc\xfb\xfd\xab\xd5\x21\x68\x4a\xb7\x92\x9c\xaa\x40\x90\xb0\xf3\xb0\x6c\xb2\x1c\x83\x63\x85\xe7\xd8\x94\x2f\x55\xb6\xc5\xa5\x12\x3c\x6b\xdf\x2a\x57\x44\xc8\x6f\x6f\x25\xac\xbf\xe2\x4b\xba\x01\x2f\x98\x37\x0a\xe6\x88\xe2\xf9\xa0\x48\xee\x67\x07\x9e\xc7\x7b\x6f\xee\x95\x64\x7b\x97\xd0\x16\xcd\x6e\xd6\x2f\x6a\xbb\x87\x52\xe7\x49\xe8\x51\x48\x58\x9a\x9d\x8f\x5e\xa7\x63\x49\x7d\x32\x4f\x6c\x0a\x3f\xde\xaa\x03\x87\x83\x22\x7c\x43\x18\xdb\xd0\xfc\xc7\xe9\x7e\x9c\xf9\xf1\x81\x8d\xd1\xbd\x09\xbf\x01\xd9\x5d\x75\x85\xce\xa1\x46\x2b\x63\x1a\x62\xf1\x98\xaf\x0e\x88\x7e\x57\xb9\x9c\x05\x14\x10\xfe\x56\x59\x83\x33\xef\x04\x28\x7a\xde\x8a\x93\x57\x28\x62\x0b\xc6\x52\x8c\x05\xcc\xea\xf9\x97\x95\xe8\x9c\xfd\xc3\x39\x19\x33\xaa\xab\x12\xbd\x7f\x84\x91\x72\x32\x27\xc0\xa1\xda\xa9\x64\xe6\x50\x20\x05\x62\x29\x73\xa2\x04\x2d\xd4\x54\x6a\x50\x9d\xd0\x82\x26\x5c\x07\x84\x97\xe9\x92\x26\x8f\x50\x63\xb9\x64\x76\xb6\x5d\x53\x4b\xce\x6d\x14\x43\x13\x22\xda\xb1\x8f\x7a\x5a\xca\x6a\x32\x85\x50\x3c\x7c\x2b\xc9\xa8\xc2\x98\xcb\x2e\x23\xfb\xca\xde\xad\x62\x40\x91\x74\x2e\x68\xce\x13\x5f\x69\xaa\x94\x33\xae\xb8\xb4\x46\x2a\x18\xb5\x7b\xd1\x94\xdc\xf9\x32\x40\x68\x19\xbb\xca\x28\xcf\xc9\x99\x62\x8c\xdc\xb8\x4b\x82\xbf\xdc\xa3\x80\x80\xea\xce\x10\x07\xab\xa6\x51\xcd\xa6\x3e\xb6\x99\x53\xcc\x13\xa7\xba\x6d\xb8\x31\x84\x24\xc4\xb2\xf0\xbc\x72\xda\xdd\x05\x7e\x0d\x18\xaf\x5e\xb1\x2c\xc1\x5f\xd0\x55\xc3\x63\x22\x95\xb5\x7b\x4c\x47\xaf\x97\x77\xb7\xaa\xa9\x56\xc0\xbb\x6c\x0b\x2c\xc1\x0f\x36\xdd\xb2\xcf\x2b\xeb\x31\x41\x47\xcf\x86\xc0\x0a\x28\xc4\x3c\xe3\x69\x45\x33\x24\xad\x01\x8b\xbc\xba\xbf\xc5\x81\xf9\x64\xaa\x87\x4f\x0c\x14\xc1\xc8\x03\xd5\xb8\xcf\x4d\x97\x2f\x39\x6d\x73\x05\x44\x38\xa0\x06\xb3\x55\x4c\xe3\x92\x9f\xe8\x1c\xf2\xcf\x5b\xe7\xdf\x96\xb7\x8f\xab\x09\x83\x03\x8c\x65\x17\x95\xc9\x1d\xfd\xb6\x20\xd4\xb9\xec\x4b\x40\x29\x09\x15\xc0\x8c\x83\x46\xdf\xc0\x13\x60\x8d\xe5\x35\x77\xdf\xbf\x46\x81\x2c\xff\x11\x32\x24\x8a\x1a\x58\xed\x94\xd9\x0e\x20\x4d\xcd\x6a\x88\xfd\xc8\xf2\x22\xa3\xfa\x20\x0e\x38\x7f\x6b\x98\x1c\x1a\xf6\x70\x83\xc4\xa8\x48\x87\x34\x33\x57\xe5\xee\xbb\x2b\x1b\xf0\x8a\x88\x27\xd2\xd3\xee\xa3\x23\x42\xc2\xd7\x52\x36\x6c\xf8\x4a\x9c\x03\xd9\x53\x1f\x58\x0a\x14\xc4\xce\x2d\xcc\x49\x58\x3e\x09\x56\x3a\xd8\xbb\xfb\xee\x6a\x40\xf8\x88\x8d\xdc\x5f\xbe\x33\x47\x1e\xb5\x9c\x60\xe8\x8c\x0b\x51\x0b\xb1\xad\xcb\x74\x84\xcb\x69\xea\xf7\x9b\xbd\xff\xf8\x67\xb3\x50\xf3\xeb\x5f\x86\x7f\x6e\xd4\x2e\xfc\xcb\x8f\x86\x1e\x07\xf9\xaa\xfe\xb8\xf0\x5d\x33\xe6\x02\x88\x9e\xf9\xeb\xc7\x3b\x5b\xb6\xd8\x16\x35\xfe\x31\xd0\xa9\x82\x10\x26\x74\x39\x1f\x91\x3b\x09\x7e\x78\x3c\xc5\x2b\x0b\xf3\x2f\xd9\xdf\x9d\x59\x08\x8e\xcb\x6b\xd0\x13\xaa\x99\x00\xae\x64\x63\x05\xe0\xba\xd9\x0c\x00\x30\x00\x20\x27\x0a\xbb\x74\x06\xaa\x57\x4c\x87\x33\x20\x5a\x62\x72\xfa\x6e\x5c\x6e\xda\xa5\x20\xec\x13\x57\x90\xfd\x0c\x77\x1c\x8e\x8d\xda\x90\x10\xc7\xc8\x99\x61\x0d\x24\xf8\x9c\x79\x85\x0c\xf1\xdd\x80\xf5\xff\x56\x48\xfd\x5b\x7f\x19\x9c\x47\x29\x70\x6c\x92\xd0\x99\xe4\xae\xc6\xb6\x41\x3c\x02\x8c\x2c\x41\x89\x26\xec\x79\x3e\xcc\x49\xce\x95\xa6\x8f\x6c\x44\xee\x0d\x3b\xd7\x74\x32\xc1\x53\x16\x04\x6a\xe1\xb1\x94\x54\x42\xf3\x2c\x50\xa2\xf3\x73\x81\x8d\x69\xb0\x7a\x90\x5a\xa2\x4a\x0c\x4f\x52\x94\x6c\xe8\x58\x4b\x7c\x2b\x48\xef\x62\xab\x7a\xba\x3d\xa9\xf7\x74\xe0\x41\x7f\x4a\x51\x2d\x52\xa4\xd0\xb9\xf5\xd4\x0e\xbe\xb0\x4b\xd1\x14\x66\x37\xa4\x48\x6a\xd6\x11\x8e\x5d\x8d\xc8\x7b\xe0\x07\xb3\x10\x20\x47\xa7\x31\xd4\x03\x59\x2b\x9b\x60\x09\x53\x8a\x96\x73\x74\x62\xe7\xbe\xba\x76\xa5\xd8\xb8\xca\x80\x5d\x0e\xd9\x12\x2a\xb0\x92\x79\xc9\x12\x29\x94\x2e\xab\x04\xce\x91\x92\x87\x52\x3e\x32\x51\x87\x21\x05\x21\xc6\xa6\xc7\x7d\xed\xda\x6c\xd8\x1e\x21\x49\x32\xa5\x62\xc2\x7c\x0a\x10\x92\xd3\x14\xa0\xe8\x2b\x2f\x60\x85\x6c\x85\xf4\x27\x45\xc7\x46\xaa\xe1\x1a\x8e\xec\xc1\x70\x64\xce\x1e\x19\x32\xd9\x0f\x3e\x08\x20\x6f\x18\x2f\x05\xcf\xf6\xec\xc8\x1b\x63\xab\x1a\x02\xff\xdd\x2d\xb8\x47\xd9\xa6\x72\xa6\x69\x4a\x35\x3d\x64\x9c\xc6\x3b\xea\xcb\xb8\x5b\x5f\x28\x38\xf4\x86\x8f\x94\x65\xb3\x9c\x54\x28\x0b\xde\x4c\xec\x72\xf7\xdd\x55\xe0\x48\x20\x06\xc2\x39\x43\xde\x48\x6d\xee\x91\x35\xcf\x03\xe4\x61\x68\x8c\x8b\xc5\x30\x93\x70\x63\x22\x39\x60\x29\x49\xab\x08\x6d\x7f\x4d\x54\xc2\xec\x99\x91\xd6\x4c\x73\xde\x87\x3c\x98\x8f\xb5\x9b\x50\xd2\x8e\x2c\x58\x29\x4c\xa0\x05\x9e\x09\xcd\x4b\xd6\x48\xef\x13\x38\x98\x3d\xd5\x4a\xe0\x4d\x6f\x9f\x2f\x02\xc0\x84\x69\x55\xbb\x24\x23\xf9\x0f\xee\x5f\x5b\xc6\x11\x67\x09\xbc\xac\x3b\x73\xab\xbf\x5b\xb9\xa8\xc0\xde\x11\x6e\x94\xb4\x64\xde\xb0\x37\x07\x39\xf2\x6d\x6c\xcb\x34\x31\xd8\xfe\x9d\x4c\x63\xcc\xd1\xdb\x7a\x1f\xb4\x86\xab\xc3\xd3\x30\x2a\x52\x81\xf2\x19\x5f\x00\x87\x18\xd5\x4a\x6e\x84\x34\x6a\x4a\x67\x11\xa9\x54\xb6\xd6\x78\xd6\x72\xce\xd0\x57\xe1\x85\x89\x0d\x61\x62\xc3\xd7\xc1\x53\x88\x71\xe4\x75\x2d\xd8\xa1\xb7\x3d\x48\xa4\xd5\x75\xa7\x44\x10\xae\x19\xf4\x7f\x1f\x69\x71\xdd\x1e\x7a\xea\xd1\x2c\x33\x60\x9d\xa8\xbc\x03\x9e\x0d\xf6\x67\xdc\xa0\xed\x98\x1d\xfc\x6d\x8b\x6d\xb6\x82\x96\xd7\x99\x61\x38\xe5\x99\x53\xa2\x8d\x2c\x98\xb8\x3c\x95\xed\xd7\xcf\xb7\x1e\x16\x38\xff\xd5\x5a\x9c\x88\x3e\x6f\xad\x3f\xb1\x93\x41\x8d\xac\x57\x82\x0d\xcd\x85\xf1\x9b\x8b\x57\xca\x2c\x63\x25\x6c\xa0\x55\x9f\x2d\x38\x7e\x42\xed\x4b\x34\x80\x87\xe4\x21\x73\xcd\x29\x68\xbd\x78\x2c\xd8\x93\xe7\xeb\xa9\xc2\x0c\xf3\xce\xdf\x08\x54\xcc\xce\xeb\x76\xd5\xc8\x31\x57\xfd\x6f\x4e\x8d\x7b\x29\xe6\xb8\x75\xd7\x0d\x70\x41\x75\x29\x99\x98\x49\x19\xd1\x59\xd0\x87\xcc\xb0\x68\x0d\x90\xf2\x33\x5a\xe0\x25\xb4\x6c\xbc\xf5\x81\x8d\x63\xb6\x03\xf4\xcc\xcd\x8f\xc3\x46\x41\x66\xa4\xf5\xe1\xa8\xf6\xfd\xb6\xd2\x5b\x54\x92\x71\xd7\x2c\x74\xb4\x3a\x6b\xfb\x5b\x2e\x8c\xdb\xcc\x7b\xb7\x72\xae\xe1\xa3\x6f\xe1\x8f\xb5\x8d\x47\x16\x64\x4f\xe3\x9d\xba\xac\xf6\x07\x81\xf2\x3a\xb6\x6d\x5c\xb8\xc0\x53\x1d\x5c\x41\xe3\xfc\x71\xb6\xc7\x96\x04\xd5\xb0\x30\xa6\x53\x8e\x4c\xe0\x0f\xc7\xa9\x79\x0f\x97\x07\x66\xf0\x4f\x9d\x14\x32\x06\xa2\x08\x42\x55\x73\xa4\x15\x4e\xbc\xf5\xf5\xfe\x0a\x8a\x9a\x5a\xd3\xbe\x4b\x49\x61\xc8\xf4\xe5\xdd\x2d\xce\x2f\x76\xf4\xb7\x80\xdf\xe6\x96\x59\xd7\x53\x5e\xa6\xc3\x82\x96\x7a\x8e\xca\xce\x41\x6b\x6e\x3e\xaa\x3e\x6a\x90\x2d\xfd\x9a\xc2\xca\x20\x37\x5b\xeb\xb8\x61\xab\x9c\xf1\xde\xfa\x70\xac\x3d\xb3\x63\xac\x27\x3c\x2a\x7f\xe5\x7a\x9a\x45\x2c\x9d\x62\xf0\x19\xd7\xb3\x7b\xc4\x01\x69\xe3\xca\xe3\xf2\x40\x06\x39\xab\xb6\xd7\x23\x32\x2a\x20\xfd\x58\x05\xb2\x6c\x06\xc7\x7a\x6e\x1a\x74\x4f\xa6\xa7\x01\xe1\x63\x43\xa4\xa5\x18\x82\x75\x3f\x62\x22\xb5\x31\xd3\xf2\xee\x23\xeb\x60\x8f\xda\x22\xb8\x90\x8d\xf9\x34\x06\xa9\x6f\x3a\x39\x13\x32\x44\x99\xe4\x1a\xe0\x09\xec\xf5\x1c\x63\x1f\xd6\x58\xae\x1e\x62\x12\x4e\x92\x9a\x7b\x68\xaa\x99\x1a\x18\xcc\x31\x30\x5c\xa4\x06\x48\x81\x24\x82\x02\x4a\x55\x49\xc2\x98\x57\x01\xdb\x4b\x1a\xc3\xba\xb7\x70\xa3\xdd\xb0\x9c\xea\x64\xca\x14\x51\x12\xb2\xaa\x2b\x4d\xb3\x8c\xa5\xde\xac\x89\x07\x2a\x81\xaf\xb3\x26\xcf\x88\x11\x1b\x8c\x61\xcc\x06\x35\x54\x70\x56\x07\x5e\x64\xd4\x2a\x1f\xc7\x95\x48\xd0\x67\x98\xeb\xb9\xb7\x6a\x2d\x32\xeb\xa0\xb7\x51\xa0\x67\x8d\x61\x28\xc7\x68\xb7\x6a\xe8\x60\x3c\x20\x01\x69\x99\x23\x31\x31\x92\x61\x6d\x89\xb2\x19\x83\x0d\x65\xf0\xe9\x37\xa2\xe0\xac\x91\xa8\x63\x80\xdc\x58\x93\x65\x12\xa7\x4d\xa7\x20\x2e\xb6\x67\x10\x9b\x6b\x3b\x6b\x6c\xd9\x12\xe3\x78\xee\x19\x46\xc5\x7c\x39\x70\x15\xc3\xb5\x10\xeb\x05\x45\x2b\x2d\x73\xaa\x79\x02\xea\x59\x3e\x6e\x18\x79\x73\x5f\x94\xcf\x3b\x39\x21\x51\x05\xa2\x6e\x77\x3d\xfa\x5a\xad\x66\x36\x77\xda\xb6\xc6\x4e\xd9\xd3\x68\x6f\x8a\x5b\x6a\x83\xd5\x88\x9e\xfb\x47\x97\x37\x85\xe8\x69\xc9\x18\xe1\xb9\x11\x93\xa8\xd0\x24\xe5\x63\x9f\x2f\xc7\xd9\xec\x37\x9d\x5d\x9c\x24\xfa\x37\xf0\x07\x69\xf4\x87\xaa\xee\x2c\x93\x4f\x8a\xe8\x27\xe9\xd5\x6e\xb5\x2d\xd7\xe6\x4b\x19\xb4\x87\x8d\xa2\xa0\xb6\x7f\x83\xb6\xcd\x49\x37\x30\xed\xc0\xdc\xda\x27\x96\x65\xe6\xff\x9b\xf0\x6d\x44\xa4\xd7\xca\x75\xf2\x89\xc0\x44\x1c\x5c\x39\x35\xab\x8d\x27\x3b\x4b\x4b\x59\x14\xd6\x0c\x94\x9f\xef\xb2\x4e\x70\x6d\x2a\x67\x4c\x81\x9b\x9e\x8b\x66\x33\x47\x36\x61\x82\x95\x54\x83\x21\xdc\x66\xd0\x06\xe2\xb8\x38\x9d\x70\xb5\x25\xb6\xad\xe4\xb4\x0e\x30\x40\xb7\x85\xd5\xc7\xee\xde\xb1\xbf\x46\xcd\x95\x0b\x84\x00\x77\x63\xa3\x8e\xf4\xec\x0b\xa6\xe9\x39\xf9\x56\xe1\x41\x79\x7a\xe1\xa3\x04\x83\xa4\x73\x9b\xe5\x08\x05\xf4\xa8\xe1\x2f\xb3\x62\xda\x18\xbf\x29\xe5\xfa\x50\xeb\xf6\x4e\xb5\x66\x76\x55\x4a\xa5\xde\xbb\x4f\x0e\x32\xc9\x5e\x02\xee\x25\xe0\x5e\x02\xde\xdc\x7a\x09\xf8\xd8\xeb\x01\x7c\x77\xcc\x3b\xf9\xbe\xc9\x10\xb6\x11\xf5\xde\xf6\x83\x90\xf7\x52\x5b\x77\x17\xe0\xdf\xe9\x5a\xa5\x27\x05\x9c\xfe\x44\xe7\x23\xc1\xb4\xcd\x43\xe7\x74\xfb\x1f\xdc\xe8\x5f\x96\x86\xf3\xb3\x02\x5a\xe3\x16\xb9\x0b\xec\x92\x08\x36\x46\xd1\x12\x49\x71\xed\x7d\x03\xcf\x4f\x95\xf5\xe8\x30\xbf\x43\xb0\x3d\x69\x95\x64\x19\x91\x7b\xeb\x2d\xb8\x30\xf8\x72\xaa\xb0\x94\x69\xca\xc3\xf2\x50\x36\x9b\xa3\x94\x1f\xd7\xd0\xe8\x23\x50\x42\xb2\x1d\xc8\xfa\xd0\xcd\x63\xa8\x5a\xea\x10\xe8\x86\x47\x7c\x33\xaa\xa4\x7e\x61\x77\x4b\xe5\xed\x98\x7c\x60\x89\x9c\xb1\x12\xf7\xfb\xe6\x53\x41\x85\x11\xd3\xdf\x52\x9e\x99\xdd\x76\xbb\x5e\x5b\x2f\xa0\x08\x72\xdb\x2d\xa1\x61\x04\xf3\xd7\xc8\x1e\xad\x81\x9c\x18\x66\xd0\xe7\xbc\x33\x3d\x5b\x3f\xdd\xa2\x64\x33\x2e\x2b\xe5\xe2\x69\x2a\x8d\x74\x4c\x69\x2b\x9b\x4e\xf9\x64\xea\x5e\x76\x7e\xe6\xe0\x01\x54\xa6\xfe\xaa\x44\xcc\x41\x69\xaa\x2b\xd5\x4e\x94\x93\x80\x3b\xc1\xb3\xd8\x80\xfd\x79\x1f\x96\xe1\xdb\x8e\xb9\xc2\xf8\xa3\x63\xa2\xf1\xaf\x31\xe2\x09\x3b\x79\xb0\xb7\xc0\x85\x69\xd5\x61\x66\x89\xcc\x8b\x4a\xb3\xc6\x6d\xb1\xd0\x1a\x8b\xb6\x22\x0f\xb2\x95\xf7\xf2\x22\xa7\x82\x4e\xd8\xd0\x4f\x62\x58\x47\x68\x5d\x6c\x81\xb5\x22\x8f\x94\xec\x90\x78\xb1\xd9\x5e\x70\x64\xd5\xc2\x62\xe3\x23\xcf\xc9\x8e\xd1\xe7\x64\x97\x08\x74\xb2\xcf\x28\x74\xe2\x53\x59\x1c\xf3\x3a\x7e\xb0\x63\x2e\x5e\x48\x4b\xac\x36\x5d\xc8\xed\x44\x02\x4b\xb4\xec\xa8\x5c\x11\x99\x73\xad\x99\x73\x64\xf6\x17\x6c\x40\xb8\x6e\x65\x5a\xb0\x88\x03\x94\xe6\xe8\x8d\xcc\x3e\xf9\xb2\xda\x35\x63\x16\x39\x19\x10\x7e\x9e\xb8\x42\xc6\x4b\x10\x9e\x17\x58\x98\x05\x10\xc0\xd0\xc6\x49\x3a\xd5\xb0\x9f\x77\x02\xbe\x84\x84\x7d\x02\x45\x3e\x4e\xad\xc7\x4c\x3d\x66\x5a\x68\xbf\x04\xcc\x84\x59\x2c\x62\x92\xac\xb4\x30\x92\xfb\xdc\xe6\xb8\xa4\x0f\x2c\x23\x3f\x55\xac\x9c\x13\xc3\xb6\xd6\x91\x5e\x50\x0d\x5c\xf1\x14\x63\x9a\x9c\xd5\xec\xc0\x5a\xb2\xed\x98\x26\xb0\xb4\xdd\x7c\x32\xdc\x3d\xe4\x6c\xdb\x01\x5f\x2f\x76\xd5\xce\x04\x8a\xbb\xe5\x77\xb0\xc9\x93\xa3\xd3\x69\xf3\x09\xb0\xdd\x97\xef\xaf\xb7\x13\xa8\xe2\x9c\x0d\xc9\x36\x0e\x87\x4b\x8b\x8f\x26\x56\x84\x5c\x6e\xd8\x13\xdc\x3b\xff\x0b\x50\x09\xef\x2e\xea\x75\xf6\xe4\x91\xcd\x07\xd6\x1d\x9c\x98\xd3\xa7\xee\xe5\xe8\xc9\x60\x5c\x48\x5d\xb5\xd0\x74\x1a\x9a\x7d\xbb\xdd\xb6\x46\xc2\xdb\x29\x7a\xb1\x85\x97\x8b\x6c\x7f\xe5\x36\x2d\x16\xd7\x6f\x4d\x25\xa2\xca\x4a\x36\xdb\xba\x12\x93\x08\x43\x50\x0f\xce\xe5\x46\xf0\x60\x03\x59\x27\x00\x21\xc5\x1e\x22\xd9\x5e\xa1\x86\xcd\x6d\xec\xce\x4b\xdd\xe2\x62\x35\xc7\x6f\xc7\xf2\x3f\xb2\xf9\xa9\xb2\x49\xef\xa4\x50\x53\x5e\x60\x09\x54\xc5\x00\x47\x6d\x07\xf0\xd8\xbe\x03\xd7\x76\x37\x2c\x62\xb0\x5b\x31\x20\xef\xa5\x36\xff\xbb\x81\xd0\x24\xb8\x56\xd7\x92\xa9\xf7\x52\xc3\x93\xa3\x9f\x0b\x2e\xf1\xb9\x4e\xc5\x5a\x33\x39\x58\x18\x01\x4d\x63\x56\x1e\x88\xd3\xb7\xbb\xef\x3c\x34\xfd\x09\x72\x45\x6e\x05\x91\xa5\xdd\xca\xad\x06\xd6\xae\x88\xb2\xb2\xc3\x3a\xeb\x43\x6d\xd4\x5f\x35\xae\x3d\x35\x59\xb6\x0e\x6d\xcf\x53\xb0\xc3\x83\x2e\x12\x7f\x01\xed\x2a\x78\x97\xb8\x90\x1a\x2c\xdb\x4b\x35\x9b\x44\xb9\xba\xd4\x2d\x67\xe5\x04\xb2\x3c\x26\x11\x05\x1f\x1b\x93\xdf\x92\xb0\x62\xdb\x8a\xbc\x36\x07\xde\x12\xd8\xf7\xe4\xe3\xbf\xe7\xae\x80\x4f\xfa\x1a\x42\xb9\x8e\x29\x1d\x37\x86\x45\xee\x22\xa7\x85\xb9\x7d\xff\x6d\x98\x08\x00\xcc\x7f\x42\xcd\x74\x35\x22\x97\x44\x71\x31\xc9\x58\xeb\x37\xab\xe6\x6f\x74\x13\x3d\x01\xb0\xbe\x19\x1a\x3f\xa3\x19\xc3\x78\x51\x2a\x7c\xf5\x50\x39\x5e\x62\x21\x07\xb6\x88\xba\x21\x6f\xde\x2d\xed\xe4\x91\xcd\x4f\x06\x91\x8a\x54\xd2\xa4\x09\xa6\x93\x5b\x71\x52\xa7\xa4\x6d\xdd\x4b\xcf\x67\x81\xbf\xc1\x09\xfc\x76\xb2\x6f\x1e\xf5\x99\x84\xd4\x67\x73\x13\xb5\x4a\xe5\xab\x8c\xa2\x61\xe5\x18\xe6\x8b\xc5\x31\x57\x15\x25\xbc\x6f\xbc\x53\x9b\xb4\x6c\xf4\xf2\x33\x6a\xda\x21\x23\x4c\x74\x98\x55\xd4\xc1\x2e\x96\x01\x3a\xea\xd9\xac\x1d\xbc\x11\x6c\xed\x73\x8a\x9b\xb3\xf8\x6e\xd5\x07\x8d\x58\x73\xae\xe2\x8f\xeb\x76\xbc\xe8\xa3\xd0\x48\x77\xd2\x8c\xe2\x91\xa5\x8d\x5a\x5f\xf2\x21\x86\x0a\x89\x75\x25\xa5\xd0\xda\xa9\x75\xab\xdd\x1f\x4a\xa6\x0a\x89\xfe\xb5\x2b\x17\x6b\x59\x84\x29\x55\xe0\x93\x35\xb6\xe6\xd6\xa2\x2a\x0b\xa9\x6c\x79\xbb\x45\x90\x8f\x8c\x5c\xb2\xe1\x64\x2e\xc8\x14\xc3\xc0\xfd\x4d\x30\xf7\xc7\xe7\xa5\xbe\x5c\xc8\x49\x88\x06\xb1\x46\x96\x36\x21\x57\x2f\x23\x62\x46\xce\xe1\x13\xe5\x18\x9f\x19\x0b\x27\x83\xb1\xf9\xa7\xe8\x6a\xd2\x30\xff\x19\x6e\x5f\x37\xbd\xaf\xb4\x6c\xcf\x14\x52\x06\x60\xf2\xb8\x88\x64\xe3\x04\xe1\xa5\x12\xb5\x1b\x8b\xa3\x1e\xab\x5d\x02\x21\x37\xdd\x83\xac\x84\x05\x2d\x97\xd5\x6e\x5f\x9b\x62\x56\xe9\xb2\x2c\xf8\x09\x58\xd0\x6c\x04\xb8\xf1\xb1\x59\xab\xcd\x8c\x10\xb7\xd6\x96\x7f\x10\x58\xe7\x4b\x5b\x84\x6f\xbe\xfa\xfe\x92\x54\x32\x3c\x0f\x18\x6f\x80\xa7\xb0\x7a\x7b\xec\x32\x62\xd0\x39\x7a\xb8\x52\x72\xc7\xf0\x96\x28\x4d\x35\x1b\x60\x8d\xd7\x71\xd6\xa8\x03\xc4\x48\x2e\x53\x3e\xb6\x7e\x76\xf7\x0d\x1b\xea\x00\xd3\x65\xd8\x5c\x17\xcd\x34\xe0\x11\x13\x89\xdf\xcc\x9d\xf2\x0e\x0e\x6b\xfc\x32\x04\xb2\xc0\xa2\xd4\xe2\x41\x4e\x89\xab\xb1\xeb\x7a\x3f\x07\x72\x26\xc7\xe3\x46\xc9\xab\x80\x2a\x78\xae\x6d\x4d\xa9\xc2\x2a\x8b\xb9\xb6\x2b\x69\x82\x32\x0b\x2e\xf5\x5e\x2b\x89\x6c\x1d\xf7\xb1\x33\xbf\xf0\x1d\x20\x4d\x39\x26\x6f\xeb\x5a\xb8\x5c\x81\xe1\x86\xbb\xc4\x7c\xe6\x3a\x71\x91\x64\x95\x75\x20\x40\xec\x67\xb0\xd0\x11\xf6\x7c\x07\x76\xa0\xee\xc0\xf1\x5d\x2e\x7a\x64\x29\x91\xcb\x22\x86\x80\x90\x05\x0f\xae\x91\xbb\x1a\xb8\xd6\x71\x47\x72\x88\xd6\x5a\xc6\x49\x5b\x8f\xf4\x96\x3f\x94\x8c\x5c\x4d\xa9\x10\x2c\x6b\xe4\xc9\xb6\xc6\x3c\xaa\x35\x4d\xa6\x88\x2b\x29\x31\x37\x3d\x63\x86\x52\x4d\xa5\xd2\x24\xa7\xc9\x94\x0b\x9f\x44\x55\xf8\xac\xec\x75\x56\x9b\xa3\xa7\x10\x3b\x78\xf5\x6a\x0b\x01\xcd\x92\xcf\xad\xa2\xd6\x01\x3d\xf9\x64\xc8\x4b\xbd\xd4\xf5\x22\xed\x3d\x84\x7d\x46\x69\x0f\xe8\x04\xbc\x1b\x32\xc6\xfa\xd2\xda\xe4\x36\xf7\x06\x5a\x2e\x1a\xa4\x90\xd9\x0f\x0c\xa1\x6d\x30\x07\x7b\xad\x64\x9d\x55\x01\xb5\x9d\xda\x59\xdc\xb3\x4a\x98\x4d\xaf\xab\xf5\xbc\xbd\x22\x9a\x96\x13\xa6\x4d\x6f\x44\x54\xf9\x03\x2b\xbb\xd3\xb9\x1f\xae\xc0\xdc\x51\xea\xc1\xb6\x76\xa0\xa3\x8c\x2b\xf9\xe0\xbe\x82\xb0\x17\xe0\x4f\xc6\x32\x8c\x33\x40\x5f\x45\x57\x84\x16\x4b\x10\x1a\x5c\xfd\x9d\x25\x25\x95\x08\xe1\x17\x62\xea\xc4\xe2\x59\xfe\xed\x6f\xef\x63\x8b\xf4\x9d\xd6\x5f\xae\x03\x90\x27\x59\x66\xe9\x13\x4f\xad\x5b\x2a\x39\x33\x2f\x9f\x87\x02\xcb\x9e\x6b\xf6\x6d\x9f\x52\x38\x56\x47\xf7\xf4\xc4\xd3\x83\xd4\xdb\x85\x8e\xdb\x3b\xed\x44\x48\xb3\xd3\x04\xb6\x9a\xa7\x4c\x68\x83\x3a\x4a\x45\xce\xe0\x8b\x90\x9c\x17\x37\x1c\x33\x13\xc2\x08\x50\x15\x28\x7f\xe0\xa2\x4e\xae\x59\x9f\xb5\x21\x37\xe6\xe6\x3b\xad\xb3\x62\x1a\xf3\x9b\x41\x66\x03\xa9\xa7\x44\xf1\xbc\xca\x34\x15\x4c\x56\x2a\xbc\x14\xff\x67\x79\xdc\xe3\x8c\x7d\xc2\xbb\xb9\xcf\x04\xd2\x75\xaf\x6d\x6e\x01\xe2\xaa\xea\xac\xbc\x8b\xec\x42\x47\xaf\x75\xb8\x6a\x7a\xe1\x19\x0b\x9f\x5d\x90\x7d\x62\x89\xcd\x2b\x52\x64\xd5\x84\x77\xe6\xd2\xba\x36\x33\x4b\x8c\x0c\xff\x86\xbc\xad\x27\x0c\x51\xcc\xee\x17\x2c\xd5\x0c\xfe\x0b\x76\x20\x72\x75\x7f\x7b\x6d\xd3\xc0\x0a\xa5\x19\xdd\x17\x8f\x12\x6a\xf2\x1d\x5a\xb5\xcc\x9e\x18\x1e\xec\x2c\xf2\xb2\xd7\x79\x70\x17\xb5\x88\xf6\x17\x5b\xf3\xc1\xd7\x0f\x08\x4d\x7c\x1a\x01\xf4\x3d\xa7\x86\x6d\x03\xa7\xd6\x2c\x21\xd0\x98\x40\xca\x0a\x26\x52\x28\x4a\xd8\x80\x7b\xdc\xa5\xbd\x1e\x91\x2d\xa0\x17\x4b\x97\x5d\xdd\xbd\x16\x51\x6e\xc8\xeb\x53\x99\xa5\x8a\xb0\x4f\xba\xa4\x06\xcd\xe7\x06\xa1\xfb\x6f\xc6\x84\x8a\x79\x40\xf5\xd3\x97\x54\x28\x9d\x3c\x0b\x17\x98\xfe\x92\xb8\x40\xc5\x92\x92\xe9\xa0\x00\xeb\x2d\xca\xa7\xb8\xce\xdb\x1b\xd8\x7a\xbc\x24\xca\xe3\xaf\x2e\x4c\xa8\xae\x91\x1c\x34\x9e\x50\x1c\x8a\x11\x2e\x54\x5e\x2e\xa8\x52\x5e\x3a\x06\x22\x67\xaf\xad\x6a\x65\xdc\x08\x18\x02\xf5\xc0\x7c\x4c\x84\x5c\x98\x69\x33\x20\xca\xbb\x02\xb4\x5e\x09\xe8\xde\x5b\x0e\x73\x2c\xc8\x40\x05\xa4\x16\xc0\x6e\x06\x10\x6f\x8d\xff\x46\xe3\xa1\x59\x57\x43\xee\x87\x95\x85\xec\x93\x5d\xfb\x7e\x2f\x7b\x9c\x4b\x53\x78\x14\xe0\x76\x7a\xb8\xf7\x0d\xe2\xea\x02\xcb\x42\x55\x40\xed\x5c\xb9\x0c\x2a\x98\xf2\x19\x83\x4c\xbc\x2e\x31\xad\x61\x7c\xd3\x0a\x95\x9a\x2e\x3d\x46\x3b\xe9\x45\x78\x90\x7b\xc3\xf6\x50\x7b\x73\xdc\x0a\xa5\x29\xe4\x47\x80\x55\x18\xaa\x6a\x08\xa0\xcd\x79\x6c\x01\x11\x6d\x26\x2e\xcb\x42\xf0\x70\xb9\x21\x9a\x09\x2b\x0d\xac\x65\x73\xf2\x54\xca\x70\xe7\xd2\x48\x4d\xb4\x9c\xb1\x72\xc6\xd9\xd3\x85\x8d\x0a\x1c\x9a\x05\x0c\x6d\x60\xfd\x05\x88\x87\x17\xbf\x86\xff\x05\x8d\x1f\xad\x87\xb4\xd8\xfa\x0d\x39\xe9\x2e\x4d\xb8\xad\x99\x7a\x0c\x89\xb4\xf7\x5a\xfd\xcd\x76\xb9\xa0\x34\xb4\x0f\xad\x18\x10\xa2\x24\xb4\xf8\xad\xc1\xba\x98\x0b\xe1\x3a\xb2\x56\x1e\xa2\xcc\x19\xd5\xe1\xa2\x95\x10\x01\xde\xc6\x6d\x39\x00\x3b\x6c\x09\x01\xde\xbc\xc5\xc5\x50\x97\x8c\xf9\x45\x69\xcb\x26\x0a\xe9\x4a\x58\x04\x16\x26\x3d\x80\xe2\x32\xa5\x9a\x2a\xa6\xc3\xd4\xd4\xf1\xa8\xa8\xd1\xbd\x59\x71\x13\x2b\xd9\x9f\xc0\xe2\xca\x20\xaf\x8f\xcb\x06\x4d\x86\x7f\xb1\xc2\x81\x68\xbd\x69\xc4\x02\xbb\xd3\x21\x58\x7e\xea\xca\x78\x39\x5f\x72\x1c\xa5\x3e\xa0\x7d\xf2\xac\x76\x8e\xdf\x7e\x7b\x7b\x1d\x2b\x14\xd5\x5f\x3a\xd9\x01\xfe\xdd\xde\x26\x0b\xc8\x60\x13\xe5\x3f\x55\x4d\x75\x07\xd4\x33\xf1\x20\x68\xdf\xdf\xd7\xda\x26\x09\xab\x8d\x0b\xd7\x5c\x3d\xee\xf3\x96\x2f\x75\xde\xbe\xef\x5f\x5e\xdd\x10\xfb\x74\x93\x7d\xa0\x63\x90\x7d\x5b\x0f\xda\x37\xff\xcb\xab\x9b\x85\x25\x2c\x28\x02\x2e\xb3\xcc\xc9\x67\x46\xd0\x70\x69\x23\x2c\x4e\x88\xde\x20\xc0\x1d\x86\xf7\x29\x19\xd6\x5a\x6c\xcc\x3c\x1d\x25\x8a\xfb\xd4\xb2\x93\x47\x36\xe2\xb2\xe1\x90\x71\xe0\x5a\x98\x93\x84\xd5\x66\xf4\x94\xab\xc7\x63\xeb\x37\x8a\xf4\x7d\x57\x02\x92\x97\x65\xd0\x59\x14\xee\x5d\x99\xa4\x46\xbd\xb4\xb9\xac\xc8\x93\xad\x0c\x11\xac\x3e\xf8\xc8\x8b\x37\xe4\x46\xa8\xaa\x64\xb5\x4f\xfb\xe2\x60\x86\x5f\xdf\xa3\x32\x01\x0a\x8d\xa8\x37\x47\x33\xfe\x1c\x19\x5c\x49\x1c\x35\x28\x68\xa9\x41\xf2\x3f\x04\x00\xf9\xce\x1d\xb9\x68\x3c\x10\xfb\x81\xa0\xdb\xb1\x8b\xc4\x6c\xbb\xde\x70\xe5\xbb\xa9\x7d\x58\x80\x56\xc7\x41\xc9\x5b\x5f\xd6\x8b\x5c\xa4\x6c\x76\xa1\x52\xfa\x7a\x00\x53\x75\xb9\x07\xda\xeb\xa2\x8a\x9c\xbc\x3e\x09\x19\xe3\x9e\xe7\x3c\xa3\x65\x86\x99\xfd\x7c\xc2\x43\xdf\x93\xc1\xbf\x6e\x48\x70\x63\x7d\x75\x42\xce\x64\x09\x63\x27\x54\x90\x8c\xb9\x2c\x80\x16\x57\xcc\x51\xd4\x08\xf2\xcf\x78\x26\x90\x3c\x84\x75\x11\x91\xe9\x41\xc0\x37\x75\xdc\xa0\xe5\x64\x5a\x05\x9e\xae\x6b\x62\xcf\x85\xa1\xae\x23\xf2\xad\xa5\xce\x96\xe3\x41\xd8\x48\x81\xd4\xe2\x1b\x2f\xf7\x64\x5e\x8e\x0a\x6f\x41\x19\xb7\x27\x55\x1b\x59\xb6\x09\xbf\xe0\xd3\xe8\x56\x09\x4e\xb8\xfe\xc0\x0a\xb9\x57\x1e\x17\xbb\x5c\x30\x68\x71\x6d\x1e\x48\xc5\xa1\x82\x39\xd5\x84\x22\x8e\x4a\xaa\x8c\x1a\xa9\x17\x0d\x56\x51\x8c\xa8\x1d\x67\x81\xfd\xfc\xd8\xac\x25\xd7\x88\xa8\xb7\x8a\x14\x3f\x93\x81\xc5\xea\x9d\x1a\x53\x5f\x25\x19\x0a\xa8\x50\x41\x6e\x05\xd7\x57\xbe\x5b\x0c\xb4\xcc\xa4\xb0\x7e\x71\xa6\x6f\x6b\x03\x9b\x70\x6d\xd3\xc3\xe3\x50\xe6\x67\xd7\x5b\xc7\xa0\x75\xb1\x16\xa8\xee\xee\x57\x71\x74\x1b\x5a\x7d\x68\xfb\x92\xbf\x5d\xc1\xf4\x83\x48\xdf\xbe\x46\xbe\x4b\x80\x86\xfe\x09\xf5\xf3\x50\xd2\xfd\xce\xd5\xa1\x72\x95\x94\x64\x89\x75\x72\x11\x8e\x4e\x47\xa3\xd3\x11\xb0\x0d\xa7\xa3\x53\xc7\x5a\x66\xde\x29\xdc\x52\xe1\x7a\xd8\xb8\x72\x83\xed\xdb\x32\x22\xe4\x1b\x97\xa7\x01\x92\x4f\x2f\x78\xa0\x7b\xe7\xf2\xba\x86\x36\xa6\xed\x6b\xdf\xb9\x20\x4d\x31\xe8\xb0\xab\x87\xe6\xc4\xad\xcb\xfa\x84\xcf\x6c\x5e\xda\xbd\x9a\xbe\xea\x09\x46\xc2\x43\x73\x65\x56\x89\xf0\xe1\xeb\xfd\xce\x0c\x91\x48\xf4\xbc\x2c\xee\xb1\xb3\x4a\x64\x9e\x63\x59\xb4\xa9\x97\x85\x6b\x87\xf0\x50\xc4\x17\xae\xbe\xc0\x12\x71\xe3\x8e\x7b\x18\x89\xd2\x5d\xa7\x0b\xea\x0a\xff\xd8\xe6\x49\x11\xb5\x50\x05\x68\x51\x4d\x69\xc9\x14\x96\x72\xb7\x85\xab\xbb\xeb\x9d\x2e\x60\x79\x3f\xc6\x66\x55\x63\x3d\xc5\xad\x95\x8d\x2b\xc9\xb4\xad\x28\xa9\x5c\x72\x3b\x4b\x92\x2f\xfc\x78\x17\x1f\x6e\x2e\xaf\xdf\xdd\x8c\xf2\xcd\xda\xb5\x03\xa0\x66\x26\xd2\x42\xf2\xee\x0c\x65\x43\x52\x50\xbd\x39\x7f\x78\x38\xfa\xf6\x83\x1e\x02\x7d\xfb\xce\xdd\xe5\x71\x0f\x1a\x75\x38\x6d\xfe\xbe\x06\x60\x68\x59\xc8\x4c\x4e\x82\x12\x55\xef\x76\xc2\xbf\xc6\x58\x96\x21\x1d\x86\x54\xfe\x8c\x12\x9f\xf5\xf4\x30\x92\xb3\x9e\xba\xbd\xac\x37\xcc\xcb\x88\x3a\x28\xb2\xf7\x85\xee\xd9\xb3\x49\x11\x4b\x1b\x89\x7a\x1d\xc0\x81\xae\x48\x69\x5d\x6f\xb3\x60\x65\xce\x31\x36\xf5\x98\xe2\xc5\x81\x4f\xa8\x5b\xb2\x30\x54\xe0\xae\x13\xac\xe3\x8e\xc6\xf5\xd9\x26\x43\x45\xc9\x86\xbe\x20\xd8\x98\x67\x10\x7c\x57\x73\x30\x0d\xaa\xd4\xd1\xbd\xd3\x94\x3b\xa5\x3b\xf6\x91\xcd\x17\x35\xe6\x35\x37\xee\x6d\x14\x98\x08\xbd\xbb\x80\xac\xaf\xfe\x6b\x35\x93\x74\x82\x05\xbd\x4a\x9b\x87\xb8\x28\xf9\x8c\x67\x6c\x02\xa5\xd0\xb9\x98\xa8\x3a\xa7\xa4\x35\x1a\x77\x0c\x00\xf1\x8f\xac\xa6\xc3\xde\x2c\xf8\x0e\x4c\xc0\x3e\x4d\x16\x02\xf5\xfb\x6f\x3e\x12\xc1\x70\xb0\x4e\xf0\xdc\x51\x88\x35\xd3\xe9\x24\x44\x87\xd0\x92\xef\x8f\xf8\x1d\x14\x4d\x3b\xf3\xd7\x2a\xc0\x0d\x54\x61\xa2\x0e\x11\x51\x3e\x25\x6a\x9e\x67\x5c\x3c\x0e\x7c\x81\xb9\xb1\xb4\xa9\x75\x19\x31\x3f\x38\x70\x2e\x19\xcd\x76\x21\x06\x7b\x07\x02\x12\x47\x08\xf4\x81\xec\x16\xc0\x48\x9a\xbb\xfa\x6f\x0e\xed\xa0\xae\x28\x12\x8b\x07\xf8\x21\xbc\xb8\x6d\xe5\x39\x9d\xec\xd5\xd1\x19\x3a\x6c\xa1\x6d\x41\xbe\xb9\xba\xf5\x75\x22\x9b\x8a\x1a\x7c\x57\x96\x84\x96\x9a\x8f\x69\xa2\xcf\x49\x51\x41\x35\x1f\xa8\x4d\x62\xc9\xac\xbd\x1d\x6b\xbc\x20\x3a\xa6\xf3\xb1\x16\x9b\xc1\x25\x4d\xc9\x6c\x66\xfa\xd7\x50\x14\x1c\xe4\xfc\xaa\xb0\x4e\x14\x18\x00\x6c\x8b\x43\xdd\x55\x59\x76\x27\x33\x9e\xcc\x7d\x61\x0b\x54\x37\xa5\x06\x15\x75\xe2\xa2\xcb\xec\x89\xce\xd5\x9b\xe6\xcc\x09\x85\x67\x84\x6a\xcd\xf2\x02\x41\xc6\x2c\x77\x31\xc1\x75\xad\x71\xc2\x82\xcb\xae\xb0\xfe\x98\xf2\xcc\xdf\xfd\xca\x3e\xe8\xc4\xe5\x43\xf2\x9e\xcd\x58\xd9\x9e\x89\x30\x8f\xa0\x13\xd5\x1e\x1d\x36\x1e\xb8\x99\x4a\x81\x3c\x87\xb5\x34\x96\x0e\xaa\x63\x96\x7c\xbc\xd0\x2d\xd6\xa1\xb1\x30\xd1\x3d\xe5\xdb\xf1\x7b\xa9\xef\xf0\xed\xf6\xcc\x71\xce\x6b\xfa\xa7\x99\xe1\xc6\xe6\x6e\x1c\x73\x98\x29\x57\x8f\x3b\x4d\xd6\xcb\x9f\xcd\x2d\x0f\x07\x3a\xa8\xbc\x5c\x62\x02\x4b\x80\x3c\x3b\x9a\x81\x3e\xf8\x2d\x35\xcb\xb2\x10\x5f\x32\x1b\x42\x3f\xb0\x40\xd8\x0c\x99\x67\x4f\x50\x91\x5f\xd7\x15\xa2\xad\xaa\x29\x91\x39\x23\x74\x46\x79\x46\x1f\x32\xf0\x2c\x31\x9d\xdb\xbe\x02\x34\x0e\x97\xb0\x2a\xb0\xa8\x4a\x77\x43\xcc\x59\x7b\xd8\xc4\xd3\xb7\xc9\x86\x9a\xd7\x06\x27\x90\xc9\xe4\xb1\xc9\x6f\x40\x45\x33\x78\x05\xe3\x10\x52\xf0\xc1\xa4\x69\x4a\x14\x9f\x08\x28\x89\x2d\x34\xc9\xa8\x66\x22\x99\x8f\x88\x4d\xe1\xad\x1a\x15\xc3\x75\xc9\x7d\x1c\x83\x80\x7a\xfd\x75\x95\xd4\xe4\x51\x8e\xc7\x0b\x15\xc6\xad\xa9\xd7\x22\x0a\x5c\x3d\x55\x52\xe0\xe0\x4c\x29\x3a\x09\x42\x14\x8b\x25\x83\x70\xe7\x6d\xd2\x09\x87\x8e\x5c\x46\x09\xe7\xaa\x55\xba\x50\xe0\x3a\xd4\xd7\x43\x5b\x59\x09\xcd\x73\xb6\x90\x6d\x95\x80\xbe\x7a\xc9\x65\xc3\x0c\x65\xd3\xd1\x42\x20\x8e\x0d\xec\x75\xa5\x78\x78\x6a\xe7\xb7\x64\xdb\x5e\x44\xa8\xe0\xdf\x18\xb2\xde\x06\x5e\x06\x58\x74\x4b\x84\xa2\xde\x36\xcd\x4f\xcd\xa5\x9c\x41\x5c\x71\x7d\xd0\xdf\xff\xf6\x87\xd1\xac\x69\x53\x81\xcf\x0d\xf9\x3c\x37\x33\xcb\x59\x39\x71\xb5\x66\x72\x2a\xf8\x98\x29\x73\xea\x73\x03\x22\x56\x6f\x09\xc5\xa8\x9e\x0c\x70\xa0\xf7\xc8\xc2\x42\x3a\x71\xdb\xc7\x05\x9d\x68\xe3\x94\x6a\xb1\xec\xac\x94\xe7\xb0\xbf\x90\xce\xeb\x13\x4b\x2a\x0d\xf7\x04\xbc\x06\xc8\x99\x90\xe6\x59\xa7\x0d\xf4\xbe\x7a\x40\x86\x0b\x06\x58\x98\xae\xab\xbc\xa6\x1b\x67\xd3\xb9\x5b\xaa\x7a\x28\x70\xaf\xd8\xd8\xf0\x04\xaf\x47\xff\xf2\x2f\x21\x0b\x46\xef\x55\xe8\x5d\xb1\xa4\x2a\xb9\x9e\x1b\xf4\xc6\x3e\xe9\xd1\x58\x41\x1d\x93\x2b\x48\xd1\x61\x89\xd7\x94\x82\x82\x0c\x5d\x5d\xf1\x8a\xd4\xc0\x6b\x00\xea\xe8\x7e\x79\x85\xa7\xac\x87\xe0\xe5\xec\xb2\xc7\x16\x81\x19\x08\xac\xc1\x5c\x8d\xc8\x9d\x54\x8a\x9b\xf3\xf7\x79\x9d\x82\x9c\x95\x5f\x0c\x3d\x37\xed\xb3\xa3\xe8\x04\xa4\x96\x97\x4d\xd3\xbb\x57\xd0\xe4\xf5\x11\x1e\xcc\x38\x6f\x20\x39\xaa\x26\x9a\x4e\x16\x4a\xa7\xc8\xb2\xb5\xe8\x3a\x07\xf7\x9e\xed\x2a\x76\x8d\x87\xb8\x4d\x1f\x9c\xf0\x4d\x6e\x17\x01\xa6\x1d\xdf\x61\xb3\x32\x85\x6c\xe3\x17\x6c\x4a\x67\x6c\x25\x11\x28\x64\x3a\x5a\x81\x37\x01\x58\x43\xba\x36\x4c\xbb\x0f\xa3\xf0\x19\x82\x94\x62\x39\x24\x26\x59\x43\x76\x56\xd1\xd0\x87\x39\xc9\xa4\x84\x44\x13\x55\x41\x84\x4c\x99\x01\x33\x70\xd3\xa0\x99\x1a\x90\xfb\x4b\xfb\x62\xd1\x18\x12\x93\xc6\x01\x87\x54\xb0\x64\xc5\x0b\x07\x90\xbb\x1b\xf9\xd0\x91\x68\x86\x78\xd1\xb5\xa2\x20\xa4\x0d\xdf\xa9\x4b\xf2\xd8\x42\x25\x19\x9b\x31\x30\x34\x8e\xf9\x84\x60\x22\xf6\xdc\xa6\xe6\x73\x5e\x53\xb2\x84\xf4\xd6\x25\x4f\x43\x84\xe5\x45\xfa\x6e\x0e\xe4\x49\x96\x8f\x99\xa4\x69\x23\x2f\x91\x22\x19\x7f\x64\xe4\x9a\x15\x99\x9c\xdb\x7c\x7a\x22\x25\xf7\x9a\x6a\x36\xae\xb2\xfb\xa0\x8d\x0c\x95\x7f\x55\xa2\xf8\x5e\xe5\x5f\xd3\xe1\x82\xfc\x7b\x7b\x7f\x75\x7f\xfb\x22\xfd\x7d\x23\xf4\xc9\xb0\xb0\xe7\xb3\x81\xf1\x9f\xba\xac\xda\x43\x92\x55\xdd\xef\xa0\x9f\xc0\x9d\x2c\x35\xcd\xf6\xc4\xd0\x24\x53\x5a\x5c\x56\x7a\x7a\xcd\x15\xd4\x28\x8a\xe5\x6b\x96\xbe\x6f\xe4\x16\x62\xa0\x2c\xb6\x6c\x25\xe1\x0e\x90\xec\x7b\x57\xff\x76\x79\x47\x68\x65\x0e\x5f\xf3\x04\x88\xe0\xde\xd4\xfa\xcd\x95\xdd\x63\xce\xcd\x2d\xd7\x65\xbf\xee\x58\x95\x7b\xeb\xd0\x6b\x7a\xae\x28\xe9\xde\x05\xfa\x88\x2e\xd0\x80\xac\xf6\xc9\x65\x71\xc1\x35\xa7\x5a\x96\x87\xf2\x1d\x6d\x0d\xe0\x5d\x4a\x2a\xa5\x65\x6e\x2f\xc8\xad\x7b\x03\x62\x8d\x02\x0d\x05\x4b\xdd\xd6\x1e\x29\x60\xbe\x84\x8d\xba\x15\x9a\x95\x63\x9a\xb0\x85\x3c\x1f\x03\xd0\x3a\xe1\xe8\xdc\xbd\x13\x30\xee\x9f\xad\x33\x16\x94\x84\xce\xfe\xf2\xe6\xcf\x0d\x6f\xea\xbf\x78\xbe\xcc\xea\xba\x9a\x2c\x98\x60\x49\x88\xc6\x2a\xee\xe4\x7e\x8a\xc5\x5b\xfc\x27\xb1\xe0\x55\x86\x5b\xf0\xff\x2a\x9a\xe1\xd6\x85\x1d\x40\xcc\x24\x5b\xc7\x70\x10\xf8\x6a\x1f\xb4\x5d\x9f\x3f\x55\x8c\x5f\x03\x7c\x82\x72\xa2\xb0\x8b\xd6\x25\x15\xca\x1c\x64\xac\x84\x74\x6a\x79\xc4\x53\x72\xa6\x93\x22\xc0\xc9\x3c\x2a\x00\xd4\x07\x7f\xda\x7f\x74\x7c\x10\x9f\x25\x2b\xab\x44\x93\x8b\xc3\xcd\xf8\x88\xe0\xf0\xb5\xcf\x92\x15\xba\xaa\x83\xf8\xb1\xc3\xed\x3a\x88\x7b\x8e\xed\xda\x43\x49\x73\xf1\xc8\x3a\x91\xaf\xb9\xd2\x98\x4f\x03\x5f\x86\x78\x6a\xcc\x38\x64\x38\xde\x3b\x23\x1a\xf0\xe2\xbf\x68\x9a\x96\x6f\x90\xca\x3b\xc5\x77\x19\x12\x2e\x6f\xe4\x12\xed\xab\x25\x3a\x71\xe3\x4c\xcf\x0b\x5b\x9a\xff\xe3\xd5\x1d\xf4\xa5\xc8\x9f\xfe\xf5\x15\xb0\xc0\xff\xf2\xfb\x7f\x7d\x15\x0c\x66\x9f\x65\x6a\x22\xf2\x3f\xd0\xa5\xfe\x18\x29\x2f\x5a\x69\x2b\x20\xd5\xb3\xe1\x41\xef\x31\xc3\x83\x21\x4f\x16\x15\xe2\x05\x30\xb0\xe6\xc9\xea\x76\x9c\x6a\x9f\x77\xa1\xcf\xbb\x50\xb7\x3e\xef\xc2\xea\x89\x35\x24\xf5\x83\x78\x7d\x34\xfa\x87\xcc\xba\xcb\x54\x0e\x09\xdc\xdd\xe7\x48\xe0\x3a\x0f\xb4\x1b\x5d\xc4\x6d\x69\x33\xd6\x2d\x2c\xb9\x59\x9d\x0b\xec\xfa\xfd\xfd\x7f\x7d\x7d\xf9\xc5\xcd\xd7\xb0\x4e\x1b\x3c\x67\xc0\x9a\x8b\x1d\x34\x59\x47\xb8\x44\xa1\x7b\xbd\x5f\x2f\x7d\xb1\xe0\x9f\x2f\xc8\xfb\xb7\xf7\x91\xae\xf9\xfb\xdd\xce\x45\xf9\x5b\x8c\x43\xf6\xed\xb8\xde\x7f\xe6\x25\xc5\xca\xfd\x25\x0a\x3c\xa8\x93\x60\xa3\xf8\x6b\x4b\x8b\x63\x4e\x1a\x57\x71\x04\x35\x4a\xd7\x31\x92\xcf\xc4\x91\xdb\x6c\x1a\x6e\xe4\x8b\x74\xe1\x3e\xcc\x91\x84\xf2\xcc\x65\x7c\xb6\xcb\xc0\x1c\x71\x65\x23\x25\xa6\x41\x48\x48\x22\x4a\x43\x3c\x0d\xd9\x64\x4a\x39\x82\xf1\xb9\x42\x75\xb1\xaa\x7e\xc5\x3e\x51\xfd\xca\x01\x6c\xed\x0a\x57\x7c\xa3\xe1\x21\xdf\xb2\xc9\x76\x99\x93\xd6\xd4\x26\x69\x18\x49\x81\x00\x16\x34\xe9\x26\xe5\x7b\x2b\x6e\xb4\x58\xaf\x04\x32\xfc\x1f\x9d\x98\xc0\xa8\x7b\xcc\xb9\xe2\xfb\x3b\xc4\x45\xf3\x9d\x2f\xa6\x9f\xa5\x31\x47\x4c\xa8\xf2\xee\x73\x55\x5d\x10\x24\x34\x4f\xed\x33\xc3\x00\x79\x81\x94\xe8\x6f\x07\x53\xa0\xec\x5b\x79\x52\x4c\xa5\x96\xe2\x70\xd9\xb0\x56\xf5\xdf\x46\x5c\x77\xf0\xc6\x55\x5d\x9b\xa8\x86\x01\x4c\x88\xe1\xed\xe4\x0b\xae\xe1\xd6\x26\x1e\xe7\x15\xde\x8c\x3b\xbd\x5b\x35\xb7\xcd\x21\xa8\x2b\x97\x73\xf8\xd4\x77\x31\xf9\xa2\x6e\xaf\xf7\x84\xb9\xfa\xa4\xd2\xd8\x5e\x68\xf9\x0f\x73\xd2\x91\x87\x63\x3e\x71\xbb\x7e\x7b\x6d\x05\x0d\x97\x72\x4f\xd9\xfb\x40\xd6\x5f\xc5\xbd\xf1\x4e\xb2\xd4\x4f\xb2\x3c\x40\xb2\xfd\x76\xcf\x0b\x31\x84\xf6\xb7\xa5\x54\x9b\x7b\xc7\x2b\xed\x49\x44\xe5\xce\x5b\x5c\x81\xd9\xd1\x8e\xa1\xd7\x24\xce\xfb\x94\x8e\x5c\x5f\xa3\x44\xe6\xad\x22\x86\x53\x86\x7c\xc0\xd5\xfd\xed\x3b\x3e\xc1\xa9\xb8\x59\xbb\xfa\x5e\xc3\x09\xd5\x5d\x43\x73\x45\xba\x6c\xb6\x07\xc0\x71\x78\x7e\x9f\x03\x9e\xbb\x07\x3c\xd7\x80\xc2\x4d\xf8\xee\xa5\xa2\xbb\xe7\x45\x73\x47\xe1\xd7\x7e\x51\xe9\xdf\xdd\xf5\x88\xdc\x31\xf7\x99\x55\xc2\x9a\xb3\xae\x49\x03\xf5\x48\xcd\xbe\xb7\x37\x52\x50\xca\xbf\x03\xde\x8a\xa0\x02\xfe\x1b\xb4\xd2\x02\x0a\xa5\x59\x66\x76\x55\x8a\xba\x92\x8a\xaa\x9d\x73\xd1\x93\x35\xa7\x85\x75\xd4\x4d\xe5\x93\x78\xa2\x65\x4a\x2e\xef\x6e\xf7\x83\xbd\x22\x92\x23\x21\xac\x85\xd5\x2d\xdc\x22\x3d\x52\xdd\x3d\x50\x06\x8d\x75\x2f\x19\x79\xe0\x5a\xb5\xea\xe7\x36\x54\x5e\x86\xec\x79\xa7\x1c\x88\x8e\xa9\x8b\x38\x46\xb1\x61\x82\xc8\x44\xd3\xcc\xda\xd2\x1e\x98\x7e\x62\x4c\x90\x57\xaf\x5e\xa1\x1d\xe3\xd5\x1f\xff\xf8\x47\xf0\x24\x27\x29\x4b\x78\xbe\xfc\x22\xbc\xf5\xbf\x5e\xbf\x0e\x19\xf4\xdf\x2f\xdf\x7d\x4d\x68\x02\x32\x25\xd6\x2a\xc2\xb1\xe1\x80\x9b\xdd\xab\x01\xf9\xbf\xf7\xdf\xbc\xaf\x6b\x5b\xb6\x7f\x05\xf8\xf1\x5b\x14\x24\x8b\xd9\xc8\x28\x0e\xb1\x6b\xb5\xad\x82\xea\xa9\x8f\x07\xa2\x60\xe9\x6c\x44\x8d\xd9\xbb\x1f\xe4\xe8\x07\xe5\x0b\xf8\x64\x0a\x9b\xca\x05\xc0\x6f\xc6\x13\x9b\x98\x0a\xad\x47\xae\xca\x07\x26\x0f\xc0\x20\x1f\x47\x5e\x02\xc6\x30\x0b\x1e\xa0\xbb\xb5\x0d\x1e\xaa\x0b\x9f\x97\x4c\x19\x51\xd3\xd6\xfd\xc5\xe1\x6a\x18\x0a\x2a\x8f\x7b\x38\xe7\x17\x7b\xb9\x0f\xa2\xb7\xb4\x78\xc3\xb2\xc8\x19\x57\xba\x51\xda\xd3\xa2\x1d\x50\x11\x93\x1b\x9a\x4c\x09\x13\x1a\x92\x6e\xe1\x01\x9b\xd7\x03\x06\x99\x52\x91\x9a\x1b\x06\x35\x20\x60\xc0\x67\xf2\x5c\xd9\xc6\x17\xe0\xce\xef\x41\x2b\x42\xb2\xc6\xc8\xd4\x48\xc0\x4d\x30\xad\x19\x93\x46\xe4\x59\x60\x99\xdc\x9b\x4f\x14\x72\x73\x98\xad\x42\x75\xb1\xb2\x51\x70\xaa\x59\xb1\x2c\xa4\xb3\xc8\xfa\xfa\x71\xfe\x17\x84\x24\x98\x72\xe5\x63\x59\x29\xfd\x45\x65\x0e\x38\xb4\x3e\xea\xb6\x15\x69\xaf\x96\x46\x44\xd7\x07\x6b\xef\x03\x2d\x70\x92\x30\x85\xa0\xfc\x23\x06\xd7\xe8\xfa\xed\x1f\x71\x23\x83\xc7\x93\xe3\x55\x43\xba\x70\x59\x2e\x0c\xee\xa7\x95\x96\x43\x28\x89\xee\xd2\xb4\x74\x06\x4c\xd7\xed\x32\x2b\xa6\x74\x00\x55\x85\x3d\x13\xbb\x3c\x62\x03\x00\x9b\x75\x88\x23\xc6\xd9\xb0\x0a\x83\xf0\xac\xa1\x1f\x20\xab\xae\x1e\x2d\x68\xce\x20\xac\x0b\x27\x16\x3c\xd8\x42\xe5\x3d\xc5\x27\x82\x95\xa8\xa5\x85\xc0\x5f\x92\xd1\x07\x96\xd9\xa1\x64\x19\xb1\x8c\xaf\x5c\x08\x1d\x2b\x0d\xf6\x54\x84\x4e\x26\x25\x53\x8a\xcf\x98\x8d\x9c\xe6\xff\xa8\x2b\xfe\x4d\x19\xb9\xbb\x79\xe7\xe2\xc7\x15\x31\x8c\xad\x66\x21\xd9\x02\xb1\xf9\x5c\x95\x06\xb4\x6a\xd9\x63\x44\xc8\x8d\x92\x1a\xea\xd8\x99\xfe\xed\x91\x28\x5f\x49\x1b\xbc\x4c\x87\x10\x28\x1e\xb3\x67\x75\xe8\x0f\xc6\x98\x4f\x19\x4d\x5d\xb0\xad\x61\x29\x8b\xc2\x48\xd2\xe4\xca\x5c\xd1\x31\x37\x82\xb5\xb2\xe1\xd8\x69\x65\x44\x15\x1a\x90\x08\xae\x6e\x1f\xa7\x8c\xc8\x32\x65\x58\x07\x7e\x0c\xce\x3c\xbe\xdb\x06\x7d\x87\xbc\x43\xdc\x8c\xf4\xc0\x75\x49\xcb\x39\x52\x4c\x7b\x12\xc1\xc3\x19\x9c\x89\xb5\xf4\xa1\x57\x18\x19\x62\xa9\x48\x48\xe2\x3c\xd7\x22\x11\x1a\x89\x90\xb0\xeb\x16\x64\x5b\x77\x2d\x16\x67\x9a\x06\xe0\x7f\x6f\xa1\x3f\xfc\xb3\x5d\x0a\x79\x13\x82\xe3\x81\xc8\xb0\x8c\x0c\x7c\xe8\xbf\x4e\xa6\x96\xae\xb7\xaf\x28\x21\x28\x09\xd2\x98\xf2\xfc\xc4\x85\x61\x73\x87\x04\xbc\x57\x3e\xd3\x23\xc3\x40\xeb\x8a\x66\xd9\x7c\xc8\x3e\x19\x52\x62\x2e\x31\xd0\x50\xc8\xc5\x09\xee\xfc\x95\x50\x4c\x0f\xa2\x86\x84\xcb\x57\x94\x98\x64\x42\x91\x13\x5c\x93\x90\x90\x75\xea\x04\xbb\x35\x82\xc0\x43\xa5\xd1\x05\x6e\xb0\xfa\x93\xb8\x75\xce\x58\x39\xb7\x23\x44\x7c\xb8\x05\x38\x93\x2d\x61\x8e\xc0\x1d\xd4\xc9\xf4\xe6\x53\x51\x62\xe8\x51\xe4\xd7\x0b\xe0\xb7\xd8\x19\xa6\x66\x72\xdc\x63\x1b\x7c\xdc\x25\x04\x0c\x87\x4e\x66\xcd\x27\x80\xc5\x2e\xdf\x5f\xc7\xa0\x2f\x6c\x31\x2c\x62\xbb\x05\x33\x8c\xed\xb6\xcb\x0d\xc4\x76\xb9\x61\x6f\x6c\x7a\x2b\xf7\x0b\x66\x60\x76\x85\xd4\x9c\x54\x47\xc9\x23\xb3\x48\xd8\x48\x9e\xa0\xec\xb2\x2f\x6f\x31\x9d\x92\x41\x3c\x37\x06\xa8\xb3\x39\x74\x8b\x23\xc5\x9e\xc5\xd6\xe0\xec\x26\x12\x8b\xa7\xeb\x36\x34\x53\xdf\xea\x3b\xb7\x7d\xd1\x1f\x6f\x7b\x07\xb1\x3d\xb2\x00\xd5\xde\xaa\xd6\x82\x3f\x73\x5e\x4e\x6a\x03\x98\x32\x0f\x7c\x8c\x9c\x07\x23\x0a\x09\x9c\x15\xd1\x32\xfe\x48\xc9\x36\x1e\xb3\xed\xe6\xb6\x78\x0f\x0b\xde\xea\xc2\x35\xe7\xd0\xb6\x8d\x3c\xb2\xf9\xa9\xc2\x1b\x60\x30\xd8\x94\x17\x58\x80\xcc\x90\x07\x23\x01\x6f\x79\x0d\xb0\x7d\x07\x29\x6c\xdc\xc0\x88\xe3\x6e\xc5\x80\xbc\x97\xda\xfc\xef\xe6\x13\x57\x96\xdb\xbb\x96\x4c\xbd\x97\x1a\x9e\x3c\xcb\x09\xe1\x42\x9f\xf3\x7c\xac\x4e\x8a\x83\x73\x27\xa0\x73\x10\x1c\x60\x41\xee\x1c\x5c\xee\x10\x7f\x96\x5c\x91\x5b\x48\x5f\x8e\x5b\xba\xe5\xd0\xe0\xbf\xeb\x72\xa3\x98\x81\x9d\x8c\x0d\xf9\x73\xac\x27\xfd\xf2\xc8\xf6\xfc\x64\xd9\x3a\xbe\xbd\x4f\xc2\x4e\x00\x74\x63\xf8\x0b\xa4\x75\x2b\x32\x9a\xb0\xd4\xe5\xa8\xa2\x66\xa7\xa8\x66\x93\x4e\x1f\xf3\x75\x2d\x67\xe5\x04\x54\x79\x49\x50\xae\xc4\x15\x0b\xd8\x9a\x10\x63\xdb\x92\x1c\x37\x07\xdf\x1a\xfc\x77\x8c\x50\x3a\x60\x67\xc0\x63\x7d\x6d\x50\xfb\x6e\xbc\xda\x16\xf7\xb2\x31\x34\x72\x25\x39\x2d\xcc\x9d\xfc\x6f\xc3\x7c\x00\xa8\xfe\x93\x14\x94\x97\x6a\x44\x2e\x5d\xee\xac\xe6\x6f\x56\x7a\x6c\x74\xb3\xc5\x14\x0a\xf0\x08\xfe\xa9\xe2\x33\x9a\xd9\x4c\x1c\x54\x10\x86\xb9\xc5\xcc\x6c\x16\x99\xd0\x01\x79\x9a\x4a\x85\x9c\x8c\x0f\xbf\x39\x79\x64\xf3\x93\x41\x94\x06\xc3\xb5\xe6\x8d\x3f\xb9\x15\x27\xb5\xb6\xb8\x75\x5b\x3d\x8f\x06\x5e\xb5\x27\xf0\xdb\xc9\xfe\xf9\xdc\xad\x38\xab\x6d\x2b\x57\xaf\x9a\x40\xf4\x15\xdb\x25\x1e\xa6\x6e\xe1\x91\x5e\xd8\xf6\x21\x26\x3b\x98\x5e\xa1\x38\x7b\x98\xbb\x2c\x72\x56\x50\x5d\x96\x63\xa3\x86\x04\x99\xb7\x21\x1f\x1b\x10\x6b\xa9\x08\xe2\x45\xca\xc8\x83\x72\x29\x71\x8e\xb5\xc9\x86\x9e\x96\x15\x1b\x90\x54\x8a\x53\x6d\xd5\x5d\xcd\x4c\x8b\x8b\xf9\xac\xd2\x15\xe7\x70\xa6\xce\xa3\x06\xa5\x25\x83\x04\x5b\x2e\x73\xa4\xd5\x30\x60\xd6\x45\xd0\x74\x6a\xe7\x21\x62\xfe\x5c\x35\x64\x78\x40\x9e\x1d\xd2\x86\xe5\x09\x09\xb8\x0b\x72\x79\x37\x87\xad\x0f\xbd\x31\x78\x5b\x7b\x1a\x35\xde\x26\x20\x02\x2c\x5e\x87\x09\xa2\x5a\xe4\x1f\xac\x94\x51\x23\xac\x50\x1d\xc5\x43\x67\x98\x45\xbf\x6e\x61\x81\x27\x75\x6b\x81\xe6\x07\x60\xef\x67\xd6\x50\x09\xc9\x3a\x1b\x79\x49\x4a\x89\x47\x03\x3e\x0f\xf0\xc3\x03\xac\xea\xe0\x57\xae\x3e\xaa\x17\xaa\x00\x6c\x68\xed\xe3\xa8\x55\x87\x56\xef\xe3\x94\xd5\x1a\x79\x39\xb6\x95\xe0\xd1\xe8\xb0\x2b\x28\xfa\x5c\x1b\x95\xc0\xc4\x15\x68\x15\xdf\x46\x3d\xbe\xc5\xb1\xa2\xbf\xc5\x3b\x5a\x6c\x65\x05\xf3\x5f\xb7\x4a\xfe\xd3\x07\x59\x69\x97\x2e\xc4\xfe\x0e\x85\x95\xb5\x74\xf6\xc7\xc3\xa9\xce\xb7\xd1\x71\x44\x33\xf2\xbb\x80\x34\x7a\xc2\xb4\xfd\xb0\x06\x84\xd1\x64\x6a\x38\xc0\x21\xba\x59\x18\x2e\xd5\xb1\xa3\xd7\x66\xeb\x90\x31\x94\x8b\x24\x26\x0e\xf8\xfc\x69\x38\x90\x6b\xf8\xe7\x38\xb3\x91\x73\xb9\x54\xd6\x75\xcd\x32\xa7\xa2\x0e\x5d\x88\x1a\xd3\xa9\xe7\x5c\x3e\x64\xab\xfa\x81\x55\x82\x8c\xba\x50\x3e\xcb\xc8\x1e\x2c\x35\x9f\xf9\x8b\x11\x35\xde\x8a\x15\xd5\xd9\x74\x0c\x36\xb5\x7e\x45\x95\x58\x1a\xc9\x10\xbc\xe8\xd1\x30\xb5\xa6\x59\x08\x75\xaa\xad\x46\xf6\x1e\x48\x10\x0d\xfe\xe6\x75\x5e\x4b\x7b\xaa\xfe\x30\xe2\xc4\xef\xc6\x11\x29\xe6\xf3\x3b\xb3\xb2\x94\xa5\x59\x13\x53\x8a\x70\xd8\xe5\x9c\x96\x8f\x2c\xf5\x5c\xd2\x88\xdc\x99\xc5\x3b\x19\x3d\x6a\xcc\xd2\x51\x23\x97\x27\xba\x59\x89\xcd\x4c\xe8\x74\x34\x3a\xb5\x65\x13\x96\xeb\xb2\x45\x63\xaf\x58\x81\x7c\x0b\x31\xbc\x75\x7f\xdf\xd1\x42\xa1\x3a\xc2\xb0\x37\xa0\x8e\x94\x50\x10\x51\x4f\x9d\x4d\x91\x46\x84\xd8\x2c\x2e\x67\x0b\x01\x68\x5b\xb5\xf2\x36\x2a\xe5\x28\xc3\x21\xb6\xed\xd5\xc8\x5b\xa9\x90\xd7\xa9\x8f\xed\x49\xd9\x1b\xbf\xad\xe6\x7f\x2b\x0d\x4c\x1e\xe4\x12\xb8\xd8\x76\x57\x3b\x82\x6b\x17\x57\xe4\x1b\x27\xfb\x84\x39\x0c\xea\xa9\x2d\xf7\xbd\x8d\x9e\xec\x59\x3c\x06\x17\xdb\xf3\x79\x10\x2e\xb6\xdb\x31\x26\x11\x5f\x59\xf5\xb1\xe9\xd2\xe9\xd9\xba\xc0\x94\xbb\x8b\xed\x18\xae\x85\x8b\xed\xc0\xae\x86\x8b\x2d\xce\xf5\x70\xb1\xc5\xb8\x22\x2e\xb6\x58\xe9\x0c\xdb\xee\x17\xb8\x59\x02\xae\x6c\x09\x79\x96\xb5\x03\x96\x0b\x44\xdd\xa2\x81\xe4\xb6\xba\xb7\x96\x50\xe3\xd5\xa5\x0f\x4a\x66\x95\x0e\xaf\x33\xb7\xae\xbb\x26\xdd\x87\x89\x3b\xcd\x66\x2c\xb1\x5f\xec\xb8\xc1\x37\x00\xd7\x86\xe4\x78\xbb\x5e\xf7\xa1\xf9\xdb\x5e\x0b\x7e\x4c\xd5\xdf\x2e\x09\x9f\xb0\x1d\x3b\xed\x13\xb6\x23\x27\x7f\x72\x83\xee\x92\x02\x0a\xdb\xf3\x26\x82\xc2\xb6\x25\x78\xc7\x24\x85\x72\x6d\x67\x2d\xab\xcf\x5c\x8e\x14\x73\xee\x33\x0b\xb7\x84\x20\x48\xd4\xa4\x15\x4a\x63\xce\x8e\x68\x4b\xb6\x1c\x58\x55\xb7\xbb\xba\xdf\xc5\xa8\x5c\xde\xdd\x6e\xa5\x45\x69\x7c\xbf\x46\x8f\xd2\x7c\xe3\x17\xac\x49\xb9\x45\xd5\x48\xd3\x27\xeb\xba\x5e\xb9\x8d\xb3\x8c\x64\x6d\x9e\x47\xa6\x5c\x9a\xf6\x5b\x43\xd7\x9b\xb9\x4a\x1b\xe7\xac\xa5\x0d\xe9\xa9\x39\x00\x4b\x65\x5d\x6d\x1e\xf4\xe5\x8d\x71\x02\x27\xcf\x23\x7f\x1e\x51\x96\x84\xfd\x08\xca\x23\xb9\xd8\x5a\x27\x75\x5a\x97\xcf\x40\x65\x33\x2a\xbe\x1a\xda\xb6\x42\xa6\x6f\xd0\x48\x4a\x85\x90\x58\x1e\x4a\x0d\xd0\x50\xa1\x06\xd6\x0c\xd3\x48\xd1\x21\x52\x52\xf1\x14\x3d\xa0\x7d\x76\x81\xd3\xcf\xc9\x31\x0d\x96\x7f\x17\x7b\x94\x64\x67\x0f\x33\x5a\xf0\xef\x58\x19\x96\xc5\x7e\x55\x6b\x1d\xac\xed\xc9\x9d\xa2\x4a\xa6\x2c\xa7\xf0\xcf\xb7\x6e\x79\x06\xd5\x58\xff\x7a\x50\xcb\xb1\x32\x37\xac\xc7\xa0\x15\x65\x7a\x32\x7b\x1d\xe5\x1f\x5b\xb7\x1d\x5d\x3c\xfc\x29\xec\x61\x33\xee\x5a\x22\x86\x01\x6e\xd0\x14\x80\x71\xc5\x65\x9a\xf1\x6a\x4b\x43\x65\x66\xb8\x7b\xcf\xb0\xf0\xfd\x98\xdf\xb1\x3d\x97\x9e\x66\x5b\xfd\xcc\xc0\xf3\x3e\x6d\x6d\xcb\x16\x53\xe8\xf5\x33\xbd\x7e\xe6\x7f\xb4\x7e\xa6\x41\xd8\x1d\xae\x5f\xa1\x76\x69\x66\x44\x75\xba\x97\xba\xee\xc1\x08\xb5\x9f\x4e\x8d\xe2\x74\x28\x75\x5d\x41\x34\x7f\x9c\x8e\x46\xa7\x68\x00\x19\x79\x75\x69\xa5\xc7\xc3\x3f\x11\x26\x12\x99\x9a\x7e\xb0\x2a\x60\xa9\x34\xb0\x96\xb5\xc4\xde\x9c\x4b\xee\xc6\x6a\x9a\x50\xa0\xef\x6d\xb9\x87\xad\x50\xb0\x8b\xca\x7f\xbb\x1f\x06\x6b\x2b\x04\x5a\xb3\x62\xbe\x18\x93\xdd\x32\x5f\x9f\xca\xf2\x64\x75\x0e\x81\x8c\xe7\xdc\x7a\x27\x1b\xec\xc2\x94\x8e\x77\xdf\x23\xe4\x0c\xbb\x19\x25\x45\x35\xb0\x5d\x8e\x72\x96\xcb\x72\x3e\xf0\xdd\x9a\x1f\x5b\xe3\xd8\x37\xce\x81\xe9\x4b\xaa\xb2\x64\x42\x67\xf3\xd0\xe4\x52\xab\xda\x33\x72\x7f\x6e\x47\x8f\xcc\xfc\xf9\x83\x8d\xf5\x2f\xa9\x5b\xfb\xfe\xd7\xc5\x07\x41\x21\xe7\x77\x05\x68\x8c\x4d\x63\x37\xa8\xf5\x13\xe6\x29\x13\x33\x32\xa3\xa5\x8a\xbf\x6f\x64\x77\x7e\x2f\xe5\x33\xae\xf6\x12\x72\x70\x6f\x89\x1f\xea\x99\x65\xa5\x8b\x4a\x5b\x74\xec\xae\x91\x2b\x43\xe6\xaf\xcf\x02\xd3\xfb\x3a\x5c\x45\xd4\x6c\x05\xd5\x9a\x95\xe2\x0d\xf9\xcf\xb3\xff\xf8\xdd\xcf\xc3\xf3\xbf\x9e\x9d\x7d\xff\x6a\xf8\xbf\x7f\xf8\xdd\xd9\x7f\x8c\xe0\x1f\xbf\x3d\xff\xeb\xf9\xcf\xee\x8f\xdf\x9d\x9f\x9f\x9d\x7d\xff\xd5\xbb\x2f\x3f\xde\xdd\xfc\xc0\xcf\x7f\xfe\x5e\x54\xf9\x23\xfe\xf5\xf3\xd9\xf7\xec\xe6\x87\xc0\x4e\xce\xcf\xff\xfa\x9b\xad\xa6\x4b\xc5\xfc\x9b\x2d\xf0\x1b\xb6\xe1\x8e\xf4\xb1\xdd\xcb\xbe\x3c\xc1\xb9\xd0\x43\x59\x0e\xb1\xbb\x37\xe0\xb2\xb8\x45\xa7\x0e\x2c\xf6\x71\x0f\x6b\x3a\x5c\x17\xd6\x73\xc2\xc7\x33\x5c\xb4\x7d\xc9\x17\x7b\x30\x16\x60\xd6\x9b\xad\x74\x86\xf8\xe9\x1a\x75\xa1\xfd\xf1\x17\xac\x29\xfc\x6c\x7c\xae\x6c\x81\x92\xde\xe1\xea\xd9\x1d\xae\xf0\x24\x7a\x6f\xab\x7a\x71\xbd\xb7\x15\xb4\xde\xdb\xaa\xd9\x7a\x6f\xab\xd6\xb8\xbd\xb7\x55\xaf\xcd\xeb\xb5\x79\xcf\xaf\xcd\xeb\xbd\xad\x7a\x6f\xab\xd5\xad\xf7\xb6\xea\x6e\xbd\xb7\xd5\xff\x34\x6f\x2b\x04\xb1\x55\x3e\x57\x56\x22\xad\x1d\xae\x3e\x3b\x7f\x2b\x65\x0e\x39\x61\x97\x49\x22\x2b\xa1\x3f\xca\x47\x16\xec\x2f\xb0\xa0\x43\x59\xea\x07\x6a\x0c\xae\xd1\xa9\x2c\xbf\x7c\x34\x05\xcb\x0b\xcc\x07\x47\xab\x94\x33\x11\xa7\x21\xdc\x05\xf5\xba\xf1\x9a\x55\xb1\x45\xca\xd2\xfa\x07\x8b\x97\xb5\x39\x9a\x11\xb9\x24\x25\x4b\x78\xc1\x6d\xd2\x05\x8a\xcf\xa3\x86\x84\x7b\x61\x53\x6b\xcf\xcd\x6d\x61\xd9\xd8\xa3\x47\x9f\x72\xbb\x6c\xe8\x1f\x2c\xa5\x5e\x98\x52\x9c\x18\x6b\xa6\x89\x7c\x20\x70\x7d\x4f\x5c\x31\xa2\xa6\xb2\xca\x52\x52\xb2\xbf\x3b\x96\xd3\xae\xf2\x63\x73\xb4\xa6\x02\x3f\x76\xd8\xc6\x72\xec\x3e\xd2\x82\x87\x57\xfb\xf2\xb3\xdf\x06\x57\xb2\x4f\x05\xc7\xca\x06\xf7\x2c\x91\x22\x3d\x9a\x5a\x70\x69\xe0\x9a\x59\x04\xbb\x1e\x66\xab\xf1\xb9\x39\x67\x34\xe3\xa9\xa1\xbe\xce\xa5\x08\x51\x42\x1c\x18\x23\xfe\xf0\x50\xaa\xea\xd3\x24\xb4\x28\x4a\x49\x93\x29\x53\x8d\x99\xa1\xc4\x63\x2b\x5d\x84\xa6\x74\x6f\xb6\x22\xab\x26\x5c\xa0\x80\x04\xfd\x3b\x7e\x43\x6a\xe7\x72\x68\x17\xb2\x38\xb9\x8f\x8d\x81\xcd\xe7\x51\xc3\x22\x83\xa9\xcb\x39\xf8\x30\xca\xe6\x70\xb8\x5a\x3e\x6e\xfe\xa1\x88\xcc\x52\x57\x69\xf5\x4f\xaf\x8c\x4c\x9d\xe0\xd5\x8d\x54\xf4\x2a\xc8\xcd\x69\x46\xcc\x0c\xb7\x6f\xc8\xdc\xfa\x81\x7e\xff\x07\x32\x95\x55\xa9\x46\xcd\x2a\x81\xaf\xe1\x59\xdc\xa9\x8a\xb4\xf6\xdc\xd1\x24\x63\x54\x69\xf2\xfa\x15\xc9\xb9\xa8\xf4\x36\xd9\x06\xe2\xa5\xb4\x86\x7c\xf6\xaf\x7f\x08\xfe\x6e\xa7\x2c\x05\x91\xb7\xad\x29\x8d\xc1\xbf\xbd\x48\x66\xf5\xc6\x58\x1c\xb5\x90\x5c\xe8\x45\x01\xcd\x52\xd8\xed\xb0\x29\x68\xa6\x0f\x86\xc5\xb6\x16\x63\x7e\xaa\xe4\xc3\x5c\xef\xb5\xa8\x8e\xed\xb2\x9d\x31\xee\xff\xd9\x87\x71\xb5\x67\x63\xca\xe8\xb8\x11\x36\x57\xe4\x72\x93\x7b\x49\x45\xb8\x4a\x36\xe1\x4a\x97\x5d\x6a\xdc\x61\x08\xe2\x0d\xe7\xa2\x26\xa5\xac\x02\x12\x2e\xc4\x5f\x36\xe8\xd8\x29\x34\x9c\x61\xc9\xe6\x16\x0f\xc9\x99\xe2\x4a\xd7\xe1\xe9\x40\x6f\x9d\x5f\xbd\xb4\x0a\x31\xab\x6a\xcb\x3a\x00\x75\x89\xed\x9f\xb7\xbe\x6c\x8c\xd4\xe4\x00\xf4\x30\x5b\x86\x7d\xb7\xd1\x85\xcd\x21\x25\x4b\x92\x57\x99\xe6\x45\x56\x6f\xdf\x07\xf7\x81\x65\x18\x42\xa4\xe8\x9a\x39\xa6\x0d\xbb\x0f\xc5\x9a\x5d\x58\x94\x1d\x0c\xaf\x67\x7e\x34\x26\x34\xd4\xeb\x00\x07\x7a\x56\xd0\x92\xfa\x53\x4a\x64\x9e\xd3\xa0\x14\x4a\x68\x09\xa4\xe0\x43\x86\x24\xc7\xb0\x13\x25\xcd\xea\x55\x37\xdc\x80\xf6\x09\xe4\x9a\x09\x2a\x02\x8c\xfa\x5b\x14\xc3\x87\x9e\x89\x7c\xf2\x71\x21\x13\x3e\x63\x62\x11\xba\xad\x10\xf2\x05\x4d\x1e\x99\x08\x91\xe6\xbf\x55\x6e\x7f\xd3\xb9\xa0\xb9\xad\x6d\x5f\x94\x72\xc6\xcd\x35\x60\xe9\xc2\x08\x6a\x60\xd5\x42\x98\x14\xdb\x95\x00\x40\x46\x73\x9f\x5b\x59\xa9\xc3\x54\x3d\x36\xfd\xee\x8e\x25\x15\xda\x7f\x4a\x3e\x4b\x98\xe3\x9c\x4d\xcf\xfb\xdc\x81\x59\x40\xdd\x3d\xb2\xba\x3e\x94\xcd\xcb\x8c\xf7\x0d\x28\xbd\x77\x61\xc0\x8c\xa5\x99\xc1\x79\x73\x5f\x4d\x68\x01\x8a\x6c\x29\x85\xbd\x55\x08\x2b\x1f\x62\x0a\x47\x75\x1e\x63\xf9\x90\xb6\xd1\xd6\x07\x9a\x4a\x45\xbe\x80\xac\x6c\xd7\x0c\xc4\x99\xc3\x31\x3c\x1f\xbe\xb8\xee\x60\x76\xcc\xfc\xb6\x66\x74\x56\xea\x3d\xd9\x27\x9a\x17\x19\x53\xa3\xc7\x3f\x81\xe6\xd3\xde\xc5\x8b\xf2\x21\xbd\xf8\x70\x73\x79\xfd\xee\x66\x94\x6f\xbe\xed\x07\xe0\x9f\x78\x4e\x27\x5d\x1c\xf9\x90\xe4\x52\x70\x2d\xcb\xcd\x68\xf6\x45\x94\x01\xdc\x58\xee\xd4\xca\x24\x8e\x89\x30\xb0\x34\x97\x15\x79\xa2\x98\xe5\x33\xb8\x14\xea\x47\x5e\xbc\x21\x37\x42\x55\x25\xab\x33\x5f\x2f\x0e\x66\x70\xeb\x1e\x2b\x05\x22\xec\xbc\x39\x5a\x79\xd4\x9d\x0b\xc0\x97\x0f\xdd\xa4\x2b\x02\x91\x02\xa0\x1e\x02\x64\xa0\x63\xaf\x37\x02\x24\x84\x8f\x42\x93\xd0\x6d\x7b\xd5\x7f\x3d\x95\x4f\x43\x2d\x87\x95\x62\x43\xde\xad\x48\x8e\xd8\xab\x47\x36\x07\xe7\xd1\x03\xec\x96\xed\xba\xa5\x06\xd0\x12\xac\x10\xf0\xdc\xf0\x64\x1f\xbe\xb8\xfe\x56\x85\xa9\x1d\x1b\xf2\xca\x05\xd3\xc9\x45\xc2\x8a\xe9\x85\x1d\xe3\xf3\xdc\xfb\x86\xdd\x68\x69\x45\x1d\x9f\x3a\x2c\x7b\x88\x73\x73\x7d\x23\x53\x91\xc8\x2c\xb3\xa5\x9d\xe4\x98\x5c\xb1\x62\xea\x5f\x78\x71\xbb\xbe\xe7\x52\x6c\xc7\x51\x0d\x11\x28\x90\x2c\x03\xec\x80\xf1\x47\x69\xfa\x6d\xe3\x2b\x78\x12\x8a\xae\x1a\x57\xae\x7c\xd8\x96\x10\xbc\x9c\x4b\xd6\x4d\x66\x9e\x4d\x69\xb1\x7b\x2d\xda\xad\xb4\x13\x47\x3e\xb0\x30\x35\x08\x7a\xb4\x07\x05\xa3\x6d\x51\x4c\xd2\x75\x0e\xcc\x7a\xc3\xc5\x83\x56\x7a\xca\x84\xe6\x09\x9a\x80\xac\x5b\x7d\x93\x46\x91\xdb\x31\x0a\xca\x69\x90\xdd\x5c\xce\x58\x59\xf2\x94\x29\x12\x41\xa4\x9a\x4a\x39\x9e\xbd\xb8\x03\x0c\x34\x64\xc7\xd9\x98\xc3\x9d\x7a\xb6\xb3\x48\xec\xe2\xc8\x73\x6c\x17\x9e\x23\x3b\xef\xec\xe6\xb6\xf3\xbc\x0e\x3b\xd1\xe6\xe7\x18\x27\x9d\x5d\x1c\x57\x0e\xaa\xc9\x6a\x11\x73\x78\xb2\x05\x31\xa7\x69\xce\x83\xd2\x3d\xbc\x68\x72\x0e\xab\xd8\xf0\xba\x4a\x68\xc6\x6e\xbf\xd9\xa7\x26\xca\x76\xd9\xd6\x46\xdd\xdb\x87\x05\x2b\x15\x57\x10\x88\xe3\x14\x8d\x5a\xd3\x64\x6a\x35\x46\xce\x04\x21\x05\xd4\xa6\x44\xd8\x22\x42\xa6\xdd\x36\xe3\xa6\x3a\xca\x8d\xb6\x59\x25\xe5\x26\xfa\x92\xec\x6f\x13\xaa\xd9\x53\x27\x7f\x3e\xac\x49\x74\xf7\x9b\xa0\x14\xf9\xcc\x35\x4d\x31\xda\x24\x1f\x31\xb0\xd4\xcb\x3e\xf5\x47\xa3\x35\x9a\xa3\x38\x24\x03\xdf\xee\x4d\xa5\x8c\xcd\xdf\xfd\x4f\xe3\x2e\x22\x61\xa1\x2d\xf2\x3c\xed\x57\xee\xac\x60\x13\x69\x9a\x96\x4c\x29\xc7\x42\xb8\x0b\x78\x79\x77\x4b\xbe\xc4\xd7\xf7\xba\xca\xa2\x94\x1a\x05\xee\x6b\x99\x53\x1e\xe0\xee\xd8\x5a\xc1\xe2\xe7\x6e\x29\x4d\x5e\xd7\x2d\xe1\xce\xbf\x4b\xec\xcb\x63\x59\x36\x92\xf9\x57\x25\x4b\x89\x55\xd6\xed\x75\x8d\x47\x91\xb3\x96\xe4\x21\x72\x66\x7e\xbb\x80\x52\x1a\xe7\xa3\x5a\xe6\x5a\x10\xc8\x42\x34\x03\x7b\x11\xd9\x5e\xa0\x50\xd4\x30\x1b\xb9\x00\xcf\x5a\x10\x72\x60\x03\x6c\x87\x77\x5a\x0c\xea\x5f\x28\x0e\xde\x3f\x0d\x7f\x5b\x5b\xb5\x8e\xab\x3a\x86\x13\x65\xab\x01\xf9\x5a\x4e\xb8\xab\x1c\x6a\x80\x13\xcf\x86\x86\x08\x44\xbd\x9c\xd2\xcb\x29\x8b\xad\x97\x53\x56\x36\xa5\xb2\x1b\x41\x1f\xb2\x10\x57\xf3\xb6\x2f\xbd\xff\x90\xbc\xcd\xe8\x84\x30\xf8\xe3\x22\xe5\xca\xfc\x9f\xdc\xdf\x7f\x0d\xce\x1b\x95\x70\xca\x14\x80\x00\x4b\x2b\x7d\xee\x11\xc4\xc9\xfb\x45\x92\x48\xaa\xde\x05\xc5\x90\x6e\x81\x26\xeb\xee\x09\x17\xa9\x2b\x45\xdf\x88\xb7\xb0\x6f\x00\xb6\xa4\x3e\x9a\x1c\x1d\xba\x1f\x98\xb9\xa5\xc9\xe3\x5d\xc3\xd7\x42\x96\xe6\x99\x68\x3c\x8a\x64\xb2\xa2\xbf\xde\x8e\xdd\x5a\x18\x26\xec\x18\xee\xe2\x95\xda\x8d\x2f\x1d\xdf\xe2\x88\xce\xbd\xdd\x5a\xf8\x8d\x2a\x25\x13\x5e\xfb\x0a\x81\x7d\xa9\x66\x66\x52\x60\x66\xf6\xba\x19\xc8\x3f\xc7\x2e\x07\x19\xf4\x15\x1c\x98\x03\x14\xfb\x06\x55\x4d\x8e\x8b\x0b\xb7\xea\xbd\x2e\x01\xc1\x31\x2c\xe3\x52\xfc\xe5\xa8\x7b\x5f\x5c\xaf\xbf\x08\x8b\x5e\x28\x2e\x59\x83\x3d\xe1\x00\x69\xce\xae\x79\x4a\x51\x8d\xb1\x04\x05\x5c\xf9\x4b\x07\xc9\x67\xf6\xb6\x7f\x21\xd9\x5b\x22\x55\x09\xc8\x57\xb5\xdd\xf1\xf0\x99\xf5\x5c\x01\xac\x51\xc8\xa2\xca\xd0\x99\xde\x2f\x6e\x0b\x87\x92\x18\x6b\x3c\xce\x62\x3f\xda\x81\x70\x0e\xab\x11\xe0\x7d\x08\xf0\x6c\xc6\x8f\xc7\x87\xf9\x3b\x88\x05\xa9\xdb\x48\xd8\xb6\xbb\x28\x99\xfd\x98\x51\xfe\xfb\x8a\xea\x0f\xd1\x6e\xb4\xe2\xfe\x5b\x52\xd7\xab\x7f\xfd\xc3\x1f\x82\x08\x1a\x2f\xa1\x04\x24\x87\x0a\x79\x90\x17\xc4\x7b\x0c\xd0\x92\x81\x74\x80\x21\xf8\x4e\xbf\x81\xde\x88\x3a\xd0\xaa\x72\x8c\x80\xff\x03\x07\xf8\xc7\x85\x8a\xc4\x04\xf0\x07\x9a\xc3\xb7\xf0\x96\x81\x44\x4c\xb7\x47\x4b\xc4\x74\xa4\xf4\x4b\xc7\x49\xba\x74\x8c\x54\x4b\x47\x49\xb0\x74\xbc\xb4\x4a\x07\x4e\xa6\x74\x10\x17\x93\x43\xa6\x4b\x8a\x8c\x3d\x8e\x8b\x3b\x0e\x4f\x88\x14\x1c\x9d\x1c\x1b\x99\x1c\x91\xf2\x68\xbf\x89\x8e\xa2\x25\xfa\x98\xa4\x46\xdb\x46\xdd\x1d\x2f\x81\xd1\x33\xa6\x2d\x7a\xee\x64\x45\x07\x4e\x51\x74\xbc\xc4\x44\x47\x49\x47\xb4\x4d\x78\x6b\x7c\xea\xa1\x98\xb0\xd6\x6d\x2f\xd7\xc1\x93\x0b\xed\x25\xa5\xd0\x9e\x13\x09\xed\x2f\x7d\xd0\xf1\x1c\x29\xc3\x93\xaa\xec\x9c\x4a\x25\xbe\x76\x55\xbc\xbd\xe7\x50\xca\x9a\xba\xf7\x95\xca\x29\x97\x6f\xd6\x95\xc4\x39\x55\x8d\x9a\x37\x5a\x1a\xac\x76\x84\xa8\x80\x00\x3d\x04\x89\xd0\xe0\x60\xef\xb2\x83\xb9\x88\x54\xe2\x60\xa7\xdf\xdc\x2f\x78\x84\xf8\xc7\x87\x74\x04\xf1\x83\x74\xb8\x82\xb8\x85\x1f\xc1\x19\xa4\xf7\xb6\xd8\x9f\xb7\xc5\xfe\xe3\x74\x5e\x9a\x81\x3e\xed\x0d\xf4\xd1\x06\x7a\xd5\x4a\xf7\xef\x14\xc6\x80\x92\x81\xa9\x95\x0f\xcd\x5a\x72\x35\x8e\xb8\xbc\xbb\x0d\x18\x27\x29\x19\xe4\x06\xa2\x99\x1a\xad\xe2\x76\x9d\xe9\xce\x72\xd1\x8e\xcb\xa5\x5a\xb3\xbc\x08\xaa\x7d\xd1\xdb\xe7\x7b\xfb\xfc\x62\xeb\xed\xf3\x2b\xdb\xb1\xed\x75\xd3\x2a\xa7\x62\x68\x30\x30\x98\xf1\x5b\x0e\x63\x0b\x0c\xcd\x88\x58\x4c\x1a\x78\x2d\x31\xc1\x03\xa4\xdc\xa8\x04\xff\xa9\x62\xb5\x3e\xcb\x33\x96\x07\xb2\x75\x42\xdf\x87\xdd\x40\xe4\x8b\x17\x30\x73\x22\x97\xa2\x88\xed\x9a\xfd\x66\x3a\x14\x1b\xba\x89\x30\x4c\x4b\x45\xab\xa7\x0c\x99\xf4\xbb\x05\x26\xbd\xa5\x7f\xb0\xe8\x07\x70\x42\xa8\x96\xbb\xc9\x99\x1a\x40\x30\xeb\xb1\xd9\xbd\x1e\x18\xc9\x79\x59\xca\xd2\xda\x5d\x9b\x4b\x42\x07\x42\x3e\x99\x6a\x56\xa2\xe4\x8f\x2e\x5c\x21\xa8\xe0\x9e\x69\x0b\x55\x00\x95\x5a\x12\x2a\x30\x31\x81\xf9\xb7\x0b\xa7\x81\xe5\x3a\x3a\xf4\xc0\xa6\x74\xc6\x65\x15\x14\x40\x7a\x8f\x94\xf2\xc4\x7e\x0c\xfc\xd3\x5c\x56\xde\xc2\x54\x29\xb3\x40\xbf\x87\x6a\xf9\xbc\x02\x06\x79\x5f\x7f\x0e\x0a\x9a\x54\x3a\xf5\xf9\x90\x7d\xe2\x4a\x2f\xef\x98\x3b\x2a\x57\x86\x6c\x5f\xd7\x60\xa6\x0a\x83\xc5\xbf\x0b\xc8\x2a\x11\x07\xfc\xad\x8e\xdb\x82\xcf\xec\x1e\x7e\xea\x12\x7b\x6c\xa2\x39\xcc\x0b\x43\x72\x9a\x4c\xb9\x88\xca\xc9\xf0\x5d\x6b\x0a\x2d\xf9\x67\x44\x2e\xb3\xac\xf6\x1d\x54\xde\xa5\xd5\xc9\x43\xed\xe9\x9b\xcd\xec\x18\xd8\xc0\x47\xc9\x52\xb0\x51\x22\x49\x05\x0f\x59\xc5\x47\xb6\xab\xd1\x2c\x7f\xa2\x25\x1b\x25\x32\x27\x57\xf7\xb7\x24\x2d\x79\x67\x2a\xc5\x03\xf8\xd7\xe3\xa6\x77\x96\x72\x7d\x59\x32\x5a\x2f\x9f\xd5\x2d\xc6\x1d\xc9\x39\x4a\x65\x3c\x99\xdf\x5e\x6f\xeb\x66\x85\x5f\x3b\x06\x40\x79\x17\x2b\xf3\x9c\x7c\x41\x15\x4b\xc9\x3b\x2a\xe8\x04\xd5\x87\x67\xf7\x77\x5f\xbc\x3b\x37\x00\x04\xea\xce\xdb\xeb\x95\x7e\x58\xf7\xcd\xce\xdf\xef\x33\xad\xcc\xd2\xc2\xb7\xe0\x8d\x96\xbe\xdf\x72\xf1\x7b\xcd\x97\x43\x3c\x3b\x11\x56\x02\x78\x45\x06\xa0\xbb\xc5\x84\x8b\xe8\x24\xe5\x32\xbd\xaa\x45\xd4\x3c\xcb\xd3\xc7\xdd\xa6\xcf\x8d\x34\x91\x65\x77\x19\x15\x97\x45\x51\xca\xd9\x6a\xad\x6b\x08\x72\x70\xdf\xbb\x05\xa0\x83\xb9\x7b\x58\xe0\x89\x80\x4f\xa5\x40\x21\x06\x87\x5d\xbd\xff\xb7\xda\x2b\x66\xa5\x00\x16\xec\xe4\xb2\xd2\x32\xa7\x9a\x27\x27\x44\x96\xe4\xe4\x1d\x15\x15\xcd\x56\xc6\xa6\x6c\x5c\xf1\x3a\x01\x73\xe3\x47\xeb\x6b\xab\x05\x7c\xb6\x91\x81\xdd\xfc\xbd\xa6\xa5\x41\x75\x57\xf7\xdf\x45\x7d\xab\x34\xd5\xd5\x12\x65\xd8\x40\xad\xd6\xd3\xa7\x21\xc9\xa8\xd2\xdf\x16\xa9\xc1\x0f\x0b\xbf\x6e\x22\x42\x09\xd5\x34\x93\x93\x7f\x63\x34\x5b\x7d\x19\x42\x40\xea\xaa\xd9\x89\xb3\x88\x58\x8f\xd2\xea\xc1\x7f\x7f\xaa\x88\x11\x25\x0d\x94\x70\xad\x48\xc9\x32\x36\xa3\x42\xbb\xcf\xef\xb1\x5e\xe2\xa9\xdd\x96\xb5\x00\xc7\x6b\x1b\x6b\xca\x34\x2b\x73\x2e\xda\xe3\xdc\xc3\xf7\x57\x52\xa4\x1c\xb9\x12\xb0\x22\xe1\x17\xed\xb1\xd6\x43\xe5\x3a\xd7\x83\x0d\xce\x06\xed\x4a\x91\x8d\xf9\xb4\xb7\x07\x5f\x7b\xb0\xa2\xcb\x14\x1f\x82\xe7\x66\x6b\x6e\x4b\xbb\x47\x1e\x85\x91\x28\x20\x71\xfa\xea\xbd\xe9\x64\x73\xba\xd8\x9b\xa1\x03\x07\x9c\xc2\xfa\xa8\xc0\xa1\x9d\xf7\x3a\xa7\x84\x4d\xd0\x88\xad\x9b\x31\x5a\x9c\xca\x7a\x4c\xdd\xda\xf8\xab\x85\xcf\x30\xb1\x8a\xf7\x6d\x42\x2f\x8f\xd6\x4b\xeb\x29\x4b\x10\xdf\x18\xc6\xe2\x85\x56\xe0\x6f\xad\xa5\x51\x2f\x3e\x4e\x17\x16\x48\x0a\x03\x0b\xe1\xc7\xb1\x9c\xb7\x36\xb0\xa9\xb4\x12\x2c\x25\x05\x67\x98\xb2\x9d\x0a\xbb\x99\x40\xcf\x18\x4d\xed\x43\x43\x37\x4b\x66\x7f\x1b\x58\x8f\xc3\x20\x06\x05\xfd\x76\x9d\x0d\x96\x62\x26\x71\xf0\x46\xb8\xf8\x52\x5a\x1d\xa0\xcd\x40\x68\xb0\x0a\x70\x17\x03\xa2\xaa\x64\x4a\xa8\x11\x64\x94\xb9\x0e\x06\x5f\xb0\x51\x4e\x05\x1f\x33\xa5\x47\xbe\x5e\xae\xfa\xfe\xf7\x3f\x74\xb1\x1d\x6f\x65\x49\x6c\x94\xf6\xc0\x25\xc4\xb6\x6b\xac\x61\x8e\x2b\xdc\x08\xdf\x73\xad\x91\x29\x64\x6a\x17\xfc\x04\x4b\xd1\xf4\xd1\x90\x52\x5c\x4a\xc5\xc0\x6b\xa0\x8b\x47\x39\x31\x6c\x6f\x63\xda\xff\x6d\x68\xe7\x3f\x4f\xc8\xd9\x13\x30\x21\x27\xe6\xcf\x13\x9c\x8e\x8f\x34\x6b\x2a\x9c\xea\x69\x61\xd2\xb4\x92\x4f\x26\xac\xec\xb4\xb1\x9a\x4f\xd9\x8c\x09\x7d\x6e\x93\x81\x0b\xd9\xe8\xca\xf9\xf9\xd5\xfa\x93\xc5\x69\x7e\xff\xfb\x1f\x4e\xc8\x59\x7b\x4f\x3a\x86\xe4\x22\x65\x9f\xc8\xef\xd1\x5a\xca\x95\xd9\xbd\xf3\x11\x2a\x5c\xd4\x5c\x68\xfa\xc9\x8c\x98\x4c\xa5\x62\x02\x15\x60\x5a\x92\x29\x9d\x31\xa2\x64\xce\xc8\x13\xcb\xb2\xa1\xb5\x1f\x93\x27\x3a\xef\xce\x81\xee\x8e\x10\x32\xab\x92\x82\x96\xba\x05\xc6\x7b\xb9\x84\x8f\x5c\xec\x35\x81\xe3\x57\x5c\x2c\xba\x74\x76\x0a\x78\x2b\x94\xc2\x13\xae\x5d\xd6\x01\x1b\x5f\xa4\xe7\x17\xe6\xb0\x4a\xfe\x50\x69\x59\xaa\x8b\x94\xcd\x58\x76\xa1\xf8\x64\x48\xcb\x64\xca\x35\x4b\x74\x55\xb2\x0b\x5a\xf0\x61\x22\x85\x01\x0c\x48\xf5\x9b\xa7\xbf\x36\x3b\xa1\x86\x66\xa1\x9b\xb5\xc4\x81\x3b\xd6\x6d\x7b\x88\xdb\xb1\x6d\x6c\x0d\xcf\xa3\x46\x8f\xd8\xa0\x00\x55\x6c\xfc\x2e\xa1\xbe\xf3\xd9\xb7\x0a\x54\x7e\x17\xfb\xd8\x29\x57\x38\x39\x9e\x36\x77\xee\x97\xad\x15\x9e\x2c\x8e\x61\x70\x12\x7a\xfb\x02\x0a\x6b\x51\x89\x9c\xa6\x48\x46\xa8\xe8\x8c\x73\x3f\xf0\x9d\x35\xe7\x01\xf5\xf6\x93\xf9\x10\xba\x90\xd9\x90\x8a\xd4\xfc\x1b\x13\x6f\x24\x9b\x3d\x52\x03\x0f\xa0\xe2\x7b\x45\x7e\xdf\xde\x5e\x3f\x3f\x78\x5e\xfc\xba\xe2\xfb\xc0\x74\xdb\xd8\xb3\x2c\x5f\x1e\xc8\x2c\xa3\x48\x82\x1e\xba\x65\xc5\x1c\x03\xd3\x16\x44\xb8\x72\xbd\xfe\x1f\xeb\x39\xe0\xeb\xe7\x74\xb1\xce\x9b\xad\xf9\x0d\x19\x21\x70\xbe\x5f\xd7\x5f\x34\x75\xe1\xe0\xf9\x4f\x95\xb6\x15\x4a\x5c\xe6\xd7\xd6\x32\x9c\x70\x3a\xa5\x62\xb2\x81\xb5\x09\x3a\x18\xe7\x37\x69\x26\x32\x34\x63\x2e\x8b\xd5\x5e\xf8\xec\x94\xa9\x1b\x72\x2a\x88\x2a\x19\x57\xbe\x4a\x87\x11\x5b\x95\x26\x74\x46\x79\x06\x76\x42\xf9\xa0\x58\x39\xb3\xca\x76\xac\xa1\x45\x17\x65\x6c\xbc\xb6\x1a\x19\xde\x23\x49\xb8\x6e\x0d\xcb\xa7\xb2\x69\x01\x20\xf5\x2e\xcc\x7e\xed\xac\xf7\x22\xdf\xa2\x6a\x61\xed\xcf\x6b\x0d\x14\xdd\x42\x9e\x81\xbf\x7f\x63\xb4\xd4\x0f\x8c\xea\x8f\x7c\x13\x87\xb2\x04\xd2\xad\xef\x9c\x5e\xae\x06\xe8\x27\x46\x26\x52\x1b\xb6\xb3\x02\xd8\x47\xf9\x00\x53\xd4\x7b\x40\x3b\x34\x44\xd7\xab\xfc\x58\x52\xc8\x30\x21\x45\xe4\x32\xdb\x1f\x2e\xaf\xd3\xca\x22\x16\x92\x34\xbe\x4d\xc6\xa5\xcc\x41\xb9\x88\x67\x87\xa6\xca\xcd\xc9\x30\xf6\xba\xe4\x9c\x29\xb5\x31\xc5\x71\x3b\xac\x04\xdf\xc6\xab\xbc\x60\xe4\xcf\xdd\x6f\x18\xce\x6e\x84\x8a\x94\x69\xca\x33\x77\x95\x71\x2b\xfc\x2e\x75\x61\xd7\x8d\x0b\x2c\x19\x55\x9b\x18\x9a\xd6\xac\x3f\xc0\xcb\x38\x69\x29\xd8\xf0\x49\x96\x29\xb9\xa2\x39\xcb\xae\xa8\x62\xb6\xaf\x66\xbe\x1a\x3c\xa3\x53\xb5\xd7\x29\xaf\x56\x87\xae\x99\x32\x2a\xf9\x6a\x83\x02\xfc\x55\x0b\xb4\x38\xc1\x81\xd3\x4a\x7f\x2c\x2b\x36\x20\x6f\x0d\xf5\x1a\x90\x6f\xc5\xa3\x90\x4f\xbb\xcd\x55\x6f\x34\xd6\xb5\x66\xda\xf4\x90\x74\xe9\xce\x5b\x8a\x3d\x3f\xdd\x2d\x67\x64\x11\xfe\x1a\xed\x73\x9b\xd8\xf8\x57\xdd\x8c\xcc\x3f\x97\x54\x8d\x46\xb4\x2e\xe5\xa4\x64\x4a\xa1\x16\x27\x5a\x7d\xdf\x30\x58\x7c\xc9\x84\xb5\x0f\x77\x4e\xef\x76\xd5\x57\x6e\xa6\x8e\xae\x4d\xea\x5f\xec\x79\xdb\xc1\x8a\x6c\x25\xab\xb1\x39\x32\xa2\x31\xd1\x35\x4a\xc6\x75\x33\x5c\xad\x5c\x6c\x50\xbd\xc6\xbb\xc8\x94\x6c\xd2\x8c\xbb\xd5\x5d\xdd\x7f\xb7\x7e\xb3\xd7\xd2\xbe\x2e\xfa\xd4\xad\x7e\xdc\x55\xf1\xd8\x79\x67\x3a\x95\x8d\xa1\x9c\xfe\x71\x14\x8c\xcf\xa9\x5a\x7c\x5e\xa5\xe2\xd1\xd5\x89\x47\x55\x24\x1e\x4f\x85\xb8\xa5\xf2\xb0\xf3\x22\x6d\x52\x18\x86\xde\xa1\x38\x25\xe1\xb3\xab\x07\x3b\xf7\x64\x93\x4a\x30\x74\x4f\xe2\xd4\x80\xc7\x56\x00\x06\x6d\xc1\x46\xa5\x5f\xcc\x3e\x44\x2a\xfa\x8e\xac\xe2\xeb\xdc\x8b\x40\xb5\x5e\xe8\x8e\x1c\x4e\x95\xf7\x62\x95\x78\x9d\x5b\xbc\x41\x71\x17\xba\xad\x51\xca\xba\x23\xab\xe9\x3a\xd6\x1f\xa7\x9a\xb3\x3c\x26\x4b\x43\x58\xf4\xdb\xc6\xcb\x4d\x26\xdd\x32\x88\xe0\x00\x67\xdf\x70\x0e\x77\x4d\x56\x72\x5b\x4e\xdd\x30\xcf\xdb\xfa\x7f\xd8\x29\x87\x73\xc3\x96\x85\x67\xa9\x97\x29\xbb\x96\x40\xc8\xf5\xcd\xdd\x87\x9b\xab\xcb\x8f\x37\xd7\x8b\x5c\x78\x3c\xbb\xbc\x59\x51\x34\x6c\xb0\xcb\x6b\x5e\x30\xc4\x6a\xcd\x4f\x06\xb6\xd6\xfc\x54\x55\x7c\xd5\x57\xbb\x33\xef\x3b\xf1\x0c\x3b\x11\xd7\x6e\x3c\xb1\x27\x44\x01\xb0\x85\x5e\xab\x86\xab\x9c\xca\x2c\x55\x2e\xbe\xe1\xf6\xda\x27\x22\xe0\x22\xc9\xaa\xd4\xb0\x5c\xdf\x7e\x7b\x7b\xad\x46\x84\x7c\xc1\x12\x5a\x29\xc3\xba\xad\x17\xd7\xa5\x38\xd5\xe4\x9b\xf7\x5f\xff\x3b\x84\x76\xc1\x97\x03\x9f\x2e\x15\x4a\xfa\x71\x8a\x55\x09\x61\xa1\xd0\x2b\xb2\x75\x30\xa3\x84\x16\x06\x03\xaf\x57\xf9\x73\xcc\x5e\x43\x45\x4a\xa6\x2c\x2b\x0c\x75\x78\x64\xa4\xae\x53\x66\x06\x84\x5f\x31\x7e\xc3\xfa\xb1\x4f\x98\xc6\xa4\x04\x9b\x5c\xd5\x37\x1e\x40\x87\x86\x7d\x07\xdd\x7a\x4b\x5d\x60\xb5\x2f\x4f\x54\x59\x0d\xe5\xca\xd9\x76\x80\x4a\xb7\x3e\x6e\xbd\x4a\x6b\x8d\x32\x0b\x29\x0b\xfc\xb5\x34\x67\x33\xd9\x5a\x6f\x85\xce\x61\x5c\x07\x6b\xcf\xd7\x7b\x02\xae\x2e\x3c\xbd\xa4\xbb\x62\x8b\x9b\xdc\x1a\xd8\xc7\x02\x35\xa6\x1c\x36\x17\xc5\xca\x19\x4b\xdf\x80\x3d\xc7\x3d\x42\x6f\xdb\xf6\xb3\xea\xc1\x31\x33\x0d\xac\x63\x35\x70\xe4\xbf\xff\xf9\xab\xff\x3f\x00\x00\xff\xff\xb4\x1f\xcc\x7c\xb4\x7f\x03\x00") +var _operatorsCoreosCom_subscriptionsYaml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xec\xbd\x7b\x73\xe4\xb6\x95\x28\xfe\x7f\x3e\x05\x4a\x49\x95\xa4\xa4\xbb\x67\x9c\xcd\xdd\xcd\x9d\x9b\x4a\x4a\x96\x34\x59\x5d\x7b\xc6\xba\xa3\xb1\x53\xfb\xf3\x7a\xd7\x10\x89\xee\x46\x44\x02\x34\x01\xb6\xa6\xb3\xde\xef\xfe\x2b\x9c\x03\x80\x64\xbf\x08\x50\xdd\x2d\x8d\x97\xf8\xc3\x1e\xb1\x49\x3c\x0f\xce\xfb\x41\x0b\xfe\x1d\x2b\x15\x97\xe2\x0d\xa1\x05\x67\x9f\x34\x13\xe6\x2f\x35\x79\xf8\xa3\x9a\x70\xf9\x6a\xf1\xc5\xaf\x1e\xb8\x48\xdf\x90\xcb\x4a\x69\x99\x7f\x60\x4a\x56\x65\xc2\xae\xd8\x94\x0b\xae\xb9\x14\xbf\xca\x99\xa6\x29\xd5\xf4\xcd\xaf\x08\xa1\x42\x48\x4d\xcd\x63\x65\xfe\x24\x24\x91\x42\x97\x32\xcb\x58\x39\x9e\x31\x31\x79\xa8\xee\xd9\x7d\xc5\xb3\x94\x95\xd0\xb9\x1b\x7a\xf1\x7a\xf2\xc5\x1f\x27\xaf\x7f\x45\x88\xa0\x39\x7b\x43\x54\x75\xaf\x92\x92\x17\xd0\xd3\x44\x16\xac\xa4\x5a\x96\x6a\x92\xc8\x92\x49\xf3\xbf\xfc\x57\xaa\x60\x89\x19\x63\x56\xca\xaa\x78\x43\x36\xbe\x83\xdd\xb9\xa9\x50\xcd\x66\xb2\xe4\xee\x6f\x42\xc6\x44\x66\x39\xfc\x1b\x97\x78\xd7\x18\x15\x1e\x67\x5c\xe9\xaf\xd6\x7e\xfa\x9a\x2b\x0d\x3f\x17\x59\x55\xd2\x6c\x65\xb6\xf0\x8b\x9a\xcb\x52\xbf\xaf\xc7\x36\x63\xa9\xea\xbe\xf9\x6f\xfb\x22\x17\xb3\x2a\xa3\x65\xbb\x93\x5f\x11\xa2\x12\x59\xb0\x37\x04\xfa\x28\x68\xc2\xd2\x5f\x11\x62\xb7\xcb\xf6\x39\x26\x34\x4d\xe1\x08\x68\x76\x5b\x72\xa1\x59\x79\x29\xb3\x2a\x17\x7e\x4c\xf3\x4e\xca\x7c\xaf\x6f\xc8\xc7\x39\x23\x05\x4d\x1e\xe8\x8c\xb9\xf1\xee\x59\x4a\xb4\xf4\x1f\x10\xf2\x77\x25\xc5\x2d\xd5\xf3\x37\x64\x62\xb6\x78\x62\x76\xb0\xf1\x33\x9e\xcf\x2d\x76\xd2\x78\xae\x97\x66\xba\x4a\x97\x5c\xcc\x76\x0d\x9f\x50\x4d\x33\x39\x23\x08\x46\x64\x2a\x4b\xa2\xe7\x8c\x98\xa1\xf8\x94\xb3\xd4\xcd\x6f\xc7\x8c\xf0\xd3\xb5\x39\xdd\xad\x3e\x0e\x9e\xd2\x9c\x0a\xc1\x32\x22\xa7\xa4\x2a\x52\xaa\x99\x22\x5a\xd6\xfb\xb3\x7b\x7b\xec\xc7\x6b\xb3\xb9\x5c\x7b\xbe\x61\x3a\xf8\xea\xe2\x0b\x9a\x15\x73\xfa\x85\x7d\xa8\x92\x39\xcb\x69\x7d\x86\xb2\x60\xe2\xe2\xf6\xe6\xbb\x7f\xba\x5b\xf9\x81\xb4\x97\xd2\x04\x51\xf2\xc0\x58\xa1\xea\x4b\x41\xaa\xc2\xac\xc9\x2c\x8e\xdc\x2f\x89\x2e\x69\xf2\xc0\xc5\x0c\x96\x3e\xc3\xf5\x5e\xe2\xc1\xa8\xc9\xda\x94\xe5\xfd\xdf\x59\xa2\x1b\x8f\x4b\xf6\x53\xc5\x4b\x96\x36\xa7\x62\x76\xd6\x61\x82\x95\xc7\x66\x9f\x1a\x8f\x8a\xd2\x4c\x4b\x37\xee\x21\xb6\x06\x2a\x6a\x3d\x5f\x59\xe6\xcf\xe3\x95\x5f\x09\x31\xbb\x83\x5f\x92\xd4\xe0\x25\xb3\xa0\x39\x73\xd7\x85\xa5\x76\x4b\xcd\x01\xeb\x39\x57\xa4\x64\x45\xc9\x14\x13\x88\xa9\xcc\x63\x2a\xec\x2a\x27\x6b\x9d\xdf\xb1\xd2\x74\x64\xae\x74\x95\xa5\x06\xa1\x2d\x58\xa9\x49\xc9\x12\x39\x13\xfc\x1f\xbe\x77\xd8\x44\x33\x6c\x66\x20\x48\x13\xb8\x90\x82\x66\x64\x41\xb3\x8a\x8d\x08\x15\xe9\x5a\xdf\x39\x5d\x92\x92\x99\x71\x49\x25\x1a\x3d\xc2\x27\x6a\x7d\x2e\xef\x64\xc9\x08\x17\x53\xf9\x86\xcc\xb5\x2e\xd4\x9b\x57\xaf\x66\x5c\x3b\x54\x9d\xc8\x3c\xaf\x04\xd7\xcb\x57\x80\x75\xf9\x7d\x65\x8e\xfe\x55\xca\x16\x2c\x7b\xa5\xf8\x6c\x4c\xcb\x64\xce\x35\x4b\x74\x55\xb2\x57\xb4\xe0\x63\x58\x8c\x40\x24\x9b\xa7\xbf\x2e\x2d\x72\x57\x2b\x03\x6f\xbc\x48\xc4\xa1\xcd\xc8\xc3\x32\xf8\x94\x70\x45\xa8\xed\x10\x17\x5b\x9f\x89\x79\x64\xb6\xf1\xc3\xf5\xdd\x47\xe2\x66\x84\xe7\x86\x47\x54\xbf\xba\x61\x87\xdc\x69\x99\x9d\xe5\x62\xca\x4a\xfc\x72\x5a\xca\x1c\x7a\x65\x22\x2d\x24\x17\x1a\xfe\x48\x32\xce\x84\x36\x37\x3d\xe7\x5a\x01\x58\x33\xa5\xcd\x41\xae\x77\x7c\x09\xa4\x8d\xdc\x33\x8b\x23\xd2\xf5\x57\x6e\x04\xb9\xa4\x39\xcb\x2e\xa9\x62\x47\x3f\x3b\x73\x46\x6a\x6c\x0e\x24\xf8\xf4\x9a\x84\x7b\xfd\x83\xb5\x5b\x4f\x88\x23\xb9\x5b\x8f\xbb\x89\x82\xee\x0a\x96\xf8\xeb\x48\x05\xb9\x28\x8a\x8c\x27\x78\xe3\xf4\x9c\x6a\x92\x50\x61\xb6\x93\x0b\xa5\x69\x96\xb1\xd5\xdb\xb1\x75\x16\xdb\xf0\x0f\x01\x64\xb3\x42\xae\xdc\xe3\x35\x9a\xd1\xfe\xc1\x93\xd9\x95\x37\xb6\xe1\x2a\xd3\x2c\xe6\x5f\xff\x61\xc7\x96\x13\x64\x89\xa6\x7c\xb6\xe9\xb3\xad\x7b\x79\x09\x9f\x00\x33\x45\xb9\x50\xb6\x8b\xaa\xc4\xdd\xac\x69\xa7\xa1\xa6\xb4\xc5\x49\xac\xc3\xe1\xce\x9d\xed\x5a\xb3\x69\x74\x0a\xac\xdf\x72\xf3\xaf\xdd\x08\xc0\xb5\x9b\x69\x3d\xf3\x11\x91\x0b\x56\x96\x3c\xb5\xa8\xbb\x90\xe9\xa9\x02\xc4\x9a\x56\x19\x10\x2a\x29\x94\x2e\x29\xdf\x78\xe9\x5d\x13\x3c\x33\x8b\x1f\x53\x8d\x37\x88\x29\xf2\xc8\xb3\x8c\xfc\x56\x48\xfd\x5b\x3f\x02\x0c\x20\x4b\x3e\xe3\x1e\x3b\x2b\xc2\x85\x1b\x17\xc8\xba\xe5\x4b\xa4\x62\x2b\x1d\x6e\x1f\xfc\x5b\xc5\x08\xcb\x0b\xbd\x74\x68\xea\xec\xbf\xfe\xfb\xdc\xd0\x04\x56\x52\xd5\x18\xb0\xd5\xdf\x56\x4c\x8f\xad\xe3\xa4\x48\xc0\x69\xc1\xbe\xc8\x94\x5d\x74\x9c\x1a\x59\x3d\xb9\x2b\x86\xec\x8f\x82\xcf\xfd\xa9\x37\x0f\xa5\xac\x32\xa6\x3c\x0b\x67\xf6\x6e\x47\xe7\x01\x6b\x09\x5d\x0f\xbe\xc7\xa6\xac\x2c\x59\x7a\x55\x99\x5b\x76\xe7\x67\x75\x33\x13\xd2\x3f\xbe\xfe\xc4\x92\x4a\x6f\x60\x29\x76\x2e\x7d\x07\xd0\xba\x66\xf8\x46\xbb\x13\xac\x44\x28\xc3\x19\x01\xeb\x68\x7f\x30\x5b\x02\x6c\x81\xd9\x41\x85\x58\x4f\x51\xcd\xd5\x74\xd9\x39\x80\xd9\x51\xbf\xe7\xec\x93\xa1\x78\xc0\xfb\x37\x6e\xbb\x61\xe4\x80\xb8\x71\x96\xa5\x23\x72\x5f\x69\xc2\x35\x50\xbe\x64\x2e\xa5\x5a\xc7\x76\xab\x8d\xe2\xd1\xc2\xbc\x16\x5c\x02\xe3\x42\xa4\x30\xc0\x4a\x72\x43\xae\x80\x61\x62\xcd\xe1\x27\xb0\xf2\xfa\x33\xbe\x4a\x6d\xd6\x5b\x2e\x95\xae\x8f\xcb\x90\x7e\xb8\x80\x82\x91\x47\xae\xe7\xf0\xc7\xac\x64\xc8\x34\xa9\x2a\x37\x83\x3e\x32\x3e\x9b\x6b\x35\x22\x7c\xb2\x81\x92\xae\x36\x03\x80\x8c\x26\xf3\xc6\xb4\x72\xc6\xb4\x22\x34\xcb\xdc\x12\x9a\x50\x8b\xd4\x23\x37\x0c\x04\x39\x73\x1c\x46\xe7\x28\x96\x3b\x18\x79\xea\xb3\x0a\x78\x1b\x8f\x6b\x44\x98\x4e\x26\xe7\xa3\xce\xee\x13\x99\x17\x06\x21\x50\xd8\x83\xfb\x25\xe1\xda\xf0\xee\xc8\x0d\x95\xb2\x9a\xe1\x4e\xb1\xcc\x4e\xdc\xf1\xb2\x70\xf8\x86\xb9\x04\x69\x70\x03\xb9\x59\x6d\x27\xb8\xb9\x27\x8e\x5d\x35\xc3\x71\xdc\x24\xd8\xbf\x9c\xea\x64\x6e\xd1\x70\x22\xcb\x92\xa9\x42\x0a\xd3\x33\xfe\x72\x5d\xaf\xed\xff\x98\x77\x3a\xc7\x33\x9d\x9e\xa9\xf3\xfa\xb0\xe7\x7c\x36\x77\x67\x4d\x4b\x44\xc7\x6d\x18\xe9\x3a\x72\x44\x25\xb4\x2c\x69\xd7\x3d\xe2\x9a\xe5\x1d\x88\x84\xf4\xb8\xfd\x84\x5c\x08\x8b\xec\x6b\xc0\x6e\x80\x98\x66\x65\xee\x37\x12\xa0\x10\xd0\x9e\xc2\x4d\xe0\xb9\xe1\x84\xb8\xb6\x60\x4e\x5e\x07\x8c\x77\x66\x6e\x02\xe1\xfa\x54\xc1\xad\x1d\xcb\xe2\x7c\x42\x2e\x88\xa8\x3c\xe2\xd9\x35\x05\x21\xfd\x0c\x6c\x47\x66\x5a\x4a\xd6\x7d\x75\xe3\xa3\x30\xf4\x8d\x6d\x3b\x83\xb6\xde\xc6\x76\xfe\x4c\x04\x5c\x42\xf3\x3a\xee\x5a\xe7\xab\xa1\x84\xc4\xbd\xed\xe6\x10\xf2\xf6\x0a\xc4\x5c\xe0\xcd\x51\x2c\x63\x89\x36\xd4\x90\x95\xf9\x88\x50\xa5\x64\xc2\x8d\xa8\x50\xc3\x7e\xfb\x42\xe1\x4a\xba\xf7\x9e\xc4\xee\x3f\x89\x5e\x3f\x01\x69\xb4\x7d\xbf\x43\xbf\x5b\xdb\x8d\x8c\x2b\x6d\x10\x54\x7b\x57\x5a\x78\xf7\x7e\x09\xbf\x9e\x2a\x92\xd1\x7b\x96\xed\xe0\xab\x56\x5b\xf8\xe5\xaf\x5b\x20\x1a\xd8\xb2\xa0\x20\x84\x50\xb7\x55\x68\x68\xac\xdb\xca\xbd\x1e\x4e\x40\x0c\x72\x4c\x3d\xb2\x82\x23\x42\xc9\x03\x5b\x8e\x10\xa5\x0b\xaf\xc2\x89\x9a\x02\x74\x5c\x32\x24\xe8\x06\xee\x1e\xd8\x12\x3a\xdc\xcd\x6e\x6e\xec\x2a\x16\xee\xb0\xc5\x60\x80\xba\x8d\xcd\x44\x23\xbf\xe8\xb1\x41\xf1\x57\x03\xdb\x03\xdb\xc9\x3e\x6f\x6a\x6b\xca\x46\x00\x77\x38\x0f\x38\x24\xa0\xc0\x0e\x1e\xa8\x11\x91\xd9\x66\xfd\xc3\xee\xb6\x53\xe0\xdc\xd5\xdc\xee\x3d\x69\x5d\x91\x17\xc4\xb4\x0f\x5e\x87\x83\xf0\x7e\xaa\x10\x5e\x0d\xde\x99\x73\x50\x56\x9a\x8b\x02\x68\x24\x1e\x68\xb1\x7d\x47\x33\x9e\x36\x74\xa0\x86\xd9\xb8\x11\x23\xf2\x5e\x6a\xf3\xbf\xeb\x4f\x5c\x19\x1e\xf3\x4a\x32\xf5\x5e\x6a\xf8\x73\x42\xfe\xaa\xf1\xea\x7d\x1d\x88\x97\xeb\xd6\xfb\x0c\x70\x7d\xc7\x3e\x81\x0b\x81\x48\xd4\xec\x70\x53\x13\xa7\x26\x46\x32\x07\x16\xdd\xee\x9c\xc1\x5a\x37\xc2\x08\x05\xb8\x73\xd1\x43\x81\x32\x16\xe5\x6c\x1c\x32\xaf\x14\xa8\xd2\x84\x14\x63\x60\xa3\x36\x8e\x89\x07\x64\xc6\x6d\x1e\xd1\x1e\x87\xdf\x3e\xf4\x5f\xb5\x19\xf6\x6b\x3d\x6a\x7c\x1c\x3d\x6e\x63\xb0\x39\x5d\x00\x6b\xcf\xc5\x2c\xf3\x4c\xfc\x88\x3c\xce\x79\x32\x47\xe9\x11\x34\x61\x9a\x95\x45\xc9\x0c\xc7\x40\x41\x67\x66\x9e\xcc\x58\x19\x0f\xfa\x1f\x8d\x68\x80\xe3\xa3\xbe\x3b\xa3\x09\x4b\x49\x0a\x22\x0b\xaa\x5e\xa9\x66\x33\x9e\x90\x9c\x95\x33\x46\x0a\x43\xfa\xfb\x01\x7c\x1c\x25\xc6\x16\x4d\x8f\x9b\x03\xf6\xb8\x61\x84\x7c\x1a\x3f\x54\xf7\xac\x14\x4c\x33\x35\x36\xfc\xc9\xd8\xce\x5e\xcb\x9c\x27\xc1\x9d\xed\xa5\x1b\xe0\xb3\xde\x1a\xb9\xed\x48\x2c\x16\xc8\x88\x03\x8b\x35\xb0\x58\x03\x8b\x35\xb0\x58\x03\x8b\x15\xdc\x06\x16\xeb\xc9\xc3\x0f\x2c\xd6\xc0\x62\x1d\x9d\xc5\x6a\x75\x91\xd3\x22\xb6\x07\xd4\xcb\xf5\x50\x04\xfe\x0d\x15\xba\xab\x9a\x3f\x60\xf8\x9c\x5f\x43\x5b\x05\x68\xf8\x98\x3b\x4b\x9c\x3e\x82\xda\xd0\x5a\x22\x4b\x2a\x66\x8c\x7c\x31\xfe\xe2\xf5\xeb\x18\x05\xa1\x05\xe7\xa0\x2f\xa6\xb2\xcc\xa9\x86\x6f\xfe\xe9\xf7\x1d\x5f\x3c\xe1\x54\xb6\xd9\x4b\x8e\x63\xa8\xb3\x98\xc7\xdb\x66\x5a\x2c\xf2\x16\x5b\x1a\x90\x31\x21\x35\xc9\x99\x26\xb4\x9b\x27\x6b\xaa\xdd\x79\xce\x46\xce\x1c\x8a\x68\xc7\xba\x8d\x38\xa3\x60\x4a\xa4\xb0\xa6\x17\x73\xf8\xdd\x87\xdb\x6b\x05\x09\xa3\x8a\x19\x12\x7f\xcf\xcc\x2a\xba\x4d\x81\x9a\x28\x99\x9b\x59\x73\xa1\x1d\x12\x33\x4b\x60\xee\x60\xc8\x19\x9b\xcc\x26\x24\xad\xa0\x5b\x2a\xac\x1f\xcc\x39\xae\x56\x2d\x95\x66\x79\xb7\x2d\xd0\x10\xc3\x12\xfe\x67\xb6\x45\x97\x4b\xb0\x90\x2f\x98\xd0\x15\xcd\xb2\x25\x61\x0b\x9e\x68\xbf\x7f\xe0\xb6\xc3\xb5\x0a\xda\xa9\x08\x36\x3a\x9c\x75\x1e\xaf\xdd\xd0\x2e\x22\x15\xc3\xf9\xae\xf5\x1d\x82\x73\x5a\x37\xe0\x83\x5d\xc9\x64\xab\x4c\xa8\x4d\xbf\x68\xb6\x85\x7f\x02\x70\x7f\xf3\xa1\xdb\xca\x46\xa2\xe9\x4f\x04\xcd\xe9\xc7\x5a\x59\x83\x97\x2c\xad\xf1\x6d\x7d\xa5\x1b\x4c\x5e\xb8\xf6\xd6\xad\x91\xd3\xc0\x01\xf5\x9c\xa1\x91\xf2\xe2\xfd\x55\xd8\x8e\x11\xeb\x1c\xf0\x51\x16\x32\x93\xb3\x65\xf3\x78\x61\x3b\xc1\xfc\x67\xe7\x81\xbe\x3a\xc8\x82\x1b\x98\x7f\xbf\x02\x0f\x83\x69\x68\x30\x0d\x0d\x7a\x0b\x68\x83\xde\x62\xd0\x5b\x0c\x7a\x8b\xb0\x36\xe8\x2d\x9e\x3c\xfc\xa0\xb7\x18\xf4\x16\x83\x69\x68\xbd\x0d\x2c\x56\x77\x1b\x58\xac\x9d\x6d\x60\xb1\x7c\x1b\x58\xac\x81\xc5\x1a\x58\xac\x81\xc5\x1a\x58\xac\x63\x75\xf3\x54\xd3\xd0\x93\xa6\xd0\x6f\xf0\x42\xa6\x4f\x08\xde\x2a\x64\xba\x23\x76\x0b\x75\xfa\x89\x1c\x67\x32\xa1\xda\x86\xd9\x9a\x4f\xac\x15\x4a\xd1\x1c\xcd\x14\x23\xf2\x0f\x29\x18\x46\xb3\x98\xeb\x01\xc6\x02\xa9\xe7\xac\x34\xaf\x9f\xa9\xf3\x9d\x21\x04\x43\xec\xd7\x10\xfb\x35\xc4\x7e\x6d\x6d\x2f\x26\xf6\x6b\x4e\x15\xc2\x2d\x92\xc6\xed\xa1\x60\x0d\x9c\xf4\x91\x95\xf9\x2f\x34\x12\xcc\x80\xbb\x05\x47\x48\x12\x51\x83\x14\xee\x4c\x6a\x0d\xfe\x2c\xbd\x6d\xef\x87\x15\xab\x61\x51\x34\x4d\x59\x4a\x0a\x56\x8e\x11\x44\x25\x99\x72\x91\x6e\x58\xab\xdb\x9f\x6e\xf4\x70\xc0\x50\xac\xf6\x3a\x82\xbe\x39\x4c\x3c\x56\x7b\x22\x3d\x8c\x8a\x4d\xcb\x68\x8b\x08\xbe\x88\xe8\xac\x58\x09\x7d\x4c\xb4\x35\x28\x7e\x15\x28\xa3\xc7\x8b\xd9\x20\x1c\x3b\xf3\x63\x4f\xf5\x53\x94\x28\x74\x61\xe5\xf1\x9f\x2a\x56\x2e\x21\x3e\xbf\x16\x3b\x7d\x2e\x12\xeb\x11\xc3\x15\x49\xa8\x42\xb2\x1a\xc3\x2a\xdf\x4c\x31\x6a\x52\x54\x59\x36\xc2\x7e\x56\x2f\xab\x43\x73\x00\x07\x42\x9a\xdf\xa3\x35\x62\x91\x2a\x9a\x7e\x3a\x90\xfe\x56\x58\xb2\x7a\x4e\xab\x5d\xa1\x6e\xcc\xa9\x0e\xf1\x58\x36\xea\x0e\x37\x58\xd3\xa3\xed\xe3\xd8\xfa\x0a\x30\xbd\xc4\x97\x27\xcb\xeb\x3b\xf6\xe4\x09\x7a\x45\x78\x39\x7a\x32\xfb\xd1\x2d\x92\xfe\xfa\x45\xd2\x5b\xc7\x48\x7a\xe9\x19\x49\x5f\x5d\x23\x79\x82\xbe\x91\xf4\xd3\x39\x92\x55\x68\x33\x27\x64\x19\xdf\xc3\xa8\x1f\xc9\xd3\x84\xf3\xfe\x6a\x48\xb2\x87\x8b\xd5\x1c\xbf\x91\xd9\xe9\x70\x7a\x49\x12\xaa\x9b\x84\x6b\xd5\x52\x4f\x1e\xfb\x5c\xfa\xa9\x26\xc9\x9e\x4e\xc5\x65\xc6\x01\x5d\xd8\xb1\x94\x95\xe4\xf9\x15\x96\x3b\xa7\x60\x87\x0f\xd6\xf0\xf5\x1a\xfd\x09\x5a\x41\xf2\x24\xcd\x20\xe9\xaf\x1d\x24\x4f\x05\xf6\xbd\x69\x09\xf7\xda\x15\xf0\x49\x5f\x83\x1f\xda\x13\xb8\xad\xe8\x1b\xd8\x18\x16\xb9\x8b\x9c\x16\xe6\xf6\xfd\x97\x61\x22\x00\x30\xff\x9b\x14\x94\x97\xca\x48\x37\x56\xaf\xdd\xfc\xcd\xaa\xef\x1a\xdd\x44\x4f\xa0\x30\x03\x1b\x1a\xbf\xa0\x99\x61\x72\xd0\xe9\xd7\xea\x20\xcc\x5c\x56\x59\xc8\x11\x79\x84\x84\x59\x86\xbc\xa1\x66\x82\x2b\x72\xf2\xc0\x96\x27\xa3\x20\xf5\x40\xbb\x35\x6f\xf6\xc9\x8d\x38\x41\xd6\x69\xed\x5e\x7a\x3e\x4b\x8a\x6c\x49\x4e\xe0\xb7\x93\x7d\xf3\xa8\x3d\xf8\xa3\x66\x6a\xd6\xbe\xec\x47\xaf\xeb\xf4\x54\x05\x37\x69\x41\xdf\x57\x6c\xd9\xd7\x11\x21\x0a\xe6\xdf\xb5\x46\x74\x0c\x35\x80\x99\x91\xdd\x3d\xdf\x84\x99\x59\x81\x65\xb2\x3a\x2a\x54\x57\xf1\x2c\x8b\x18\xed\x9e\x11\x4d\x1f\x18\x58\x78\x24\xa4\x96\xe3\x29\xc3\x64\x7a\x08\x3a\x30\x92\x01\x99\x4a\x41\x7a\x5c\x92\x49\xf9\x50\x15\x0e\xf4\x5c\x36\xc9\x88\x21\xb9\x48\x64\xee\x7c\xea\xd1\xaf\x75\x64\x13\xcc\x3d\xb0\xe5\x18\x73\x60\xe2\x73\x18\x18\x48\x80\x55\x4d\xfc\xd8\x12\xcc\x7f\x24\x54\x91\x1f\x81\xa9\x14\xe4\x0c\x3e\x3c\xff\x31\xc6\xa5\xc0\x6f\x20\x6a\x5f\x65\x05\x98\x85\x19\x62\x69\x27\xa8\x56\xf7\x76\xd7\x8e\x45\x0c\xed\x32\xc5\x35\x37\xe3\x14\xed\x0d\x67\x54\x68\x7e\xee\x95\x34\x13\x02\x70\x00\x5c\x72\x2a\xc5\xa9\xc6\xf9\x39\xbc\xe6\x3a\x88\xf1\x3a\xf0\xfb\x5e\x5b\xfc\xd0\x5a\x80\x47\x9e\xb2\x29\xad\x32\x6d\xb3\x91\x1a\xd4\x07\x94\x3e\x62\x84\x8f\xce\x5e\x62\x19\xfe\xa9\x2c\xef\x79\x9a\x32\x01\x21\x0e\x6e\xfa\xf7\xd2\x05\x04\xd5\xe0\x6e\x30\x5b\xeb\x8c\x63\x86\xbd\xc8\x94\x1c\xad\xf6\x98\xf8\x6c\xa5\xe6\x16\x3d\xce\x99\x68\x0f\x40\xb8\x32\x9b\xaa\x58\x04\x53\x7b\x14\xd7\x9f\xa7\xe3\xbc\xde\xae\x57\x5c\x3d\x03\xde\x5b\x1d\x74\x40\x7d\x41\xa8\x4f\x48\x3d\x60\xbf\xcf\x16\xfb\xad\x01\xfd\x3e\x10\xe0\x5a\xa7\x03\x0e\x8c\xc6\x81\xc2\xa5\x41\x7e\x66\x2b\x00\x2a\xc6\xd0\x8b\xd5\x4d\x49\xd5\x3a\x33\x08\xf4\xea\xa7\x2f\x73\x61\x70\x80\x67\xa1\x87\xd4\x19\x43\x2b\x61\x93\xc1\x83\x39\xb4\x1e\x16\xf1\xc5\xaa\xcd\x3d\x62\x4c\x27\xb8\x48\xc1\x14\xa8\xd8\x99\xf7\xaf\x68\x0c\x03\xbd\xc6\x2c\x05\x42\xe1\x6a\xf5\xa1\x48\x57\x83\xe3\xea\xbe\x41\xaf\x9f\x33\x2a\x14\x39\x71\x2e\x1e\xa7\xaa\x7e\xe3\x24\xea\xbe\xb9\xd4\x97\x7e\x6c\xc8\x74\xdc\x4c\x77\x59\x0f\x3d\xd8\x51\x06\x3b\x4a\xb3\x0d\x76\x94\xf5\x49\x0c\x76\x94\x6d\x6d\xb0\xa3\xf4\x1a\x7f\xb0\xa3\xb4\xdb\x60\x47\x19\xec\x28\x83\x1d\x65\xb0\xa3\x0c\x76\x94\xc1\x8e\x12\xfa\xd1\x3e\xec\x28\xb5\x18\x74\x0c\x39\xba\x29\xb2\x5a\x3f\x71\xac\xb2\x45\x35\x4f\xea\xa8\x50\xf7\x16\xfe\xeb\xb9\x84\xea\xa6\x18\xfc\x54\x91\xba\x29\xa0\xaf\x69\x30\xa2\x25\xea\xad\xf2\xb3\x97\xb0\xd7\xc6\xd8\x93\x68\xfd\x0b\x57\x2e\x35\x1c\x58\x8f\x71\x1d\x3e\xba\x50\x16\x5b\xb8\xef\x9e\xd5\x71\x2e\x29\x39\x73\xba\xd6\x73\x73\xe0\x42\xea\xf6\x8f\x42\xf3\x71\xfd\x86\x77\x10\x06\x95\xb0\xcb\xe6\x16\xb3\xe9\x4e\x66\xa9\x75\x8f\x62\xa5\xec\x65\x0d\x6d\x06\xff\xb3\xb2\x35\x5b\xae\x6c\x25\x35\x08\x4d\x2b\x2b\x21\x0c\x7b\x24\x85\x8d\xe2\x88\x98\x09\x92\x16\x54\xf3\xda\x5b\x89\xc2\x14\xac\x11\x24\xaa\xfa\x98\x1a\x01\x00\x54\x63\x99\x44\x9b\x73\x49\x0a\xab\x24\x37\x4f\xb0\x9f\x88\x49\xf8\x0b\x0b\xfb\xc9\xfd\x8a\x62\xee\xea\x35\xdc\xd1\xe6\x64\xb9\x82\x73\xa4\x59\x26\x1f\x63\xe8\x53\xe4\x8d\xe8\x9d\x1c\x30\x18\x7a\x1f\xa3\xb3\x08\xae\x78\xcb\x87\xf2\xea\x43\xaa\xc1\x9d\x6d\x48\x35\xf8\x32\x52\x0d\x36\xec\xa0\xcd\x9c\x83\xdd\x7b\x05\x39\x09\x0f\x9a\x73\x90\x90\xbf\xcd\x19\xdc\xa2\x92\xa1\xf1\xb2\xca\x34\x2f\xea\x28\x63\x85\x27\x94\xa1\x48\x3d\xb5\xd1\x80\xed\xdb\x6b\x66\x43\x93\x79\xe7\x50\x2b\xb7\x1c\xc6\x83\xa8\x65\x05\xd8\x14\x23\xe6\x40\xff\x8e\x89\xfe\x9c\xac\x8d\x61\x87\xfc\xb9\xa3\xa9\x82\xf0\xdf\x95\x2b\x18\xda\xb0\x81\x2b\x72\x66\xa8\x63\xb6\xb4\x56\xe3\x16\x22\x6c\x91\xd5\x80\x01\x50\x0f\xb6\x60\x8e\x41\x9d\xf1\x05\x13\x35\xf5\x3d\x53\xe7\xe7\x8e\x27\x5e\xe5\x1f\x02\x7a\x7f\x0a\x87\x11\x82\xb5\x63\x39\x83\x15\x7a\x1f\x30\xc2\x06\x8e\xe0\x4f\x0d\x2a\xfb\xe7\x6e\x9e\x20\x60\x10\xbc\xd2\x2e\x3c\xb3\x71\xd0\x35\x2f\xd0\xd9\xcb\x01\xa3\xe0\x62\x42\xad\xe2\xb4\xe2\x3d\x42\xac\xfa\x66\xca\x3c\x6c\x68\xd5\x41\xc3\xaa\x3e\x9f\x84\x96\xcf\x6c\xfe\xfb\x0c\xb2\x31\xbd\x10\x73\xdf\x90\x8e\x69\x5b\x7b\xae\x74\x4c\x07\x37\xe7\x7d\x76\x59\x99\x8e\x6a\xbe\x3b\x8e\xe9\xee\x33\xcb\xca\xf4\x2c\xa6\xba\x17\x9e\x9f\xe9\x70\x26\xba\x21\xf9\xd1\xf3\xe4\x97\x8c\x35\xc3\xf5\xbf\x55\xcf\x6a\x7e\x7b\x56\xd3\xdb\xf3\x9b\xdd\x7a\xf1\x2a\x4f\x35\xb7\x45\x5f\x93\xa7\x9a\xd9\xfa\xb8\xec\xf7\x83\xe7\xe3\x85\x28\x1d\xd9\x47\xff\x65\x84\x26\x3d\x93\x63\xfe\x73\x39\xe5\x1f\xd6\x21\xff\x19\x42\x91\x8e\x12\x86\x14\x4b\xf6\xa3\x88\xfd\xd3\x70\x57\x1f\x8a\xdc\x33\xe4\xa8\x27\xfe\x3a\x66\xa8\xd1\x2f\x00\x85\xf5\x0a\x31\x1a\xb0\xd8\x33\x61\xb1\xfd\x85\x14\x1d\x2b\x9c\xe8\x17\x86\xcb\x7a\x86\x0e\xed\x4d\xbb\x7d\x98\x90\xa1\x63\x87\x0b\x1d\x20\x54\xe8\x39\xc2\x84\x0e\x10\x22\x34\xd8\x04\x02\xdb\x60\x13\x08\x6d\x83\x4d\x60\x5b\x1b\x6c\x02\xab\x6d\xb0\x09\x0c\x36\x81\xc1\x26\x30\xd8\x04\xd6\x07\x1c\x6c\x02\x83\x4d\x20\xac\x0d\x36\x81\xe3\xd8\x04\x62\xc3\x6e\xfa\xc1\xf2\xf3\x84\xdb\x1c\x37\xd4\x66\xff\x61\x36\xcf\x18\x62\xf3\x0b\x53\xb8\x44\x87\xd3\xf4\x03\xf3\x97\x12\x46\xf3\x32\x42\x68\x9e\x3d\x7c\xe6\xa9\xa1\x33\xfb\x09\x9b\x89\x80\xf6\x9e\x70\x5e\xc8\xf4\x42\x68\xfe\xd4\xc2\x47\x4d\x00\xdc\x56\xfd\x88\x2e\x24\x4f\x49\x51\x69\x5b\x70\x65\xa8\x80\xd4\x09\x03\xc7\xa9\x80\xd4\x3a\xbc\xa1\x0c\xd2\xae\xf6\x62\xca\x20\x6d\x3b\xb3\xa1\x16\x52\xbb\x0d\xb5\x90\x86\x5a\x48\x43\x2d\x24\x6c\x43\x2d\xa4\xa1\x16\xd2\x90\xc3\x6f\xc8\xe1\x37\xe4\xf0\x0b\xff\x6a\xc8\xe1\xb7\xbd\x0d\x39\xfc\x62\xda\x90\xc3\x2f\x78\xf4\x21\x87\xdf\x90\xc3\x2f\x6e\xe0\x21\x87\x1f\x19\x72\xf8\x0d\x39\xfc\x3e\xe3\x1c\x7e\x43\x2d\xa4\xcf\xa2\x20\xc8\x50\x0d\x24\x62\xec\x97\x55\x0d\x64\xa8\x85\xb4\x73\x90\xa1\x16\xd2\x80\xfa\x86\x5a\x48\xbf\x58\xec\x37\xd4\x42\x0a\x18\x64\xa8\x85\x34\xd4\x42\xda\xd9\x86\x5a\x48\x83\x1d\x85\x0c\x76\x94\xc1\x8e\x12\xfb\xd5\x60\x47\xd9\xde\x06\x3b\x4a\x4c\x1b\xec\x28\xc1\xa3\x0f\x76\x94\xc1\x8e\x12\x37\xf0\x60\x47\x21\x83\x1d\x65\xb0\xa3\x7c\xc6\x76\x94\xa1\x16\xd2\x50\x0b\x69\xa8\x85\xe4\x47\x1e\x6a\x21\x0d\xb5\x90\xa0\x0d\xb5\x90\x02\x46\x18\x6a\x21\x7d\xae\xb5\x90\x5a\xf1\x40\x9f\x6f\x41\xa4\xf8\x65\x0c\x55\x91\x86\xaa\x48\x5b\xda\x50\x15\x69\xa8\x8a\xb4\xa9\x0d\x55\x91\x86\xaa\x48\x3b\xda\x90\x01\x31\xb0\x0d\x19\x10\x43\xdb\x90\x01\x71\x5b\x1b\x32\x20\xae\xb6\x21\x03\xe2\x90\x01\x71\xc8\x80\x38\x64\x40\x5c\x1f\x70\xc8\x80\x38\x64\x40\x0c\x6b\xcf\x6f\x80\xfb\x9f\x91\x01\x71\xa8\x8a\xf4\x22\x4b\x8a\x0c\xf5\x44\x3a\xda\xcb\xa9\x27\x32\x54\x45\x6a\x75\x3e\x54\x45\x1a\x50\xd8\x50\x15\xe9\xb3\xc3\x62\x43\x55\xa4\x0d\x9d\x0f\x55\x91\x86\xaa\x48\x43\x55\xa4\xc1\x26\xd0\xd9\x06\x9b\xc0\x60\x13\x68\xb6\xc1\x26\xb0\xda\x06\x9b\xc0\x60\x13\x18\x6c\x02\x83\x4d\x60\x7d\xc0\xc1\x26\x30\xd8\x04\xc2\xda\x60\x13\x18\xaa\x22\x0d\x55\x91\x86\xaa\x48\xd0\x86\xaa\x48\x43\x55\xa4\xa1\x2a\xd2\xc6\x8f\x41\xd1\x8a\x92\xcd\x36\xc8\x0e\x85\xe5\x8b\xba\x2b\xcb\xc1\x57\x42\xe9\xb2\x4a\x74\x55\xb2\x14\x0e\x0c\x0f\xd3\x30\x06\x4a\xcb\xd2\x59\x05\xa0\xc4\xcc\x15\x2b\x32\xb9\x34\xd4\x76\x44\x6e\x65\x3a\x22\x17\xb7\x37\x77\xac\x5c\xf0\x84\x39\xe8\xfb\xc6\xd2\xf4\xed\xfb\xf6\x71\x59\xf0\x84\x66\x19\x68\x2c\xea\xd9\xe4\x74\xe9\x74\xc9\xf7\x4b\xc2\x3e\x69\x56\x0a\x9a\x11\x2d\x65\x86\xe6\x17\x33\x19\x40\x88\x25\xd3\x25\x67\x0b\x46\x68\x79\xcf\x75\x49\xcb\x25\xc9\x99\xa6\x29\xd5\x74\xfb\xa8\xdf\x2a\xd6\x8c\xd1\xd0\x92\x14\x25\x1b\xe3\x0d\x68\xcd\x03\x60\xf3\x9b\xaf\xdf\xb9\xfb\x4d\xd3\xd4\x05\x24\x38\x08\xbf\xab\xee\xfd\x6e\x9f\x6e\xe7\xb6\x52\xbf\x5b\x6a\x04\xe0\x69\x55\x34\x05\x57\xb8\x67\x5b\x25\xd2\x00\xb6\x24\x8e\x09\xe9\x84\x4f\x26\x16\x4f\x05\xad\x6b\xb1\x68\x6b\xf6\x98\x58\xf0\x52\x0a\xe0\x23\x17\xb4\xe4\xf4\x3e\x63\xd6\x92\xe6\xed\x2b\x96\xb7\x63\x3b\xe0\xe5\xd2\xdb\x19\x30\xd8\x65\xeb\x95\xec\xa6\x67\x1d\x14\xac\xb5\xd2\x6b\xb1\xf8\x8e\xb6\xd5\x0c\x62\xe3\x92\x88\x7d\xc1\x2c\x89\x92\xcb\xee\x05\x05\x31\x9d\x21\xea\xb0\x31\x60\xf8\xad\x2f\x84\x29\xad\x4c\x17\xbb\xe9\x65\x6b\x5b\xde\xd3\xbc\xae\x8c\xb5\x61\x37\x26\xe4\x9d\x15\x8d\x29\xb9\xfc\xcf\x9b\xab\xeb\xf7\x1f\x6f\xde\xde\x5c\x7f\xd8\x8d\x47\x03\xf1\x27\xa0\xa6\x88\xc9\x76\x12\xf5\xef\xdc\x19\x42\xf5\x21\x26\x0c\xe3\xf5\x9b\xb3\xef\x2e\x3e\xfc\xe7\xfb\x8b\x77\xd7\xe7\x20\x52\xb0\x4f\x05\x15\x29\xeb\x62\x11\x2b\xe5\x22\x70\x8a\x92\x2d\xb8\xac\x54\xb6\xf4\x14\x76\xf3\x55\x58\xbd\x03\x06\x3d\x74\x8c\x62\xe8\xa3\xc5\x1e\x9b\x3b\x05\x35\x08\xad\x81\xb3\xb6\xd2\x95\x4c\xc9\x6c\xc1\xd2\x2e\xed\x07\xc4\x42\xba\xed\xa8\xed\xa0\x45\xa5\x9d\x92\xc7\x99\x36\x2b\x91\xcc\xa9\x98\xb1\x74\x42\xae\x64\x65\x46\xfb\xcd\x6f\x60\xcb\x4a\x96\x56\x49\xe7\x8e\xa1\x86\x0e\x05\xda\xdf\x8c\x1c\x03\x60\xc8\xae\xc2\xaa\x66\x2a\xa1\x85\xdb\xd4\xe6\xa9\xa8\xa5\xd0\xf4\xd3\x9b\x90\xfa\x68\x27\xbf\x69\x7c\x78\xe2\xea\xd5\x49\x33\x3d\x64\x96\x70\x45\x19\x94\x1a\xcb\xc8\x49\xf3\xed\xae\xbe\xaf\xcd\xfc\x58\xda\x84\x1d\x8c\x3c\x64\x0b\x56\x82\x72\xc8\x42\xce\x88\x94\x6c\x46\xcb\x34\x63\x0a\x62\xde\x1e\xe7\x0c\x8a\x07\xa2\xa4\x8b\x07\xd5\x31\x16\xf3\x8a\x2c\x21\x3b\x15\x8c\x57\x68\x65\x06\x5c\x7b\xd2\xb1\x8c\x98\x9b\xf7\xb6\x94\x1d\x25\xa8\x5a\xb7\xef\x0e\x82\x6a\xbc\x2d\x7e\x13\xb8\x9e\x5a\x23\xc6\xa4\x89\xe5\x95\xe1\x4e\xa7\xb5\x8d\xdc\x3c\x0f\xb0\x93\x07\xcb\xf2\xe1\xca\xfc\x44\x8a\x29\x9f\xbd\xa3\xc5\x57\x6c\xf9\x81\x4d\x23\xe3\xfb\x90\x31\xb7\xea\x69\x60\x77\x0d\x75\xc0\x0e\xbb\xd9\xca\x03\x86\x73\x85\x98\x4c\xe2\x2c\x1e\xc1\x76\x8e\xb5\xc2\x72\x28\x22\x58\x36\x7e\xef\xcc\x36\x09\x22\x70\x1b\x27\x17\x2c\x10\x36\x29\xa2\x45\x05\xc1\x26\x80\x8f\x35\x47\xca\x15\x61\xd3\x29\x4b\x34\x5f\xb0\xcc\x47\x1a\xdb\xca\x96\x36\xf2\xf7\x9e\x26\x0f\x8f\xb4\x4c\x15\xd4\x4a\xa4\x9a\xdf\xf3\x8c\xeb\x65\x48\x1d\x4a\x6c\x56\xa8\xb1\xc1\xc9\x4e\x6f\x2e\x94\xa6\x80\xbe\x5c\x45\x45\xb3\xc3\xc8\xf6\x53\x67\xb8\xc6\xdb\xe8\xc2\x7a\x83\x87\x83\xda\x7e\x09\x2b\x0d\x81\xcb\x96\xe4\xb1\x94\xe1\xa2\xd9\x3b\x09\xf1\xbc\x53\xf9\x86\xcc\xb5\x2e\xd4\x9b\x57\xaf\x6a\xd1\x69\xc2\xe5\xab\x54\x26\xea\x55\x22\x45\xc2\x0a\xad\x5e\xc9\x85\xa1\x8b\xec\xf1\xd5\xa3\x2c\x1f\xb8\x98\x8d\xcd\x02\xc6\x78\x81\xd4\x2b\x90\x85\x5f\xfd\x1a\xfe\x77\x08\x28\x23\xce\xb7\xe7\x0d\x39\x39\x09\x78\x5f\x16\xc8\xbd\xf7\x80\xcc\x3b\x10\xf0\x97\x2d\x32\xe2\x11\x8b\x21\x11\x5c\x2b\xb8\x57\xce\x48\x61\xb9\x90\x88\x65\xdf\x4b\x99\x31\xda\xed\x6d\xf5\x14\xcd\x24\x80\x7d\x3c\x56\x0d\xba\x97\x35\xea\xc5\xcb\x65\xaf\x67\x21\xd3\x37\x44\x55\x45\x21\x4b\xad\x6a\xa1\xd1\x00\xc5\xa8\xfd\x27\xa8\x4d\x46\xe4\x47\xff\x10\xbd\xba\xbe\x3f\xfd\xd3\x57\xd7\xff\xf6\xe7\xd3\x1f\x7e\x6c\xfe\xd6\x10\x1f\x1b\x2f\x04\x4c\x53\x15\x2c\x99\x08\x99\xb2\xf7\x30\x03\xf8\xd3\x72\x77\x17\x49\x22\x2b\xa1\xed\x0f\x9a\xea\x4a\x4d\xe6\x52\xe9\x9b\x5b\xff\x67\x21\xd3\xd5\xbf\x02\x6c\x9c\x07\xa4\x2b\xb0\xd7\xb7\x54\x07\x44\xee\x47\x51\x17\x5a\xf0\xef\x58\xa9\x02\x72\x55\x60\x6b\xc1\x8b\xfd\xb2\x59\x0a\x37\xa7\xf0\xcf\xb7\x6e\xba\x06\xf7\x3e\x96\x5c\x6b\x70\x39\xb4\xc9\x02\xe4\x74\xe4\xae\x34\x32\x52\x8b\x2f\xa2\xf4\xaa\xc1\x98\xc3\xef\x5a\x8f\xc5\xc1\xec\xed\xca\xbc\x62\xc3\x3a\x5c\xae\xa9\x03\x2f\x6e\x6f\xc8\x02\x77\xe3\x00\x0b\x79\x0a\x2a\x70\x01\xd8\x6f\x8f\x82\x12\xdc\x68\x6e\xe3\xbc\xfc\xf5\x06\x2d\x4c\x3e\x1c\x9c\x64\x3c\xe7\xd6\xc0\x6f\x0b\x20\x87\xd0\x8e\x33\xfc\x6c\x92\x14\xd5\xc8\x76\x31\xc9\x59\x2e\xcb\xa5\xff\x93\x15\x73\x96\x1b\x89\x63\xac\xb4\x2c\xe9\x8c\x8d\xfc\x00\xf8\x99\xff\x0b\x3f\x6c\x4d\x61\xfd\x6b\x14\x54\x93\xaa\x34\xbc\x47\xb6\x74\x28\x2e\x44\x7b\x79\x40\x74\x10\x5c\x5c\x3a\x0e\x1b\xf8\xe3\x7a\xdf\x8f\xb1\x3b\xf5\x2a\x1a\x64\x0d\xfd\xaa\x40\x52\x59\xc8\xac\xca\x99\x1a\x79\x02\x8d\xa2\xa8\x58\x18\x99\x45\x9d\x1e\x02\x01\xa4\x7c\xc1\x55\x2f\xff\xd0\x3b\x6f\x67\x03\xa3\x54\xa5\x8d\x90\x8e\x49\x86\x1a\xd5\xcb\xa5\x02\x21\xd5\xe7\x38\x68\x61\xb5\x2f\x42\x98\x15\x42\x0a\xaa\x35\x2b\xc5\x1b\xf2\x1f\x67\xff\xfe\xbb\x9f\xc7\xe7\x7f\x39\x3b\xfb\xfe\xf5\xf8\x7f\xff\xf0\xbb\xb3\x7f\x9f\xc0\x3f\x7e\x7b\xfe\x97\xf3\x9f\xdd\x1f\xbf\x3b\x3f\x3f\x3b\xfb\xfe\xab\x77\x7f\xfd\x78\x7b\xfd\x03\x3f\xff\xf9\x7b\x51\xe5\x0f\xf8\xd7\xcf\x67\xdf\xb3\xeb\x1f\x02\x3b\x39\x3f\xff\xcb\x6f\x82\xa6\x47\xc5\xf2\x9b\x00\xac\x81\x6d\xdc\x23\x73\x53\xfd\x55\x5f\x93\x16\x17\x7a\x2c\xcb\x31\x7e\xfe\x86\xe8\xb2\x0a\xe1\xa2\xdd\xb1\xf5\x81\x73\x57\xfa\xf9\x4d\x8d\xf1\x3c\x75\x38\x00\x20\x3f\x85\x00\x28\x96\x94\x4c\xef\x4b\xca\xc6\xde\x1c\x01\x5c\x31\x8e\x0e\x82\x77\x2d\x78\xfb\x84\x33\xb0\x5f\x35\xeb\x30\x2d\x65\x3e\x21\x0d\x4d\xee\x02\x1c\xe1\xec\x7b\x0f\x2c\x30\x62\x61\x10\xd4\x07\x41\x7d\x10\xd4\xdb\x82\xfa\x1d\xde\xa1\x17\x2e\xa5\x33\xb1\xd8\xa5\xec\x8d\x30\x09\xbe\x85\xec\x71\x4d\xb3\xa0\x63\xae\xb5\x24\x85\x2c\xaa\x8c\xea\x2d\xa6\x8c\x08\x1b\xa1\x8f\xa0\x73\x06\x17\x03\x52\x60\x8f\xb3\x84\x2f\xdf\x6c\x94\x22\x17\x59\x46\xb8\x40\xf4\x66\x3a\xd8\x3a\x82\xb3\x79\x94\x0c\x39\x6b\x42\xd1\x20\xb8\x30\x53\x7e\xb4\x39\xef\x1a\xa6\x1c\xae\x8c\x60\x5e\x6a\x2e\x66\x13\xcc\x89\x87\x04\xca\x2a\xf2\xb9\xf0\x99\xf1\xb6\x0e\xe9\x19\x36\xef\x11\xb7\x96\x0c\x13\xfd\x2d\x94\x76\xcb\x84\x59\x6a\xfa\x00\x46\xa8\x84\xa5\x4c\x24\x3b\x4c\x24\xdf\xa1\x97\x9d\xdb\xb3\x7b\x23\x66\x80\x19\x17\x31\x0a\x49\xab\x22\xe3\x89\x39\x1f\x33\xf3\xb8\xbe\x6f\xf2\xbc\xd2\x60\x10\x3c\x96\xb5\xd6\x40\x9a\x35\x39\x34\x8c\xb6\x40\xdf\xbc\xb8\xe7\x3d\xc2\xbd\xbe\x0c\x6c\x2a\x78\x29\xb7\x1f\x7e\x10\x4b\x10\x46\xb8\xbd\x49\xa1\x93\xd3\x59\xa3\xd8\xb5\x8e\xaf\x4d\xa9\x8f\x6d\x15\x09\xa3\xd3\xf1\x34\xba\x2f\x7d\x3e\x26\x6d\x3e\x22\x5d\xee\x4f\x93\x9f\x8f\x1e\x47\xd1\xe2\x70\x3a\x1c\x4e\x83\x23\x14\xe5\xb1\x74\x37\x9c\xe6\xf6\x95\x84\x8a\x92\x4d\xf9\xa7\x08\xac\xf0\x8d\xd3\x51\x68\xf6\x49\x5b\x9f\xa6\x82\x09\xef\x01\x2b\xec\x8d\x02\xe7\xa5\xa3\x7b\x6b\xa0\xb8\x10\x8f\xe7\xee\x36\x89\x23\x03\x92\x1b\x90\x5c\xab\x0d\x48\xae\x53\xc8\x78\x49\x18\x4e\xc8\xb4\x33\x12\x3e\xf4\x36\xbd\x6f\xf4\xb5\x12\x20\x8b\x4e\x44\x6e\xe1\xba\xac\x6a\xff\x93\x42\x02\x44\x4f\xb9\xae\xbd\x9c\xb7\x03\xda\xdd\x86\x1e\xc1\x7d\xd9\x7e\x79\xaa\x5c\xa2\x87\x95\xfe\x57\x72\x8e\xa3\x3f\xe9\xee\xb1\x22\x41\x19\x59\xc8\x0a\x13\x62\xbc\xa2\x4a\xf1\x99\x18\x17\x32\x1d\x9b\x51\x5e\xed\x64\xb7\x8f\xe9\x52\xea\x35\xce\x4f\x3d\xee\x0f\xde\x1e\xd3\xe0\xeb\x0d\x5a\xab\x34\x6b\x18\x6b\xbc\x1a\xdf\xe5\x19\x08\x90\x1b\x3b\xa5\x94\x27\x1e\x4e\x4e\x05\x9d\xb1\xb1\x9d\xec\xd8\x4f\x76\xec\xe7\xf6\x84\xf3\x0a\x21\x66\x49\x46\xf9\xee\xa0\x8d\x18\x12\x76\x09\xbd\xd9\xe4\xed\x3e\xaa\x66\x25\x85\xb2\x13\x27\xb9\x40\x83\xb6\xfb\x09\x3f\xde\x6d\x16\x87\xcb\xe2\xb3\xe0\x6c\x38\xc8\x9d\x5f\x03\x8d\xb4\x71\xa9\x59\x31\x77\xc6\x7f\x67\x3b\xe3\x25\x53\x84\x09\x7a\x9f\x59\xa7\xc2\x9d\x9d\x5d\x2d\x05\xcd\x79\xe2\x80\xef\x22\x83\xc0\x09\x2e\x05\x99\x32\xaa\xab\x92\x91\x19\xd5\x2c\x64\x46\x9e\x6a\x73\x0f\x6d\xe4\x46\x93\x84\x0a\xb4\x37\x5a\xaf\x77\x83\x47\xfc\x4a\x77\x1a\xf2\xc3\x02\x77\x02\xc2\x75\x5a\x67\xff\xa1\x79\x4e\x4d\xa7\x46\x29\x18\x61\x42\x97\x90\xc5\xec\x56\xa6\x86\xe2\x4c\x5a\x6f\x77\xb8\x1d\x04\xb3\x67\xa1\xda\xf4\x0e\xc7\x67\xf2\x72\x38\xbd\x06\xdd\x68\x32\xe4\xad\x2d\x2d\x64\x3a\xd9\x70\x53\xc2\xd3\xd3\xdf\xca\xd4\xc6\xf7\xe8\x16\xbc\x99\x4b\x04\xa0\x96\xd3\x07\x17\x75\xe3\x4d\x41\x74\x41\x79\x16\xe0\x79\x4a\x20\x9d\x94\xe2\xa9\x91\x11\x02\x50\xaa\x9f\x58\x38\x97\x64\x0d\xdb\x87\x38\x84\x0f\xd8\xb5\x4b\xa2\x00\xfb\x9f\xcc\xa5\x62\x02\xee\x1b\x75\x63\xfb\x22\x30\x0e\xec\x53\x44\x9d\x21\x9c\xe8\xcd\x14\xb9\xdf\x11\x61\x0b\x56\x2e\x35\x94\x62\x70\x09\xbb\xb0\x1b\x33\x7e\x4e\xd3\xc6\xae\x8f\x88\x34\xec\xda\x23\x57\x21\x07\x00\x78\x02\xe7\xa7\xaa\x4c\x7b\x16\xdc\xce\x7e\x6f\xa7\xb1\x1e\x9c\x64\x98\xbb\x87\xce\x4c\x6c\x9d\x17\x72\x5b\xd4\x53\x4e\x8b\xad\x5f\xa1\xaf\xc4\xbe\x68\xd7\xd7\xe8\xcb\x81\x9f\xdc\x5b\x93\x79\x4e\x3f\xf1\xbc\xca\x09\xcd\x65\x85\xd1\xce\xeb\x7c\x45\x50\x20\xd8\x3e\xb8\x84\x0d\xdc\x81\xda\xc6\x1e\x90\x70\xb4\x1a\x1f\xae\xfc\x42\x8d\xfd\x41\x46\xfe\x38\xe3\x7e\x84\x51\xbf\xb7\x31\xdf\xb9\xed\xec\x0b\x90\x2d\x4a\x5b\x03\x65\x2e\x3a\x41\xd9\xd1\xd7\xdd\xb0\x7c\x33\xad\xc7\xe0\x8a\xc8\x9c\x6b\x6d\xbd\x63\x1a\x14\x60\x44\xb8\x6e\xb9\x92\xd8\x0b\xc6\xa7\x48\x68\xb8\x22\xec\x53\x91\xf1\x84\x83\x47\x92\xf3\x42\xdb\xcd\xff\x79\x9c\x68\xd3\x10\xf0\xbc\xc0\x44\x04\x70\x51\xc6\x8e\xb5\xb4\x31\x03\x7e\x96\x36\xc8\x85\x7d\x4a\x18\x4b\xed\x44\x86\xfb\x3a\xdc\xd7\xe8\xfb\xaa\xf6\xa4\xa1\x68\x6a\x27\xea\x98\x68\xaf\xa5\x30\x57\x09\xe2\x95\x51\x5f\xe0\xa0\x6b\xd7\xc5\xbc\x76\x19\x33\x3f\x30\x30\xca\xdd\x31\xad\x6c\xf4\x35\xf4\xb4\x4b\xdd\xb6\x96\x81\xcf\x67\xd9\x74\xa9\x0c\x28\xe8\x13\x1b\x6f\xd4\xb1\xab\x3b\x84\x67\xbd\xca\xde\x82\x0a\x84\xe5\x45\x46\x75\xad\x20\x79\x42\x90\x6b\x08\x13\x1f\x93\xa4\xee\x79\xd3\xd2\x1d\x46\x6c\xeb\x64\x83\x9f\x31\xbd\x5c\xdf\x84\x72\x07\x10\x18\xbb\x5d\xaf\x02\x13\xc3\x85\x0b\x96\x41\xbe\x59\x87\x4e\xf7\x16\x21\x86\x85\xa7\x74\x8b\x97\xc3\x0e\x9c\xb6\xed\x50\x89\xda\x22\x76\x2f\x34\x19\x5b\xfc\xde\x1d\x29\xe1\xda\xd1\x53\xac\x1d\x33\xa9\x5a\x54\x1a\xb5\x98\xc4\x38\xc1\x49\x71\xfa\xfb\xd2\xc6\x24\xc3\xe9\xf9\x61\x60\xca\xb3\x18\xd8\x3d\x72\x5a\xb3\x23\x27\x32\x7b\x8e\xd4\x65\x07\x93\x1f\x02\x40\x33\xde\xe0\xa7\x65\x66\x73\xb6\x87\x19\x80\x3e\xd6\xef\xc3\x76\xd4\xae\xdb\x8d\x9e\x8e\xe3\x4c\xb6\x13\xb2\x3f\x3a\x3e\xd7\x60\xa7\x7a\xd2\x00\xe3\x5a\xd3\x64\x6e\x13\x90\xe1\x2f\x06\x12\xc4\x92\x18\x20\xd0\x48\xc9\x6d\x0e\xa4\x5d\xe7\x3c\x67\x44\x97\x50\x34\xf7\x4f\xfe\x42\x8c\xd0\xe4\xff\xe7\x46\x9e\x09\x5f\xf6\xd5\x03\xe3\x9f\xdc\xbf\xfe\xfc\xc4\xec\x23\x61\x4c\x0e\x4e\x69\x9f\xbc\xea\x35\xf4\x48\xb8\x48\xc1\xef\x10\x59\x21\xdc\x3c\x1c\xcc\x6c\x2d\xac\x7b\x62\x33\x37\x61\x1a\x34\x6b\x99\x05\x07\xc5\xfa\xe5\x4e\xd6\x01\xfc\x32\x6b\xd5\x84\x77\x7c\xf0\x77\x98\x91\xf7\xd2\xd6\xcf\x66\x23\x72\x0b\xda\xe1\xfa\x09\xdc\xf9\xf7\x12\x2b\x69\x77\xa4\xa2\x08\x44\xff\x9d\x3c\x63\xdc\x7e\x7e\x55\x33\x94\xb8\x31\x2d\x86\xb2\xbe\x58\x4d\x96\x72\xe7\xc6\x3e\xb0\x65\xe7\xae\x5a\x26\xc1\x32\xb3\x56\x35\xee\x61\xd4\x11\x79\xe4\x1b\xfe\x8f\xb3\xf0\xe5\xf7\x5c\xe0\x54\x70\x60\x77\xce\x30\xb6\x3b\x0f\x23\x81\x64\x59\xc0\x24\x02\x77\x3b\x8c\xe3\x8d\xdb\xf2\x6f\x22\x38\x5d\x4f\x2f\xba\xb6\x74\x13\x7f\xdb\x60\x6a\xaf\x7f\xaa\x68\x36\x69\xe5\xfd\xc0\x47\x5d\xd7\xcd\x3a\x23\xaf\xd2\xcd\x47\x9e\xa5\x09\x2d\x6d\x44\x1c\xa0\x1f\xa2\xa4\xb5\xce\x02\xf6\x4b\x3a\xdd\xce\x1d\x02\xac\x81\x47\xa1\x07\x6e\x41\x4b\xcd\x93\x2a\xa3\x25\x31\x77\x7c\x26\xcb\xa0\xc4\x1e\x9d\x87\x59\x43\xf3\x1d\x4b\xa4\x48\xf7\x2a\x44\x7f\x5c\xed\x7c\xd5\xc7\xb8\x60\x25\xb7\x25\x9c\x79\xce\x56\xaf\xd7\x59\xcb\x2f\xa5\x4b\x0e\x9b\x3a\x64\xe7\x71\xcb\xa8\xa9\x19\x6d\xdb\x94\xb1\xbc\xc8\x79\x83\xe0\xf8\xdb\x3e\x21\x5f\x2e\x9d\x8a\xb6\x8b\x21\xe7\xda\xa5\x5a\x51\x4c\xbb\x64\x3c\xee\x2a\xda\x93\xac\xd1\xc8\x54\x96\x90\xe4\xe6\x2c\x95\x98\x9e\x65\xc1\x13\x7d\x3e\x21\xff\x1f\x2b\x65\x40\x16\x23\xc1\x66\x58\x73\xdc\x5e\x6c\xaf\x8f\x2a\x19\xb5\xbe\xf5\xaf\xc9\x19\x96\xa1\xe7\x79\xce\x52\x4e\x35\xcb\x96\xe7\xa8\x9e\x62\xb6\x90\x7d\x08\xd4\x84\xa8\x15\x31\x60\x12\xde\xfd\xe7\x3f\xec\x78\xf3\x00\xd9\xa7\x6c\x86\x9b\x7a\x63\xd1\x81\x6e\x05\x7a\x7c\xda\xc4\x4e\x79\x7f\xab\x7c\xd6\x0c\x22\xa8\x13\x57\x3a\xdc\xec\x61\xeb\xef\x06\x40\x29\x29\xd9\x0c\xee\x27\xde\xb9\x27\xde\x4e\x8c\xa8\x7d\x27\x2b\xb1\xdd\x06\xd2\xda\xb7\xaf\xad\x0a\xee\xbb\xc6\x87\xb1\x69\xe3\xf6\xcb\x10\x36\x66\xd2\xb0\xba\x50\x02\xa6\x16\xe0\xc0\x0c\x62\xc3\xb7\xea\xd0\x93\x00\x63\xf9\x1e\x53\xc1\xc1\x5c\x3a\x92\x2f\xec\x25\x61\x9c\x1f\x68\x9f\x57\x01\x12\x19\xd8\x9d\x5b\xc9\x89\xe6\x4a\x6e\x01\x00\xe3\x16\xd7\x10\x0c\x93\x61\xa9\x0d\x56\xec\x42\x3b\xd2\x6b\x37\xc9\xe9\x9b\xd3\xbd\x50\x1d\xdc\x8d\x52\x16\x74\x06\x97\x75\x9f\x9b\xb2\xda\x37\x49\x99\x66\x65\xce\x05\x53\x64\x2e\x1f\xf1\x77\x64\x06\x0a\xfb\x16\x4b\x6b\xcf\x83\xb9\xec\xdc\x11\x2c\xaf\x55\x67\x9f\x43\xec\x01\x7e\xa4\x8f\x74\x49\x68\x29\x2b\xd1\x99\x44\x00\xb8\x68\x4f\x39\xde\xad\x4c\xfa\xbd\x14\xcc\x3b\xa3\x74\x51\xd9\x16\x69\xbb\x67\x9a\x9a\x0b\xff\xc5\xe4\x8b\xd7\x41\x73\xf8\xc0\x92\xaa\x54\x7c\xc1\x3e\x30\x9a\x7e\x63\x24\x6e\xae\x00\x6b\x68\x49\x6e\xa6\xb7\x52\x29\x7e\x9f\x31\x22\x4b\x60\x90\x04\xbd\xcf\x0c\xd3\xbf\x3a\x61\xcf\xa1\xc2\xcc\x65\x49\x2a\xe1\x45\x84\x8e\x59\x58\x32\xdf\xb4\x8a\x9a\x4e\xce\xf7\x02\x69\x91\x89\x1a\x61\x2f\x57\xec\x33\xce\xf9\xdc\xe1\xaa\xbd\xcc\xab\xb4\x9b\xbd\x4f\xc8\x7f\x87\xd7\x1a\xfa\x1e\x83\xee\x84\x4f\xc1\x6a\x37\xc2\x47\x8f\x25\xd7\xac\x41\xb7\xce\xa6\x34\x53\xab\x87\xd5\xb1\xed\xed\x3c\x79\xd0\x41\xc8\x7e\x74\xbb\x47\x97\xab\x60\xb8\xcf\x9d\x59\x87\xf1\x3a\xd9\xba\x73\x01\xaf\x77\xcd\x62\x88\x1a\x5f\xce\xa9\x48\xb3\x4e\x38\xf6\x2b\xc8\x96\x1d\x0e\x8e\xd6\x5b\xa0\xbe\x6e\xb0\x8f\xa3\x26\x93\x3a\xa7\x86\xaf\x04\x5e\x12\xf4\xb6\x22\xf5\x37\xac\x71\x58\xb1\xe3\x20\x30\x20\xca\x6a\x22\x0d\x7b\xdd\xaf\xb8\xb2\xd7\x1b\x34\x25\x40\xb9\x2d\x7f\x9b\xd3\xce\xec\xd6\x8d\xf5\xd7\x9b\x39\xb1\xec\xd5\x86\xd1\x6a\xe4\xb2\x32\x5e\xdf\xb1\x46\x06\xde\x91\x25\xf7\xb9\x5c\x1c\xf3\x5b\x23\xec\xd2\x70\x1f\x39\xab\x27\xd6\x31\xd4\xea\xb4\x3d\x0a\x5c\x9b\xf3\xe6\x59\xf9\x49\x75\x8c\xd3\x3d\xe5\xb6\x3c\x83\x0a\x35\xcc\x9d\x69\x2b\x0a\x6a\x8a\x41\xb6\x01\x09\x51\x09\x2b\x4b\x59\x7a\x19\x62\xc6\x04\x48\x2b\xa0\x85\x73\x8a\x24\xeb\x3b\x47\x95\x14\x21\x80\xd6\x71\xc8\x06\xcf\x74\x93\x0f\xfc\xac\x63\x30\xa0\x31\x67\xb2\x5c\xb9\x0d\x4e\x00\xdb\x40\x49\x62\x67\x0f\x84\xb9\xee\x17\x81\xaa\x21\x68\x99\x0d\xac\x85\x7f\x39\xf5\x57\x67\x3f\x31\x60\xd5\xfd\xa1\x59\x45\xcb\x13\x02\xdb\x53\x73\x8a\x1e\xe4\x4e\xd5\x76\xae\x31\x82\x3e\x9c\x9c\x90\x33\xec\xe7\x54\x91\x52\x4a\xbd\x1f\xa2\x6e\xf7\xe7\xfa\x53\xb1\x57\x25\xd4\xb5\xcd\x3c\x4b\x8a\xa3\x6d\xd6\x97\x6c\x4e\x17\x4c\x11\xc5\x73\x9e\xd1\x32\x83\xb4\x9e\x77\xb8\x3c\x88\x4c\xdb\x98\x3b\x3b\x20\xef\x72\x43\xe3\xdd\x9c\x67\xa3\xbb\x43\x9e\x23\x71\x6b\x30\x47\x04\xf4\xc6\xad\x09\xea\xe6\x56\xba\xa2\x59\xb6\x24\xec\x53\x92\x55\x06\x5f\xee\x45\x58\xee\x23\x27\xaf\x8a\xc8\x85\x75\xd4\x3f\xa2\x80\xdc\x56\x79\x1a\x7e\x35\x75\xe0\x04\x02\x31\x9a\x4d\xc0\x06\x02\x51\x0f\x34\x49\x98\x52\x2e\xf3\xc0\xb2\x99\x3d\xc1\xaf\xe1\x73\x49\xa3\x4e\x1f\xd5\x75\x46\x95\xe6\xc9\x97\x99\x4c\x1e\xee\xb4\x2c\xf7\xaa\x2b\xda\xd4\xff\x4a\x72\xfa\x8b\xbf\xdd\x19\xe4\xfd\xd0\x48\xf7\x64\x1d\x31\x9b\x86\x29\xda\x31\xd0\x43\x75\xcf\x32\xa6\x4f\x15\xc8\x8f\x24\xa7\xc9\x1c\x4b\x24\x80\x70\x28\x7c\x42\x31\xab\xbe\xde\x79\x44\xd8\xae\xcc\x2c\xa1\xe8\xc8\x1b\x33\xc7\xf5\x65\xa0\xbf\x99\x7d\x07\x73\x72\xa0\x06\x0b\x8c\x81\x75\x2d\xe7\xb1\x2e\x59\x17\x3b\xb5\x71\x9f\x20\x52\xd5\x26\x26\xe7\x25\x7a\xba\xd9\xf9\xb3\x7b\x35\x49\x14\x9f\xd0\x47\x35\x49\x64\x4e\x2e\xef\x6e\x48\x5a\xf2\x45\x77\x88\x43\xa4\x0b\xa9\x4d\xd5\xf7\xca\xde\xf0\x5f\xd3\x47\xc5\x70\xa2\xf7\x66\xa2\x50\xde\x22\x00\x77\xec\xd5\x29\x0a\xe7\x72\x73\xb5\xf3\xc5\x70\x87\xa7\xa9\xfa\x68\xe6\xd8\xf1\x56\x1f\x17\x18\xec\xd9\xa9\x4a\xa7\x3c\x63\xa8\x02\xc6\x93\xb5\xe1\xd4\x16\xd5\x00\xd0\x2f\x65\x45\x1e\x29\x5a\x33\x80\x80\x05\xc5\x58\xf3\xe2\x0d\xb9\x16\xaa\x2a\x59\x6d\x24\x5b\x1d\x6c\x13\x4b\x0e\x37\xc5\x82\xac\x98\x05\xa9\xa7\xb1\x5d\x7f\xa2\x79\x91\x31\xf5\x86\x9c\xb0\x4f\xfa\x0f\x27\x23\x72\xf2\x69\xaa\xcc\xff\x84\x9e\xaa\x93\x09\xb9\xc9\xbd\x0b\x35\x17\x53\x56\x96\x3e\x2c\x1b\x3f\x30\x2c\x79\x4b\x8a\xea\x1e\xf3\xd8\x70\x4b\xe2\x9c\x5f\xc0\x3c\xd4\xad\x49\x23\xbd\xe0\xc8\x77\xee\x40\xa9\xf1\x40\xec\x07\x88\x6e\xa6\xce\x63\x1e\xe5\x2a\x57\xf2\x9d\x2b\xdf\x8d\x01\x1b\x3b\x8e\xa1\x3c\x71\x80\xf2\xd6\x27\xa9\x24\xaf\x52\xb6\x78\xa5\x52\xfa\xc5\x08\xa6\xaa\x6c\x24\x78\x7b\x5d\x54\x91\x93\xb0\xcc\xb5\x77\x8e\x73\x1b\x35\x77\xa2\xee\xc9\x20\x62\x37\x24\xf8\xbd\xbc\x3e\x01\xd1\xc5\x8c\x9d\x50\x41\x32\x46\x17\x56\x9c\x43\x94\xb1\x44\x03\x43\x27\x87\x15\x63\xac\x21\x6d\x83\xcd\x3f\xfd\xbe\x53\xbc\x0e\xd1\xc1\x90\x5e\xd0\xe4\xfa\x76\x56\x9b\xb2\xb2\x19\x98\xa6\xb2\x4c\xbc\xcc\x69\xb5\x34\x4c\x03\x6e\xe0\xa2\x65\xd7\x78\xd9\x17\x36\x2c\xc1\x98\xa3\x22\x07\xf1\x7d\xb4\x7d\x83\x06\x59\xf0\x9f\x2a\x46\x6e\xae\x7c\x3a\x6f\x56\x2a\xae\xb4\x11\x28\xd2\x16\xdf\xc3\x91\x19\x3a\xbb\xc8\xe9\x3f\xa4\x20\xd7\x5f\xde\xd9\x8e\x02\x40\xf1\x45\x23\x48\xfa\x8f\xaa\x64\x86\xc7\xdb\x2b\x6b\xe9\x3a\x5d\xe5\x27\xcd\x73\x72\x45\x35\x45\xb6\xd2\x06\x16\x89\x9a\xe4\x19\xa6\xf0\x9e\x8b\xd4\xfe\xd4\x93\x25\xf4\xc3\x47\xf1\x81\x8d\x69\x9b\xcd\xeb\x5a\xe3\x46\xe6\xcf\x40\x0d\x72\x7f\xa6\xaf\x28\xfe\xef\x00\xdc\x98\x99\xcd\xfb\xae\xb8\x66\xf7\xe2\xb7\x1f\x6e\xf6\xc4\xb5\x25\xc0\xe1\xcf\xde\xc9\x34\x96\x75\x3b\x6d\x7c\xea\x08\xea\xbf\x1a\xb8\xb8\xc4\xe7\x24\x37\x7d\x82\xe2\x6a\x04\xca\x5b\xf2\x0d\xe8\x36\xe1\x9f\x7f\x2b\xb9\x66\x93\xee\x3c\xb4\x11\xac\x83\xdb\xc0\xc8\x65\xb8\xcf\xdc\x12\x9a\x29\x7a\x52\x03\xfd\x80\x5c\x2c\x7f\x70\x9f\xc9\x7b\x62\xaf\xfc\xbe\xe7\xfe\xed\x87\x9b\x1e\x53\xff\xf6\xc3\x8d\x9b\xb9\xf9\xa7\x9c\x1e\x6f\xd2\xc7\x60\xf8\xdf\xae\xf0\xdf\x31\xbc\x58\x9d\xdc\x6a\x95\x8b\xdf\x27\x0b\x3f\x39\x1a\xf3\xde\x2f\xf3\x90\x19\xab\x4b\xe8\xe7\x22\x20\x85\x71\xfb\xf2\x9b\x6f\x08\xfb\x54\x20\x46\x6d\xb8\x4c\xde\xcd\x29\x64\x9d\x76\x09\x2e\x11\xfc\x0c\x3c\x2a\x43\xb2\x1d\x20\x12\x8a\x25\x2e\x0c\x35\x40\x2d\x7d\xfa\xc6\x39\x82\xfb\x2f\x36\x7f\xf0\x0e\x02\x30\xd3\x37\x48\x03\x08\xc6\x63\xa6\x0d\xb8\x3f\x43\x73\x85\xf0\x3f\xd9\xb8\x7b\x4c\x82\xa5\x98\x3e\x9f\xb4\x74\xeb\x0a\xa6\xbc\x57\x64\x74\x14\xc6\x73\xcd\x82\x49\xce\xcc\x6f\xaf\xc0\x3e\x7a\x3e\xa9\x2d\x66\x90\x1d\xa2\xe6\x4d\x03\xc6\x30\x97\xe2\xc3\x93\xb9\xd7\xb8\x44\xb5\x1e\x64\x61\x2d\x5d\x7c\x90\xc1\x0c\x7b\xe7\x83\x4c\xa7\x1b\xf9\x20\xf8\xc1\x15\x3b\x3d\x24\x2b\x04\x03\xf5\x60\x85\xe0\xbb\xde\xac\x90\x41\x90\x2f\x87\x15\xc2\xd4\x81\x41\xcc\x10\x5c\xdd\xce\x37\xc3\xd9\xa1\xa3\xdc\xdb\xf4\x97\x74\x6f\xeb\xc3\x8a\xdc\xb3\xfa\x43\xc7\xc0\xf8\x04\x39\x2e\x25\x7d\x2b\x20\x15\x2f\xe2\x9d\xa5\x06\xb6\x42\x12\xb2\x6b\xe6\xfa\x7d\x15\x90\x5d\x3f\x02\x81\x7b\xc0\x8a\x5d\x95\xfb\xce\x2d\x0a\x89\x14\x3c\x26\x01\x20\x1d\x3c\xc9\x84\x15\xf3\xe9\x5e\xbd\x9c\x4d\x8f\x6f\xef\xda\x66\x9c\x4b\x56\xcc\xc9\xdb\xbb\x0d\x28\x0f\x0e\x07\x96\xa5\xd0\xb8\x73\xaa\x48\xc6\xa7\x0c\x7c\x12\x22\xb0\xde\x25\x8e\xda\x42\x79\xde\x19\xcd\xa1\x38\x5c\xac\x57\xc1\x0a\x49\x32\x29\x66\x86\x39\x08\xab\x75\x73\x00\x24\x95\x4b\xc1\xb5\x2c\x77\x7b\x43\x84\x23\x1e\xd7\xdd\x21\x10\x8f\xeb\xdb\x6c\x5d\x5d\x16\xe4\x5d\xe3\x29\x25\x89\xcc\x32\x96\x68\x5b\x2b\x0b\x8e\x3d\x68\x85\xd8\x36\x28\x4d\x98\xd5\x59\x4e\x1e\xfe\x08\x6a\x13\xab\x20\x79\x85\x47\xf9\xea\xc3\xf5\xc5\xd5\xbb\xeb\x49\x9e\xfe\x7a\x2e\x1f\xc7\x5a\x8e\x2b\xc5\xc6\xbc\xbb\xe4\xc6\x67\x1c\x9d\x49\x30\x59\x47\x40\xa5\xaf\x36\xab\x5d\xd8\x22\x65\x2e\xdf\xef\x1b\xf2\xad\x42\xef\x0d\xef\xb9\xc3\x52\xb0\x66\x8f\x48\x49\x6d\x1a\x50\x8a\x57\x75\x5a\x65\x19\x9e\xa6\xb9\x47\xa3\xa6\x3e\xfa\xd5\xe7\xc7\xf0\xb6\x36\xe1\xc5\x73\xbf\xc7\xbf\x16\x31\x14\xbb\x9b\x7f\x26\xbd\x0e\xab\xee\xbd\x7d\x5c\x77\xad\xe7\x68\xa5\xd0\x73\x73\x78\x0f\x6c\x49\x20\xa8\xdb\x30\xb6\xdf\x2a\x56\xb6\xc1\x94\xe9\x04\x76\xe7\x55\xa5\x58\x39\xc1\xee\x5f\xe0\xde\x87\x71\x15\x61\x49\xb1\xc9\x13\x76\xfe\x03\x9b\x6e\xda\x78\xfb\xb8\x2e\xed\x6d\x39\x7f\x5a\xe9\x39\x13\x9a\xdb\xec\x96\x96\xf3\xda\x78\x12\x01\x55\x98\xb1\x1d\x7b\xeb\x03\xab\x35\xc5\xd5\x56\x1a\xea\x11\xd5\x6d\xa8\x47\xf4\x32\xea\x11\x3d\xa5\xc8\x9a\xc1\x9e\x87\xc0\x3a\xa6\x5f\x48\x14\xd7\xe4\x4e\x7c\xea\xab\x92\xa6\x52\xe1\x3b\x58\x67\xb7\x81\x4f\x68\x9a\xf3\x6e\xad\xd0\x0b\xc4\xe4\x09\x17\x69\xd7\x66\x46\x8a\x5e\xd0\x63\x5b\xf4\xb2\xcf\xac\x21\xde\x3b\x71\x51\xa7\x65\xc2\x04\xe3\xd6\x61\xab\xed\xaf\x15\x25\x7f\xe1\x30\x71\x2a\x27\x3b\xb7\xde\xfa\x26\xfc\x1e\x34\x4e\xb2\x60\x06\x91\x24\x0f\x13\x59\xce\x9e\xe6\x80\xb5\x0a\x15\xf9\x52\xfd\x94\x8d\x71\xac\x71\x91\xd6\x60\x71\x6c\x59\xf1\x17\xe2\x69\xf5\xf2\x8c\x2f\x2f\xc2\x7f\x6a\x3f\x60\x47\x5e\xa0\xbc\xf5\xe2\x15\x95\x47\x39\x8f\x18\xa9\xea\x18\xac\x7d\x4d\x69\x0b\xc9\x6d\x74\xb4\x2f\x7b\x8a\x78\xcb\x69\x4d\xcd\xa6\x16\xb4\xa4\x39\xd3\xac\xc4\x28\x4c\x1b\xf5\x29\x42\x38\x66\x08\x11\xfd\xa6\x60\xe2\x0e\x10\xf4\xc0\x8e\x6f\x6e\x03\x3b\xbe\xa3\x0d\xec\xf8\xc6\x76\x14\xb7\x39\x77\xdf\x79\x6a\x44\x7c\xeb\x1c\x5a\xc7\x64\x58\x2e\xec\x65\x60\xd9\x6e\xae\xdb\xd5\x6e\x8b\x60\xbc\xfd\x37\x2b\xac\x75\x5d\x4b\x11\xad\x18\x10\xed\xe4\xeb\x91\xc2\xed\xc1\x6d\xda\x0f\xa7\x18\x8e\xea\x2c\xf8\xf5\x70\xc7\x0a\x82\x8c\x46\xf7\x6d\x4a\x92\x9b\x27\xf7\x5c\xd7\x34\x42\x31\x4d\x0a\x56\xe6\xdc\xe6\xc7\x95\x82\x24\x36\x6e\x10\x38\x3a\xc3\xbd\xd9\xee\xa2\xf8\x41\x41\x64\xa2\xa9\xcd\xea\x44\xee\x99\x7e\x64\x4c\x90\xd7\xaf\x5f\xbf\x06\xd1\xe6\xf5\xbf\xfc\xcb\xbf\x10\xc8\x35\x9e\xb2\x84\xe7\xeb\x2f\xc2\x5b\xff\xeb\x8b\x2f\x42\x06\xfd\xb7\x8b\x77\x5f\x43\x9c\x51\xa1\x15\xb9\x97\x7a\x6e\xc7\x36\x5d\xb4\xba\x57\x23\xf2\x7f\xef\xbe\x79\x5f\x17\x8a\x69\xff\x0a\xf2\x8f\xdf\xa2\x90\x91\x9b\xca\xe9\xd7\xff\xfc\x87\x3f\x04\x7d\x03\x42\x92\x2c\x21\x98\xbb\x0e\xda\x2b\x5c\xb8\x99\x90\x7a\x3d\x55\xb3\x65\x9d\x82\x8b\xc8\xe5\x7c\x36\x87\x83\x30\xf7\x5f\x8a\x69\xc6\x13\x8d\x44\x02\x13\x3f\x20\x48\xd8\x72\x21\xd4\x66\x5d\xb3\xb2\x40\x90\xa9\x29\x65\x23\x92\xf1\x07\x46\xa6\xea\xaf\xa5\xac\x8a\x3a\x37\xa2\xad\x5e\x91\x50\x61\xc6\xc7\xe1\x6a\xb8\x53\x2c\x38\x23\xeb\x21\x3c\xc5\x03\x6d\x45\xf1\x57\x0e\x3a\x5e\x11\x34\x46\x58\x93\xf1\x81\x2d\xc7\x08\xdd\x05\xe5\x3e\xec\x0d\x5c\x6e\x91\x9b\x68\xf3\x23\x49\x50\x79\xe8\xba\xc4\xa5\x8b\x89\x2e\x4a\xf9\x77\x04\x1a\x2e\x5c\xda\x31\xab\x54\x50\x56\x3e\xb3\xb9\x30\x45\x6d\xb7\x0e\x18\xc9\xe5\x74\x36\xbc\xa6\xcd\x26\x5d\xa7\x34\x23\x37\xd3\x66\xe0\x31\x24\x35\xe6\xca\x4c\x02\x2a\x35\xdb\xb9\x05\x8c\xb2\x61\xf6\xbe\x5f\xb8\x1b\x0a\x21\xac\x12\x6b\xfd\x63\x38\x79\xd0\x18\x40\x1a\x60\xd2\xd4\xa5\xae\xab\x47\xc1\x50\x59\x1b\x4d\x6d\xdf\x75\xa7\xe5\xb7\x3b\x38\xe7\xad\x8d\xb0\x65\xba\xb2\x47\x84\x11\xec\x95\xc8\x98\x52\x36\x42\x3b\xa7\xe5\x03\x4b\x3d\x7e\x9e\x40\xd8\xb3\x0a\xcc\x20\x46\x5c\xee\x6d\xbe\x40\xd7\x88\x9c\x2e\x5b\xd9\x6f\xcc\x34\x4e\x27\x93\x53\x44\x2d\xb2\xc4\x80\x7b\xc4\x02\xe6\xf9\x33\xe5\xc8\x6d\xdd\x2d\x28\xce\x4c\x5d\x9e\x63\x48\x5c\x28\x21\x7d\x5c\x1d\xd1\x4c\xed\x5e\x86\xe0\xbe\x28\xc9\x24\x5c\xb5\x83\x2d\x24\xbf\xb8\x7b\xb3\xd8\x9d\xa3\xc9\xb5\x38\xe1\x28\x30\xdb\x38\xb6\x6d\x39\xc7\xed\x1e\xdb\xfb\x16\xca\xde\x47\x33\xd8\x79\x10\x6b\xb3\x61\xaa\xc1\xa2\x1c\x8e\xd1\x36\x82\x05\xf1\x37\x36\x75\xc2\xae\x7a\x80\xab\xed\x59\xd8\x1a\x6c\xcf\xc7\xdc\x60\xbb\x99\xae\x66\x97\x68\xa0\xb7\x26\xa3\xe9\xe8\x50\x48\x0e\xa8\xba\x1d\x83\x5b\xc1\x76\x60\x9e\x05\x5b\x1c\xe7\x82\x2d\x86\x7f\xc1\x16\xe6\x5e\x82\xad\xef\xe5\x72\xee\x28\xb8\x3d\x96\xcc\x20\x25\x99\xfa\xcd\xc7\x0c\xae\x45\x03\xb1\x44\xdc\x29\x4b\xae\xf0\x5a\xd1\x7b\x25\xb3\x4a\xe3\x10\xf1\x9d\x34\x69\x1e\x4c\xd2\xa5\x04\x0f\x23\x74\xab\xdd\x35\x28\x25\x70\x22\x48\x9e\x62\xfa\x3a\x9e\xaf\xd1\x50\xc4\x7a\x28\x62\xbd\xa5\xbd\xac\x22\xd6\xee\x33\x1f\xc3\xbc\xb9\x64\xbf\x2c\x89\x41\xba\xc0\xdf\xbf\xa4\xe2\xd6\xd8\x12\xc5\x63\x14\x53\x8a\x93\xb3\x4b\x9f\xf1\xc4\x79\x35\xdf\x08\xcd\xca\x29\x4d\xd8\x79\x53\x61\xc5\x8a\x39\xcb\x59\x69\x36\xc8\xbe\xe7\x52\x7b\xd8\x84\x6e\xe4\x7e\xe9\xe0\x8f\xb0\x4f\x9a\x95\x66\x33\x6b\x53\xea\xf1\xeb\xed\xe0\xb8\xfb\xd2\x89\x41\x67\x07\x51\x87\x41\xcf\xad\xf2\xa0\x16\xaf\xd5\x9b\x87\x7b\x8d\x1b\xad\x9a\xaa\xc1\x90\x1b\x7e\x29\x05\xf0\x0f\x80\x62\x96\xb2\x2a\xd1\xe9\xc1\xdb\xd3\x13\x59\x96\x86\x67\x81\xa1\xa9\x22\x25\x9b\x19\x21\xb6\xc4\x02\xca\xf0\x46\x56\x99\x07\x7b\x8d\x0e\x3b\xb8\xfd\xd8\x1b\x8a\x77\xc4\xc7\x05\xf4\x66\x39\xcc\xa2\x94\x0b\x9e\x3a\x06\xb3\x89\xa5\xb9\x22\x05\x55\x8d\x7c\x34\x54\x29\x99\x70\x50\x52\xd6\x27\x18\x30\x12\x4a\xf8\xc0\xa8\xfa\x2c\xab\xad\xfc\x0d\x4d\x23\xb6\x84\x7c\xf9\x01\x9e\x70\x11\x47\x22\x64\xca\x6e\xab\xfb\x8c\xab\xf9\xdd\x21\x0d\x89\x9b\xc6\x41\x07\xf0\x35\xcf\xc0\x6d\x06\xc5\x20\x73\xa5\x50\x1c\xf8\x42\x43\xdd\x0c\x13\xcb\x8d\x78\x25\xe1\xb4\x5c\xff\xcd\x2b\x26\x81\xc6\x67\xcc\xe6\xea\xbb\xbc\xdb\x1d\xde\x8c\xed\x7d\xbd\x16\x9b\x81\x0a\x2b\x32\xa4\xec\x5b\x51\xb4\x9e\x27\x34\xdb\x5e\x89\xae\xd9\xda\x2c\x8a\xa3\x4b\x28\x0e\xb8\xbc\x55\x08\x80\xdc\xc0\xa6\xdb\x23\xde\x28\xae\x69\xb3\x70\x07\x1b\x75\x57\x36\x58\x91\x5c\x62\x02\x1a\x01\x75\xa2\xf1\x25\x28\x4e\xe1\x3e\x68\x64\x4d\x83\xe4\xbf\x70\x03\x06\xe3\xec\x96\x36\x18\x67\x77\xb4\xc1\x38\xbb\xb1\x1d\xc5\xb9\xa6\xce\xdc\x4b\x1b\x49\x56\x5b\xb5\x66\x3d\x9f\x10\xce\x71\x74\x44\x45\xec\xd5\xe5\x05\x67\x75\xa1\x75\xc9\xef\x2b\x7d\xa0\xf2\x77\x2b\x63\x00\x0b\xcc\x94\xa5\x1c\x63\xbb\x89\x49\x03\x61\x59\x65\x90\xc7\x8c\x0d\x7a\x13\xcc\x12\x4e\x3c\xe7\x06\x4c\x1b\x3e\x3c\x55\x24\x95\x49\xe5\x0b\x12\xc3\xe9\xd4\xde\x6c\xa1\xf5\x0a\xa3\xf0\x70\x7c\x39\xaf\xe6\x20\x9d\x57\x2b\x95\x8f\xc2\x60\xbb\x8b\xdb\x8e\xdc\x13\xed\xbc\x13\xf5\x57\x4d\x31\xc5\x3d\x26\xe6\x39\xbd\x97\x95\xf6\xd9\x7d\xff\x87\x99\xd9\x37\xe9\x9d\xb5\x24\x95\x62\x3b\xcd\xe8\xb5\x36\xb9\xe7\x18\x83\xed\x7e\xb0\xdd\x0f\xb6\xfb\x6d\xad\x75\x8f\x6f\xd0\x2c\xdf\x2c\xfa\xdc\xc2\x5f\x2e\x55\x72\xc8\xd6\x1d\xde\x1a\x7a\x55\x63\x5c\x14\x69\x56\x13\x55\xac\xc8\x59\x78\xdb\x6b\x6d\x7c\xc3\x1d\xd4\xa1\x64\x60\x89\x9f\xdf\x72\x7a\x20\x7b\x28\xac\x2e\x48\x86\xc6\xd6\x8e\xb8\xad\x83\xa4\xb1\x94\x3b\xba\x49\x34\x3c\x32\x0a\x99\xbe\xc1\xaa\x9e\x54\x08\x89\xec\x80\x1a\xd9\x92\xe7\x23\x1b\xea\x02\x8c\x70\x41\x13\x94\x4b\x2b\x9e\x02\x26\xa8\x23\xd6\xbb\xe3\x6f\xb1\x45\x9e\x00\x89\x3e\x05\x02\x27\x01\x0b\xec\x28\x21\xd4\x6c\xb1\x47\x62\x1a\x2d\xf8\x77\xac\x54\x41\xf9\x3d\xeb\xd6\x4e\x36\x8d\xdf\xbb\x93\x50\xc9\x9c\xe5\x14\xfe\xf9\xd6\x2d\xc0\x5c\x6b\xc3\xef\x6a\x86\x89\x3d\x59\x99\x1b\xc1\x6b\xd4\xf2\x67\x3f\x59\x84\xe5\xc5\x74\x2d\x5a\x58\x21\x0e\x0c\xbb\x53\xe0\xef\x58\xee\x6d\xcb\xb0\x66\x40\x10\xe8\x7b\x86\x85\x32\x57\xdc\x61\x00\x71\xe1\xfe\x1c\x78\x69\x4f\x91\xae\xb0\x1d\xc3\x0f\xa0\xaf\xfd\x7f\xe4\xed\x0b\x6d\x96\x27\x78\xe0\xc1\xfe\x3f\xd8\xff\xdb\xed\x85\xdb\xff\x1b\x24\xcf\x61\xd0\x0d\x06\xfe\xa6\x85\xc4\x59\xf9\xef\x99\x93\x2d\xac\xfc\xe2\x4c\xf7\xce\x6e\x2f\xcb\xb6\xe3\xd9\xe9\x64\x72\x8a\xae\x67\xb5\xc0\x53\xe9\xe9\xf8\x8f\x84\x89\x44\xa6\xa6\x9f\x8f\xd0\x7f\xa9\x34\xb0\x4b\xb5\xe6\xaf\x39\x97\xdc\x8d\xd5\x74\x5e\x83\xbe\xe3\xe8\x6a\x04\xda\x73\x19\x66\xdf\x3e\x85\xb9\x88\x40\x5f\x35\xf3\xe1\x73\xdb\xda\xad\xf0\xb5\x12\x2c\x17\xe2\x7e\x57\x24\xe3\x39\xb7\x75\x61\xcd\x7d\x67\x4a\x87\x2a\x2e\x09\x39\xc3\x8f\x27\x49\x51\x8d\x6c\x47\x93\x9c\xe5\xb2\x5c\x8e\x7c\x67\xe6\xc7\x56\xef\xf6\x0d\xac\xda\x91\x54\x65\xc9\x84\xce\x96\xa1\x89\x79\xea\x76\x24\x2e\xc7\xed\xd4\x01\x99\x1c\x7f\x38\x61\xe9\xa3\xea\xd6\xbe\x91\xb5\x75\x18\xd4\xeb\x7e\xb5\x58\x96\x17\x03\x9e\x47\xb5\xed\xdc\x3c\x65\x62\x41\x16\xb4\x54\xa1\x37\x80\xf4\xe5\x6b\x52\xbe\xe0\xaa\xab\x72\xf2\x8e\xc5\xdd\x79\xdd\x27\x94\x1c\xac\x74\x51\x69\x8b\xee\x1c\x88\xbb\x4a\x13\x1e\xb4\x57\xd8\xb7\x2f\xba\x55\xc0\x75\x2b\xa8\xd6\xac\x14\x6f\xc8\x7f\x9c\xfd\xfb\xef\x7e\x1e\x9f\xff\xe5\xec\xec\xfb\xd7\xe3\xff\xfd\xc3\xef\xce\xfe\x7d\x02\xff\xf8\xed\xf9\x5f\xce\x7f\x76\x7f\xfc\xee\xfc\xfc\xec\xec\xfb\xaf\xde\xfd\xf5\xe3\xed\xf5\x0f\xfc\xfc\xe7\xef\x45\x95\x3f\xe0\x5f\x3f\x9f\x7d\xcf\xae\x7f\x08\xec\xe4\xfc\xfc\x2f\xbf\x89\x98\x24\x15\xcb\x6f\x82\x71\x0a\xb6\x71\x2f\xba\xd2\xfe\x36\xf2\xe8\x57\x78\x3f\x2e\xf4\x58\x96\x63\xec\xe4\x0d\x64\x41\x0f\xee\xca\x1d\x6d\xff\x3b\x52\x53\xad\xba\xea\x89\x63\x8f\x0f\x7c\x09\x9e\xc6\x01\xf7\x76\xec\x02\x53\xd1\x15\xdf\x6b\xf6\x01\xd7\x67\x3b\x48\x4a\xb3\xbc\x90\x25\x2d\x97\x24\xb5\xca\xad\xe5\x93\x92\xbe\x3d\x31\xb1\x3a\x4c\x32\xe5\xbb\x61\xfc\x00\xaa\xe2\x9c\xa5\xbc\xca\x0f\x92\x96\x0d\x7a\x6e\x6e\xfa\x23\x94\x1d\xb1\x45\x4d\x9c\xaf\x8f\x7d\xcd\x95\xe4\xa2\xc9\x03\x0a\x2a\xfe\x54\xc2\xf4\x87\xad\x5a\x14\x27\x27\x2b\x35\xbe\x41\x37\x0d\x4e\x30\x32\x65\xa7\xca\xbf\x8b\x83\x47\x2a\x89\xd1\x9c\x69\x7d\x23\xcf\x6c\x57\xe7\x86\x11\x7c\x07\xbc\xc2\x11\xd2\xf0\x07\x41\x0b\x89\x4c\xde\xc4\xff\xc1\xbe\x36\x5c\xd1\x41\x22\xbc\x5d\xe7\xbe\x22\xb8\x04\x61\xce\x26\x5e\x9c\x92\x4c\x26\x0d\x07\xb0\x16\x33\x00\xe0\x70\xed\x2e\x71\xb8\xad\xd0\x00\x85\x19\x17\x79\x3d\x50\x86\x66\x0a\xbd\x5b\x78\x02\x05\xda\x40\x34\x84\x33\x8b\x80\x04\xd3\x6d\x4e\x3f\xf1\xbc\xca\x49\xa5\xcc\x6c\xa5\x68\xf7\x52\x4f\xf6\xd1\xd5\x99\x83\x54\x76\x5c\xc0\x47\x2d\xd1\x38\x44\x45\x39\x67\xe4\xce\xef\x5f\xad\x0e\x41\x53\xba\x95\xe4\x54\x05\x82\x84\x9d\x87\x65\x93\xe5\x14\x1c\x2b\x3c\xc7\xa6\x7c\xa9\xb2\x1e\x97\x4a\xf0\xac\x7d\xab\x5c\x11\x21\xbf\xbd\x95\xb0\xfe\x8a\x2f\xe9\x06\xbc\x60\xde\x28\x98\x23\x8a\xe7\x83\x22\xb9\x9f\x27\xf0\x3c\xde\x7b\x73\xaf\x24\xdb\xbb\x84\xb6\x68\x76\xb3\x7e\x51\xdb\x3d\x94\x3a\x4f\x42\x8f\x42\xc2\xd2\xec\x7c\xf4\x3a\x1d\x4b\xea\x93\x65\x62\x53\xf8\xf1\x56\x1d\x38\x1c\x14\xe1\x1b\xc2\xd8\xc6\xe6\x3f\x4e\xf7\xe3\xcc\x8f\xf7\x6c\x8a\xee\x4d\xf8\x0d\xc8\xee\xaa\x2b\x74\x0e\x35\x5a\x19\xd3\x10\x8b\xc7\x7c\x75\x40\xf4\xbb\xca\xe5\x22\xa0\x80\xf0\xb7\xca\x1a\x9c\x79\x27\x40\xd1\xf3\x56\x9c\xbc\x42\x11\x5b\x30\x96\x62\x2c\x60\x56\xcf\xbf\xac\x44\xe7\xec\xef\xcf\xc9\x94\x51\x5d\x95\xe8\xfd\x23\x8c\x94\x93\x39\x01\x0e\xd5\x4e\x25\x33\x87\x02\x29\x10\x4b\x99\x13\x25\x68\xa1\xe6\x52\x83\xea\x84\x16\x34\xe1\x3a\x20\xbc\x4c\x97\x34\x79\x80\x1a\xcb\x25\xb3\xb3\xed\x9a\x5a\x72\x6e\xa3\x18\x9a\x10\xd1\x8e\x7d\xd4\xf3\x52\x56\xb3\x39\x84\xe2\xe1\x5b\x49\x46\x15\xc6\x5c\x76\x19\xd9\x37\xf6\x6e\x15\x03\x8a\xa4\x4b\x41\x73\x9e\xf8\x4a\x53\xa5\x5c\x70\xc5\xa5\x35\x52\xc1\xa8\xdd\x8b\xa6\xe4\xd6\x97\x01\x42\xcb\xd8\x65\x46\x79\x4e\xce\x14\x63\xe4\xda\x5d\x12\xfc\xe5\x0e\x05\x04\x54\x77\x86\x38\x58\x35\x8d\x6a\x36\xf5\xb1\xcd\x9c\x62\x9e\x38\xd5\x6d\xc3\x8d\x21\x24\x21\x96\x85\xe7\x8d\xd3\xee\x2e\xf0\x6b\xc0\x78\xf3\x8a\x65\x09\xfe\x82\xae\x1a\x1e\x13\xa9\xac\xdd\x63\x3a\x7a\xbd\xb8\xbd\x51\x4d\xb5\x02\xde\x65\x5b\x60\x09\x7e\xb0\xe9\x96\x7d\x5e\x59\x8f\x09\x3a\x7a\x36\x04\x56\x40\x21\xe6\x05\x4f\x2b\x9a\x21\x69\x0d\x58\xe4\xe5\xdd\x0d\x0e\xcc\x67\x73\x3d\x7e\x64\xa0\x08\x46\x1e\xa8\xc6\x7d\x6e\xba\x7c\xcd\x69\x9b\x2b\x20\xc2\x01\x35\x98\xad\x62\x1a\x97\xfc\x48\x97\x90\x7f\xde\x3a\xff\xb6\xbc\x7d\x5c\x4d\x18\x1c\x60\x2a\xbb\xa8\x4c\xee\xe8\xb7\x05\xa1\xce\x65\x5f\x00\x4a\x49\xa8\x00\x66\x1c\x34\xfa\x06\x9e\x00\x6b\xac\xaf\xb9\xfb\xfe\x35\x0a\x64\xf9\x8f\x90\x21\x51\xd4\xc0\x6a\xa7\xcc\x76\x00\x69\x6a\x51\x43\xec\x47\x96\x17\x19\xd5\x07\x71\xc0\xf9\x5b\xc3\xe4\xd0\xb0\x87\x1b\x24\x46\x45\x3a\xa6\x99\xb9\x2a\xb7\xdf\x5d\xda\x80\x57\x44\x3c\x91\x9e\x76\x1f\x1d\x11\x12\xbe\x96\xb2\x61\xc3\x37\xe2\x1c\xc8\x9e\x7a\xcf\x52\xa0\x20\x76\x6e\x61\x4e\xc2\xf2\x51\xb0\xd2\xc1\xde\xed\x77\x97\x23\xc2\x27\x6c\xe2\xfe\xf2\x9d\x39\xf2\xa8\xe5\x0c\x43\x67\x5c\x88\x5a\x88\x6d\x5d\xa6\x13\x5c\x4e\x53\xbf\xdf\xec\xfd\xc7\x3f\x99\x85\x9a\x5f\xff\x3c\xfe\x53\xa3\x76\xe1\x9f\x7f\x34\xf4\x38\xc8\x57\xf5\xc7\x95\xef\x9a\x31\x17\x40\xf4\xcc\x5f\x3f\xde\xda\xb2\xc5\xb6\xa8\xf1\x8f\x81\x4e\x15\x84\x30\xa1\xcb\xe5\x84\xdc\x4a\xf0\xc3\xe3\x29\x5e\x59\x98\x7f\xc9\xfe\xee\xcc\x42\x70\x5c\x5e\x83\x9e\x50\xcd\x04\x70\x25\x3b\x2b\x00\xd7\xcd\x66\x00\x80\x01\x00\x39\x51\xd8\xa5\x33\x50\xbd\x62\x3a\x9c\x11\xd1\x12\x93\xd3\x77\xe3\x72\xd3\x2e\x04\x61\x9f\xb8\x82\xec\x67\xb8\xe3\x70\x6c\xd4\x86\x84\x38\x46\xce\x0c\x6b\x20\xc1\xe7\xcc\x2b\x64\x88\xef\x06\xac\xff\xb7\x42\xea\xdf\xfa\xcb\xe0\x3c\x4a\x81\x63\x93\x84\x2e\x24\x77\x35\xb6\x0d\xe2\x11\x60\x64\x09\x4a\x34\x61\xcf\xf3\x7e\x49\x72\xae\x34\x7d\x60\x13\x72\x67\xd8\xb9\xa6\x93\x09\x9e\xb2\x20\x50\x0b\x8f\xa5\xa4\x12\x9a\x67\x81\x12\x9d\x9f\x0b\x6c\x4c\x83\xd5\x83\xd4\x12\x55\x62\x78\x92\xa2\x64\x63\xc7\x5a\xe2\x5b\x41\x7a\x17\x5b\xd5\xd3\xed\x49\xbd\xa7\x23\x0f\xfa\x73\x8a\x6a\x91\x22\x85\xce\xad\xa7\x76\xf0\x85\x5d\x8b\xa6\x30\xbb\x21\x45\x52\xb3\x8e\x70\xec\x6a\x42\xde\x03\x3f\x98\x85\x00\x39\x3a\x8d\xa1\x1e\xc8\x5a\xd9\x04\x4b\x98\x52\xb4\x5c\xa2\x13\x3b\xf7\xd5\xb5\x2b\xc5\xa6\x55\x06\xec\x72\xc8\x96\x50\x81\x95\xcc\x4b\x96\x48\xa1\x74\x59\x25\x70\x8e\x94\xdc\x97\xf2\x81\x89\x3a\x0c\x29\x08\x31\x36\x3d\xee\x6b\xd7\x66\xc3\xf6\x08\x49\x92\x39\x15\x33\xe6\x53\x80\x90\x9c\xa6\x00\x45\x5f\x79\x01\x2b\x64\x2b\xa4\x3f\x29\x3a\x35\x52\x0d\xd7\x70\x64\xf7\x86\x23\x73\xf6\xc8\x90\xc9\x7e\xf0\x41\x00\x79\xc3\x78\x29\x78\xb6\x67\x47\xde\x18\x5b\xd5\x18\xf8\xef\x6e\xc1\x3d\xca\x36\x95\x33\x4d\x53\xaa\xe9\x21\xe3\x34\xde\x51\x5f\xc6\xdd\xfa\x42\xc1\xa1\x37\x7c\xa4\x2c\x9b\xe5\xa4\x42\x59\xf0\x66\x62\x97\xdb\xef\x2e\x03\x47\x02\x31\x10\xce\x19\xf2\x46\x6a\x73\x8f\xac\x79\x1e\x20\x0f\x43\x63\x5c\x2c\x86\x99\x84\x1b\x13\xc9\x01\x4b\x49\x5a\x45\x68\xfb\x6b\xa2\x12\x66\xcf\x8c\xb4\x66\x9a\xf3\x3e\xe4\xc1\x7c\xac\xdd\x84\x92\x76\x64\xc1\x46\x61\x02\x2d\xf0\x4c\x68\x5e\xb2\x46\x7a\x9f\xc0\xc1\xec\xa9\x56\x02\x6f\x7a\xfb\x7c\x11\x00\x66\x4c\xab\xda\x25\x19\xc9\x7f\x70\xff\xda\x32\x8e\x38\x4b\xe0\x65\xdd\x99\x5b\xfd\xdd\xc6\x45\x05\xf6\x8e\x70\xa3\xa4\x25\xf3\x86\xbd\x39\xc8\x91\xf7\xb1\x2d\xd3\xc4\x60\xfb\x77\x32\x8d\x31\x47\xf7\xf5\x3e\x68\x0d\x57\x87\xa7\x61\x54\xa4\x02\xe5\x33\xbe\x00\x0e\x31\xaa\x95\xdc\x08\x69\xd4\x9c\x2e\x22\x52\xa9\xf4\xd6\x78\xd6\x72\xce\xd8\x57\xe1\x85\x89\x8d\x61\x62\xe3\x2f\x82\xa7\x10\xe3\xc8\xeb\x5a\xb0\x43\x6f\x7b\x90\x48\xab\xeb\x93\x12\x41\xb8\x66\xd0\xff\x5d\xa4\xc5\xb5\x3f\xf4\xd4\xa3\x59\x66\xc0\x3a\x51\x79\x07\x3c\x1b\xec\xcf\xb8\x41\xdb\x31\x3b\xf8\xdb\x16\xdb\x6c\x05\x2d\xaf\x33\xc3\x70\xca\x33\xa7\x44\x9b\x58\x30\x71\x79\x2a\xdb\xaf\x9f\xf7\x1e\x16\x38\xff\xcd\x5a\x9c\x88\x3e\x6f\xac\x3f\xb1\x93\x41\x8d\xac\x57\x82\x0d\xcd\x85\xf1\x9b\x8b\x57\xca\x2c\x63\x25\x6c\xa0\x55\x9f\xad\x38\x7e\x42\xed\x4b\x34\x80\x87\xe4\x21\x73\xcd\x29\x68\xbd\x78\x2c\xd8\xa3\xe7\xeb\xa9\xc2\x0c\xf3\xce\xdf\x08\x54\xcc\xce\xeb\x76\xd3\xc8\x31\x57\xfd\x6f\x4e\x8d\x7b\x21\x96\xb8\x75\x57\x0d\x70\x41\x75\x29\x99\x99\x49\x19\xd1\x59\xd0\xfb\xcc\xb0\x68\x0d\x90\xf2\x33\x5a\xe1\x25\xb4\x6c\xbc\xf5\x81\x4d\x63\xb6\x03\xf4\xcc\xcd\x8f\xc3\x46\x41\x66\xa4\xf5\xe1\xa4\xf6\xfd\xb6\xd2\x5b\x54\x92\x71\xd7\x2c\x74\xb4\x3a\x6b\xfb\x5b\xae\x8c\xdb\xcc\x7b\xb7\x71\xae\xe1\xa3\xf7\xf0\xc7\xea\xe3\x91\x05\xd9\xd3\x78\xa7\x2e\xab\xfd\x41\xa0\xbc\x8e\xad\x8f\x0b\x17\x78\xaa\x83\x2b\x68\x9c\x3f\x4e\x7f\x6c\x49\x50\x0d\x0b\x63\x3a\xe5\xc8\x0c\xfe\x70\x9c\x9a\xf7\x70\xb9\x67\x06\xff\xd4\x49\x21\x63\x20\x8a\x20\x54\x35\x47\xda\xe0\xc4\x5b\x5f\xef\xaf\xa0\xa8\xa9\x35\xed\xbb\x94\x14\x86\x4c\x5f\xdc\xde\xe0\xfc\x62\x47\x7f\x0b\xf8\x6d\x69\x99\x75\x3d\xe7\x65\x3a\x2e\x68\xa9\x97\xa8\xec\x1c\xb5\xe6\xe6\xa3\xea\xa3\x06\xe9\xe9\xd7\x14\x56\x06\xb9\xd9\x5a\xc7\x0d\x5b\xe5\x8c\xf7\xd6\x87\x63\xeb\x99\x1d\x63\x3d\xe1\x51\xf9\x1b\xd7\xd3\x2c\x62\xe9\x14\x83\xcf\xb8\x9e\xa7\x47\x1c\x90\x36\xae\x3c\x2e\x0f\x64\x90\xb3\x6a\x7b\x3d\x22\xa3\x02\xd2\x8f\x55\x20\xcb\x66\x70\xac\xe7\xa6\x41\xf7\x64\x7a\x1a\x11\x3e\x35\x44\x5a\x8a\x31\x58\xf7\x23\x26\x52\x1b\x33\x2d\xef\x3e\xb1\x0e\xf6\xa8\x2d\x82\x0b\xd9\x98\x4f\x63\x90\xfa\xa6\x93\x33\x21\x43\x94\x49\xae\x01\x9e\xc0\x5e\xcf\x31\xf6\x61\x8b\xe5\xea\x3e\x26\xe1\x24\xa9\xb9\x87\xa6\x9a\xa9\x81\xc1\x1c\x03\xc3\x45\x6a\x80\x14\x48\x22\x28\xa0\x54\x95\x24\x8c\x79\x15\xb0\xbd\xa4\x31\xac\x7b\x0b\x37\xda\x0d\xcb\xa9\x4e\xe6\x4c\x11\x25\x21\xab\xba\xd2\x34\xcb\x58\xea\xcd\x9a\x78\xa0\x12\xf8\x3a\x6b\xf2\x8c\x18\xb1\xc1\x18\xc6\x6c\x50\x43\x05\x67\x75\xe0\x45\x46\xad\xf2\x71\x5a\x89\x04\x7d\x86\xb9\x5e\x7a\xab\xd6\x2a\xb3\x0e\x7a\x1b\x05\x7a\xd6\x18\x86\x72\x8a\x76\xab\x86\x0e\xc6\x03\x12\x90\x96\x25\x12\x13\x23\x19\xd6\x96\x28\x9b\x31\xd8\x50\x06\x9f\x7e\x23\x0a\xce\x1a\x89\x3a\x46\xc8\x8d\x35\x59\x26\x71\xda\x74\x0a\xe2\xa2\x3f\x83\xd8\x5c\xdb\x59\x63\xcb\xd6\x18\xc7\x73\xcf\x30\x2a\xe6\xcb\x81\xab\x18\xae\x85\x58\x2f\x28\x5a\x69\x99\x53\xcd\x13\x50\xcf\xf2\x69\xc3\xc8\x9b\xfb\xa2\x7c\xde\xc9\x09\x89\x2a\x10\x75\xbb\xeb\xd1\xd7\x6a\x33\xb3\xf9\xa4\x6d\x6b\xec\x94\x3d\x8d\xf6\xa6\xb8\xa5\x36\x58\x8d\xe8\xb9\x7f\x74\x79\x53\x88\x9e\x97\x8c\x11\x9e\x1b\x31\x89\x0a\x4d\x52\x3e\xf5\xf9\x72\x9c\xcd\x7e\xd7\xd9\xc5\x49\xa2\x7f\x03\x7f\x90\x46\x7f\xa8\xea\xce\x32\xf9\xa8\x88\x7e\x94\x5e\xed\x56\xdb\x72\x6d\xbe\x94\x51\x7b\xd8\x28\x0a\x6a\xfb\x37\x68\xdb\x9c\x74\x03\xd3\x8e\xcc\xad\x7d\x64\x59\x66\xfe\xbf\x0b\xdf\x46\x44\x7a\x6d\x5c\x27\x9f\x09\x4c\xc4\xc1\x95\x53\xb3\xda\x78\xb2\xb3\xb4\x94\x45\x61\xcd\x40\xf9\xf9\x53\xd6\x09\xae\x4d\xe5\x82\x29\x70\xd3\x73\xd1\x6c\xe6\xc8\x66\x4c\xb0\x92\x6a\x30\x84\xdb\x0c\xda\x40\x1c\x57\xa7\x13\xae\xb6\xc4\xd6\x4b\x4e\xeb\x00\x03\x74\x5b\xd8\x7c\xec\xee\x1d\xfb\x6b\xd4\x5c\xb9\x40\x08\x70\x37\x36\xea\x48\xcf\xbe\x64\x9a\x9e\x93\x6f\x15\x1e\x94\xa7\x17\x3e\x4a\x30\x48\x3a\xb7\x59\x8e\x50\x40\x8f\x1a\xfe\x22\x2b\xe6\x8d\xf1\x9b\x52\xae\x0f\xb5\x6e\xef\x54\x6b\x66\x97\xa5\x54\xea\xbd\xfb\xe4\x20\x93\x1c\x24\xe0\x41\x02\x1e\x24\xe0\xdd\x6d\x90\x80\x8f\xbd\x1e\xc0\x77\xc7\xbc\x93\xef\x9b\x0c\x61\x1b\x51\xef\x6d\x3f\x08\x79\x2f\xb5\x75\x77\x01\xfe\x9d\x6e\x55\x7a\x52\xc0\xe9\x8f\x74\x39\x11\x4c\xdb\x3c\x74\x4e\xb7\xff\xc1\x8d\xfe\xd7\xd2\x70\x7e\x56\x40\x6b\xdc\x22\x77\x81\x5d\x12\xc1\xc6\x28\x5a\x22\x29\xae\xbd\x6f\xe0\xf9\xa9\xb2\x1e\x1d\xe6\x77\x08\xb6\x27\xad\x92\x2c\x13\x72\x67\xbd\x05\x57\x06\x5f\x4f\x15\x96\x32\x4d\x79\x58\x1e\xca\x66\x73\x94\xf2\xe3\x16\x1a\x7d\x04\x4a\x48\xfa\x81\xac\x0f\xdd\x3c\x86\xaa\xa5\x0e\x81\x6e\x78\xc4\x37\xa3\x4a\xea\x17\x9e\x6e\xa9\xbc\x99\x92\x0f\x2c\x91\x0b\x56\xe2\x7e\x5f\x7f\x2a\xa8\x30\x62\xfa\x5b\xca\x33\xb3\xdb\x6e\xd7\x6b\xeb\x05\x14\x41\x6e\xbb\x25\x34\x8c\x60\xfe\x1a\xd9\xa3\x35\x90\x13\xc3\x0c\xfa\x9c\x77\xa6\x67\xeb\xa7\x5b\x94\x6c\xc1\x65\xa5\x5c\x3c\x4d\xa5\x91\x8e\x29\x6d\x65\xd3\x39\x9f\xcd\xdd\xcb\xce\xcf\x1c\x3c\x80\xca\xd4\x5f\x95\x88\x39\x28\x4d\x75\xa5\xda\x89\x72\x12\x70\x27\x78\x16\x1b\xb0\x3f\xef\xc3\x32\x7c\xfd\x98\x2b\x8c\x3f\x3a\x26\x1a\xff\x1a\x23\x9e\xb0\x93\x7b\x7b\x0b\x5c\x98\x56\x1d\x66\x96\xc8\xbc\xa8\x34\x6b\xdc\x16\x0b\xad\xb1\x68\x2b\xf2\x20\x5b\x79\x2f\x5f\xe5\x54\xd0\x19\x1b\xfb\x49\x8c\xeb\x08\xad\x57\x3d\xb0\x56\xe4\x91\x92\x27\x24\x5e\x6c\xb6\x17\x1c\x59\xb5\xb2\xd8\xf8\xc8\x73\xf2\xc4\xe8\x73\xf2\x94\x08\x74\xb2\xcf\x28\x74\xe2\x53\x59\x1c\xf3\x3a\x7e\xb0\x63\xae\x5e\x48\x4b\xac\x76\x5d\xc8\x7e\x22\x81\x25\x5a\x76\x54\xae\x88\xcc\xb9\xd6\xcc\x39\x32\xfb\x0b\x36\x22\x5c\xb7\x32\x2d\x58\xc4\x01\x4a\x73\xf4\x46\x66\x9f\x7c\x59\xed\x9a\x31\x8b\x9c\x0c\x08\x3f\x8f\x5c\x21\xe3\x25\x08\xcf\x0b\x2c\xcc\x02\x08\x60\x6c\xe3\x24\x9d\x6a\xd8\xcf\x3b\x01\x5f\x42\xc2\x3e\x81\x22\x1f\xa7\x36\x60\xa6\x01\x33\xad\xb4\x5f\x02\x66\xc2\x2c\x16\x31\x49\x56\x5a\x18\xc9\x7d\x6e\x73\x5c\xd2\x7b\x96\x91\x9f\x2a\x56\x2e\x89\x61\x5b\xeb\x48\x2f\xa8\x06\xae\x78\x8a\x31\x4d\xce\x6a\x76\x60\x2d\x59\x3f\xa6\x09\x2c\x6d\xd7\x9f\x0c\x77\x0f\x39\xdb\x9e\x80\xaf\x57\xbb\x6a\x67\x02\xc5\xdd\xf2\x3b\xd8\xe4\xc9\xd1\xe9\xb4\xf9\x04\xd8\xee\x8b\xf7\x57\xfd\x04\xaa\x38\x67\x43\xd2\xc7\xe1\x70\x6d\xf1\xd1\xc4\x8a\x90\x8b\x1d\x7b\x82\x7b\xe7\x7f\x01\x2a\xe1\xdd\x45\xbd\xce\x9e\x3c\xb0\xe5\xc8\xba\x83\x13\x73\xfa\xd4\xbd\x1c\x3d\x19\x8c\x0b\xa9\xab\x16\x9a\x4e\x43\xb3\x6f\xb7\x5b\x6f\x24\xdc\x4f\xd1\x8b\x2d\xbc\x5c\x64\xfb\x2b\xb7\x69\xb1\xb8\xbe\x37\x95\x88\x2a\x2b\xd9\x6c\xdb\x4a\x4c\x22\x0c\x41\x3d\x38\x97\x1b\xc1\x83\x0d\x64\x9d\x00\x84\x14\x7b\x88\xa4\xbf\x42\x0d\x9b\xdb\xd8\x27\x2f\xb5\xc7\xc5\x6a\x8e\xdf\x8e\xe5\x7f\x60\xcb\x53\x65\x93\xde\x49\xa1\xe6\xbc\xc0\x12\xa8\x8a\x01\x8e\xea\x07\xf0\xd8\xbe\x03\xd7\x76\x37\x2c\x62\xb0\x1b\x31\x22\xef\xa5\x36\xff\xbb\x86\xd0\x24\xb8\x56\x57\x92\xa9\xf7\x52\xc3\x93\xa3\x9f\x0b\x2e\xf1\xb9\x4e\xc5\x5a\x33\x39\x58\x18\x01\x4d\x63\x56\x1e\x88\xd3\xb7\xbb\xef\x3c\x34\xfd\x09\x72\x45\x6e\x04\x91\xa5\xdd\xca\x5e\x03\x6b\x57\x44\x59\xd9\x61\x9d\xf5\xa1\x36\xea\x6f\x1a\xd7\x9e\x9a\x2c\x5b\x87\xb6\xe7\x29\xd8\xe1\x41\x17\x89\xbf\x80\x76\x15\xbc\x4b\x5c\x48\x0d\x96\xed\xa5\x9a\xcd\xa2\x5c\x5d\xea\x96\xb3\x72\x06\x59\x1e\x93\x88\x82\x8f\x8d\xc9\xf7\x24\xac\xd8\x7a\x91\xd7\xe6\xc0\x3d\x81\x7d\x4f\x3e\xfe\x7b\xee\x0a\xf8\xa4\xaf\x21\x94\xeb\x98\xd2\x71\x63\x58\xe4\x2e\x72\x5a\x98\xdb\xf7\x5f\x86\x89\x00\xc0\xfc\x6f\xa8\x99\xae\x26\xe4\x82\x28\x2e\x66\x19\x6b\xfd\x66\xd5\xfc\x8d\x6e\xa2\x27\x00\xd6\x37\x43\xe3\x17\x34\x63\x18\x2f\x4a\x85\xaf\x1e\x2a\xa7\x6b\x2c\xe4\xc8\x16\x51\x37\xe4\xcd\xbb\xa5\x9d\x3c\xb0\xe5\xc9\x28\x52\x91\x4a\x9a\x34\xc1\x74\x72\x23\x4e\xea\x94\xb4\xad\x7b\xe9\xf9\x2c\xf0\x37\x38\x81\xdf\x4e\xf6\xcd\xa3\x3e\x93\x90\xfa\x6c\x6e\xa2\x56\xa9\x7c\x99\x51\x34\xac\x1c\xc3\x7c\xb1\x3a\xe6\xa6\xa2\x84\x77\x8d\x77\x6a\x93\x96\x8d\x5e\x7e\x46\x4d\x3b\x64\x84\x89\x0e\xb3\x8a\x3a\xd8\xd5\x32\x40\x47\x3d\x9b\xad\x83\x37\x82\xad\x7d\x4e\x71\x73\x16\xdf\x6d\xfa\xa0\x11\x6b\xce\x55\xfc\x71\xdd\x4c\x57\x7d\x14\x1a\xe9\x4e\x9a\x51\x3c\xb2\xb4\x51\xeb\x6b\x3e\xc4\x50\x21\xb1\xae\xa4\x14\x5a\x3b\xb5\x6e\xb5\xfb\x43\xc9\x54\x21\xd1\xbf\x76\xe3\x62\x2d\x8b\x30\xa7\x0a\x7c\xb2\xa6\xd6\xdc\x5a\x54\x65\x21\x95\x2d\x6f\xb7\x0a\xf2\x91\x91\x4b\x36\x9c\xcc\x05\x99\x62\x18\xb8\xbf\x09\xe6\xfe\xf8\xbc\xd4\x17\x2b\x39\x09\xd1\x20\xd6\xc8\xd2\x26\xe4\xe6\x65\x44\xcc\xc8\x39\x7c\xa2\x1c\xe3\x33\x63\xe1\x64\x30\x36\xff\x14\x5d\x4d\x1a\xe6\x3f\xc3\xed\xeb\xa6\xf7\x95\x96\xed\x99\x42\xca\x00\x4c\x1e\x17\x91\x6c\x9c\x20\xbc\x54\xa2\x76\x63\x71\xd4\x63\xb3\x4b\x20\xe4\xa6\xbb\x97\x95\xb0\xa0\xe5\xb2\xda\xed\x6b\x53\xcc\x2a\x5d\x96\x05\x3f\x01\x0b\x9a\x8d\x00\x37\x3e\x35\x6b\xb5\x99\x11\xe2\xd6\xda\xf2\x0f\x02\xeb\x7c\x69\x8b\xf0\x2d\x37\xdf\x5f\x92\x4a\x86\xe7\x01\xe3\x8d\xf0\x14\x36\x6f\x8f\x5d\x46\x0c\x3a\x47\x0f\x57\x4a\x6e\x19\xde\x12\xa5\xa9\x66\x23\xac\xf1\x3a\xcd\x1a\x75\x80\x18\xc9\x65\xca\xa7\xd6\xcf\xee\xae\x61\x43\x1d\x61\xba\x0c\x9b\xeb\xa2\x99\x06\x3c\x62\x22\xf1\x9b\xf9\xa4\xbc\x83\xe3\x1a\xbf\x8c\x81\x2c\xb0\x28\xb5\x78\x90\x53\xe2\x66\xec\xba\xdd\xcf\x81\x9c\xc9\xe9\xb4\x51\xf2\x2a\xa0\x0a\x9e\x6b\xbd\x29\x55\x58\x65\x31\xd7\x9e\x4a\x9a\xa0\xcc\x82\x4b\xbd\xd7\x4a\x22\x5b\xc7\x7d\x3c\x99\x5f\xf8\x0e\x90\xa6\x9c\x92\xb7\x75\x2d\x5c\xae\xc0\x70\xc3\x5d\x62\x3e\x73\x9d\xb8\x48\xb2\xca\x3a\x10\x20\xf6\x33\x58\xe8\x08\x7b\xfe\x04\x76\xa0\xee\xc0\xf1\x5d\x2e\x7a\x64\x2d\x91\xcb\x2a\x86\x80\x90\x05\x0f\xae\x91\xbb\x1a\xb8\xd6\x69\x47\x72\x88\xd6\x5a\xa6\x49\x5b\x8f\xf4\x96\xdf\x97\x8c\x5c\xce\xa9\x10\x2c\x6b\xe4\xc9\xb6\xc6\x3c\xaa\x35\x4d\xe6\x88\x2b\x29\x31\x37\x3d\x63\x86\x52\xcd\xa5\xd2\x24\xa7\xc9\x9c\x0b\x9f\x44\x55\xf8\xac\xec\x75\x56\x9b\xa3\xa7\x10\x3b\x78\xf5\x6a\x0b\x01\xcd\x92\xcf\xad\xa2\xd6\x01\x3d\xf9\x64\xc8\x6b\xbd\xd4\xf5\x22\xed\x3d\x84\x7d\x46\x69\x0f\xe8\x04\xbc\x1b\x32\xc6\xf6\xd2\xda\xe4\x26\xf7\x06\x5a\x2e\x1a\xa4\x90\xd9\x0f\x0c\xa1\x6d\x30\x07\x7b\xad\x64\x9d\x55\x01\xb5\x9d\xda\x59\xdc\xb3\x4a\x98\x4d\xaf\xab\xf5\xbc\xbd\x24\x9a\x96\x33\xa6\x4d\x6f\x44\x54\xf9\x3d\x2b\xbb\xd3\xb9\x1f\xae\xc0\xdc\x51\xea\xc1\xb6\x76\xa0\xa3\x8c\x2b\xf9\xe0\xbe\x82\xb0\x17\xe0\x4f\xa6\x32\x8c\x33\x40\x5f\x45\x57\x84\x16\x4b\x10\x1a\x5c\xfd\x9d\x25\x25\x95\x08\xe1\x17\x62\xea\xc4\xe2\x59\xfe\xed\x6f\xef\x63\x8b\xf4\x9d\xd6\x5f\x6e\x03\x90\x47\x59\x66\xe9\x23\x4f\xad\x5b\x2a\x39\x33\x2f\x9f\x87\x02\xcb\x9e\x6b\xf6\xf5\x4f\x29\x1c\xab\xa3\x7b\x7c\xe4\xe9\x41\xea\xed\x42\xc7\xed\x9d\x76\x22\xa4\xd9\x69\x02\x5b\xcd\x53\x26\xb4\x41\x1d\xa5\x22\x67\xf0\x45\x48\xce\x8b\x6b\x8e\x99\x09\x61\x04\xa8\x0a\x94\xdf\x73\x51\x27\xd7\xac\xcf\xda\x90\x1b\x73\xf3\x9d\xd6\x59\x31\x8d\xf9\xcd\x20\xb3\x81\xd4\x73\xa2\x78\x5e\x65\x9a\x0a\x26\x2b\x15\x5e\x8a\xff\xb3\x3c\xee\x69\xc6\x3e\xe1\xdd\xdc\x67\x02\xe9\xba\xd7\x36\xb7\x00\x71\x55\x75\x56\xde\x55\x76\xa1\xa3\xd7\x3a\x5c\x35\x7d\xe5\x19\x0b\x9f\x5d\x90\x7d\x62\x89\xcd\x2b\x52\x64\xd5\x8c\x77\xe6\xd2\xba\x32\x33\x4b\x8c\x0c\xff\x86\xbc\xad\x27\x0c\x51\xcc\xee\x17\x2c\xd5\x0c\xfe\x0b\x76\x20\x72\x79\x77\x73\x65\xd3\xc0\x0a\xa5\x19\xdd\x17\x8f\x12\x6a\xf2\x1d\x5b\xb5\xcc\x9e\x18\x1e\xec\x2c\xf2\xb2\xd7\x79\x70\x57\xb5\x88\xf6\x17\x5b\xf3\xc1\xd7\x0f\x08\x4d\x7c\x1a\x01\xf4\x03\xa7\x86\x6d\x07\xa7\xd6\x2c\x21\xd0\x98\x40\xca\x0a\x26\x52\x28\x4a\xd8\x80\x7b\xdc\xa5\xbd\x1e\x91\x2d\xa0\x17\x4b\x97\x5d\xdd\xbd\x16\x51\x6e\xc8\xeb\x73\x99\xa5\x8a\xb0\x4f\xba\xa4\x06\xcd\xe7\x06\xa1\xfb\x6f\xa6\x84\x8a\x65\x40\xf5\xd3\x97\x54\x28\x9d\x3c\x0b\x17\x98\xfe\x92\xb8\x40\xc5\x92\x92\xe9\xa0\x00\xeb\x1e\xe5\x53\x5c\xe7\xed\x0d\x6c\x3d\x5e\x13\xe5\xf1\x57\x17\x26\x54\xd7\x48\x0e\x1a\x4f\x28\x0e\xc5\x08\x57\x2a\x2f\x17\x54\x29\x2f\x1d\x03\x91\xb3\xd7\x56\xb5\x32\x6e\x04\x0c\x81\x7a\x60\x3e\x25\x42\xae\xcc\xb4\x19\x10\xe5\x5d\x01\x5a\xaf\x04\x74\xef\x2d\x87\x39\x16\x64\xa0\x02\x52\x0b\x60\x37\x23\x88\xb7\xc6\x7f\xa3\xf1\xd0\xac\xab\x21\xf7\xc3\xca\x42\xf6\xc9\xae\x7d\xbf\x97\x3d\xce\xa5\x29\x3c\x0a\xb0\x9f\x1e\xee\x7d\x83\xb8\xba\xc0\xb2\x50\x15\x50\x3b\x57\x2e\x83\x0a\xa6\x7c\xc1\x20\x13\xaf\x4b\x4c\x6b\x18\xdf\xb4\x42\xa5\xa6\x4b\x8f\xd1\x4e\x7a\x11\x1e\xe4\xde\xb0\x3d\xd4\xde\x1c\x37\x42\x69\x0a\xf9\x11\x60\x15\x86\xaa\x1a\x02\x68\x73\x1e\x5b\x40\x44\x9b\x89\xcb\xb2\x10\x3c\x5c\x6e\x88\x66\xc2\x4a\x03\x6b\xd9\x92\x3c\x96\x32\xdc\xb9\x34\x52\x13\x2d\x17\xac\x5c\x70\xf6\xf8\xca\x46\x05\x8e\xcd\x02\xc6\x36\xb0\xfe\x15\x88\x87\xaf\x7e\x0d\xff\x0b\x1a\x3f\x5a\x0f\x69\xb1\xf5\x1b\x72\xd2\x5d\x9a\xb0\xaf\x99\x7a\x0a\x89\xb4\xf7\x5a\xfd\xcd\x76\xb9\xa2\x34\xb4\x0f\xad\x18\x10\xa2\x24\xb4\xf8\xad\xc1\xba\x98\x0b\xe1\x3a\xb2\x56\x1e\xa2\xcc\x19\xd5\xe1\xa2\x95\x10\x01\xde\xc6\x6d\x39\x00\x3b\x6c\x09\x01\xde\xbc\xc5\xc5\x58\x97\x8c\xf9\x45\x69\xcb\x26\x0a\xe9\x4a\x58\x04\x16\x26\x3d\x80\xe2\x32\xa5\x9a\x2a\xa6\xc3\xd4\xd4\xf1\xa8\xa8\xd1\xbd\x59\x71\x13\x2b\xd9\x9f\xc0\xe2\xca\x20\xaf\x8f\xcb\x06\x4d\xc6\x7f\xb6\xc2\x81\x68\xbd\x69\xc4\x02\xbb\xd3\x21\x58\x7e\xee\xca\x78\x39\x5f\x72\x1c\xa5\x3e\xa0\x7d\xf2\xac\x76\x8e\xdf\x7e\x7b\x73\x15\x2b\x14\xd5\x5f\x3a\xd9\x01\xfe\xdd\xde\x26\x0b\xc8\x60\x13\xe5\x3f\x55\x4d\x75\x07\xd4\x33\xf1\x20\x68\xdf\xdf\xd7\xda\x66\x09\xab\x8d\x0b\x57\x5c\x3d\xec\xf3\x96\xaf\x75\xde\xbe\xef\x7f\xbd\xbc\x26\xf6\xe9\x2e\xfb\x40\xc7\x20\xfb\xb6\x1e\xb4\x6f\xfe\x5f\x2f\xaf\x57\x96\xb0\xa2\x08\xb8\xc8\x32\x27\x9f\x19\x41\xc3\xa5\x8d\xb0\x38\x21\x7a\x83\x00\x77\x18\xde\xa7\x64\x58\x6b\xb1\x31\xf3\x74\x92\x28\xee\x53\xcb\xce\x1e\xd8\x84\xcb\x86\x43\xc6\x81\x6b\x61\xce\x12\x56\x9b\xd1\x53\xae\x1e\x8e\xad\xdf\x28\xd2\xf7\x5d\x09\x48\x5e\x96\x41\x67\x55\xb8\x77\x65\x92\x1a\xf5\xd2\x96\xb2\x22\x8f\xb6\x32\x44\xb0\xfa\xe0\x23\x2f\xde\x90\x6b\xa1\xaa\x92\xd5\x3e\xed\xab\x83\x19\x7e\x7d\x8f\xca\x04\x28\x34\xa2\xde\x1c\xcd\xf8\x73\x64\x70\x25\x71\xd4\xa0\xa0\xa5\x06\xc9\xff\x10\x00\xe4\x3b\x77\xe4\xa2\xf1\x40\xec\x07\x82\x6e\xa6\x2e\x12\xb3\xed\x7a\xc3\x95\xef\xa6\xf6\x61\x01\x5a\x1d\x07\x25\x6f\x7d\x59\x2f\xf2\x2a\x65\x8b\x57\x2a\xa5\x5f\x8c\x60\xaa\x2e\xf7\x40\x7b\x5d\x54\x91\x93\x2f\x4e\x42\xc6\xb8\xe3\x39\xcf\x68\x99\x61\x66\x3f\x9f\xf0\xd0\xf7\x64\xf0\xaf\x1b\x12\xdc\x58\x5f\x9f\x90\x33\x59\xc2\xd8\x09\x15\x24\x63\x2e\x0b\xa0\xc5\x15\x4b\x14\x35\x82\xfc\x33\x9e\x09\x24\x0f\x61\x5d\x44\x64\x7a\x10\xf0\x4d\x1d\x37\x68\x39\x99\x56\x81\xa7\xab\x9a\xd8\x73\x61\xa8\xeb\x84\x7c\x6b\xa9\xb3\xe5\x78\x10\x36\x52\x20\xb5\xf8\xc6\xcb\x3d\x99\x97\xa3\xc2\x5b\x51\xc6\xed\x49\xd5\x46\xd6\x6d\xc2\x2f\xf8\x34\xba\x55\x82\x33\xae\x3f\xb0\x42\xee\x95\xc7\xc5\x2e\x57\x0c\x5a\x5c\x9b\x07\x52\x71\xa8\x60\x4e\x35\xa1\x88\xa3\x92\x2a\xa3\x46\xea\x45\x83\x55\x14\x23\x6a\xc7\x59\x61\x3f\x3f\x36\x6b\xc9\x35\x22\xea\xad\x22\xc5\xcf\x64\x64\xb1\x7a\xa7\xc6\xd4\x57\x49\x86\x02\x2a\x54\x90\x1b\xc1\xf5\xa5\xef\x16\x03\x2d\x33\x29\xac\x5f\x9c\xe9\xdb\xda\xc0\x66\x5c\xdb\xf4\xf0\x38\x94\xf9\xd9\xf5\xd6\x31\x68\x5d\xac\x05\xaa\xbb\xfb\x55\x1c\xdd\x86\x56\x1f\xda\xbe\xe4\x6f\x57\x30\xfd\x20\xd2\xb7\xaf\x91\xef\x12\xa0\xa1\x7f\x42\xfd\x3c\x94\x74\xbf\x73\x75\xa8\x5c\x25\x25\x59\x62\x9d\x5c\x84\xa3\xd3\xc9\xe4\x74\x02\x6c\xc3\xe9\xe4\xd4\xb1\x96\x99\x77\x0a\xb7\x54\xb8\x1e\x36\xae\xdc\x60\xfb\xb6\x4c\x08\xf9\xc6\xe5\x69\x80\xe4\xd3\x2b\x1e\xe8\xde\xb9\xbc\xae\xa1\x8d\x69\xfb\xda\x77\x2e\x48\x53\x0c\x3a\xec\xea\xbe\x39\x71\xeb\xb2\x3e\xe3\x0b\x9b\x97\x76\xaf\xa6\xaf\x7a\x82\x91\xf0\xd0\x5c\x99\x55\x22\x7c\xf8\x7a\xbf\x33\x43\x24\x12\x3d\x2f\x8b\x7b\xec\xac\x12\x99\xe7\x58\x16\x6d\xee\x65\xe1\xda\x21\x3c\x14\xf1\x85\xab\x2f\xb0\x44\xdc\xb4\xe3\x1e\x46\xa2\x74\xd7\xe9\x8a\xba\xc2\x3f\xb6\x79\x52\x44\x2d\x54\x01\x5a\x54\x73\x5a\x32\x85\xa5\xdc\x6d\xe1\xea\xee\x7a\xa7\x2b\x58\xde\x8f\xb1\x5b\xd5\x58\x4f\xb1\xb7\xb2\x71\x23\x99\xb6\x15\x25\x95\x4b\x6e\x67\x49\xf2\x2b\x3f\xde\xab\x0f\xd7\x17\x57\xef\xae\x27\xf9\x6e\xed\xda\x01\x50\x33\x13\x69\x21\x79\x77\x86\xb2\x31\x29\xa8\xde\x9d\x3f\x3c\x1c\x7d\xfb\x41\x0f\x81\xbe\x7d\xe7\xee\xf2\xb8\x07\x8d\x3a\x9c\x36\x7f\x5f\x03\x30\xb4\x2c\x64\x26\x67\x41\x89\xaa\x9f\x76\xc2\xbf\xc6\x58\x96\x31\x1d\x87\x54\xfe\x8c\x12\x9f\xf5\xfc\x30\x92\xb3\x9e\xbb\xbd\xac\x37\xcc\xcb\x88\x3a\x28\xb2\xf7\x85\xee\xd9\xb3\x49\x11\x6b\x1b\x89\x7a\x1d\xc0\x81\xae\x48\x69\x5d\x6f\xb3\x60\x65\xce\x31\x36\xf5\x98\xe2\xc5\x81\x4f\xa8\x5b\xb2\x30\x54\xe0\xb6\x13\xac\xe3\x8e\xc6\xf5\xd9\x26\x43\x45\xc9\xc6\xbe\x20\xd8\x94\x67\x10\x7c\x57\x73\x30\x0d\xaa\xd4\xd1\xbd\xd3\x94\x3b\xa5\x3b\xf6\x91\x2d\x57\x35\xe6\x35\x37\xee\x6d\x14\x98\x08\xbd\xbb\x80\xac\xaf\xfe\x6b\x35\x93\x74\x86\x05\xbd\x4a\x9b\x87\xb8\x28\xf9\x82\x67\x6c\x06\xa5\xd0\xb9\x98\xa9\x3a\xa7\xa4\x35\x1a\x77\x0c\x00\xf1\x8f\xac\xa6\xc3\xde\x2c\xf8\x0e\x4c\xc0\x3e\x4d\x16\x02\xf5\xfb\x6f\x3e\x12\xc1\x70\xb0\x4e\xf0\x7c\xa2\x10\x6b\xa6\xd3\x49\x88\x0e\xa1\x25\xdf\x1f\xf1\x3b\x28\x9a\x76\xe6\xaf\x4d\x80\x1b\xa8\xc2\x44\x1d\x22\xa2\x7c\x4a\xd4\x32\xcf\xb8\x78\x18\xf9\x02\x73\x53\x69\x53\xeb\x32\x62\x7e\x70\xe0\x5c\x32\x9a\x3d\x85\x18\xec\x1d\x08\x48\x1c\x21\xd0\x07\xb2\x5b\x00\x23\x69\xee\xea\xbf\x3a\xb4\x83\xba\xa2\x48\x2c\x1e\xe0\x87\xf0\xe2\xb6\x95\xe7\x74\xb6\x57\x47\x67\xe8\xb0\x85\xb6\x05\xf9\xe6\xf2\xc6\xd7\x89\x6c\x2a\x6a\xf0\x5d\x59\x12\x5a\x6a\x3e\xa5\x89\x3e\x27\x45\x05\xd5\x7c\xa0\x36\x89\x25\xb3\xf6\x76\x6c\xf1\x82\xe8\x98\xce\xc7\x5a\x6c\x06\x97\x34\x25\xb3\x85\xe9\x5f\x43\x51\x70\x90\xf3\xab\xc2\x3a\x51\x60\x00\xb0\x2d\x0e\x75\x5b\x65\xd9\xad\xcc\x78\xb2\xf4\x85\x2d\x50\xdd\x94\x1a\x54\xd4\x89\x8b\x2e\xb2\x47\xba\x54\x6f\x9a\x33\x27\x14\x9e\x11\xaa\x35\xcb\x0b\x04\x19\xb3\xdc\xd5\x04\xd7\xb5\xc6\x09\x0b\x2e\xbb\xc2\xfa\x53\xca\x33\x7f\xf7\x2b\xfb\xa0\x13\x97\x8f\xc9\x7b\xb6\x60\x65\x7b\x26\xc2\x3c\x82\x4e\x54\x7b\x74\xd8\x78\xe0\x66\x2a\x05\xf2\x1c\xd6\xd2\x58\x3b\xa8\x8e\x59\xf2\xe9\x4a\xb7\x58\x87\xc6\xc2\x44\xf7\x94\x6f\xa6\xef\xa5\xbe\xc5\xb7\xdb\x33\xc7\x39\x6f\xe9\x9f\x66\x86\x1b\x5b\xba\x71\xcc\x61\xa6\x5c\x3d\x3c\x69\xb2\x5e\xfe\x6c\x6e\x79\x38\xd0\x41\xe5\xe5\x12\x13\x58\x02\xe4\xd9\xd1\x0c\xf4\xc1\x6f\xa9\x59\x96\x85\xf8\x92\xd9\x10\xfa\x91\x05\xc2\x66\xc8\x3c\x7b\x84\x8a\xfc\xba\xae\x10\x6d\x55\x4d\x89\xcc\x19\xa1\x0b\xca\x33\x7a\x9f\x81\x67\x89\xe9\xdc\xf6\x15\xa0\x71\xb8\x80\x55\x81\x45\x55\xba\x1b\x62\xce\xda\xc3\x26\x9e\xbe\x4d\x36\xd4\xbc\x36\x38\x81\x4c\x26\x0f\x4d\x7e\x03\x2a\x9a\xc1\x2b\x18\x87\x90\x82\x0f\x26\x4d\x53\xa2\xf8\x4c\x40\x49\x6c\xa1\x49\x46\x35\x13\xc9\x72\x42\x6c\x0a\x6f\xd5\xa8\x18\xae\x4b\xee\xe3\x18\x04\xd4\xeb\xaf\xab\xa4\x26\x0f\x72\x3a\x5d\xa9\x30\x6e\x4d\xbd\x16\x51\xe0\xea\xa9\x92\x02\x07\x67\x4a\xd1\x59\x10\xa2\x58\x2d\x19\x84\x3b\x6f\x93\x4e\x38\x74\xe4\x32\x4a\x38\x57\xad\xd2\x85\x02\xd7\xa1\xbe\x1e\xda\xca\x4a\x68\x9e\xb3\x95\x6c\xab\x04\xf4\xd5\x6b\x2e\x1b\x66\x28\x9b\x8e\x16\x02\x71\x6c\x60\xaf\x2b\xc5\xc3\x53\x3b\xbf\x35\xdb\xf6\x2a\x42\x05\xff\xc6\x90\xf5\x36\xf0\x32\xc0\xa2\x5b\x22\x14\xf5\xb6\x69\x7e\x6a\x2e\xe5\x0c\xe2\x8a\xeb\x83\xfe\xfe\xb7\x3f\x4c\x16\x4d\x9b\x0a\x7c\x6e\xc8\xe7\xb9\x99\x59\xce\xca\x99\xab\x35\x93\x53\xc1\xa7\x4c\x99\x53\x5f\x1a\x10\xb1\x7a\x4b\x28\x46\xf5\x68\x80\x03\xbd\x47\x56\x16\xd2\x89\xdb\x3e\xae\xe8\x44\x1b\xa7\x54\x8b\x65\x67\xa5\x3c\x87\xfd\x85\x74\x5e\x9f\x58\x52\x69\xb8\x27\xe0\x35\x40\xce\x84\x34\xcf\x3a\x6d\xa0\x77\xd5\x3d\x32\x5c\x30\xc0\xca\x74\x5d\xe5\x35\xdd\x38\x9b\xce\xdd\x52\xd5\x7d\x81\x7b\xc5\xa6\x86\x27\xf8\x62\xf2\x4f\xff\x14\xb2\x60\xf4\x5e\x85\xde\x15\x4b\xaa\x92\xeb\xa5\x41\x6f\xec\x93\x9e\x4c\x15\xd4\x31\xb9\x84\x14\x1d\x96\x78\xcd\x29\x28\xc8\xd0\xd5\x15\xaf\x48\x0d\xbc\x06\xa0\x8e\xee\x97\x57\x78\xca\x7a\x08\x5e\xce\x2e\x7b\x6a\x11\x98\x81\xc0\x1a\xcc\xd5\x84\xdc\x4a\xa5\xb8\x39\x7f\x9f\xd7\x29\xc8\x59\xf9\xc5\xd0\x73\xd3\x3e\x3b\x8a\x4e\x40\x6a\x79\xd9\x34\xbd\x7b\x05\x4d\x5e\x1f\xe1\xc1\x8c\xf3\x06\x92\xa3\x6a\xa2\xe9\x6c\xa5\x74\x8a\x2c\x5b\x8b\xae\x73\x70\xef\xd9\xae\x62\xd7\x78\x88\xdb\xf4\xc1\x09\xdf\xe4\x66\x15\x60\xda\xf1\x1d\x36\x2b\x53\xc8\x36\x7e\xc9\xe6\x74\xc1\x36\x12\x81\x42\xa6\x93\x0d\x78\x13\x80\x35\xa4\x6b\xc3\xb4\xfb\x30\x0a\x9f\x21\x48\x29\x96\x43\x62\x92\x2d\x64\x67\x13\x0d\xbd\x5f\x92\x4c\x4a\x48\x34\x51\x15\x44\xc8\x94\x19\x30\x03\x37\x0d\x9a\xa9\x11\xb9\xbb\xb0\x2f\x16\x8d\x21\x31\x69\x1c\x70\x48\x05\x4b\x36\xbc\x70\x00\xb9\xbb\x91\x0f\x1d\x89\x66\x88\x17\x5d\x2b\x0a\x42\xda\xf0\x9d\xba\x24\x8f\x2d\x54\x92\xb1\x05\x03\x43\xe3\x94\xcf\x08\x26\x62\xcf\x6d\x6a\x3e\xe7\x35\x25\x4b\x48\x6f\x5d\xf2\x34\x44\x58\x5e\xa5\xef\xe6\x40\x1e\x65\xf9\x90\x49\x9a\x36\xf2\x12\x29\x92\xf1\x07\x46\xae\x58\x91\xc9\xa5\xcd\xa7\x27\x52\x72\xa7\xa9\x66\xd3\x2a\xbb\x0b\xda\xc8\x50\xf9\x57\x25\x8a\xef\x55\xfe\x35\x1d\xae\xc8\xbf\x37\x77\x97\x77\x37\x2f\xd2\xdf\x37\x42\x9f\x0c\x0b\x7b\x3e\x1b\x18\xff\xa9\xcb\xaa\x3d\x26\x59\xd5\xfd\x0e\xfa\x09\xdc\xca\x52\xd3\x6c\x4f\x0c\x4d\x32\xa7\xc5\x45\xa5\xe7\x57\x5c\x41\x8d\xa2\x58\xbe\x66\xed\xfb\x46\x6e\x21\x06\xca\x62\xcb\x56\x12\xee\x00\xc9\xbe\x77\xf9\xaf\x17\xb7\x84\x56\xe6\xf0\x35\x4f\x80\x08\xee\x4d\xad\xdf\x5c\xd9\x1d\xe6\xdc\xec\xb9\x2e\xfb\x75\xc7\xaa\xdc\x5b\x87\x5e\xd3\x73\x45\x49\x0f\x2e\xd0\x47\x74\x81\x06\x64\xb5\x4f\x2e\x8b\x0b\xae\x39\xd5\xb2\x3c\x94\xef\x68\x6b\x00\xef\x52\x52\x29\x2d\x73\x7b\x41\x6e\xdc\x1b\x10\x6b\x14\x68\x28\x58\xeb\xb6\xf6\x48\x01\xf3\x25\x6c\xd4\x8d\xd0\xac\x9c\xd2\x84\xad\xe4\xf9\x18\x81\xd6\x09\x47\xe7\xee\x9d\x80\x71\xff\x64\x9d\xb1\xa0\x24\x74\xf6\xe7\x37\x7f\x6a\x78\x53\xff\xd9\xf3\x65\x56\xd7\xd5\x64\xc1\x04\x4b\x42\x34\x56\x71\x27\xf7\x53\x2c\xde\xe2\x3f\x89\x15\xaf\x32\xdc\x82\xff\x57\xd1\x0c\xb7\x2e\xec\x00\x62\x26\xd9\x3a\x86\x83\xc0\x57\xfb\xa0\xed\xfa\xfc\xa9\x62\xfc\x1a\xe0\x13\x94\x13\x85\x5d\xb4\x2e\xa9\x50\xe6\x20\x63\x25\xa4\x53\xcb\x23\x9e\x92\x33\x9d\x14\x01\x4e\xe6\x51\x01\xa0\x3e\xf8\xd3\xfe\xa3\xe3\x83\xf8\x2c\x59\x59\x25\x9a\x5c\x1c\x6e\xc6\x47\x04\x87\xaf\x7d\x96\xac\xd0\x55\x1d\xc4\x8f\x1d\x6e\xd7\x41\xdc\x73\x6c\xd7\x1e\x4a\x9a\x8b\x47\xd6\x89\x7c\xcd\x95\xc6\x7c\x1a\xf8\x32\xc4\x53\x63\xc6\x21\xc3\xf1\xde\x1a\xd1\x80\x17\xff\x49\xd3\xb4\x7c\x83\x54\xde\x29\xbe\xcb\x90\x70\x79\x23\x97\x68\x5f\x2d\xd1\x89\x1b\x67\x7a\x59\xd8\xd2\xfc\x1f\x2f\x6f\xa1\x2f\x45\xfe\xf8\xcf\xaf\x81\x05\xfe\xa7\xdf\xff\xf3\xeb\x60\x30\xfb\x2c\x53\x13\x91\xff\x81\x2e\xf5\xc7\x48\x79\xd1\x4a\x5b\x01\xa9\x9e\x0d\x0f\x7a\x87\x19\x1e\x0c\x79\xb2\xa8\x10\x2f\x80\x81\x35\x4f\x56\xfb\x71\xaa\x43\xde\x85\x21\xef\x42\xdd\x86\xbc\x0b\x9b\x27\xd6\x90\xd4\x0f\xe2\xf5\xd1\xe8\x1f\x32\xeb\xae\x53\x39\x24\x70\xb7\x9f\x23\x81\xeb\x3c\xd0\x6e\x74\x11\xb7\xa5\xcd\x58\xb7\xb0\xe4\x66\x75\x2e\xb0\xab\xf7\x77\xff\xf9\xf5\xc5\x97\xd7\x5f\xc3\x3a\x6d\xf0\x9c\x01\x6b\x2e\x9e\xa0\xc9\x3a\xc2\x25\x0a\xdd\xeb\xfd\x7a\xe9\x8b\x15\xff\x7c\x41\xde\xbf\xbd\x8b\x74\xcd\xdf\xef\x76\xae\xca\xdf\x62\x1a\xb2\x6f\xc7\xf5\xfe\x33\x2f\x29\x56\xee\x2f\x51\xe0\x41\x9d\x04\x1b\xc5\x5f\x5b\x5a\x1c\x73\xd2\xb8\x8a\x23\xa8\x51\xba\x8e\x91\x7c\x26\x8e\xdc\x66\xd3\x70\x23\x5f\xa4\x0b\xf7\x61\x8e\x24\x94\x67\x2e\xe3\xb3\x5d\x06\xe6\x88\x2b\x1b\x29\x31\x0d\x42\x42\x12\x51\x1a\xe2\x69\xc8\x26\x53\xca\x11\x8c\xcf\x15\xaa\x8b\x4d\xf5\x2b\xf6\x89\xea\x37\x0e\x60\x6b\x57\xb8\xe2\x1b\x0d\x0f\xf9\x96\x4d\xb6\xcb\x9c\xb4\xa5\x36\x49\xc3\x48\x0a\x04\xb0\xa0\x49\x37\x29\xdf\x5b\x71\xa3\xd5\x7a\x25\x90\xe1\xff\xe8\xc4\x04\x46\xdd\x63\xce\x15\xdf\xdf\x21\x2e\x9a\xef\x7c\x35\xfd\x2c\x8d\x39\x62\x42\x95\x77\x9f\xab\xea\x82\x20\xa1\x79\x6a\x9f\x19\x06\xc8\x0b\xa4\x44\x7f\x3b\x98\x02\x65\xdf\xca\x93\x62\x2e\xb5\x14\x87\xcb\x86\xb5\xa9\xff\x36\xe2\xba\x85\x37\x2e\xeb\xda\x44\x35\x0c\x60\x42\x0c\x6f\x27\x5f\x71\x0d\xb7\x36\xf1\x38\xaf\xf0\x66\xdc\xe9\xed\xa6\xb9\xed\x0e\x41\xdd\xb8\x9c\xc3\xa7\xbe\x8b\xc9\x17\x75\x73\xb5\x27\xcc\x35\x24\x95\xc6\xf6\x42\xcb\x7f\x98\x93\x8e\x3c\x1c\xf3\x89\xdb\xf5\x9b\x2b\x2b\x68\xb8\x94\x7b\xca\xde\x07\xb2\xfd\x2a\xee\x8d\x77\x92\xa5\x7e\x94\xe5\x01\x92\xed\xb7\x7b\x5e\x89\x21\xb4\xbf\xad\xa5\xda\xdc\x3b\x5e\x69\x4f\x22\x2a\x77\xde\xea\x0a\xcc\x8e\x76\x0c\xbd\x25\x71\xde\xa7\x74\xe2\xfa\x9a\x24\x32\x6f\x15\x31\x9c\x33\xe4\x03\x2e\xef\x6e\xde\xf1\x19\x4e\xc5\xcd\xda\xd5\xf7\x1a\xcf\xa8\xee\x1a\x9a\x2b\xd2\x65\xb3\x3d\x00\x8e\xc3\xf3\xfb\x1c\xf0\xdc\x1d\xe0\xb9\x06\x14\xee\xc2\x77\x2f\x15\xdd\x3d\x2f\x9a\x3b\x0a\xbf\xf6\x8b\x4a\xff\xee\xae\x47\xe4\x8e\xb9\xcf\xac\x12\xd6\x9c\x75\x4d\x1a\xa8\x47\x6a\xf6\xbd\xbd\x91\x82\x52\xfe\x1d\xf0\x56\x04\x15\xf0\xdf\xa0\x95\x16\x50\x28\xcd\x32\xb3\xab\x52\xd4\x95\x54\x54\xed\x9c\x8b\x9e\xac\x39\x2d\xac\xa3\x6e\x2a\x1f\xc5\x23\x2d\x53\x72\x71\x7b\xb3\x1f\xec\x15\x91\x1c\x09\x61\x2d\xac\x6e\x61\x8f\xf4\x48\x75\xf7\x40\x19\x34\xd6\xbd\x64\xe4\x9e\x6b\xd5\xaa\x9f\xdb\x50\x79\x19\xb2\xe7\x9d\x72\x20\x3a\xa6\x2e\xe2\x18\xc5\x86\x09\x22\x13\x4d\x33\x6b\x4b\xbb\x67\xfa\x91\x31\x41\x5e\xbf\x7e\x8d\x76\x8c\xd7\xff\xf2\x2f\xff\x02\x9e\xe4\x24\x65\x09\xcf\xd7\x5f\x84\xb7\xfe\xd7\x17\x5f\x84\x0c\xfa\x6f\x17\xef\xbe\x26\x34\x01\x99\x12\x6b\x15\xe1\xd8\x70\xc0\xcd\xee\xd5\x88\xfc\xdf\xbb\x6f\xde\xd7\xb5\x2d\xdb\xbf\x02\xfc\xf8\x2d\x0a\x92\xc5\x6c\x64\x14\x87\xd8\xb5\xda\x56\x41\xf5\xdc\xc7\x03\x51\xb0\x74\x36\xa2\xc6\xec\xdd\x0f\x72\xf4\x83\xf2\x05\x7c\x36\x87\x4d\xe5\x02\xe0\x37\xe3\x89\x4d\x4c\x85\xd6\x23\x57\xe5\x03\x93\x07\x60\x90\x8f\x23\x2f\x01\x63\x98\x05\x8f\xd0\xdd\xda\x06\x0f\xd5\x85\xcf\x4b\xa6\x8c\xa8\x69\xeb\xfe\xe2\x70\x35\x0c\x05\x95\xc7\x3d\x9c\xf3\x8b\xbd\xdc\x07\xd1\x5b\x5a\xbc\x61\x59\xe4\x8c\x2b\xdd\x28\xed\x69\xd1\x0e\xa8\x88\xc9\x35\x4d\xe6\x84\x09\x0d\x49\xb7\xf0\x80\xcd\xeb\x01\x83\xcc\xa9\x48\xcd\x0d\x83\x1a\x10\x30\xe0\x33\x79\xae\xf4\xf1\x05\xb8\xf5\x7b\xd0\x8a\x90\xac\x31\x32\x35\x12\x70\x13\x4c\x6b\xc6\xa4\x11\x79\x16\x58\x26\xf7\xfa\x13\x85\xdc\x1c\x66\xab\x50\x5d\xac\x6c\x14\x9c\x6a\x56\x2c\x0b\xe9\x2c\xb2\xbe\x7e\x9c\xff\x05\x21\x09\xa6\x5c\xf9\x58\x56\x4a\x7f\x59\x99\x03\x0e\xad\x8f\xda\xb7\x22\xed\xe5\xda\x88\xe8\xfa\x60\xed\x7d\xa0\x05\x4e\x12\xa6\x10\x94\x7f\xc4\xe0\x1a\x5d\xbf\xfd\x23\x6e\x64\xf0\x78\x72\xba\x69\x48\x17\x2e\xcb\x85\xc1\xfd\xb4\xd2\x72\x0c\x25\xd1\x5d\x9a\x96\xce\x80\xe9\xba\x5d\x64\xc5\x9c\x8e\xa0\xaa\xb0\x67\x62\xd7\x47\x6c\x00\x60\xb3\x0e\x71\xc4\x38\x3b\x56\x61\x10\x9e\x35\xf4\x03\x64\xd5\xd5\xa3\x05\xcd\x19\x84\x75\xe1\xc4\x82\x07\x5b\xa9\xbc\xa7\xf8\x4c\xb0\x12\xb5\xb4\x10\xf8\x4b\x32\x7a\xcf\x32\x3b\x94\x2c\x23\x96\xf1\x95\x0b\xa1\x63\xa5\xc1\x9e\x8a\xd0\xd9\xac\x64\x4a\xf1\x05\xb3\x91\xd3\xfc\x1f\x75\xc5\xbf\x39\x23\xb7\xd7\xef\x5c\xfc\xb8\x22\x86\xb1\xd5\x2c\x24\x5b\x20\x36\x9f\xab\xd2\x80\x56\x2d\x7b\x4c\x08\xb9\x56\x52\x43\x1d\x3b\xd3\xbf\x3d\x12\xe5\x2b\x69\x83\x97\xe9\x18\x02\xc5\x63\xf6\xac\x0e\xfd\xc1\x18\xf3\x39\xa3\xa9\x0b\xb6\x35\x2c\x65\x51\x18\x49\x9a\x5c\x9a\x2b\x3a\xe5\x46\xb0\x56\x36\x1c\x3b\xad\x8c\xa8\x42\x03\x12\xc1\xd5\xed\xe3\x9c\x11\x59\xa6\x0c\xeb\xc0\x4f\xc1\x99\xc7\x77\xdb\xa0\xef\x90\x77\x88\x9b\x91\xee\xb9\x2e\x69\xb9\x44\x8a\x69\x4f\x22\x78\x38\x83\x33\xb1\x96\x3e\xf4\x0a\x23\x43\x2c\x15\x09\x49\x9c\xe7\x5a\x24\x42\x23\x11\x12\x76\xdd\x82\x6c\xeb\xae\xc5\xe2\x4c\xd3\x00\xfc\xef\x2c\xf4\x87\x7f\xf6\x94\x42\xde\x84\xe0\x78\x20\x32\xac\x23\x03\x1f\xfa\xaf\x93\xb9\xa5\xeb\xed\x2b\x4a\x08\x4a\x82\x34\xa6\x3c\x3f\x71\x61\xd8\xdc\x21\x01\xef\x95\xcf\xf4\xc4\x30\xd0\xba\xa2\x59\xb6\x1c\xb3\x4f\x86\x94\x98\x4b\x0c\x34\x14\x72\x71\x82\x3b\x7f\x25\x14\xd3\xa3\xa8\x21\xe1\xf2\x15\x25\x26\x99\x50\xe4\x04\xd7\x24\x24\x64\x9d\x3a\xc1\x6e\x8d\x20\x70\x5f\x69\x74\x81\x1b\x6d\xfe\x24\x6e\x9d\x0b\x56\x2e\xed\x08\x11\x1f\xf6\x00\x67\xd2\x13\xe6\x08\xdc\x41\x9d\xcc\xaf\x3f\x15\x25\x86\x1e\x45\x7e\xbd\x02\x7e\xab\x9d\x61\x6a\x26\xc7\x3d\xb6\xc1\xc7\x5d\x42\xc0\x70\xe8\x64\xd6\x7c\x02\x58\xec\xe2\xfd\x55\x0c\xfa\xc2\x16\xc3\x22\xb6\x5b\x30\xc3\xd8\x6e\x4f\xb9\x81\xd8\x2e\x76\xec\x8d\x4d\x6f\xe5\x7e\xc1\x0c\xcc\xae\x90\x9a\x93\xea\x28\x79\x60\x16\x09\x1b\xc9\x13\x94\x5d\xf6\xe5\x1e\xd3\x29\x19\xc4\x73\x63\x80\x3a\x5b\x42\xb7\x38\x52\xec\x59\xf4\x06\x67\x37\x91\x58\x3c\x5d\xb7\xb1\x99\x7a\xaf\xef\xdc\xf6\x45\x7f\xdc\xf7\x0e\x62\x7b\x60\x01\xaa\xbd\x4d\xad\x05\x7f\xe6\xbc\x9c\xd4\x06\x30\x65\x1e\xf8\x18\x39\x0f\x46\x14\x12\x38\x2b\xa2\x65\xfc\x91\x92\x3e\x1e\xb3\xed\xe6\xb6\x78\x0f\x0b\xee\x75\xe1\x9a\x73\x68\xdb\x46\x1e\xd8\xf2\x54\xe1\x0d\x30\x18\x6c\xce\x0b\x2c\x40\x66\xc8\x83\x91\x80\x7b\x5e\x03\x6c\xdf\x41\x0a\x1b\x37\x30\xe2\xb8\x1b\x31\x22\xef\xa5\x36\xff\xbb\xfe\xc4\x95\xe5\xf6\xae\x24\x53\xef\xa5\x86\x27\xcf\x72\x42\xb8\xd0\xe7\x3c\x1f\xab\x93\xe2\xe0\xdc\x09\xe8\x1c\x04\x07\x58\x90\x3b\x07\x97\x3b\xc4\x9f\x25\x57\xe4\x06\xd2\x97\xe3\x96\xf6\x1c\x1a\xfc\x77\x5d\x6e\x14\x33\xb0\x93\xb1\x21\x7f\x8e\xf5\xa4\x5f\x1f\xd9\x9e\x9f\x2c\x5b\xc7\xb7\xf7\x49\xd8\x09\x80\x6e\x0c\x7f\x81\xb4\x6e\x45\x46\x13\x96\xba\x1c\x55\xd4\xec\x14\xd5\x6c\xd6\xe9\x63\xbe\xad\xe5\xac\x9c\x81\x2a\x2f\x09\xca\x95\xb8\x61\x01\xbd\x09\x31\xb6\x9e\xe4\xb8\x39\x78\x6f\xf0\x7f\x62\x84\xd2\x01\x3b\x03\x1e\xeb\x6b\x83\xda\x9f\xc6\xab\xf5\xb8\x97\x8d\xa1\x91\x2b\xc9\x69\x61\xee\xe4\x7f\x19\xe6\x03\x40\xf5\xbf\x49\x41\x79\xa9\x26\xe4\xc2\xe5\xce\x6a\xfe\x66\xa5\xc7\x46\x37\x3d\xa6\x50\x80\x47\xf0\x4f\x15\x5f\xd0\xcc\x66\xe2\xa0\x82\x30\xcc\x2d\x66\x66\xb3\xca\x84\x8e\xc8\xe3\x5c\x2a\xe4\x64\x7c\xf8\xcd\xc9\x03\x5b\x9e\x8c\xa2\x34\x18\xae\x35\x6f\xfc\xc9\x8d\x38\xa9\xb5\xc5\xad\xdb\xea\x79\x34\xf0\xaa\x3d\x81\xdf\x4e\xf6\xcf\xe7\xf6\xe2\xac\xfa\x56\xae\xde\x34\x81\xe8\x2b\xf6\x94\x78\x98\xba\x85\x47\x7a\x61\xdb\x87\x98\xec\x60\x7a\x83\xe2\xec\x7e\xe9\xb2\xc8\x59\x41\x75\x5d\x8e\x8d\x1a\x12\x64\xde\x86\x7c\x6c\x40\xac\xa5\x22\x88\x17\x29\x23\x0f\xca\xa5\xc4\x39\xd6\x26\x1b\x7a\x5a\x56\x6c\x44\x52\x29\x4e\xb5\x55\x77\x35\x33\x2d\xae\xe6\xb3\x4a\x37\x9c\xc3\x99\x3a\x8f\x1a\x94\x96\x0c\x12\x6c\xb9\xcc\x91\x56\xc3\x80\x59\x17\x41\xd3\xa9\x9d\x87\x88\xf9\x73\xd3\x90\xe1\x01\x79\x76\x48\x1b\x96\x27\x24\xe0\x2e\xc8\xe5\xdd\x1c\xb6\x3e\xf4\xc6\xe0\x6d\xed\x69\xd4\x78\xbb\x80\x08\xb0\x78\x1d\x26\x88\x6a\x91\x7f\xb0\x52\x46\x8d\xb0\x41\x75\x14\x0f\x9d\x61\x16\xfd\xba\x85\x05\x9e\xd4\xad\x05\x9a\x1f\x80\xbd\x5f\x58\x43\x25\x24\xeb\x6c\xe4\x25\x29\x25\x1e\x0d\xf8\x3c\xc0\x0f\xf7\xb0\xaa\x83\x5f\xb9\xfa\xa8\x5e\xa8\x02\xb0\xa1\xb5\x8f\xa3\x56\x1d\x5a\xbd\x8f\x73\x56\x6b\xe4\xe5\xd4\x56\x82\x47\xa3\xc3\x53\x41\xd1\xe7\xda\xa8\x04\x26\xae\x40\xab\x78\x1f\xf5\x78\x8f\x63\x45\x7f\x8b\x77\xb4\xe8\x65\x05\xf3\x5f\xb7\x4a\xfe\xd3\x7b\x59\x69\x97\x2e\xc4\xfe\x0e\x85\x95\xb5\x74\xf6\xc7\xc3\xa9\xce\xfb\xe8\x38\xa2\x19\xf9\xa7\x80\x34\x7a\xc2\xb4\xfd\xb0\x46\x84\xd1\x64\x6e\x38\xc0\x31\xba\x59\x18\x2e\xd5\xb1\xa3\x57\x66\xeb\x90\x31\x94\xab\x24\x26\x0e\xf8\xfc\x69\x38\x90\x6b\xf8\xe7\x38\xb3\x91\x73\xb9\x54\xd6\x75\xcd\x32\xa7\xa2\x0e\x5d\x88\x1a\xd3\xa9\xe7\x5c\x3e\x64\xab\xfa\x81\x55\x82\x8c\xba\x52\x3e\xcb\xc8\x1e\x2c\x35\x9f\xf9\x8b\x11\x35\xde\x86\x15\xd5\xd9\x74\x0c\x36\xb5\x7e\x45\x95\x58\x1b\xc9\x10\xbc\xe8\xd1\x30\xb5\xa6\x59\x08\x75\xaa\xad\x46\xf6\x1e\x48\x10\x0d\xfe\xe6\x75\x5e\x4b\x7b\xaa\xfe\x30\xe2\xc4\xef\xc6\x11\x29\xe6\xf3\x3b\xb3\xb2\x94\xa5\x59\x13\x53\x8a\x70\xd8\xe5\x9c\x96\x0f\x2c\xf5\x5c\xd2\x84\xdc\x9a\xc5\x3b\x19\x3d\x6a\xcc\xd2\x51\x23\x97\x27\xba\x59\x89\xcd\x4c\xe8\x74\x32\x39\xb5\x65\x13\xd6\xeb\xb2\x45\x63\xaf\x58\x81\xbc\x87\x18\xde\xba\xbf\xef\x68\xa1\x50\x1d\x61\xd8\x1b\x50\x47\x4a\x28\x88\xa8\xe7\xce\xa6\x48\x23\x42\x6c\x56\x97\xd3\x43\x00\xea\xab\x56\xee\xa3\x52\x8e\x32\x1c\x62\xeb\xaf\x46\xee\xa5\x42\xde\xa6\x3e\xb6\x27\x65\x6f\x7c\x5f\xcd\x7f\x2f\x0d\x4c\x1e\xe4\x12\xb8\xda\x9e\xae\x76\x04\xd7\x2e\xae\xc8\x37\x4e\xf6\x09\x73\x18\xd4\x73\x5b\xee\xbb\x8f\x9e\xec\x59\x3c\x06\x57\xdb\xf3\x79\x10\xae\xb6\x9b\x29\x26\x11\xdf\x58\xf5\xb1\xe9\xd2\xe9\xd9\xba\xc0\x94\xbb\xab\xed\x18\xae\x85\xab\xed\xc0\xae\x86\xab\x2d\xce\xf5\x70\xb5\xc5\xb8\x22\xae\xb6\x58\xe9\x0c\xdb\xd3\x2f\x70\xb3\x04\x5c\xd9\x12\xf2\x2c\x6b\x07\x2c\x17\x88\xba\x45\x03\xc9\xf5\xba\xb7\x96\x50\xe3\xd5\xa5\xf7\x4a\x66\x95\x0e\xaf\x33\xb7\xad\xbb\x26\xdd\x87\x89\x3b\xcd\x66\x2c\xb1\x5f\xed\xb8\xc1\x37\x00\xd7\x86\xe4\xb8\x5f\xaf\xfb\xd0\xfc\xf5\xd7\x82\x1f\x53\xf5\xf7\x94\x84\x4f\xd8\x8e\x9d\xf6\x09\xdb\x91\x93\x3f\xb9\x41\x9f\x92\x02\x0a\xdb\xf3\x26\x82\xc2\xd6\x13\xbc\x63\x92\x42\xb9\xf6\x64\x2d\xab\xcf\x5c\x8e\x14\x73\xe9\x33\x0b\xb7\x84\x20\x48\xd4\xa4\x15\x4a\x63\xce\x8e\x68\x4b\xb6\x1c\x58\x55\xf7\x74\x75\xbf\x8b\x51\xb9\xb8\xbd\xe9\xa5\x45\x69\x7c\xbf\x45\x8f\xd2\x7c\xe3\x17\xac\x49\xb9\x41\xd5\x48\xd3\x27\xeb\xaa\x5e\xb9\x8d\xb3\x8c\x64\x6d\x9e\x47\xa6\x5c\x9b\xf6\x5b\x43\xd7\x9b\xb9\x4a\x1b\xe7\xac\xa5\x0d\xe9\xa9\x39\x00\x4b\x65\x5d\x6d\x1e\xf4\xe5\x8d\x71\x02\x27\xcf\x23\x7f\x1e\x51\x96\x84\xfd\x08\xca\x23\xb9\xda\x5a\x27\x75\x5a\x97\xcf\x40\x65\x33\x2a\xbe\x1a\xda\xb6\x42\xa6\x6f\xd0\x48\x4a\x85\x90\x58\x1e\x4a\x8d\xd0\x50\xa1\x46\xd6\x0c\xd3\x48\xd1\x21\x52\x52\xf1\x14\x3d\xa0\x7d\x76\x81\xd3\xcf\xc9\x31\x0d\x96\x7f\x1b\x7b\x94\xe4\xc9\x1e\x66\xb4\xe0\xdf\xb1\x32\x2c\x8b\xfd\xa6\xd6\x3a\x58\xdb\x93\x3b\x45\x95\xcc\x59\x4e\xe1\x9f\x6f\xdd\xf2\x0c\xaa\xb1\xfe\xf5\xa0\x96\x63\x65\x6e\x58\x8f\x51\x2b\xca\xf4\x64\xf1\x45\x94\x7f\x6c\xdd\x9e\xe8\xe2\xe1\x4f\x61\x0f\x9b\x71\xdb\x12\x31\x0c\x70\x83\xa6\x00\x8c\x2b\x2e\xd3\x8c\x57\x5b\x1a\x2a\xb3\xc0\xdd\x7b\x86\x85\xef\xc7\xfc\x8e\xed\xb9\xf4\x34\x7d\xf5\x33\x23\xcf\xfb\xb4\xb5\x2d\x3d\xa6\x30\xe8\x67\x06\xfd\xcc\xff\x68\xfd\x4c\x83\xb0\x3b\x5c\xbf\x41\xed\xd2\xcc\x88\xea\x74\x2f\x75\xdd\x83\x09\x6a\x3f\x9d\x1a\xc5\xe9\x50\xea\xba\x82\x68\xfe\x38\x9d\x4c\x4e\xd1\x00\x32\xf1\xea\xd2\x4a\x4f\xc7\x7f\x24\x4c\x24\x32\x35\xfd\x60\x55\xc0\x52\x69\x60\x2d\x6b\x89\xbd\x39\x97\xdc\x8d\xd5\x34\xa1\x40\xdf\x7d\xb9\x87\x5e\x28\xd8\x45\xe5\xbf\xdd\x0f\x83\xd5\x0b\x81\xd6\xac\x98\x2f\xc6\x64\xb7\xcc\xd7\xa7\xb2\x3c\x59\x9d\x43\x20\xe3\x39\xb7\xde\xc9\x06\xbb\x30\xa5\xe3\xdd\xf7\x08\x39\xc3\x6e\x26\x49\x51\x8d\x6c\x97\x93\x9c\xe5\xb2\x5c\x8e\x7c\xb7\xe6\xc7\xd6\x38\xf6\x8d\x73\x60\xfa\x92\xaa\x2c\x99\xd0\xd9\x32\x34\xb9\xd4\xa6\xf6\x8c\xdc\x9f\xdb\xd1\x23\x33\x7f\xfe\x60\x63\xfd\x4b\xea\xd6\xbe\xff\x75\xf1\x41\x50\xc8\xf9\x5d\x01\x1a\x63\xd3\xd8\x8d\x6a\xfd\x84\x79\xca\xc4\x82\x2c\x68\xa9\xe2\xef\x1b\x79\x3a\xbf\x97\xf2\x05\x57\x7b\x09\x39\xb8\xb3\xc4\x0f\xf5\xcc\xb2\xd2\x45\xa5\x2d\x3a\x76\xd7\xc8\x95\x21\xf3\xd7\x67\x85\xe9\xfd\x22\x5c\x45\xd4\x6c\x05\xd5\x9a\x95\xe2\x0d\xf9\x8f\xb3\x7f\xff\xdd\xcf\xe3\xf3\xbf\x9c\x9d\x7d\xff\x7a\xfc\xbf\x7f\xf8\xdd\xd9\xbf\x4f\xe0\x1f\xbf\x3d\xff\xcb\xf9\xcf\xee\x8f\xdf\x9d\x9f\x9f\x9d\x7d\xff\xd5\xbb\xbf\x7e\xbc\xbd\xfe\x81\x9f\xff\xfc\xbd\xa8\xf2\x07\xfc\xeb\xe7\xb3\xef\xd9\xf5\x0f\x81\x9d\x9c\x9f\xff\xe5\x37\xbd\xa6\x4b\xc5\xf2\x9b\x1e\xf8\x0d\xdb\xf8\x89\xf4\xb1\xdd\xcb\xbe\x3c\xc1\xb9\xd0\x63\x59\x8e\xb1\xbb\x37\xe0\xb2\xd8\xa3\x53\x07\x16\xfb\xb8\x87\x35\x1d\xae\x0b\xeb\x39\xe1\xe3\x19\x2e\xda\xbe\xe4\x8b\x3d\x18\x0b\x30\xeb\x4d\x2f\x9d\x21\x7e\xba\x45\x5d\x68\x7f\xfc\x05\x6b\x0a\x3f\x1b\x9f\x2b\x5b\xa0\x64\x70\xb8\x7a\x76\x87\x2b\x3c\x89\xc1\xdb\xaa\x5e\xdc\xe0\x6d\x05\x6d\xf0\xb6\x6a\xb6\xc1\xdb\xaa\x35\xee\xe0\x6d\x35\x68\xf3\x06\x6d\xde\xf3\x6b\xf3\x06\x6f\xab\xc1\xdb\x6a\x73\x1b\xbc\xad\xba\xdb\xe0\x6d\xf5\x3f\xcd\xdb\x0a\x41\x6c\x93\xcf\x95\x95\x48\x6b\x87\xab\xcf\xce\xdf\x4a\x99\x43\x4e\xd8\x45\x92\xc8\x4a\xe8\x8f\xf2\x81\x05\xfb\x0b\xac\xe8\x50\xd6\xfa\x81\x1a\x83\x5b\x74\x2a\xeb\x2f\x1f\x4d\xc1\xf2\x02\xf3\xc1\xd1\x2a\xe5\x4c\xc4\x69\x08\x9f\x82\x7a\xdd\x78\xcd\xaa\xd8\x22\x65\x69\xfd\x83\xc5\xcb\xda\x1c\xcd\x84\x5c\x90\x92\x25\xbc\xe0\x36\xe9\x02\xc5\xe7\x51\x43\xc2\xbd\xb0\xa9\xb5\x97\xe6\xb6\xb0\x6c\xea\xd1\xa3\x4f\xb9\x5d\x36\xf4\x0f\x96\x52\xaf\x4c\x29\x4e\x8c\x35\xd3\x44\x3e\x10\xb8\xbe\x47\xae\x18\x51\x73\x59\x65\x29\x29\xd9\xdf\x1d\xcb\x69\x57\xf9\xb1\x39\x5a\x53\x81\x1f\x3b\x6c\x63\x39\x76\x1f\x69\xc1\xc3\xab\x7d\xf9\xd9\xf7\xc1\x95\xec\x53\xc1\xb1\xb2\xc1\x1d\x4b\xa4\x48\x8f\xa6\x16\x5c\x1b\xb8\x66\x16\xc1\xae\x87\xd9\x6a\x7c\x6e\xce\x05\xcd\x78\x6a\xa8\xaf\x73\x29\x42\x94\x10\x07\xc6\x88\x3f\x3c\x94\xaa\xfa\x34\x09\x2d\x8a\x52\xd2\x64\xce\x54\x63\x66\x28\xf1\xd8\x4a\x17\xa1\x29\xdd\x9b\xad\xc8\xaa\x19\x17\x28\x20\x41\xff\x8e\xdf\x90\xda\xb9\x1c\xda\x85\xac\x4e\xee\x63\x63\x60\xf3\x79\xd4\xb0\xc8\x60\xea\x72\x09\x3e\x8c\xb2\x39\x1c\xae\x96\x4f\x9b\x7f\x28\x22\xb3\xd4\x55\x5a\xfd\xe3\x6b\x23\x53\x27\x78\x75\x23\x15\xbd\x0a\x72\x73\x9a\x11\x33\xc3\xed\x1b\x32\xb7\x7d\xa0\xdf\xff\x81\xcc\x65\x55\xaa\x49\xb3\x4a\xe0\x17\xf0\x2c\xee\x54\x45\x5a\x7b\xee\x68\x92\x31\xaa\x34\xf9\xe2\x35\xc9\xb9\xa8\x74\x9f\x6c\x03\xf1\x52\x5a\x43\x3e\xfb\xe7\x3f\x04\x7f\xf7\xa4\x2c\x05\x91\xb7\xad\x29\x8d\xc1\xbf\xbd\x48\x66\xf5\xc6\x58\x1c\xb5\x90\x5c\xe8\x55\x01\xcd\x52\xd8\x7e\xd8\x14\x34\xd3\x07\xc3\x62\xbd\xc5\x98\x9f\x2a\x79\xbf\xd4\x7b\x2d\xaa\x63\xbb\x6c\x67\x8c\xfb\x7f\xf6\x61\x5c\xed\xd9\x98\x32\x3a\x6e\x84\xdd\x15\xb9\xdc\xe4\x5e\x52\x11\xae\x92\xcd\xb8\xd2\x65\x97\x1a\x77\x1c\x82\x78\xc3\xb9\xa8\x59\x29\xab\x80\x84\x0b\xf1\x97\x0d\x3a\x76\x0a\x0d\x67\x58\xb2\xb9\xc5\x43\x72\xa6\xb8\xd2\x75\x78\x3a\xd0\x5b\xe7\x57\x2f\xad\x42\xcc\xa6\xda\xb2\x0e\x40\x5d\x62\xfb\xe7\xad\x2f\x1b\x23\x35\x39\x00\x3d\xcc\x96\x61\xdf\x6d\x74\x61\x73\x48\xc9\x92\xe4\x55\xa6\x79\x91\xd5\xdb\xf7\xc1\x7d\x60\x19\x86\x10\x29\xba\x66\x8e\x69\xc3\xee\x43\xb1\x66\x17\x16\x65\x07\xc3\xeb\x99\x1f\x8d\x09\x0d\xf5\x3a\xc0\x81\x9e\x15\xb4\xa4\xfe\x94\x12\x99\xe7\x34\x28\x85\x12\x5a\x02\x29\xf8\x90\x21\xc9\x31\xec\x44\x49\xb3\x7a\xd5\x0d\x37\xa0\x7d\x02\xb9\x66\x82\x8a\x00\xa3\x7e\x8f\x62\xf8\xd0\x33\x91\x8f\x3e\x2e\x64\xc6\x17\x4c\xac\x42\xb7\x15\x42\xbe\xa4\xc9\x03\x13\x21\xd2\xfc\xb7\xca\xed\x6f\xba\x14\x34\xb7\xb5\xed\x8b\x52\x2e\xb8\xb9\x06\x2c\x5d\x19\x41\x8d\xac\x5a\x08\x93\x62\xbb\x12\x00\xc8\x68\xee\x73\x2b\x2b\x75\x98\xaa\xc7\xa6\xdf\xa7\x63\x49\x85\xf6\x9f\x92\x2f\x12\xe6\x38\x67\xd3\xf3\x3e\x77\x60\x11\x50\x77\x8f\x6c\xae\x0f\x65\xf3\x32\xe3\x7d\x03\x4a\xef\x5d\x18\x30\x63\x69\x66\x70\xde\xd2\x57\x13\x5a\x81\x22\x5b\x4a\x61\x6f\x15\xc2\xca\xfb\x98\xc2\x51\x9d\xc7\x58\xde\xa7\x6d\xb4\xf5\x81\xa6\x52\x91\x2f\x21\x2b\xdb\x15\x03\x71\xe6\x70\x0c\xcf\x87\x2f\xaf\x3a\x98\x1d\x33\xbf\xde\x8c\xce\x46\xbd\x27\xfb\x44\xf3\x22\x63\x6a\xf2\xf0\x47\xd0\x7c\xda\xbb\xf8\xaa\xbc\x4f\x5f\x7d\xb8\xbe\xb8\x7a\x77\x3d\xc9\x77\xdf\xf6\x03\xf0\x4f\x3c\xa7\xb3\x2e\x8e\x7c\x4c\x72\x29\xb8\x96\xe5\x6e\x34\xfb\x22\xca\x00\xee\x2c\x77\x6a\x65\x12\xc7\x44\x18\x58\x5a\xca\x8a\x3c\x52\xcc\xf2\x19\x5c\x0a\xf5\x23\x2f\xde\x90\x6b\xa1\xaa\x92\xd5\x99\xaf\x57\x07\x33\xb8\x75\x8f\x95\x02\x11\x76\xde\x1c\xad\x3c\xea\x93\x0b\xc0\x97\xf7\xdd\xa4\x2b\x02\x91\x02\xa0\x1e\x02\x64\xa0\x63\xaf\x37\x02\x24\x84\x8f\x42\x93\xd0\xf5\xbd\xea\xbf\x9e\xcb\xc7\xb1\x96\xe3\x4a\xb1\x31\xef\x56\x24\x47\xec\xd5\x03\x5b\x82\xf3\xe8\x01\x76\xcb\x76\xdd\x52\x03\x68\x09\x56\x08\x78\x6e\x78\xb2\x0f\x5f\x5e\x7d\xab\xc2\xd4\x8e\x0d\x79\xe5\x15\xd3\xc9\xab\x84\x15\xf3\x57\x76\x8c\xcf\x73\xef\x1b\x76\xa3\xb5\x15\x75\x7c\xea\xb0\xec\x21\xce\xcd\xf5\x8d\x4c\x45\x22\xb3\xcc\x96\x76\x92\x53\x72\xc9\x8a\xb9\x7f\xe1\xc5\xed\xfa\x9e\x4b\xb1\x1d\x47\x35\x44\xa0\x40\xb2\x0c\xb0\x03\xc6\x1f\xa5\xe9\xb7\x8d\xaf\xe0\x49\x28\xba\x6a\x5c\xb9\xf2\xbe\x2f\x21\x78\x39\x97\xac\x9b\xcc\x3c\x9b\xd2\xe2\xe9\xb5\x68\x7b\x69\x27\x8e\x7c\x60\x61\x6a\x10\xf4\x68\x0f\x0a\x46\xeb\x51\x4c\xd2\x75\x0e\xcc\x7a\xc3\xc5\x83\x56\x7a\xce\x84\xe6\x09\x9a\x80\xac\x5b\x7d\x93\x46\x91\x9b\x29\x0a\xca\x69\x90\xdd\x5c\x2e\x58\x59\xf2\x94\x29\x12\x41\xa4\x9a\x4a\x39\x9e\xbd\xb8\x03\x0c\x34\x64\xc7\xd9\x98\xc3\x9d\x7a\xfa\x59\x24\x9e\xe2\xc8\x73\x6c\x17\x9e\x23\x3b\xef\x3c\xcd\x6d\xe7\x79\x1d\x76\xa2\xcd\xcf\x31\x4e\x3a\x4f\x71\x5c\x39\xa8\x26\xab\x45\xcc\xe1\x49\x0f\x62\x4e\xd3\x9c\x07\xa5\x7b\x78\xd1\xe4\x1c\x56\xb1\xe3\x75\x95\xd0\x8c\xdd\x7c\xb3\x4f\x4d\x94\xed\xb2\xad\x8d\xba\xb3\x0f\x0b\x56\x2a\xae\x20\x10\xc7\x29\x1a\xb5\xa6\xc9\xdc\x6a\x8c\x9c\x09\x42\x0a\xa8\x4d\x89\xb0\x45\x84\x4c\xbb\x6d\xc6\x4d\x75\x94\x1b\x6d\xb7\x4a\xca\x4d\xf4\x25\xd9\xdf\x66\x54\xb3\xc7\x4e\xfe\x7c\x5c\x93\xe8\xee\x37\x41\x29\xf2\x99\x6b\x9a\x62\xb4\x49\x3e\x62\x60\xad\x97\x7d\xea\x8f\x26\x5b\x34\x47\x71\x48\x06\xbe\xdd\x9b\x4a\x19\x9b\xbf\xfb\x9f\xa6\x5d\x44\xc2\x42\x5b\xe4\x79\xda\xaf\xdc\x59\xc1\x26\xd2\x34\x2d\x99\x52\x8e\x85\x70\x17\xf0\xe2\xf6\x86\xfc\x15\x5f\xdf\xeb\x2a\x8b\x52\x6a\x14\xb8\xaf\x64\x4e\x79\x80\xbb\x63\x6b\x05\xab\x9f\xbb\xa5\x34\x79\x5d\xb7\x84\x5b\xff\x2e\xb1\x2f\x4f\x65\xd9\x48\xe6\x5f\x95\x2c\x25\x56\x59\xb7\xd7\x35\x1e\x45\xce\x5a\x93\x87\xc8\x99\xf9\xed\x15\x94\xd2\x38\x9f\xd4\x32\xd7\x8a\x40\x16\xa2\x19\xd8\x8b\xc8\xf6\x02\x85\xa2\x86\xd9\xc8\x05\x78\xd6\x82\x90\x03\x1b\x60\x3b\xbc\xd3\x62\x50\xff\x42\x71\xf0\xfe\x69\xf8\xdb\xda\xaa\x75\x5c\xd5\x31\x9c\x28\x5b\x8d\xc8\xd7\x72\xc6\x5d\xe5\x50\x03\x9c\x78\x36\x34\x44\x20\x1a\xe4\x94\x41\x4e\x59\x6d\x83\x9c\xb2\xb1\x29\x95\x5d\x0b\x7a\x9f\x85\xb8\x9a\xb7\x7d\xe9\xfd\x87\xe4\x6d\x46\x67\x84\xc1\x1f\xaf\x52\xae\xcc\xff\xc9\xdd\xdd\xd7\xe0\xbc\x51\x09\xa7\x4c\x01\x08\xb0\xb4\xd2\xe7\x1e\x41\x9c\xbc\x5f\x24\x89\xa4\xea\x5d\x50\x0c\x69\x0f\x34\x59\x77\x4f\xb8\x48\x5d\x29\xfa\x46\xbc\x85\x7d\x03\xb0\x25\xf5\xd1\xe4\xe8\xd0\x7d\xcf\xcc\x2d\x4d\x1e\x6e\x1b\xbe\x16\xb2\x34\xcf\x44\xe3\x51\x24\x93\x15\xfd\x75\x3f\x76\x6b\x65\x98\xb0\x63\xb8\x8d\x57\x6a\x37\xbe\x74\x7c\x8b\x23\x3a\x77\x76\x6b\xe1\x37\xaa\x94\x4c\x78\xed\x2b\x04\xf6\xa5\x9a\x99\x49\x81\x99\xd9\xeb\x66\x20\xff\x1c\xbb\x1c\x64\xd0\x37\x70\x60\x0e\x50\xec\x1b\x54\x35\x39\x2e\x2e\xdc\xaa\xf7\xba\x04\x04\xc7\xb0\x8c\x4b\xf1\x97\xa3\xee\x7d\x75\xbd\xfe\x22\xac\x7a\xa1\xb8\x64\x0d\xf6\x84\x03\xa4\x39\xbb\xe6\x39\x45\x35\xc6\x1a\x14\x70\xe5\x2f\x1d\x24\x9f\xd9\xdb\xfe\x85\x64\x6f\x89\x54\x25\x20\x5f\xd5\x76\xc7\xc3\x67\xd6\x73\x05\xb0\x46\x21\x8b\x2a\x43\x67\x7a\xbf\xb8\x1e\x0e\x25\x31\xd6\x78\x9c\xc5\x7e\xb4\x03\xe1\x1c\x56\x23\xc0\xfb\x10\xe0\xd9\x8c\x1f\x8f\x0f\xf3\x77\x10\x0b\x52\xb7\x91\xb0\x6d\x77\x51\x32\xfb\x31\xa3\xfc\xf7\x15\xd5\x1f\xa2\xdd\x68\xc5\xfd\xb7\xa4\xae\xd7\xff\xfc\x87\x3f\x04\x11\x34\x5e\x42\x09\x48\x0e\x15\xf2\x20\x2f\x88\xf7\x18\xa0\x25\x03\xe9\x00\x43\xf0\x9d\x7e\x03\xbd\x11\x75\xa0\x55\xe5\x18\x01\xff\x07\x0e\xf0\x8f\x0b\x15\x89\x09\xe0\x0f\x34\x87\xf7\xf0\x96\x81\x44\x4c\x37\x47\x4b\xc4\x74\xa4\xf4\x4b\xc7\x49\xba\x74\x8c\x54\x4b\x47\x49\xb0\x74\xbc\xb4\x4a\x07\x4e\xa6\x74\x10\x17\x93\x43\xa6\x4b\x8a\x8c\x3d\x8e\x8b\x3b\x0e\x4f\x88\x14\x1c\x9d\x1c\x1b\x99\x1c\x91\xf2\x68\xbf\x89\x8e\xa2\x25\xfa\x98\xa4\x46\x7d\xa3\xee\x8e\x97\xc0\xe8\x19\xd3\x16\x3d\x77\xb2\xa2\x03\xa7\x28\x3a\x5e\x62\xa2\xa3\xa4\x23\xea\x13\xde\x1a\x9f\x7a\x28\x26\xac\xb5\xef\xe5\x3a\x78\x72\xa1\xbd\xa4\x14\xda\x73\x22\xa1\xfd\xa5\x0f\x3a\x9e\x23\x65\x78\x52\x95\x27\xa7\x52\x89\xaf\x5d\x15\x6f\xef\x39\x94\xb2\xa6\xee\x7d\xa3\x72\xca\xe5\x9b\x75\x25\x71\x4e\x55\xa3\xe6\x8d\x96\x06\xab\x1d\x21\x2a\x20\x40\x0f\x41\x22\x34\x38\xd8\xbb\xec\x60\x2e\x22\x95\x38\xd8\xe9\x37\x77\x2b\x1e\x21\xfe\xf1\x21\x1d\x41\xfc\x20\x1d\xae\x20\x6e\xe1\x47\x70\x06\x19\xbc\x2d\xf6\xe7\x6d\xb1\xff\x38\x9d\x97\x66\xa0\x4f\x07\x03\x7d\xb4\x81\x5e\xb5\xd2\xfd\x3b\x85\x31\xa0\x64\x60\x6a\xe5\x7d\xb3\x96\x5c\x8d\x23\x2e\x6e\x6f\x02\xc6\x49\x4a\x06\xb9\x81\x68\xa6\x26\x9b\xb8\x5d\x67\xba\xb3\x5c\xb4\xe3\x72\xa9\xd6\x2c\x2f\x82\x6a\x5f\x0c\xf6\xf9\xc1\x3e\xbf\xda\x06\xfb\xfc\xc6\x76\x6c\x7b\xdd\xbc\xca\xa9\x18\x1b\x0c\x0c\x66\xfc\x96\xc3\xd8\x0a\x43\x33\x21\x16\x93\x06\x5e\x4b\x4c\xf0\x00\x29\x37\x2a\xc1\x7f\xaa\x58\xad\xcf\xf2\x8c\xe5\x81\x6c\x9d\xd0\xf7\x61\x37\x10\xf9\xe2\x15\xcc\x9c\xc8\xb5\x28\x62\xbb\x66\xbf\x99\x0e\xc5\x86\x6e\x22\x0c\xd3\x52\xd1\xea\x39\x43\x26\xfd\x76\x85\x49\x6f\xe9\x1f\x2c\xfa\x01\x9c\x10\xaa\xe5\x6e\x72\xa6\x06\x10\xcc\x7a\x6c\x76\xaf\x7b\x46\x72\x5e\x96\xb2\xb4\x76\xd7\xe6\x92\xd0\x81\x90\xcf\xe6\x9a\x95\x28\xf9\xa3\x0b\x57\x08\x2a\xb8\x63\xda\x42\x15\x40\xa5\x96\x84\x0a\x4c\x4c\x60\xfe\xed\xc2\x69\x60\xb9\x8e\x0e\xdd\xb3\x39\x5d\x70\x59\x05\x05\x90\xde\x21\xa5\x3c\xb1\x1f\x03\xff\xb4\x94\x95\xb7\x30\x55\xca\x2c\xd0\xef\xa1\x5a\x3f\xaf\x80\x41\xde\xd7\x9f\x83\x82\x26\x95\x4e\x7d\x3e\x66\x9f\xb8\xd2\xeb\x3b\xe6\x8e\xca\x95\x21\xdb\xd7\x35\x58\xa8\xc2\x60\xf1\xef\x02\xb2\x4a\xc4\x01\x7f\xab\xe3\xb6\xe0\xb3\xb8\x83\x9f\xba\xc4\x1e\x9b\x68\x0e\xf3\xc2\x90\x9c\x26\x73\x2e\xa2\x72\x32\x7c\xd7\x9a\x42\x4b\xfe\x99\x90\x8b\x2c\xab\x7d\x07\x95\x77\x69\x75\xf2\x50\x7b\xfa\x66\x33\x3b\x06\x36\xf0\x51\xb2\x14\x6c\x94\x48\x52\xc1\x43\x56\xf1\x89\xed\x6a\xb2\xc8\x1f\x69\xc9\x26\x89\xcc\xc9\xe5\xdd\x0d\x49\x4b\xde\x99\x4a\xf1\x00\xfe\xf5\xb8\xe9\x9d\xa5\x5c\x5f\x96\x8c\x36\xc8\x67\x75\x8b\x71\x47\x72\x8e\x52\x19\x4f\x96\x37\x57\x7d\xdd\xac\xf0\x6b\xc7\x00\x28\xef\x62\x65\x9e\x93\x2f\xa9\x62\x29\x79\x47\x05\x9d\xa1\xfa\xf0\xec\xee\xf6\xcb\x77\xe7\x06\x80\x40\xdd\x79\x73\xb5\xd1\x0f\xeb\xae\xd9\xf9\xfb\x7d\xa6\x95\x59\x5b\x78\x0f\xde\x68\xed\xfb\x9e\x8b\xdf\x6b\xbe\x1c\xe2\xd9\x89\xb0\x12\xc0\x1b\x32\x00\xdd\xae\x26\x5c\x44\x27\x29\x97\xe9\x55\xad\xa2\xe6\x45\x9e\x3e\x3c\x6d\xfa\xdc\x48\x13\x59\x76\x9b\x51\x71\x51\x14\xa5\x5c\x6c\xd6\xba\x86\x20\x07\xf7\xbd\x5b\x00\x3a\x98\xbb\x87\x05\x9e\x08\xf8\x54\x0a\x14\x62\x70\xd8\xcd\xfb\x7f\xa3\xbd\x62\x56\x0a\x60\xc1\x4e\x2e\x2a\x2d\x73\xaa\x79\x72\x42\x64\x49\x4e\xde\x51\x51\xd1\x6c\x63\x6c\xca\xce\x15\x6f\x13\x30\x77\x7e\xb4\xbd\xb6\x5a\xc0\x67\x3b\x19\xd8\xdd\xdf\x6b\x5a\x1a\x54\x77\x79\xf7\x5d\xd4\xb7\x4a\x53\x5d\xad\x51\x86\x1d\xd4\x6a\x3b\x7d\x1a\x93\x8c\x2a\xfd\x6d\x91\x1a\xfc\xb0\xf2\xeb\x2e\x22\x94\x50\x4d\x33\x39\xfb\x57\x46\xb3\xcd\x97\x21\x04\xa4\x2e\x9b\x9d\x38\x8b\x88\xf5\x28\xad\xee\xfd\xf7\xa7\x8a\x18\x51\xd2\x40\x09\xd7\x8a\x94\x2c\x63\x0b\x2a\xb4\xfb\xfc\x0e\xeb\x25\x9e\xda\x6d\xd9\x0a\x70\xbc\xb6\xb1\xa6\x4c\xb3\x32\xe7\xa2\x3d\xce\x1d\x7c\x7f\x29\x45\xca\x91\x2b\x01\x2b\x12\x7e\xd1\x1e\x6b\x3b\x54\x6e\x73\x3d\xd8\xe1\x6c\xd0\xae\x14\xd9\x98\x4f\x7b\x7b\xf0\xb5\x7b\x2b\xba\xcc\xf1\x21\x78\x6e\xb6\xe6\xb6\xb6\x7b\xe4\x41\x18\x89\x02\x12\xa7\x6f\xde\x9b\x4e\x36\xa7\x8b\xbd\x19\x3b\x70\xc0\x29\x6c\x8f\x0a\x1c\xdb\x79\x6f\x73\x4a\xd8\x05\x8d\xd8\xba\x19\xa3\xd5\xa9\x6c\xc7\xd4\xad\x8d\xbf\x5c\xf9\x0c\x13\xab\x78\xdf\x26\xf4\xf2\x68\xbd\xb4\x9d\xb2\x04\xf1\x8d\x61\x2c\x5e\x68\x05\xfe\xd6\x5a\x1a\xf5\xe2\xe3\x74\x61\x81\xa4\x30\xb0\x10\x7e\x1c\xcb\x79\x63\x03\x9b\x4a\x2b\xc1\x52\x52\x70\x86\x29\xdb\xa9\xb0\x9b\x09\xf4\x8c\xd1\xd4\x3e\x34\x74\xb3\x64\xf6\xb7\x91\xf5\x38\x0c\x62\x50\xd0\x6f\xd7\xd9\x60\x29\x66\x12\x07\x6f\x84\x57\x7f\x95\x56\x07\x68\x33\x10\x1a\xac\x02\xdc\xc5\x88\xa8\x2a\x99\x13\x6a\x04\x19\x65\xae\x83\xc1\x17\x6c\x92\x53\xc1\xa7\x4c\xe9\x89\xaf\x97\xab\xbe\xff\xfd\x0f\x5d\x6c\xc7\x5b\x59\x12\x1b\xa5\x3d\x72\x09\xb1\xed\x1a\x6b\x98\xe3\x0a\x37\xc2\xf7\x5c\x6b\x64\x0a\x99\xda\x05\x3f\xc2\x52\x34\x7d\x30\xa4\x14\x97\x52\x31\xf0\x1a\xe8\xe2\x51\x4e\x0c\xdb\xdb\x98\xf6\x7f\x19\xda\xf9\xdf\x27\xe4\xec\x11\x98\x90\x13\xf3\xe7\x09\x4e\xc7\x47\x9a\x35\x15\x4e\xf5\xb4\x30\x69\x5a\xc9\x67\x33\x56\x76\xda\x58\xcd\xa7\x6c\xc1\x84\x3e\xb7\xc9\xc0\x85\x6c\x74\xe5\xfc\xfc\x6a\xfd\xc9\xea\x34\xbf\xff\xfd\x0f\x27\xe4\xac\xbd\x27\x1d\x43\x72\x91\xb2\x4f\xe4\xf7\x68\x2d\xe5\xca\xec\xde\xf9\x04\x15\x2e\x6a\x29\x34\xfd\x64\x46\x4c\xe6\x52\x31\x81\x0a\x30\x2d\xc9\x9c\x2e\x18\x51\x32\x67\xe4\x91\x65\xd9\xd8\xda\x8f\xc9\x23\x5d\x76\xe7\x40\x77\x47\x08\x99\x55\x49\x41\x4b\xdd\x02\xe3\xbd\x5c\xc2\x07\x2e\xf6\x9a\xc0\xf1\x2b\x2e\x56\x5d\x3a\x3b\x05\xbc\x0d\x4a\xe1\x19\xd7\x2e\xeb\x80\x8d\x2f\xd2\xcb\x57\xe6\xb0\x4a\x7e\x5f\x69\x59\xaa\x57\x29\x5b\xb0\xec\x95\xe2\xb3\x31\x2d\x93\x39\xd7\x2c\xd1\x55\xc9\x5e\xd1\x82\x8f\x13\x29\x0c\x60\x40\xaa\xdf\x3c\xfd\xb5\xd9\x09\x35\x36\x0b\xdd\xad\x25\x0e\xdc\xb1\x6e\xdb\x43\xdc\x8e\xf5\xb1\x35\x3c\x8f\x1a\x3d\x62\x83\x02\x54\xb1\xf1\xbb\x84\xfa\xce\x67\xdf\x2a\x50\xf9\xbd\xda\xc7\x4e\xb9\xc2\xc9\xf1\xb4\xb9\x73\xbf\x6c\xad\xf0\x64\x75\x0c\x83\x93\xd0\xdb\x17\x50\x58\x8b\x4a\xe4\x34\x45\x32\x42\x45\x67\x9c\xfb\x81\xef\xac\x39\x0f\xa8\xb7\x9f\x2c\xc7\xd0\x85\xcc\xc6\x54\xa4\xe6\xdf\x98\x78\x23\xd9\xed\x91\x1a\x78\x00\x15\xdf\x2b\xf2\xfb\xf6\xe6\xea\xf9\xc1\xf3\xd5\xaf\x2b\xbe\x0f\x4c\xd7\xc7\x9e\x65\xf9\xf2\x40\x66\x19\x45\x12\xf4\xd0\x2d\x2b\xe6\x18\x98\xb6\x20\xc2\x95\xeb\xf5\xff\x58\xcf\x01\x5f\x3f\xa7\x8b\x75\xde\x6d\xcd\x6f\xc8\x08\x81\xf3\xfd\xba\xfe\xa2\xa9\x0b\x07\xcf\x7f\xaa\xb4\xad\x50\xe2\x32\xbf\xb6\x96\xe1\x84\xd3\x39\x15\xb3\x1d\xac\x4d\xd0\xc1\x38\xbf\x49\x33\x91\xb1\x19\x73\x5d\xac\xf6\xc2\x67\xa7\x4c\xdd\x90\x53\x41\x54\xc9\xb8\xf2\x55\x3a\x8c\xd8\xaa\x34\xa1\x0b\xca\x33\xb0\x13\xca\x7b\xc5\xca\x85\x55\xb6\x63\x0d\x2d\xba\x2a\x63\xe3\xb5\xd5\xc8\xf0\x1e\x49\xc2\x75\x6b\x58\x3f\x95\x5d\x0b\x00\xa9\x77\x65\xf6\x5b\x67\xbd\x17\xf9\x16\x55\x0b\x5b\x7f\xde\x6a\xa0\xe8\x16\xf2\x0c\xfc\xfd\x2b\xa3\xa5\xbe\x67\x54\x7f\xe4\xbb\x38\x94\x35\x90\x6e\x7d\xe7\xf4\x72\x35\x40\x3f\x32\x32\x93\xda\xb0\x9d\x15\xc0\x3e\xca\x07\x98\xa2\xde\x03\xda\xa1\x21\xba\x5e\xe5\xc7\x92\x42\x86\x09\x29\x22\x97\xd9\xfe\x70\x7d\x9d\x56\x16\xb1\x90\xa4\xf1\x6d\x32\x2d\x65\x0e\xca\x45\x3c\x3b\x34\x55\xee\x4e\x86\xb1\xd7\x25\xe7\x4c\xa9\x9d\x29\x8e\xdb\x61\x25\xf8\x36\x5e\xe5\x15\x23\x7f\xee\x7e\xc3\x70\x76\x23\x54\xa4\x4c\x53\x9e\xb9\xab\x8c\x5b\xe1\x77\xa9\x0b\xbb\xee\x5c\x60\xc9\xa8\xda\xc5\xd0\xb4\x66\xfd\x01\x5e\xc6\x49\x4b\xc1\xc6\x8f\xb2\x4c\xc9\x25\xcd\x59\x76\x49\x15\xb3\x7d\x35\xf3\xd5\xe0\x19\x9d\xaa\xbd\x4e\x79\xb3\x3a\x74\xcb\x94\x51\xc9\x57\x1b\x14\xe0\xaf\x5a\xa0\xc5\x09\x8e\x9c\x56\xfa\x63\x59\xb1\x11\x79\x6b\xa8\xd7\x88\x7c\x2b\x1e\x84\x7c\x7c\xda\x5c\xf5\x4e\x63\x5d\x6b\xa6\x4d\x0f\x49\x97\xee\xbc\xa5\xd8\xf3\xd3\xed\x39\x23\x8b\xf0\xb7\x68\x9f\xdb\xc4\xc6\xbf\xea\x66\x64\xfe\xb9\xa6\x6a\x34\xa2\x75\x29\x67\x25\x53\x0a\xb5\x38\xd1\xea\xfb\x86\xc1\xe2\xaf\x4c\x58\xfb\x70\xe7\xf4\x6e\x36\x7d\xe5\x66\xea\xe8\xda\xac\xfe\xc5\x9e\xb7\x1d\xac\xc8\x36\xb2\x1a\xbb\x23\x23\x1a\x13\xdd\xa2\x64\xdc\x36\xc3\xcd\xca\xc5\x06\xd5\x6b\xbc\x8b\x4c\xc9\x2e\xcd\xb8\x5b\xdd\xe5\xdd\x77\xdb\x37\x7b\x2b\xed\xeb\xa2\x4f\xdd\xea\xc7\xa7\x2a\x1e\x3b\xef\x4c\xa7\xb2\x31\x94\xd3\x3f\x8e\x82\xf1\x39\x55\x8b\xcf\xab\x54\x3c\xba\x3a\xf1\xa8\x8a\xc4\xe3\xa9\x10\x7b\x2a\x0f\x3b\x2f\xd2\x2e\x85\x61\xe8\x1d\x8a\x53\x12\x3e\xbb\x7a\xb0\x73\x4f\x76\xa9\x04\x43\xf7\x24\x4e\x0d\x78\x6c\x05\x60\xd0\x16\xec\x54\xfa\xc5\xec\x43\xa4\xa2\xef\xc8\x2a\xbe\xce\xbd\x08\x54\xeb\x85\xee\xc8\xe1\x54\x79\x2f\x56\x89\xd7\xb9\xc5\x3b\x14\x77\xa1\xdb\x1a\xa5\xac\x3b\xb2\x9a\xae\x63\xfd\x71\xaa\x39\xcb\x63\xb2\x34\x84\x45\xbf\x69\xbc\xdc\x64\xd2\x2d\x83\x08\x0e\x70\xf6\x0d\xe7\x70\xd7\x64\x25\xfb\x72\xea\x86\x79\xee\xeb\xff\x61\xa7\x1c\xce\x0d\x5b\x16\x9e\xa5\x5e\xa6\xec\x5a\x02\x21\x57\xd7\xb7\x1f\xae\x2f\x2f\x3e\x5e\x5f\xad\x72\xe1\xf1\xec\xf2\x6e\x45\xd1\xb8\xc1\x2e\x6f\x79\xc1\x10\xab\x2d\x3f\x19\xd8\xda\xf2\x53\x55\xf1\x4d\x5f\x3d\x9d\x79\x7f\x12\xcf\xf0\x24\xe2\xda\x8d\x27\xf6\x84\x28\x00\xb6\xd0\x6b\xd5\x70\x95\x73\x99\xa5\xca\xc5\x37\xdc\x5c\xf9\x44\x04\x5c\x24\x59\x95\x1a\x96\xeb\xdb\x6f\x6f\xae\xd4\x84\x90\x2f\x59\x42\x2b\x65\x58\xb7\xed\xe2\xba\x14\xa7\x9a\x7c\xf3\xfe\xeb\x7f\x83\xd0\x2e\xf8\x72\xe4\xd3\xa5\x42\x49\x3f\x4e\xb1\x2a\x21\x2c\x14\x7a\x45\xb6\x0e\x66\x94\xd0\xc2\x60\xe0\xed\x2a\x7f\x8e\xd9\x6b\xa8\x48\xc9\x9c\x65\x85\xa1\x0e\x0f\x8c\xd4\x75\xca\xcc\x80\xf0\x2b\xc6\x6f\x58\x3f\xf6\x19\xd3\x98\x94\x60\x97\xab\xfa\xce\x03\xe8\xd0\xb0\x3f\x41\xb7\xde\x52\x17\x58\xed\xcb\x23\x55\x56\x43\xb9\x71\xb6\x1d\xa0\xd2\xad\x8f\xdb\xae\xd2\xda\xa2\xcc\x42\xca\x02\x7f\xad\xcd\xd9\x4c\xb6\xd6\x5b\xa1\x73\x18\xd7\xc1\xda\xf3\xed\x9e\x80\x9b\x0b\x4f\xaf\xe9\xae\xd8\xea\x26\xb7\x06\xf6\xb1\x40\x8d\x29\x87\xcd\x45\xb1\x72\xc1\xd2\x37\x60\xcf\x71\x8f\xd0\xdb\xb6\xfd\xac\xba\x77\xcc\x4c\x03\xeb\x58\x0d\x1c\xf9\xaf\xff\xfe\xd5\xff\x1f\x00\x00\xff\xff\x20\x58\x67\x59\xb4\x7f\x03\x00") func operatorsCoreosCom_subscriptionsYamlBytes() ([]byte, error) { return bindataRead( diff --git a/staging/api/go.mod b/staging/api/go.mod index d8e7ea0807..f1f16ffb4f 100644 --- a/staging/api/go.mod +++ b/staging/api/go.mod @@ -1,11 +1,11 @@ module github.com/operator-framework/api -go 1.24.3 +go 1.24.4 require ( github.com/blang/semver/v4 v4.0.0 github.com/go-bindata/go-bindata/v3 v3.1.3 - github.com/google/cel-go v0.25.0 + github.com/google/cel-go v0.26.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 github.com/stretchr/testify v1.10.0 @@ -15,7 +15,7 @@ require ( k8s.io/apimachinery v0.33.2 k8s.io/client-go v0.33.2 sigs.k8s.io/controller-runtime v0.21.0 - sigs.k8s.io/yaml v1.4.0 + sigs.k8s.io/yaml v1.5.0 ) require ( @@ -62,6 +62,7 @@ require ( go.opentelemetry.io/otel/sdk v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect golang.org/x/lint v0.0.0-20241112194109-818c5a804067 // indirect golang.org/x/mod v0.25.0 // indirect diff --git a/staging/api/go.sum b/staging/api/go.sum index 813c8d7fd6..484d499315 100644 --- a/staging/api/go.sum +++ b/staging/api/go.sum @@ -46,8 +46,8 @@ github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.25.0 h1:jsFw9Fhn+3y2kBbltZR4VEz5xKkcIFRPDnuEzAGv5GY= -github.com/google/cel-go v0.25.0/go.mod h1:hjEb6r5SuOSlhCHmFoLzu8HGCERvIsDAbxDAyNU/MmI= +github.com/google/cel-go v0.26.0 h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI= +github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw= github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -168,6 +168,10 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -268,5 +272,6 @@ sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.7.0 h1:qPeWmscJcXP0snki5IYF79Z8xrl8ETFxgMd7wez1XkI= sigs.k8s.io/structured-merge-diff/v4 v4.7.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4= diff --git a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml index 8dd4ff9b91..cfe257e172 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/e2e-tests.yml @@ -17,7 +17,7 @@ jobs: sha: ${{ steps.vars.outputs.sha }} steps: # checkout code and setup go - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" @@ -49,14 +49,14 @@ jobs: E2E_KUBECONFIG_ROOT: ${{ github.workspace }}/kubeconfigs steps: # checkout code and setup go - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" # load the olm image - name: Load OLM Docker image - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: olm-image.tar path: . @@ -136,14 +136,14 @@ jobs: E2E_KUBECONFIG_ROOT: ${{ github.workspace }}/kubeconfigs steps: # checkout code and setup go - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" # load the olm image - name: Load OLM Docker image - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: olm-image.tar path: . diff --git a/staging/operator-lifecycle-manager/.github/workflows/go-verdiff.yaml b/staging/operator-lifecycle-manager/.github/workflows/go-verdiff.yaml index cb5321bb46..d608706f45 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/go-verdiff.yaml +++ b/staging/operator-lifecycle-manager/.github/workflows/go-verdiff.yaml @@ -10,7 +10,7 @@ jobs: go-verdiff: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 - name: Check golang version diff --git a/staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml b/staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml index 404e9980b1..0f3a7a4549 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml +++ b/staging/operator-lifecycle-manager/.github/workflows/goreleaser.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 - name: Set up Go diff --git a/staging/operator-lifecycle-manager/.github/workflows/quickstart.yml b/staging/operator-lifecycle-manager/.github/workflows/quickstart.yml index 90c067d266..b1f92c4be9 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/quickstart.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/quickstart.yml @@ -8,7 +8,7 @@ jobs: install-quickstart: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: | curl -sLo kind "$(curl -sL https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r '[.assets[] | select(.name == "kind-linux-amd64")] | first | .browser_download_url')" chmod +x kind diff --git a/staging/operator-lifecycle-manager/.github/workflows/sanity.yaml b/staging/operator-lifecycle-manager/.github/workflows/sanity.yaml index f2a9e595a8..50b4cd7b59 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/sanity.yaml +++ b/staging/operator-lifecycle-manager/.github/workflows/sanity.yaml @@ -10,7 +10,7 @@ jobs: check-vendor: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" @@ -19,7 +19,7 @@ jobs: static-analysis: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" @@ -28,7 +28,7 @@ jobs: verify: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" diff --git a/staging/operator-lifecycle-manager/.github/workflows/unit.yml b/staging/operator-lifecycle-manager/.github/workflows/unit.yml index 527511c6d7..64a6957085 100644 --- a/staging/operator-lifecycle-manager/.github/workflows/unit.yml +++ b/staging/operator-lifecycle-manager/.github/workflows/unit.yml @@ -14,7 +14,7 @@ jobs: github.event_name != 'issue_comment' || startsWith(github.event.comment.body, '/retest unit') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - uses: actions/setup-go@v5 with: go-version-file: "go.mod" diff --git a/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_07-olm-operator.deployment.yaml b/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_07-olm-operator.deployment.yaml index f2c7bd8ab2..139f295195 100644 --- a/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_07-olm-operator.deployment.yaml +++ b/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_07-olm-operator.deployment.yaml @@ -22,9 +22,7 @@ spec: seccompProfile: type: RuntimeDefault serviceAccountName: olm-operator-serviceaccount - {{- if or .Values.olm.tlsSecret .Values.olm.clientCASecret }} volumes: - {{- end }} {{- if .Values.olm.tlsSecret }} - name: srv-cert secret: @@ -35,15 +33,16 @@ spec: secret: secretName: {{ .Values.olm.clientCASecret }} {{- end }} + - name: tmpfs + emptyDir: {} containers: - name: olm-operator securityContext: allowPrivilegeEscalation: false + readOnlyRootFilesystem: true capabilities: drop: [ "ALL" ] - {{- if or .Values.olm.tlsSecret .Values.olm.clientCASecret }} volumeMounts: - {{- end }} {{- if .Values.olm.tlsSecret }} - name: srv-cert mountPath: "/srv-cert" @@ -54,6 +53,8 @@ spec: mountPath: "/profile-collector-cert" readOnly: true {{- end }} + - name: tmpfs + mountPath: /tmp command: - /bin/olm args: diff --git a/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_08-catalog-operator.deployment.yaml b/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_08-catalog-operator.deployment.yaml index eea8046cea..7b27706a74 100644 --- a/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_08-catalog-operator.deployment.yaml +++ b/staging/operator-lifecycle-manager/deploy/chart/templates/0000_50_olm_08-catalog-operator.deployment.yaml @@ -22,9 +22,7 @@ spec: seccompProfile: type: RuntimeDefault serviceAccountName: olm-operator-serviceaccount - {{- if or .Values.catalog.tlsSecret .Values.catalog.clientCASecret }} volumes: - {{- end }} {{- if .Values.catalog.tlsSecret }} - name: srv-cert secret: @@ -35,15 +33,16 @@ spec: secret: secretName: {{ .Values.catalog.clientCASecret }} {{- end }} + - name: tmpfs + emptyDir: {} containers: - name: catalog-operator securityContext: allowPrivilegeEscalation: false + readOnlyRootFilesystem: true capabilities: drop: [ "ALL" ] - {{- if or .Values.catalog.tlsSecret .Values.catalog.clientCASecret }} volumeMounts: - {{- end }} {{- if .Values.catalog.tlsSecret }} - name: srv-cert mountPath: "/srv-cert" @@ -54,6 +53,8 @@ spec: mountPath: "/profile-collector-cert" readOnly: true {{- end }} + - name: tmpfs + mountPath: /tmp command: - /bin/catalog args: diff --git a/staging/operator-lifecycle-manager/deploy/chart/templates/_packageserver.deployment-spec.yaml b/staging/operator-lifecycle-manager/deploy/chart/templates/_packageserver.deployment-spec.yaml index ebf710787c..d3c791df4a 100644 --- a/staging/operator-lifecycle-manager/deploy/chart/templates/_packageserver.deployment-spec.yaml +++ b/staging/operator-lifecycle-manager/deploy/chart/templates/_packageserver.deployment-spec.yaml @@ -31,6 +31,7 @@ spec: - name: packageserver securityContext: allowPrivilegeEscalation: false + readOnlyRootFilesystem: true capabilities: drop: [ "ALL" ] command: diff --git a/staging/operator-lifecycle-manager/go.mod b/staging/operator-lifecycle-manager/go.mod index 14db81cbbd..fca1a3ac8f 100644 --- a/staging/operator-lifecycle-manager/go.mod +++ b/staging/operator-lifecycle-manager/go.mod @@ -1,10 +1,10 @@ module github.com/operator-framework/operator-lifecycle-manager -go 1.24.3 +go 1.24.4 require ( github.com/blang/semver/v4 v4.0.0 - github.com/containers/image/v5 v5.35.0 + github.com/containers/image/v5 v5.36.1 github.com/coreos/go-semver v0.3.1 github.com/distribution/reference v0.6.0 github.com/evanphx/json-patch v5.9.11+incompatible @@ -15,25 +15,25 @@ require ( github.com/golang/mock v1.6.0 github.com/google/go-cmp v0.7.0 github.com/itchyny/gojq v0.12.17 - github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2 + github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 github.com/mitchellh/hashstructure v1.1.0 github.com/mitchellh/mapstructure v1.5.0 github.com/onsi/ginkgo/v2 v2.23.4 github.com/onsi/gomega v1.38.0 github.com/openshift/api v3.9.0+incompatible github.com/openshift/client-go v0.0.0-20220525160904-9e1acff93e4a - github.com/operator-framework/api v0.32.0 + github.com/operator-framework/api v0.33.0 github.com/operator-framework/operator-registry v1.56.0 github.com/otiai10/copy v1.14.1 github.com/pkg/errors v0.9.1 - github.com/prometheus/client_golang v1.22.0 + github.com/prometheus/client_golang v1.23.0 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.65.0 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.9.1 github.com/spf13/pflag v1.0.7 github.com/stretchr/testify v1.10.0 - golang.org/x/net v0.42.0 + golang.org/x/net v0.43.0 golang.org/x/sync v0.16.0 golang.org/x/time v0.12.0 google.golang.org/grpc v1.73.0 @@ -78,10 +78,10 @@ require ( github.com/containers/common v0.63.1 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.2.1 // indirect - github.com/containers/storage v1.58.0 // indirect + github.com/containers/storage v1.59.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/docker/cli v28.3.1+incompatible // indirect + github.com/docker/cli v28.3.2+incompatible // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker v28.3.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.3 // indirect @@ -104,7 +104,7 @@ require ( github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/cel-go v0.25.0 // indirect + github.com/google/cel-go v0.26.0 // indirect github.com/google/gnostic-models v0.6.9 // indirect github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect github.com/google/uuid v1.6.0 // indirect @@ -159,14 +159,15 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.2 // indirect - golang.org/x/crypto v0.40.0 // indirect + golang.org/x/crypto v0.41.0 // indirect golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect - golang.org/x/mod v0.25.0 // indirect + golang.org/x/mod v0.26.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.34.0 // indirect - golang.org/x/term v0.33.0 // indirect - golang.org/x/text v0.27.0 // indirect - golang.org/x/tools v0.34.0 // indirect + golang.org/x/sys v0.35.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.35.0 // indirect + golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated // indirect gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect diff --git a/staging/operator-lifecycle-manager/go.sum b/staging/operator-lifecycle-manager/go.sum index 34923a785a..4da6767012 100644 --- a/staging/operator-lifecycle-manager/go.sum +++ b/staging/operator-lifecycle-manager/go.sum @@ -1350,8 +1350,6 @@ github.com/apache/arrow/go/v12 v12.0.1/go.mod h1:weuTY7JvTG/HDPtMQxEUp7pU73vkLWM github.com/apache/arrow/go/v14 v14.0.2/go.mod h1:u3fgh3EdgN/YQ8cVQRguVW3R+seMybFg8QBQ5LU+eBY= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/apache/thrift v0.17.0/go.mod h1:OLxhMRJxomX+1I/KUw03qoV3mMz16BwaKI+d4fPBx7Q= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= -github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= @@ -1407,14 +1405,14 @@ github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++ github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containers/common v0.63.1 h1:6g02gbW34PaRVH4Heb2Pk11x0SdbQ+8AfeKKeQGqYBE= github.com/containers/common v0.63.1/go.mod h1:+3GCotSqNdIqM3sPs152VvW7m5+Mg8Kk+PExT3G9hZw= -github.com/containers/image/v5 v5.35.0 h1:T1OeyWp3GjObt47bchwD9cqiaAm/u4O4R9hIWdrdrP8= -github.com/containers/image/v5 v5.35.0/go.mod h1:8vTsgb+1gKcBL7cnjyNOInhJQfTUQjJoO2WWkKDoebM= +github.com/containers/image/v5 v5.36.1 h1:6zpXBqR59UcAzoKpa/By5XekeqFV+htWYfr65+Cgjqo= +github.com/containers/image/v5 v5.36.1/go.mod h1:b4GMKH2z/5t6/09utbse2ZiLK/c72GuGLFdp7K69eA4= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM= github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ= -github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc= -github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo= +github.com/containers/storage v1.59.1 h1:11Zu68MXsEQGBBd+GadPrHPpWeqjKS8hJDGiAHgIqDs= +github.com/containers/storage v1.59.1/go.mod h1:KoAYHnAjP3/cTsRS+mmWZGkufSY2GACiKQ4V3ZLQnR0= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs= @@ -1433,8 +1431,8 @@ github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN github.com/distribution/distribution/v3 v3.0.0/go.mod h1:tRNuFoZsUdyRVegq8xGNeds4KLjwLCRin/tTo6i1DhU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.3.1+incompatible h1:ZUdwOLDEBoE3TE5rdC9IXGY5HPHksJK3M+hJEWhh2mc= -github.com/docker/cli v28.3.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.3.2+incompatible h1:mOt9fcLE7zaACbxW1GeS65RI67wIJrTnqS3hP2huFsY= +github.com/docker/cli v28.3.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= @@ -1519,26 +1517,12 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= -github.com/go-openapi/analysis v0.23.0 h1:aGday7OWupfMs+LbmLZG4k0MYXIANxcuBTYUC03zFCU= -github.com/go-openapi/analysis v0.23.0/go.mod h1:9mz9ZWaSlV8TvjQHLl2mUW2PbZtemkE8yA5v22ohupo= -github.com/go-openapi/errors v0.22.1 h1:kslMRRnK7NCb/CvR1q1VWuEQCEIsBGn5GgKD9e+HYhU= -github.com/go-openapi/errors v0.22.1/go.mod h1:+n/5UdIqdVnLIJ6Q9Se8HNGUXYaY6CN8ImWzfi/Gzp0= github.com/go-openapi/jsonpointer v0.21.1 h1:whnzv/pNXtK2FbX/W9yJfRmE2gsmkfahjMKB0fZvcic= github.com/go-openapi/jsonpointer v0.21.1/go.mod h1:50I1STOfbY1ycR8jGz8DaMeLCdXiI6aDteEdRNNzpdk= github.com/go-openapi/jsonreference v0.21.0 h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF2+tg1TRrwQ= github.com/go-openapi/jsonreference v0.21.0/go.mod h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4= -github.com/go-openapi/loads v0.22.0 h1:ECPGd4jX1U6NApCGG1We+uEozOAvXvJSF4nnwHZ8Aco= -github.com/go-openapi/loads v0.22.0/go.mod h1:yLsaTCS92mnSAZX5WWoxszLj0u+Ojl+Zs5Stn1oF+rs= -github.com/go-openapi/runtime v0.28.0 h1:gpPPmWSNGo214l6n8hzdXYhPuJcGtziTOgUpvsFWGIQ= -github.com/go-openapi/runtime v0.28.0/go.mod h1:QN7OzcS+XuYmkQLw05akXk0jRH/eZ3kb18+1KwW9gyc= -github.com/go-openapi/spec v0.21.0 h1:LTVzPc3p/RzRnkQqLRndbAzjY0d0BCL72A6j3CdL9ZY= -github.com/go-openapi/spec v0.21.0/go.mod h1:78u6VdPw81XU44qEWGhtr982gJ5BWg2c0I5XwVMotYk= -github.com/go-openapi/strfmt v0.23.0 h1:nlUS6BCqcnAk0pyhi9Y+kdDVZdZMHfEKQiS4HaMgO/c= -github.com/go-openapi/strfmt v0.23.0/go.mod h1:NrtIpfKtWIygRkKVsxh7XQMDQW5HKQl6S5ik2elW+K4= github.com/go-openapi/swag v0.23.1 h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU= github.com/go-openapi/swag v0.23.1/go.mod h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0= -github.com/go-openapi/validate v0.24.0 h1:LdfDKwNbpB6Vn40xhTdNZAnfLECL81w+VX3BumrGD58= -github.com/go-openapi/validate v0.24.0/go.mod h1:iyeX1sEufmv3nPbBdX3ieNviWnOZaJ1+zquzJEf2BAQ= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -1809,8 +1793,8 @@ github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2 h1:yVCLo4+ACVroOEr4iFU1iH46Ldlzz2rTuu18Ra7M8sU= -github.com/maxbrunsfeld/counterfeiter/v6 v6.11.2/go.mod h1:VzB2VoMh1Y32/QqDfg9ZJYHj99oM4LiGtqPZydTiQSQ= +github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 h1:Eaq36EIyJNp7b3qDhjV7jmDVq/yPeW2v4pTqzGbOGB4= +github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3/go.mod h1:6KKUoQBZBW6PDXJtNfqeEjPXMj/ITTk+cWK9t9uS5+E= github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= @@ -1840,8 +1824,6 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= @@ -1858,8 +1840,8 @@ github.com/openshift/api v0.0.0-20221021112143-4226c2167e40 h1:PxjGCA72RtsdHWToZ github.com/openshift/api v0.0.0-20221021112143-4226c2167e40/go.mod h1:aQ6LDasvHMvHZXqLHnX2GRmnfTWCF/iIwz8EMTTIE9A= github.com/openshift/client-go v0.0.0-20221019143426-16aed247da5c h1:CV76yFOTXmq9VciBR3Bve5ZWzSxdft7gaMVB3kS0rwg= github.com/openshift/client-go v0.0.0-20221019143426-16aed247da5c/go.mod h1:lFMO8mLHXWFzSdYvGNo8ivF9SfF6zInA8ZGw4phRnUE= -github.com/operator-framework/api v0.32.0 h1:LZSZr7at3NrjsjwQVNsYD+04o5wMq75jrR0dMYiIIH8= -github.com/operator-framework/api v0.32.0/go.mod h1:OGJo6HUYxoQwpGaLr0lPJzSek51RiXajJSSa8Jzjvp8= +github.com/operator-framework/api v0.33.0 h1:Tdu9doXz6Key2riIiP3/JPahHEgFBXAqyWQN4kOITS8= +github.com/operator-framework/api v0.33.0/go.mod h1:sEh1VqwQCJUj+l/rKNWPDEJdFNAbdTu8QcM+x+wdYYo= github.com/operator-framework/operator-registry v1.56.0 h1:vbTyee/gahpnh7qw1hV1osnWy9YpTjIbEuHpwIdoEUs= github.com/operator-framework/operator-registry v1.56.0/go.mod h1:NOmQyrgOGW0cwUxHG5ZqKxdObOzQNmO4Rxcf7JC32FU= github.com/otiai10/copy v1.14.1 h1:5/7E6qsUMBaH5AnQ0sSLzzTg1oTECmcCmT6lvF45Na8= @@ -1884,8 +1866,8 @@ github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4 github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/proglottis/gpgme v0.1.4 h1:3nE7YNA70o2aLjcg63tXMOhPD7bplfE5CBdV+hLAm2M= github.com/proglottis/gpgme v0.1.4/go.mod h1:5LoXMgpE4bttgwwdv9bLs/vwqv3qV7F4glEEZ7mRKrM= -github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= -github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc= +github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= @@ -1924,8 +1906,6 @@ github.com/sigstore/fulcio v1.7.1 h1:RcoW20Nz49IGeZyu3y9QYhyyV3ZKQ85T+FXPKkvE+aQ github.com/sigstore/fulcio v1.7.1/go.mod h1:7lYY+hsd8Dt+IvKQRC+KEhWpCZ/GlmNvwIa5JhypMS8= github.com/sigstore/protobuf-specs v0.4.3 h1:kRgJ+ciznipH9xhrkAbAEHuuxD3GhYnGC873gZpjJT4= github.com/sigstore/protobuf-specs v0.4.3/go.mod h1:+gXR+38nIa2oEupqDdzg4qSBT0Os+sP7oYv6alWewWc= -github.com/sigstore/rekor v1.3.10 h1:/mSvRo4MZ/59ECIlARhyykAlQlkmeAQpvBPlmJtZOCU= -github.com/sigstore/rekor v1.3.10/go.mod h1:JvryKJ40O0XA48MdzYUPu0y4fyvqt0C4iSY7ri9iu3A= github.com/sigstore/sigstore v1.9.5 h1:Wm1LT9yF4LhQdEMy5A2JeGRHTrAWGjT3ubE5JUSrGVU= github.com/sigstore/sigstore v1.9.5/go.mod h1:VtxgvGqCmEZN9X2zhFSOkfXxvKUjpy8RpUW39oCtoII= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -2009,8 +1989,6 @@ go.etcd.io/etcd/raft/v3 v3.5.21 h1:dOmE0mT55dIUsX77TKBLq+RgyumsQuYeiRQnW/ylugk= go.etcd.io/etcd/raft/v3 v3.5.21/go.mod h1:fmcuY5R2SNkklU4+fKVBQi2biVp5vafMrWUEj4TJ4Cs= go.etcd.io/etcd/server/v3 v3.5.21 h1:9w0/k12majtgarGmlMVuhwXRI2ob3/d1Ik3X5TKo0yU= go.etcd.io/etcd/server/v3 v3.5.21/go.mod h1:G1mOzdwuzKT1VRL7SqRchli/qcFrtLBTAQ4lV20sXXo= -go.mongodb.org/mongo-driver v1.17.4 h1:jUorfmVzljjr0FLzYQsGP8cgN/qzzxlY9Vh0C9KFXVw= -go.mongodb.org/mongo-driver v1.17.4/go.mod h1:Hy04i7O2kC4RS06ZrhPRqj/u4DTYkFDAAccj+rVKqgQ= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -2124,8 +2102,8 @@ golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= -golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2191,8 +2169,8 @@ golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2260,8 +2238,8 @@ golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.42.0 h1:jzkYrhi3YQWD6MLBJcsklgQsoAcw89EcZbJw8Z614hs= -golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2408,8 +2386,8 @@ golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= -golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= +golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -2427,8 +2405,8 @@ golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= -golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -2448,8 +2426,8 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= -golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2527,8 +2505,12 @@ golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= -golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= +golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= +golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools/go/expect v0.1.0-deprecated h1:jY2C5HGYR5lqex3gEniOQL0r7Dq5+VGVgY1nudX5lXY= +golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= +golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/staging/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/fake_install_strategy_deployment_interface.go b/staging/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/fake_install_strategy_deployment_interface.go index 022d580264..b24538859d 100644 --- a/staging/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/fake_install_strategy_deployment_interface.go +++ b/staging/operator-lifecycle-manager/pkg/api/wrappers/wrappersfakes/fake_install_strategy_deployment_interface.go @@ -843,28 +843,6 @@ func (fake *FakeInstallStrategyDeploymentInterface) GetServiceAccountByNameRetur func (fake *FakeInstallStrategyDeploymentInterface) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.createDeploymentMutex.RLock() - defer fake.createDeploymentMutex.RUnlock() - fake.createOrUpdateDeploymentMutex.RLock() - defer fake.createOrUpdateDeploymentMutex.RUnlock() - fake.createRoleMutex.RLock() - defer fake.createRoleMutex.RUnlock() - fake.createRoleBindingMutex.RLock() - defer fake.createRoleBindingMutex.RUnlock() - fake.deleteDeploymentMutex.RLock() - defer fake.deleteDeploymentMutex.RUnlock() - fake.ensureServiceAccountMutex.RLock() - defer fake.ensureServiceAccountMutex.RUnlock() - fake.findAnyDeploymentsMatchingLabelsMutex.RLock() - defer fake.findAnyDeploymentsMatchingLabelsMutex.RUnlock() - fake.findAnyDeploymentsMatchingNamesMutex.RLock() - defer fake.findAnyDeploymentsMatchingNamesMutex.RUnlock() - fake.getOpClientMutex.RLock() - defer fake.getOpClientMutex.RUnlock() - fake.getOpListerMutex.RLock() - defer fake.getOpListerMutex.RUnlock() - fake.getServiceAccountByNameMutex.RLock() - defer fake.getServiceAccountByNameMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker.go b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker.go index 698119af6f..263e77c5b4 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker.go +++ b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker.go @@ -154,6 +154,7 @@ func (c *ConfigMapUnpacker) job(cmRef *corev1.ObjectReference, bundlePath string }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -180,6 +181,7 @@ func (c *ConfigMapUnpacker) job(cmRef *corev1.ObjectReference, bundlePath string }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -209,6 +211,7 @@ func (c *ConfigMapUnpacker) job(cmRef *corev1.ObjectReference, bundlePath string }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, diff --git a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker_test.go b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker_test.go index 312037bf2a..f9ec614d5c 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundle_unpacker_test.go @@ -308,6 +308,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -334,6 +335,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -363,6 +365,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -524,6 +527,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -550,6 +554,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -579,6 +584,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -780,6 +786,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -806,6 +813,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -835,6 +843,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1031,6 +1040,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1057,6 +1067,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1086,6 +1097,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1252,6 +1264,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1278,6 +1291,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1307,6 +1321,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1486,6 +1501,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1512,6 +1528,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, @@ -1541,6 +1558,7 @@ func TestConfigMapUnpacker(t *testing.T) { }, SecurityContext: &corev1.SecurityContext{ AllowPrivilegeEscalation: ptr.To(bool(false)), + ReadOnlyRootFilesystem: ptr.To(true), Capabilities: &corev1.Capabilities{ Drop: []corev1.Capability{"ALL"}, }, diff --git a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundlefakes/fake_unpacker.go b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundlefakes/fake_unpacker.go index f710412ac9..4c388ed43a 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/bundle/bundlefakes/fake_unpacker.go +++ b/staging/operator-lifecycle-manager/pkg/controller/bundle/bundlefakes/fake_unpacker.go @@ -98,8 +98,6 @@ func (fake *FakeUnpacker) UnpackBundleReturnsOnCall(i int, result1 *bundle.Bundl func (fake *FakeUnpacker) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.unpackBundleMutex.RLock() - defer fake.unpackBundleMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler.go b/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler.go index c0ac7d9283..22ca1504d4 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler.go @@ -293,6 +293,9 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name, opmImg, utilImage, img s Args: []string{"/bin/copy-content", fmt.Sprintf("%s/copy-content", utilitiesPath)}, VolumeMounts: []corev1.VolumeMount{utilitiesVolumeMount}, TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError, + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }, corev1.Container{ Name: "extract-content", Image: img, @@ -301,8 +304,12 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name, opmImg, utilImage, img s Args: extractArgs, VolumeMounts: []corev1.VolumeMount{utilitiesVolumeMount, contentVolumeMount}, TerminationMessagePolicy: corev1.TerminationMessageFallbackToLogsOnError, + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }) + pod.Spec.Containers[0].SecurityContext.ReadOnlyRootFilesystem = ptr.To(true) pod.Spec.Containers[0].Image = opmImg pod.Spec.Containers[0].Command = []string{"/bin/opm"} pod.Spec.Containers[0].ImagePullPolicy = image.InferImagePullPolicy(opmImg) @@ -356,6 +363,16 @@ func Pod(source *operatorsv1alpha1.CatalogSource, name, opmImg, utilImage, img s } func addSecurityContext(pod *corev1.Pod, runAsUser int64) { + pod.Spec.SecurityContext = &corev1.PodSecurityContext{ + SeccompProfile: &corev1.SeccompProfile{ + Type: corev1.SeccompProfileTypeRuntimeDefault, + }, + } + if runAsUser > 0 { + pod.Spec.SecurityContext.RunAsUser = &runAsUser + pod.Spec.SecurityContext.RunAsNonRoot = ptr.To(true) + } + for i := range pod.Spec.InitContainers { if pod.Spec.InitContainers[i].SecurityContext == nil { pod.Spec.InitContainers[i].SecurityContext = &corev1.SecurityContext{} @@ -374,16 +391,6 @@ func addSecurityContext(pod *corev1.Pod, runAsUser int64) { Drop: []corev1.Capability{"ALL"}, } } - - pod.Spec.SecurityContext = &corev1.PodSecurityContext{ - SeccompProfile: &corev1.SeccompProfile{ - Type: corev1.SeccompProfileTypeRuntimeDefault, - }, - } - if runAsUser > 0 { - pod.Spec.SecurityContext.RunAsUser = &runAsUser - pod.Spec.SecurityContext.RunAsNonRoot = ptr.To(true) - } } // getDefaultPodContextConfig returns Restricted if the defaultNamespace has the 'pod-security.kubernetes.io/enforce' label set to 'restricted', diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler_test.go index 9b8eed6443..6079b8cb6c 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/reconciler/reconciler_test.go @@ -285,7 +285,7 @@ func TestPodExtractContent(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-", Namespace: "testns", - Labels: map[string]string{"olm.pod-spec-hash": "5MSUJs07MqD3fl9supmPaRNxD9N6tK8Bjo4OFl", "olm.managed": "true"}, + Labels: map[string]string{"olm.pod-spec-hash": "r86WYqCuUPyC9whJJfiyFBVtwoKEghJ74gCQO", "olm.managed": "true"}, Annotations: map[string]string{"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"}, }, Spec: corev1.PodSpec{ @@ -307,6 +307,9 @@ func TestPodExtractContent(t *testing.T) { Args: []string{"/bin/copy-content", "/utilities/copy-content"}, VolumeMounts: []corev1.VolumeMount{{Name: "utilities", MountPath: "/utilities"}}, TerminationMessagePolicy: "FallbackToLogsOnError", + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }, { Name: "extract-content", @@ -324,6 +327,9 @@ func TestPodExtractContent(t *testing.T) { {Name: "catalog-content", MountPath: "/extracted-catalog"}, }, TerminationMessagePolicy: "FallbackToLogsOnError", + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }, }, Containers: []corev1.Container{ @@ -368,7 +374,7 @@ func TestPodExtractContent(t *testing.T) { }, }, SecurityContext: &corev1.SecurityContext{ - ReadOnlyRootFilesystem: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, ImagePullPolicy: image.InferImagePullPolicy("image"), TerminationMessagePolicy: "FallbackToLogsOnError", @@ -400,7 +406,7 @@ func TestPodExtractContent(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-", Namespace: "testns", - Labels: map[string]string{"olm.pod-spec-hash": "b4ns9MTvaRBYOarmuFe6PLYK0r2kxj5Vo06WTU", "olm.managed": "true"}, + Labels: map[string]string{"olm.pod-spec-hash": "5ToGGS7RLuy9Fq91z7IjESOJXfurg09nHAxtfK", "olm.managed": "true"}, Annotations: map[string]string{"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"}, }, Spec: corev1.PodSpec{ @@ -422,6 +428,9 @@ func TestPodExtractContent(t *testing.T) { Args: []string{"/bin/copy-content", "/utilities/copy-content"}, VolumeMounts: []corev1.VolumeMount{{Name: "utilities", MountPath: "/utilities"}}, TerminationMessagePolicy: "FallbackToLogsOnError", + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }, { Name: "extract-content", @@ -437,6 +446,9 @@ func TestPodExtractContent(t *testing.T) { {Name: "catalog-content", MountPath: "/extracted-catalog"}, }, TerminationMessagePolicy: "FallbackToLogsOnError", + SecurityContext: &corev1.SecurityContext{ + ReadOnlyRootFilesystem: ptr.To(true), + }, }, }, Containers: []corev1.Container{ @@ -481,7 +493,7 @@ func TestPodExtractContent(t *testing.T) { }, }, SecurityContext: &corev1.SecurityContext{ - ReadOnlyRootFilesystem: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, ImagePullPolicy: image.InferImagePullPolicy("image"), TerminationMessagePolicy: "FallbackToLogsOnError", @@ -589,7 +601,7 @@ func TestPodExtractContent(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-", Namespace: "testns", - Labels: map[string]string{"olm.pod-spec-hash": "1X4YqbfXuc9SB9ztW03WNOyanr9aIhKfijeBHH", "olm.managed": "true"}, + Labels: map[string]string{"olm.pod-spec-hash": "aeGb70iG9mui6QaqbaM6RAJG5fNVrXUjiEzEb7", "olm.managed": "true"}, Annotations: map[string]string{"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"}, }, Spec: corev1.PodSpec{ @@ -612,6 +624,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, VolumeMounts: []corev1.VolumeMount{{Name: "utilities", MountPath: "/utilities"}}, TerminationMessagePolicy: "FallbackToLogsOnError", @@ -630,6 +643,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, VolumeMounts: []corev1.VolumeMount{ {Name: "utilities", MountPath: "/utilities"}, @@ -683,7 +697,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), - ReadOnlyRootFilesystem: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, TerminationMessagePolicy: "FallbackToLogsOnError", VolumeMounts: []corev1.VolumeMount{{Name: "catalog-content", MountPath: "/extracted-catalog"}}, @@ -719,7 +733,7 @@ func TestPodExtractContent(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ GenerateName: "test-", Namespace: "testns", - Labels: map[string]string{"olm.pod-spec-hash": "cO4moUo3vz6jZlcoBcxY4BB8o8a4E7m5GXCzI", "olm.managed": "true"}, + Labels: map[string]string{"olm.pod-spec-hash": "bhL1lOcUJhtisRddUp8tRQupbIii64C6qz9drn", "olm.managed": "true"}, Annotations: map[string]string{"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"}, }, Spec: corev1.PodSpec{ @@ -742,6 +756,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, VolumeMounts: []corev1.VolumeMount{{Name: "utilities", MountPath: "/utilities"}}, TerminationMessagePolicy: "FallbackToLogsOnError", @@ -758,6 +773,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, VolumeMounts: []corev1.VolumeMount{ {Name: "utilities", MountPath: "/utilities"}, @@ -811,7 +827,7 @@ func TestPodExtractContent(t *testing.T) { SecurityContext: &corev1.SecurityContext{ Capabilities: &corev1.Capabilities{Drop: []corev1.Capability{"ALL"}}, AllowPrivilegeEscalation: ptr.To(false), - ReadOnlyRootFilesystem: ptr.To(false), + ReadOnlyRootFilesystem: ptr.To(true), }, TerminationMessagePolicy: "FallbackToLogsOnError", VolumeMounts: []corev1.VolumeMount{{Name: "catalog-content", MountPath: "/extracted-catalog"}}, diff --git a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/solver/zz_search_test.go b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/solver/zz_search_test.go index f3f8be8fd5..d84e6efd3b 100644 --- a/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/solver/zz_search_test.go +++ b/staging/operator-lifecycle-manager/pkg/controller/registry/resolver/solver/zz_search_test.go @@ -851,32 +851,6 @@ func (fake *FakeS) WhyReturnsOnCall(i int, result1 []z.Lit) { func (fake *FakeS) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.addMutex.RLock() - defer fake.addMutex.RUnlock() - fake.assumeMutex.RLock() - defer fake.assumeMutex.RUnlock() - fake.goSolveMutex.RLock() - defer fake.goSolveMutex.RUnlock() - fake.litMutex.RLock() - defer fake.litMutex.RUnlock() - fake.maxVarMutex.RLock() - defer fake.maxVarMutex.RUnlock() - fake.reasonsMutex.RLock() - defer fake.reasonsMutex.RUnlock() - fake.sCopyMutex.RLock() - defer fake.sCopyMutex.RUnlock() - fake.solveMutex.RLock() - defer fake.solveMutex.RUnlock() - fake.testMutex.RLock() - defer fake.testMutex.RUnlock() - fake.tryMutex.RLock() - defer fake.tryMutex.RUnlock() - fake.untestMutex.RLock() - defer fake.untestMutex.RUnlock() - fake.valueMutex.RLock() - defer fake.valueMutex.RUnlock() - fake.whyMutex.RLock() - defer fake.whyMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_clusterrolebinding_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_clusterrolebinding_lister.go index c8d5145b60..77fcc2d59c 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_clusterrolebinding_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_clusterrolebinding_lister.go @@ -171,10 +171,6 @@ func (fake *FakeClusterRoleBindingLister) ListReturnsOnCall(i int, result1 []*v1 func (fake *FakeClusterRoleBindingLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_lister.go index 572d652e6d..82eed6967a 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_lister.go @@ -166,10 +166,6 @@ func (fake *FakeRoleLister) RolesReturnsOnCall(i int, result1 v1.RoleNamespaceLi func (fake *FakeRoleLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() - fake.rolesMutex.RLock() - defer fake.rolesMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_namespace_lister.go index 52aa39bed6..e3432c88fb 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_role_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeRoleNamespaceLister) ListReturnsOnCall(i int, result1 []*v1a.Rol func (fake *FakeRoleNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_lister.go index 1ba69b7956..7caeab6ca5 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_lister.go @@ -166,10 +166,6 @@ func (fake *FakeRoleBindingLister) RoleBindingsReturnsOnCall(i int, result1 v1.R func (fake *FakeRoleBindingLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() - fake.roleBindingsMutex.RLock() - defer fake.roleBindingsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_namespace_lister.go index 858563e503..fdda3a76cf 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_rbac_v1_rolebinding_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeRoleBindingNamespaceLister) ListReturnsOnCall(i int, result1 []* func (fake *FakeRoleBindingNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_lister.go index 1f0be9775c..c07aa9f450 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_lister.go @@ -166,10 +166,6 @@ func (fake *FakeSecretLister) SecretsReturnsOnCall(i int, result1 v1.SecretNames func (fake *FakeSecretLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() - fake.secretsMutex.RLock() - defer fake.secretsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_namespace_lister.go index 745bf8cfe0..b4c70b1f95 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_secret_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeSecretNamespaceLister) ListReturnsOnCall(i int, result1 []*v1a.S func (fake *FakeSecretNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_lister.go index ef7b3619af..9c417b127e 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_lister.go @@ -166,10 +166,6 @@ func (fake *FakeServiceAccountLister) ServiceAccountsReturnsOnCall(i int, result func (fake *FakeServiceAccountLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() - fake.serviceAccountsMutex.RLock() - defer fake.serviceAccountsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go index fc70380fea..b6cd697361 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_account_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeServiceAccountNamespaceLister) ListReturnsOnCall(i int, result1 func (fake *FakeServiceAccountNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_lister.go index d92397c35c..3a3a7dfd22 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_lister.go @@ -166,10 +166,6 @@ func (fake *FakeServiceLister) ServicesReturnsOnCall(i int, result1 v1.ServiceNa func (fake *FakeServiceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() - fake.servicesMutex.RLock() - defer fake.servicesMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_namespace_lister.go index ed3f7ec881..02e7c77ac5 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/client-go/listers/fake_v1_service_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeServiceNamespaceLister) ListReturnsOnCall(i int, result1 []*v1a. func (fake *FakeServiceNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler.go index 2f15bf8a3b..dce319b547 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler.go @@ -170,10 +170,6 @@ func (fake *FakeRegistryReconciler) EnsureRegistryServerReturnsOnCall(i int, res func (fake *FakeRegistryReconciler) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.checkRegistryServerMutex.RLock() - defer fake.checkRegistryServerMutex.RUnlock() - fake.ensureRegistryServerMutex.RLock() - defer fake.ensureRegistryServerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler_factory.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler_factory.go index 2797300230..58cf7a4af8 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler_factory.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_reconciler_factory.go @@ -88,8 +88,6 @@ func (fake *FakeRegistryReconcilerFactory) ReconcilerForSourceReturnsOnCall(i in func (fake *FakeRegistryReconcilerFactory) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.reconcilerForSourceMutex.RLock() - defer fake.reconcilerForSourceMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_registry_store.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_registry_store.go index 8cc33bf3ee..aa4aec059d 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_registry_store.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_registry_store.go @@ -2089,58 +2089,6 @@ func (fake *FakeQuery) SendBundlesReturnsOnCall(i int, result1 error) { func (fake *FakeQuery) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getApisForEntryMutex.RLock() - defer fake.getApisForEntryMutex.RUnlock() - fake.getBundleMutex.RLock() - defer fake.getBundleMutex.RUnlock() - fake.getBundleForChannelMutex.RLock() - defer fake.getBundleForChannelMutex.RUnlock() - fake.getBundlePathIfExistsMutex.RLock() - defer fake.getBundlePathIfExistsMutex.RUnlock() - fake.getBundlePathsForPackageMutex.RLock() - defer fake.getBundlePathsForPackageMutex.RUnlock() - fake.getBundleThatProvidesMutex.RLock() - defer fake.getBundleThatProvidesMutex.RUnlock() - fake.getBundleThatReplacesMutex.RLock() - defer fake.getBundleThatReplacesMutex.RUnlock() - fake.getBundleVersionMutex.RLock() - defer fake.getBundleVersionMutex.RUnlock() - fake.getBundlesForPackageMutex.RLock() - defer fake.getBundlesForPackageMutex.RUnlock() - fake.getChannelEntriesFromPackageMutex.RLock() - defer fake.getChannelEntriesFromPackageMutex.RUnlock() - fake.getChannelEntriesThatProvideMutex.RLock() - defer fake.getChannelEntriesThatProvideMutex.RUnlock() - fake.getChannelEntriesThatReplaceMutex.RLock() - defer fake.getChannelEntriesThatReplaceMutex.RUnlock() - fake.getCurrentCSVNameForChannelMutex.RLock() - defer fake.getCurrentCSVNameForChannelMutex.RUnlock() - fake.getDefaultChannelForPackageMutex.RLock() - defer fake.getDefaultChannelForPackageMutex.RUnlock() - fake.getDefaultPackageMutex.RLock() - defer fake.getDefaultPackageMutex.RUnlock() - fake.getDependenciesForBundleMutex.RLock() - defer fake.getDependenciesForBundleMutex.RUnlock() - fake.getImagesForBundleMutex.RLock() - defer fake.getImagesForBundleMutex.RUnlock() - fake.getLatestChannelEntriesThatProvideMutex.RLock() - defer fake.getLatestChannelEntriesThatProvideMutex.RUnlock() - fake.getPackageMutex.RLock() - defer fake.getPackageMutex.RUnlock() - fake.listBundlesMutex.RLock() - defer fake.listBundlesMutex.RUnlock() - fake.listChannelsMutex.RLock() - defer fake.listChannelsMutex.RUnlock() - fake.listImagesMutex.RLock() - defer fake.listImagesMutex.RUnlock() - fake.listPackagesMutex.RLock() - defer fake.listPackagesMutex.RUnlock() - fake.listRegistryBundlesMutex.RLock() - defer fake.listRegistryBundlesMutex.RUnlock() - fake.listTablesMutex.RLock() - defer fake.listTablesMutex.RUnlock() - fake.sendBundlesMutex.RLock() - defer fake.sendBundlesMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go index 6f766ece18..5ae5c72d4d 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_resolver.go @@ -103,8 +103,6 @@ func (fake *FakeStepResolver) ResolveStepsReturnsOnCall(i int, result1 []*v1alph func (fake *FakeStepResolver) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.resolveStepsMutex.RLock() - defer fake.resolveStepsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy.go index 6930c046e4..94b366c522 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy.go @@ -78,8 +78,6 @@ func (fake *FakeStrategy) GetStrategyNameReturnsOnCall(i int, result1 string) { func (fake *FakeStrategy) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getStrategyNameMutex.RLock() - defer fake.getStrategyNameMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_installer.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_installer.go index f3bad53359..6384c4f3d2 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_installer.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_installer.go @@ -368,16 +368,6 @@ func (fake *FakeStrategyInstaller) ShouldRotateCertsReturnsOnCall(i int, result1 func (fake *FakeStrategyInstaller) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.certsRotateAtMutex.RLock() - defer fake.certsRotateAtMutex.RUnlock() - fake.certsRotatedMutex.RLock() - defer fake.certsRotatedMutex.RUnlock() - fake.checkInstalledMutex.RLock() - defer fake.checkInstalledMutex.RUnlock() - fake.installMutex.RLock() - defer fake.installMutex.RUnlock() - fake.shouldRotateCertsMutex.RLock() - defer fake.shouldRotateCertsMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_resolver.go b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_resolver.go index 11254decc4..5e0fefe524 100644 --- a/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_resolver.go +++ b/staging/operator-lifecycle-manager/pkg/fakes/fake_strategy_resolver.go @@ -192,10 +192,6 @@ func (fake *FakeStrategyResolverInterface) UnmarshalStrategyReturnsOnCall(i int, func (fake *FakeStrategyResolverInterface) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.installerForStrategyMutex.RLock() - defer fake.installerForStrategyMutex.RUnlock() - fake.unmarshalStrategyMutex.RLock() - defer fake.unmarshalStrategyMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiextensions_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiextensions_v1lister.go index 06f856a397..138950ff57 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiextensions_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiextensions_v1lister.go @@ -116,10 +116,6 @@ func (fake *FakeAPIExtensionsV1Lister) RegisterCustomResourceDefinitionListerArg func (fake *FakeAPIExtensionsV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.customResourceDefinitionListerMutex.RLock() - defer fake.customResourceDefinitionListerMutex.RUnlock() - fake.registerCustomResourceDefinitionListerMutex.RLock() - defer fake.registerCustomResourceDefinitionListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiregistration_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiregistration_v1lister.go index 7300a4afaf..cc6ed0d2fe 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiregistration_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apiregistration_v1lister.go @@ -116,10 +116,6 @@ func (fake *FakeAPIRegistrationV1Lister) RegisterAPIServiceListerArgsForCall(i i func (fake *FakeAPIRegistrationV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.aPIServiceListerMutex.RLock() - defer fake.aPIServiceListerMutex.RUnlock() - fake.registerAPIServiceListerMutex.RLock() - defer fake.registerAPIServiceListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apps_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apps_v1lister.go index be84f79f02..53e64161c1 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apps_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_apps_v1lister.go @@ -118,10 +118,6 @@ func (fake *FakeAppsV1Lister) RegisterDeploymentListerArgsForCall(i int) (string func (fake *FakeAppsV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.deploymentListerMutex.RLock() - defer fake.deploymentListerMutex.RUnlock() - fake.registerDeploymentListerMutex.RLock() - defer fake.registerDeploymentListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_lister.go index e2c5235fc8..d0e0a271a6 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_lister.go @@ -166,10 +166,6 @@ func (fake *FakeClusterServiceVersionLister) ListReturnsOnCall(i int, result1 [] func (fake *FakeClusterServiceVersionLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.clusterServiceVersionsMutex.RLock() - defer fake.clusterServiceVersionsMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_namespace_lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_namespace_lister.go index 483f1b0dd0..63e14aeb1d 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_namespace_lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_clusterserviceversion_v1alpha1_namespace_lister.go @@ -171,10 +171,6 @@ func (fake *FakeClusterServiceVersionNamespaceLister) ListReturnsOnCall(i int, r func (fake *FakeClusterServiceVersionNamespaceLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getMutex.RLock() - defer fake.getMutex.RUnlock() - fake.listMutex.RLock() - defer fake.listMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_core_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_core_v1lister.go index 48ee59f232..99e222e063 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_core_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_core_v1lister.go @@ -626,30 +626,6 @@ func (fake *FakeCoreV1Lister) ServiceListerReturnsOnCall(i int, result1 v1.Servi func (fake *FakeCoreV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.configMapListerMutex.RLock() - defer fake.configMapListerMutex.RUnlock() - fake.namespaceListerMutex.RLock() - defer fake.namespaceListerMutex.RUnlock() - fake.podListerMutex.RLock() - defer fake.podListerMutex.RUnlock() - fake.registerConfigMapListerMutex.RLock() - defer fake.registerConfigMapListerMutex.RUnlock() - fake.registerNamespaceListerMutex.RLock() - defer fake.registerNamespaceListerMutex.RUnlock() - fake.registerPodListerMutex.RLock() - defer fake.registerPodListerMutex.RUnlock() - fake.registerSecretListerMutex.RLock() - defer fake.registerSecretListerMutex.RUnlock() - fake.registerServiceAccountListerMutex.RLock() - defer fake.registerServiceAccountListerMutex.RUnlock() - fake.registerServiceListerMutex.RLock() - defer fake.registerServiceListerMutex.RUnlock() - fake.secretListerMutex.RLock() - defer fake.secretListerMutex.RUnlock() - fake.serviceAccountListerMutex.RLock() - defer fake.serviceAccountListerMutex.RUnlock() - fake.serviceListerMutex.RLock() - defer fake.serviceListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operator_lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operator_lister.go index a74ce90210..7547e9e432 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operator_lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operator_lister.go @@ -582,24 +582,6 @@ func (fake *FakeOperatorLister) RbacV1ReturnsOnCall(i int, result1 operatorliste func (fake *FakeOperatorLister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.aPIExtensionsV1Mutex.RLock() - defer fake.aPIExtensionsV1Mutex.RUnlock() - fake.aPIRegistrationV1Mutex.RLock() - defer fake.aPIRegistrationV1Mutex.RUnlock() - fake.appsV1Mutex.RLock() - defer fake.appsV1Mutex.RUnlock() - fake.coreV1Mutex.RLock() - defer fake.coreV1Mutex.RUnlock() - fake.networkingV1Mutex.RLock() - defer fake.networkingV1Mutex.RUnlock() - fake.operatorsV1Mutex.RLock() - defer fake.operatorsV1Mutex.RUnlock() - fake.operatorsV1alpha1Mutex.RLock() - defer fake.operatorsV1alpha1Mutex.RUnlock() - fake.operatorsV2Mutex.RLock() - defer fake.operatorsV2Mutex.RUnlock() - fake.rbacV1Mutex.RLock() - defer fake.rbacV1Mutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1alpha1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1alpha1lister.go index a3a4256c37..06423d95c0 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1alpha1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1alpha1lister.go @@ -424,22 +424,6 @@ func (fake *FakeOperatorsV1alpha1Lister) SubscriptionListerReturnsOnCall(i int, func (fake *FakeOperatorsV1alpha1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.catalogSourceListerMutex.RLock() - defer fake.catalogSourceListerMutex.RUnlock() - fake.clusterServiceVersionListerMutex.RLock() - defer fake.clusterServiceVersionListerMutex.RUnlock() - fake.installPlanListerMutex.RLock() - defer fake.installPlanListerMutex.RUnlock() - fake.registerCatalogSourceListerMutex.RLock() - defer fake.registerCatalogSourceListerMutex.RUnlock() - fake.registerClusterServiceVersionListerMutex.RLock() - defer fake.registerClusterServiceVersionListerMutex.RUnlock() - fake.registerInstallPlanListerMutex.RLock() - defer fake.registerInstallPlanListerMutex.RUnlock() - fake.registerSubscriptionListerMutex.RLock() - defer fake.registerSubscriptionListerMutex.RUnlock() - fake.subscriptionListerMutex.RLock() - defer fake.subscriptionListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1lister.go index 5ca20c7d14..18d80e800c 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v1lister.go @@ -118,10 +118,6 @@ func (fake *FakeOperatorsV1Lister) RegisterOperatorGroupListerArgsForCall(i int) func (fake *FakeOperatorsV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.operatorGroupListerMutex.RLock() - defer fake.operatorGroupListerMutex.RUnlock() - fake.registerOperatorGroupListerMutex.RLock() - defer fake.registerOperatorGroupListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v2lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v2lister.go index 2239e3dff1..73d2bd5167 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v2lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_operators_v2lister.go @@ -118,10 +118,6 @@ func (fake *FakeOperatorsV2Lister) RegisterOperatorConditionListerArgsForCall(i func (fake *FakeOperatorsV2Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.operatorConditionListerMutex.RLock() - defer fake.operatorConditionListerMutex.RUnlock() - fake.registerOperatorConditionListerMutex.RLock() - defer fake.registerOperatorConditionListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_rbac_v1lister.go b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_rbac_v1lister.go index e8f1b1abff..6a578b93dd 100644 --- a/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_rbac_v1lister.go +++ b/staging/operator-lifecycle-manager/pkg/lib/operatorlister/operatorlisterfakes/fake_rbac_v1lister.go @@ -420,22 +420,6 @@ func (fake *FakeRbacV1Lister) RoleListerReturnsOnCall(i int, result1 v1.RoleList func (fake *FakeRbacV1Lister) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.clusterRoleBindingListerMutex.RLock() - defer fake.clusterRoleBindingListerMutex.RUnlock() - fake.clusterRoleListerMutex.RLock() - defer fake.clusterRoleListerMutex.RUnlock() - fake.registerClusterRoleBindingListerMutex.RLock() - defer fake.registerClusterRoleBindingListerMutex.RUnlock() - fake.registerClusterRoleListerMutex.RLock() - defer fake.registerClusterRoleListerMutex.RUnlock() - fake.registerRoleBindingListerMutex.RLock() - defer fake.registerRoleBindingListerMutex.RUnlock() - fake.registerRoleListerMutex.RLock() - defer fake.registerRoleListerMutex.RUnlock() - fake.roleBindingListerMutex.RLock() - defer fake.roleBindingListerMutex.RUnlock() - fake.roleListerMutex.RLock() - defer fake.roleListerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_bundles_client.go b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_bundles_client.go index e98a2c9525..ecaa1d0788 100644 --- a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_bundles_client.go +++ b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_bundles_client.go @@ -486,20 +486,6 @@ func (fake *FakeRegistry_ListBundlesClient) TrailerReturnsOnCall(i int, result1 func (fake *FakeRegistry_ListBundlesClient) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.closeSendMutex.RLock() - defer fake.closeSendMutex.RUnlock() - fake.contextMutex.RLock() - defer fake.contextMutex.RUnlock() - fake.headerMutex.RLock() - defer fake.headerMutex.RUnlock() - fake.recvMutex.RLock() - defer fake.recvMutex.RUnlock() - fake.recvMsgMutex.RLock() - defer fake.recvMsgMutex.RUnlock() - fake.sendMsgMutex.RLock() - defer fake.sendMsgMutex.RUnlock() - fake.trailerMutex.RLock() - defer fake.trailerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_packages_client.go b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_packages_client.go index e24b25a870..b74a25322a 100644 --- a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_packages_client.go +++ b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_list_packages_client.go @@ -486,20 +486,6 @@ func (fake *FakeRegistry_ListPackagesClient) TrailerReturnsOnCall(i int, result1 func (fake *FakeRegistry_ListPackagesClient) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.closeSendMutex.RLock() - defer fake.closeSendMutex.RUnlock() - fake.contextMutex.RLock() - defer fake.contextMutex.RUnlock() - fake.headerMutex.RLock() - defer fake.headerMutex.RUnlock() - fake.recvMutex.RLock() - defer fake.recvMutex.RUnlock() - fake.recvMsgMutex.RLock() - defer fake.recvMsgMutex.RUnlock() - fake.sendMsgMutex.RLock() - defer fake.sendMsgMutex.RUnlock() - fake.trailerMutex.RLock() - defer fake.trailerMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_registry_client.go b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_registry_client.go index 8d087c3e3f..30416a2bc1 100644 --- a/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_registry_client.go +++ b/staging/operator-lifecycle-manager/pkg/package-server/client/fakes/fake_registry_client.go @@ -827,26 +827,6 @@ func (fake *FakeRegistryClient) ListPackagesReturnsOnCall(i int, result1 api.Reg func (fake *FakeRegistryClient) Invocations() map[string][][]interface{} { fake.invocationsMutex.RLock() defer fake.invocationsMutex.RUnlock() - fake.getBundleMutex.RLock() - defer fake.getBundleMutex.RUnlock() - fake.getBundleForChannelMutex.RLock() - defer fake.getBundleForChannelMutex.RUnlock() - fake.getBundleThatReplacesMutex.RLock() - defer fake.getBundleThatReplacesMutex.RUnlock() - fake.getChannelEntriesThatProvideMutex.RLock() - defer fake.getChannelEntriesThatProvideMutex.RUnlock() - fake.getChannelEntriesThatReplaceMutex.RLock() - defer fake.getChannelEntriesThatReplaceMutex.RUnlock() - fake.getDefaultBundleThatProvidesMutex.RLock() - defer fake.getDefaultBundleThatProvidesMutex.RUnlock() - fake.getLatestChannelEntriesThatProvideMutex.RLock() - defer fake.getLatestChannelEntriesThatProvideMutex.RUnlock() - fake.getPackageMutex.RLock() - defer fake.getPackageMutex.RUnlock() - fake.listBundlesMutex.RLock() - defer fake.listBundlesMutex.RUnlock() - fake.listPackagesMutex.RLock() - defer fake.listPackagesMutex.RUnlock() copiedInvocations := map[string][][]interface{}{} for key, value := range fake.invocations { copiedInvocations[key] = value diff --git a/vendor/github.com/asaskevich/govalidator/.gitignore b/vendor/github.com/asaskevich/govalidator/.gitignore deleted file mode 100644 index 8d69a9418a..0000000000 --- a/vendor/github.com/asaskevich/govalidator/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -bin/ -.idea/ -# Binaries for programs and plugins -*.exe -*.exe~ -*.dll -*.so -*.dylib - -# Test binary, built with `go test -c` -*.test - -# Output of the go coverage tool, specifically when used with LiteIDE -*.out - diff --git a/vendor/github.com/asaskevich/govalidator/.travis.yml b/vendor/github.com/asaskevich/govalidator/.travis.yml deleted file mode 100644 index bb83c6670d..0000000000 --- a/vendor/github.com/asaskevich/govalidator/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -language: go -dist: xenial -go: - - '1.10' - - '1.11' - - '1.12' - - '1.13' - - 'tip' - -script: - - go test -coverpkg=./... -coverprofile=coverage.info -timeout=5s - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md b/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md deleted file mode 100644 index 4b462b0d81..0000000000 --- a/vendor/github.com/asaskevich/govalidator/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,43 +0,0 @@ -# Contributor Code of Conduct - -This project adheres to [The Code Manifesto](http://codemanifesto.com) -as its guidelines for contributor interactions. - -## The Code Manifesto - -We want to work in an ecosystem that empowers developers to reach their -potential — one that encourages growth and effective collaboration. A space -that is safe for all. - -A space such as this benefits everyone that participates in it. It encourages -new developers to enter our field. It is through discussion and collaboration -that we grow, and through growth that we improve. - -In the effort to create such a place, we hold to these values: - -1. **Discrimination limits us.** This includes discrimination on the basis of - race, gender, sexual orientation, gender identity, age, nationality, - technology and any other arbitrary exclusion of a group of people. -2. **Boundaries honor us.** Your comfort levels are not everyone’s comfort - levels. Remember that, and if brought to your attention, heed it. -3. **We are our biggest assets.** None of us were born masters of our trade. - Each of us has been helped along the way. Return that favor, when and where - you can. -4. **We are resources for the future.** As an extension of #3, share what you - know. Make yourself a resource to help those that come after you. -5. **Respect defines us.** Treat others as you wish to be treated. Make your - discussions, criticisms and debates from a position of respectfulness. Ask - yourself, is it true? Is it necessary? Is it constructive? Anything less is - unacceptable. -6. **Reactions require grace.** Angry responses are valid, but abusive language - and vindictive actions are toxic. When something happens that offends you, - handle it assertively, but be respectful. Escalate reasonably, and try to - allow the offender an opportunity to explain themselves, and possibly - correct the issue. -7. **Opinions are just that: opinions.** Each and every one of us, due to our - background and upbringing, have varying opinions. That is perfectly - acceptable. Remember this: if you respect your own opinions, you should - respect the opinions of others. -8. **To err is human.** You might not intend it, but mistakes do happen and - contribute to build experience. Tolerate honest mistakes, and don't - hesitate to apologize if you make one yourself. diff --git a/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md b/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md deleted file mode 100644 index 7ed268a1ed..0000000000 --- a/vendor/github.com/asaskevich/govalidator/CONTRIBUTING.md +++ /dev/null @@ -1,63 +0,0 @@ -#### Support -If you do have a contribution to the package, feel free to create a Pull Request or an Issue. - -#### What to contribute -If you don't know what to do, there are some features and functions that need to be done - -- [ ] Refactor code -- [ ] Edit docs and [README](https://github.com/asaskevich/govalidator/README.md): spellcheck, grammar and typo check -- [ ] Create actual list of contributors and projects that currently using this package -- [ ] Resolve [issues and bugs](https://github.com/asaskevich/govalidator/issues) -- [ ] Update actual [list of functions](https://github.com/asaskevich/govalidator#list-of-functions) -- [ ] Update [list of validators](https://github.com/asaskevich/govalidator#validatestruct-2) that available for `ValidateStruct` and add new -- [ ] Implement new validators: `IsFQDN`, `IsIMEI`, `IsPostalCode`, `IsISIN`, `IsISRC` etc -- [x] Implement [validation by maps](https://github.com/asaskevich/govalidator/issues/224) -- [ ] Implement fuzzing testing -- [ ] Implement some struct/map/array utilities -- [ ] Implement map/array validation -- [ ] Implement benchmarking -- [ ] Implement batch of examples -- [ ] Look at forks for new features and fixes - -#### Advice -Feel free to create what you want, but keep in mind when you implement new features: -- Code must be clear and readable, names of variables/constants clearly describes what they are doing -- Public functions must be documented and described in source file and added to README.md to the list of available functions -- There are must be unit-tests for any new functions and improvements - -## Financial contributions - -We also welcome financial contributions in full transparency on our [open collective](https://opencollective.com/govalidator). -Anyone can file an expense. If the expense makes sense for the development of the community, it will be "merged" in the ledger of our open collective by the core contributors and the person who filed the expense will be reimbursed. - - -## Credits - - -### Contributors - -Thank you to all the people who have already contributed to govalidator! - - - -### Backers - -Thank you to all our backers! [[Become a backer](https://opencollective.com/govalidator#backer)] - - - - -### Sponsors - -Thank you to all our sponsors! (please ask your company to also support this open source project by [becoming a sponsor](https://opencollective.com/govalidator#sponsor)) - - - - - - - - - - - \ No newline at end of file diff --git a/vendor/github.com/asaskevich/govalidator/LICENSE b/vendor/github.com/asaskevich/govalidator/LICENSE deleted file mode 100644 index cacba91024..0000000000 --- a/vendor/github.com/asaskevich/govalidator/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014-2020 Alex Saskevich - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/asaskevich/govalidator/README.md b/vendor/github.com/asaskevich/govalidator/README.md deleted file mode 100644 index 2c3fc35eb6..0000000000 --- a/vendor/github.com/asaskevich/govalidator/README.md +++ /dev/null @@ -1,622 +0,0 @@ -govalidator -=========== -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/asaskevich/govalidator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [![GoDoc](https://godoc.org/github.com/asaskevich/govalidator?status.png)](https://godoc.org/github.com/asaskevich/govalidator) -[![Build Status](https://travis-ci.org/asaskevich/govalidator.svg?branch=master)](https://travis-ci.org/asaskevich/govalidator) -[![Coverage](https://codecov.io/gh/asaskevich/govalidator/branch/master/graph/badge.svg)](https://codecov.io/gh/asaskevich/govalidator) [![Go Report Card](https://goreportcard.com/badge/github.com/asaskevich/govalidator)](https://goreportcard.com/report/github.com/asaskevich/govalidator) [![GoSearch](http://go-search.org/badge?id=github.com%2Fasaskevich%2Fgovalidator)](http://go-search.org/view?id=github.com%2Fasaskevich%2Fgovalidator) [![Backers on Open Collective](https://opencollective.com/govalidator/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/govalidator/sponsors/badge.svg)](#sponsors) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator?ref=badge_shield) - -A package of validators and sanitizers for strings, structs and collections. Based on [validator.js](https://github.com/chriso/validator.js). - -#### Installation -Make sure that Go is installed on your computer. -Type the following command in your terminal: - - go get github.com/asaskevich/govalidator - -or you can get specified release of the package with `gopkg.in`: - - go get gopkg.in/asaskevich/govalidator.v10 - -After it the package is ready to use. - - -#### Import package in your project -Add following line in your `*.go` file: -```go -import "github.com/asaskevich/govalidator" -``` -If you are unhappy to use long `govalidator`, you can do something like this: -```go -import ( - valid "github.com/asaskevich/govalidator" -) -``` - -#### Activate behavior to require all fields have a validation tag by default -`SetFieldsRequiredByDefault` causes validation to fail when struct fields do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`). A good place to activate this is a package init function or the main() function. - -`SetNilPtrAllowedByRequired` causes validation to pass when struct fields marked by `required` are set to nil. This is disabled by default for consistency, but some packages that need to be able to determine between `nil` and `zero value` state can use this. If disabled, both `nil` and `zero` values cause validation errors. - -```go -import "github.com/asaskevich/govalidator" - -func init() { - govalidator.SetFieldsRequiredByDefault(true) -} -``` - -Here's some code to explain it: -```go -// this struct definition will fail govalidator.ValidateStruct() (and the field values do not matter): -type exampleStruct struct { - Name string `` - Email string `valid:"email"` -} - -// this, however, will only fail when Email is empty or an invalid email address: -type exampleStruct2 struct { - Name string `valid:"-"` - Email string `valid:"email"` -} - -// lastly, this will only fail when Email is an invalid email address but not when it's empty: -type exampleStruct2 struct { - Name string `valid:"-"` - Email string `valid:"email,optional"` -} -``` - -#### Recent breaking changes (see [#123](https://github.com/asaskevich/govalidator/pull/123)) -##### Custom validator function signature -A context was added as the second parameter, for structs this is the object being validated – this makes dependent validation possible. -```go -import "github.com/asaskevich/govalidator" - -// old signature -func(i interface{}) bool - -// new signature -func(i interface{}, o interface{}) bool -``` - -##### Adding a custom validator -This was changed to prevent data races when accessing custom validators. -```go -import "github.com/asaskevich/govalidator" - -// before -govalidator.CustomTypeTagMap["customByteArrayValidator"] = func(i interface{}, o interface{}) bool { - // ... -} - -// after -govalidator.CustomTypeTagMap.Set("customByteArrayValidator", func(i interface{}, o interface{}) bool { - // ... -}) -``` - -#### List of functions: -```go -func Abs(value float64) float64 -func BlackList(str, chars string) string -func ByteLength(str string, params ...string) bool -func CamelCaseToUnderscore(str string) string -func Contains(str, substring string) bool -func Count(array []interface{}, iterator ConditionIterator) int -func Each(array []interface{}, iterator Iterator) -func ErrorByField(e error, field string) string -func ErrorsByField(e error) map[string]string -func Filter(array []interface{}, iterator ConditionIterator) []interface{} -func Find(array []interface{}, iterator ConditionIterator) interface{} -func GetLine(s string, index int) (string, error) -func GetLines(s string) []string -func HasLowerCase(str string) bool -func HasUpperCase(str string) bool -func HasWhitespace(str string) bool -func HasWhitespaceOnly(str string) bool -func InRange(value interface{}, left interface{}, right interface{}) bool -func InRangeFloat32(value, left, right float32) bool -func InRangeFloat64(value, left, right float64) bool -func InRangeInt(value, left, right interface{}) bool -func IsASCII(str string) bool -func IsAlpha(str string) bool -func IsAlphanumeric(str string) bool -func IsBase64(str string) bool -func IsByteLength(str string, min, max int) bool -func IsCIDR(str string) bool -func IsCRC32(str string) bool -func IsCRC32b(str string) bool -func IsCreditCard(str string) bool -func IsDNSName(str string) bool -func IsDataURI(str string) bool -func IsDialString(str string) bool -func IsDivisibleBy(str, num string) bool -func IsEmail(str string) bool -func IsExistingEmail(email string) bool -func IsFilePath(str string) (bool, int) -func IsFloat(str string) bool -func IsFullWidth(str string) bool -func IsHalfWidth(str string) bool -func IsHash(str string, algorithm string) bool -func IsHexadecimal(str string) bool -func IsHexcolor(str string) bool -func IsHost(str string) bool -func IsIP(str string) bool -func IsIPv4(str string) bool -func IsIPv6(str string) bool -func IsISBN(str string, version int) bool -func IsISBN10(str string) bool -func IsISBN13(str string) bool -func IsISO3166Alpha2(str string) bool -func IsISO3166Alpha3(str string) bool -func IsISO4217(str string) bool -func IsISO693Alpha2(str string) bool -func IsISO693Alpha3b(str string) bool -func IsIn(str string, params ...string) bool -func IsInRaw(str string, params ...string) bool -func IsInt(str string) bool -func IsJSON(str string) bool -func IsLatitude(str string) bool -func IsLongitude(str string) bool -func IsLowerCase(str string) bool -func IsMAC(str string) bool -func IsMD4(str string) bool -func IsMD5(str string) bool -func IsMagnetURI(str string) bool -func IsMongoID(str string) bool -func IsMultibyte(str string) bool -func IsNatural(value float64) bool -func IsNegative(value float64) bool -func IsNonNegative(value float64) bool -func IsNonPositive(value float64) bool -func IsNotNull(str string) bool -func IsNull(str string) bool -func IsNumeric(str string) bool -func IsPort(str string) bool -func IsPositive(value float64) bool -func IsPrintableASCII(str string) bool -func IsRFC3339(str string) bool -func IsRFC3339WithoutZone(str string) bool -func IsRGBcolor(str string) bool -func IsRegex(str string) bool -func IsRequestURI(rawurl string) bool -func IsRequestURL(rawurl string) bool -func IsRipeMD128(str string) bool -func IsRipeMD160(str string) bool -func IsRsaPub(str string, params ...string) bool -func IsRsaPublicKey(str string, keylen int) bool -func IsSHA1(str string) bool -func IsSHA256(str string) bool -func IsSHA384(str string) bool -func IsSHA512(str string) bool -func IsSSN(str string) bool -func IsSemver(str string) bool -func IsTiger128(str string) bool -func IsTiger160(str string) bool -func IsTiger192(str string) bool -func IsTime(str string, format string) bool -func IsType(v interface{}, params ...string) bool -func IsURL(str string) bool -func IsUTFDigit(str string) bool -func IsUTFLetter(str string) bool -func IsUTFLetterNumeric(str string) bool -func IsUTFNumeric(str string) bool -func IsUUID(str string) bool -func IsUUIDv3(str string) bool -func IsUUIDv4(str string) bool -func IsUUIDv5(str string) bool -func IsULID(str string) bool -func IsUnixTime(str string) bool -func IsUpperCase(str string) bool -func IsVariableWidth(str string) bool -func IsWhole(value float64) bool -func LeftTrim(str, chars string) string -func Map(array []interface{}, iterator ResultIterator) []interface{} -func Matches(str, pattern string) bool -func MaxStringLength(str string, params ...string) bool -func MinStringLength(str string, params ...string) bool -func NormalizeEmail(str string) (string, error) -func PadBoth(str string, padStr string, padLen int) string -func PadLeft(str string, padStr string, padLen int) string -func PadRight(str string, padStr string, padLen int) string -func PrependPathToErrors(err error, path string) error -func Range(str string, params ...string) bool -func RemoveTags(s string) string -func ReplacePattern(str, pattern, replace string) string -func Reverse(s string) string -func RightTrim(str, chars string) string -func RuneLength(str string, params ...string) bool -func SafeFileName(str string) string -func SetFieldsRequiredByDefault(value bool) -func SetNilPtrAllowedByRequired(value bool) -func Sign(value float64) float64 -func StringLength(str string, params ...string) bool -func StringMatches(s string, params ...string) bool -func StripLow(str string, keepNewLines bool) string -func ToBoolean(str string) (bool, error) -func ToFloat(str string) (float64, error) -func ToInt(value interface{}) (res int64, err error) -func ToJSON(obj interface{}) (string, error) -func ToString(obj interface{}) string -func Trim(str, chars string) string -func Truncate(str string, length int, ending string) string -func TruncatingErrorf(str string, args ...interface{}) error -func UnderscoreToCamelCase(s string) string -func ValidateMap(inputMap map[string]interface{}, validationMap map[string]interface{}) (bool, error) -func ValidateStruct(s interface{}) (bool, error) -func WhiteList(str, chars string) string -type ConditionIterator -type CustomTypeValidator -type Error -func (e Error) Error() string -type Errors -func (es Errors) Error() string -func (es Errors) Errors() []error -type ISO3166Entry -type ISO693Entry -type InterfaceParamValidator -type Iterator -type ParamValidator -type ResultIterator -type UnsupportedTypeError -func (e *UnsupportedTypeError) Error() string -type Validator -``` - -#### Examples -###### IsURL -```go -println(govalidator.IsURL(`http://user@pass:domain.com/path/page`)) -``` -###### IsType -```go -println(govalidator.IsType("Bob", "string")) -println(govalidator.IsType(1, "int")) -i := 1 -println(govalidator.IsType(&i, "*int")) -``` - -IsType can be used through the tag `type` which is essential for map validation: -```go -type User struct { - Name string `valid:"type(string)"` - Age int `valid:"type(int)"` - Meta interface{} `valid:"type(string)"` -} -result, err := govalidator.ValidateStruct(User{"Bob", 20, "meta"}) -if err != nil { - println("error: " + err.Error()) -} -println(result) -``` -###### ToString -```go -type User struct { - FirstName string - LastName string -} - -str := govalidator.ToString(&User{"John", "Juan"}) -println(str) -``` -###### Each, Map, Filter, Count for slices -Each iterates over the slice/array and calls Iterator for every item -```go -data := []interface{}{1, 2, 3, 4, 5} -var fn govalidator.Iterator = func(value interface{}, index int) { - println(value.(int)) -} -govalidator.Each(data, fn) -``` -```go -data := []interface{}{1, 2, 3, 4, 5} -var fn govalidator.ResultIterator = func(value interface{}, index int) interface{} { - return value.(int) * 3 -} -_ = govalidator.Map(data, fn) // result = []interface{}{1, 6, 9, 12, 15} -``` -```go -data := []interface{}{1, 2, 3, 4, 5, 6, 7, 8, 9, 10} -var fn govalidator.ConditionIterator = func(value interface{}, index int) bool { - return value.(int)%2 == 0 -} -_ = govalidator.Filter(data, fn) // result = []interface{}{2, 4, 6, 8, 10} -_ = govalidator.Count(data, fn) // result = 5 -``` -###### ValidateStruct [#2](https://github.com/asaskevich/govalidator/pull/2) -If you want to validate structs, you can use tag `valid` for any field in your structure. All validators used with this field in one tag are separated by comma. If you want to skip validation, place `-` in your tag. If you need a validator that is not on the list below, you can add it like this: -```go -govalidator.TagMap["duck"] = govalidator.Validator(func(str string) bool { - return str == "duck" -}) -``` -For completely custom validators (interface-based), see below. - -Here is a list of available validators for struct fields (validator - used function): -```go -"email": IsEmail, -"url": IsURL, -"dialstring": IsDialString, -"requrl": IsRequestURL, -"requri": IsRequestURI, -"alpha": IsAlpha, -"utfletter": IsUTFLetter, -"alphanum": IsAlphanumeric, -"utfletternum": IsUTFLetterNumeric, -"numeric": IsNumeric, -"utfnumeric": IsUTFNumeric, -"utfdigit": IsUTFDigit, -"hexadecimal": IsHexadecimal, -"hexcolor": IsHexcolor, -"rgbcolor": IsRGBcolor, -"lowercase": IsLowerCase, -"uppercase": IsUpperCase, -"int": IsInt, -"float": IsFloat, -"null": IsNull, -"uuid": IsUUID, -"uuidv3": IsUUIDv3, -"uuidv4": IsUUIDv4, -"uuidv5": IsUUIDv5, -"creditcard": IsCreditCard, -"isbn10": IsISBN10, -"isbn13": IsISBN13, -"json": IsJSON, -"multibyte": IsMultibyte, -"ascii": IsASCII, -"printableascii": IsPrintableASCII, -"fullwidth": IsFullWidth, -"halfwidth": IsHalfWidth, -"variablewidth": IsVariableWidth, -"base64": IsBase64, -"datauri": IsDataURI, -"ip": IsIP, -"port": IsPort, -"ipv4": IsIPv4, -"ipv6": IsIPv6, -"dns": IsDNSName, -"host": IsHost, -"mac": IsMAC, -"latitude": IsLatitude, -"longitude": IsLongitude, -"ssn": IsSSN, -"semver": IsSemver, -"rfc3339": IsRFC3339, -"rfc3339WithoutZone": IsRFC3339WithoutZone, -"ISO3166Alpha2": IsISO3166Alpha2, -"ISO3166Alpha3": IsISO3166Alpha3, -"ulid": IsULID, -``` -Validators with parameters - -```go -"range(min|max)": Range, -"length(min|max)": ByteLength, -"runelength(min|max)": RuneLength, -"stringlength(min|max)": StringLength, -"matches(pattern)": StringMatches, -"in(string1|string2|...|stringN)": IsIn, -"rsapub(keylength)" : IsRsaPub, -"minstringlength(int): MinStringLength, -"maxstringlength(int): MaxStringLength, -``` -Validators with parameters for any type - -```go -"type(type)": IsType, -``` - -And here is small example of usage: -```go -type Post struct { - Title string `valid:"alphanum,required"` - Message string `valid:"duck,ascii"` - Message2 string `valid:"animal(dog)"` - AuthorIP string `valid:"ipv4"` - Date string `valid:"-"` -} -post := &Post{ - Title: "My Example Post", - Message: "duck", - Message2: "dog", - AuthorIP: "123.234.54.3", -} - -// Add your own struct validation tags -govalidator.TagMap["duck"] = govalidator.Validator(func(str string) bool { - return str == "duck" -}) - -// Add your own struct validation tags with parameter -govalidator.ParamTagMap["animal"] = govalidator.ParamValidator(func(str string, params ...string) bool { - species := params[0] - return str == species -}) -govalidator.ParamTagRegexMap["animal"] = regexp.MustCompile("^animal\\((\\w+)\\)$") - -result, err := govalidator.ValidateStruct(post) -if err != nil { - println("error: " + err.Error()) -} -println(result) -``` -###### ValidateMap [#2](https://github.com/asaskevich/govalidator/pull/338) -If you want to validate maps, you can use the map to be validated and a validation map that contain the same tags used in ValidateStruct, both maps have to be in the form `map[string]interface{}` - -So here is small example of usage: -```go -var mapTemplate = map[string]interface{}{ - "name":"required,alpha", - "family":"required,alpha", - "email":"required,email", - "cell-phone":"numeric", - "address":map[string]interface{}{ - "line1":"required,alphanum", - "line2":"alphanum", - "postal-code":"numeric", - }, -} - -var inputMap = map[string]interface{}{ - "name":"Bob", - "family":"Smith", - "email":"foo@bar.baz", - "address":map[string]interface{}{ - "line1":"", - "line2":"", - "postal-code":"", - }, -} - -result, err := govalidator.ValidateMap(inputMap, mapTemplate) -if err != nil { - println("error: " + err.Error()) -} -println(result) -``` - -###### WhiteList -```go -// Remove all characters from string ignoring characters between "a" and "z" -println(govalidator.WhiteList("a3a43a5a4a3a2a23a4a5a4a3a4", "a-z") == "aaaaaaaaaaaa") -``` - -###### Custom validation functions -Custom validation using your own domain specific validators is also available - here's an example of how to use it: -```go -import "github.com/asaskevich/govalidator" - -type CustomByteArray [6]byte // custom types are supported and can be validated - -type StructWithCustomByteArray struct { - ID CustomByteArray `valid:"customByteArrayValidator,customMinLengthValidator"` // multiple custom validators are possible as well and will be evaluated in sequence - Email string `valid:"email"` - CustomMinLength int `valid:"-"` -} - -govalidator.CustomTypeTagMap.Set("customByteArrayValidator", func(i interface{}, context interface{}) bool { - switch v := context.(type) { // you can type switch on the context interface being validated - case StructWithCustomByteArray: - // you can check and validate against some other field in the context, - // return early or not validate against the context at all – your choice - case SomeOtherType: - // ... - default: - // expecting some other type? Throw/panic here or continue - } - - switch v := i.(type) { // type switch on the struct field being validated - case CustomByteArray: - for _, e := range v { // this validator checks that the byte array is not empty, i.e. not all zeroes - if e != 0 { - return true - } - } - } - return false -}) -govalidator.CustomTypeTagMap.Set("customMinLengthValidator", func(i interface{}, context interface{}) bool { - switch v := context.(type) { // this validates a field against the value in another field, i.e. dependent validation - case StructWithCustomByteArray: - return len(v.ID) >= v.CustomMinLength - } - return false -}) -``` - -###### Loop over Error() -By default .Error() returns all errors in a single String. To access each error you can do this: -```go - if err != nil { - errs := err.(govalidator.Errors).Errors() - for _, e := range errs { - fmt.Println(e.Error()) - } - } -``` - -###### Custom error messages -Custom error messages are supported via annotations by adding the `~` separator - here's an example of how to use it: -```go -type Ticket struct { - Id int64 `json:"id"` - FirstName string `json:"firstname" valid:"required~First name is blank"` -} -``` - -#### Notes -Documentation is available here: [godoc.org](https://godoc.org/github.com/asaskevich/govalidator). -Full information about code coverage is also available here: [govalidator on gocover.io](http://gocover.io/github.com/asaskevich/govalidator). - -#### Support -If you do have a contribution to the package, feel free to create a Pull Request or an Issue. - -#### What to contribute -If you don't know what to do, there are some features and functions that need to be done - -- [ ] Refactor code -- [ ] Edit docs and [README](https://github.com/asaskevich/govalidator/README.md): spellcheck, grammar and typo check -- [ ] Create actual list of contributors and projects that currently using this package -- [ ] Resolve [issues and bugs](https://github.com/asaskevich/govalidator/issues) -- [ ] Update actual [list of functions](https://github.com/asaskevich/govalidator#list-of-functions) -- [ ] Update [list of validators](https://github.com/asaskevich/govalidator#validatestruct-2) that available for `ValidateStruct` and add new -- [ ] Implement new validators: `IsFQDN`, `IsIMEI`, `IsPostalCode`, `IsISIN`, `IsISRC` etc -- [x] Implement [validation by maps](https://github.com/asaskevich/govalidator/issues/224) -- [ ] Implement fuzzing testing -- [ ] Implement some struct/map/array utilities -- [ ] Implement map/array validation -- [ ] Implement benchmarking -- [ ] Implement batch of examples -- [ ] Look at forks for new features and fixes - -#### Advice -Feel free to create what you want, but keep in mind when you implement new features: -- Code must be clear and readable, names of variables/constants clearly describes what they are doing -- Public functions must be documented and described in source file and added to README.md to the list of available functions -- There are must be unit-tests for any new functions and improvements - -## Credits -### Contributors - -This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)]. - -#### Special thanks to [contributors](https://github.com/asaskevich/govalidator/graphs/contributors) -* [Daniel Lohse](https://github.com/annismckenzie) -* [Attila Oláh](https://github.com/attilaolah) -* [Daniel Korner](https://github.com/Dadie) -* [Steven Wilkin](https://github.com/stevenwilkin) -* [Deiwin Sarjas](https://github.com/deiwin) -* [Noah Shibley](https://github.com/slugmobile) -* [Nathan Davies](https://github.com/nathj07) -* [Matt Sanford](https://github.com/mzsanford) -* [Simon ccl1115](https://github.com/ccl1115) - - - - -### Backers - -Thank you to all our backers! 🙏 [[Become a backer](https://opencollective.com/govalidator#backer)] - - - - -### Sponsors - -Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [[Become a sponsor](https://opencollective.com/govalidator#sponsor)] - - - - - - - - - - - - - - - -## License -[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator.svg?type=large)](https://app.fossa.io/projects/git%2Bgithub.com%2Fasaskevich%2Fgovalidator?ref=badge_large) diff --git a/vendor/github.com/asaskevich/govalidator/arrays.go b/vendor/github.com/asaskevich/govalidator/arrays.go deleted file mode 100644 index 3e1da7cb48..0000000000 --- a/vendor/github.com/asaskevich/govalidator/arrays.go +++ /dev/null @@ -1,87 +0,0 @@ -package govalidator - -// Iterator is the function that accepts element of slice/array and its index -type Iterator func(interface{}, int) - -// ResultIterator is the function that accepts element of slice/array and its index and returns any result -type ResultIterator func(interface{}, int) interface{} - -// ConditionIterator is the function that accepts element of slice/array and its index and returns boolean -type ConditionIterator func(interface{}, int) bool - -// ReduceIterator is the function that accepts two element of slice/array and returns result of merging those values -type ReduceIterator func(interface{}, interface{}) interface{} - -// Some validates that any item of array corresponds to ConditionIterator. Returns boolean. -func Some(array []interface{}, iterator ConditionIterator) bool { - res := false - for index, data := range array { - res = res || iterator(data, index) - } - return res -} - -// Every validates that every item of array corresponds to ConditionIterator. Returns boolean. -func Every(array []interface{}, iterator ConditionIterator) bool { - res := true - for index, data := range array { - res = res && iterator(data, index) - } - return res -} - -// Reduce boils down a list of values into a single value by ReduceIterator -func Reduce(array []interface{}, iterator ReduceIterator, initialValue interface{}) interface{} { - for _, data := range array { - initialValue = iterator(initialValue, data) - } - return initialValue -} - -// Each iterates over the slice and apply Iterator to every item -func Each(array []interface{}, iterator Iterator) { - for index, data := range array { - iterator(data, index) - } -} - -// Map iterates over the slice and apply ResultIterator to every item. Returns new slice as a result. -func Map(array []interface{}, iterator ResultIterator) []interface{} { - var result = make([]interface{}, len(array)) - for index, data := range array { - result[index] = iterator(data, index) - } - return result -} - -// Find iterates over the slice and apply ConditionIterator to every item. Returns first item that meet ConditionIterator or nil otherwise. -func Find(array []interface{}, iterator ConditionIterator) interface{} { - for index, data := range array { - if iterator(data, index) { - return data - } - } - return nil -} - -// Filter iterates over the slice and apply ConditionIterator to every item. Returns new slice. -func Filter(array []interface{}, iterator ConditionIterator) []interface{} { - var result = make([]interface{}, 0) - for index, data := range array { - if iterator(data, index) { - result = append(result, data) - } - } - return result -} - -// Count iterates over the slice and apply ConditionIterator to every item. Returns count of items that meets ConditionIterator. -func Count(array []interface{}, iterator ConditionIterator) int { - count := 0 - for index, data := range array { - if iterator(data, index) { - count = count + 1 - } - } - return count -} diff --git a/vendor/github.com/asaskevich/govalidator/converter.go b/vendor/github.com/asaskevich/govalidator/converter.go deleted file mode 100644 index d68e990fc2..0000000000 --- a/vendor/github.com/asaskevich/govalidator/converter.go +++ /dev/null @@ -1,81 +0,0 @@ -package govalidator - -import ( - "encoding/json" - "fmt" - "reflect" - "strconv" -) - -// ToString convert the input to a string. -func ToString(obj interface{}) string { - res := fmt.Sprintf("%v", obj) - return res -} - -// ToJSON convert the input to a valid JSON string -func ToJSON(obj interface{}) (string, error) { - res, err := json.Marshal(obj) - if err != nil { - res = []byte("") - } - return string(res), err -} - -// ToFloat convert the input string to a float, or 0.0 if the input is not a float. -func ToFloat(value interface{}) (res float64, err error) { - val := reflect.ValueOf(value) - - switch value.(type) { - case int, int8, int16, int32, int64: - res = float64(val.Int()) - case uint, uint8, uint16, uint32, uint64: - res = float64(val.Uint()) - case float32, float64: - res = val.Float() - case string: - res, err = strconv.ParseFloat(val.String(), 64) - if err != nil { - res = 0 - } - default: - err = fmt.Errorf("ToInt: unknown interface type %T", value) - res = 0 - } - - return -} - -// ToInt convert the input string or any int type to an integer type 64, or 0 if the input is not an integer. -func ToInt(value interface{}) (res int64, err error) { - val := reflect.ValueOf(value) - - switch value.(type) { - case int, int8, int16, int32, int64: - res = val.Int() - case uint, uint8, uint16, uint32, uint64: - res = int64(val.Uint()) - case float32, float64: - res = int64(val.Float()) - case string: - if IsInt(val.String()) { - res, err = strconv.ParseInt(val.String(), 0, 64) - if err != nil { - res = 0 - } - } else { - err = fmt.Errorf("ToInt: invalid numeric format %g", value) - res = 0 - } - default: - err = fmt.Errorf("ToInt: unknown interface type %T", value) - res = 0 - } - - return -} - -// ToBoolean convert the input string to a boolean. -func ToBoolean(str string) (bool, error) { - return strconv.ParseBool(str) -} diff --git a/vendor/github.com/asaskevich/govalidator/doc.go b/vendor/github.com/asaskevich/govalidator/doc.go deleted file mode 100644 index 55dce62dc8..0000000000 --- a/vendor/github.com/asaskevich/govalidator/doc.go +++ /dev/null @@ -1,3 +0,0 @@ -package govalidator - -// A package of validators and sanitizers for strings, structures and collections. diff --git a/vendor/github.com/asaskevich/govalidator/error.go b/vendor/github.com/asaskevich/govalidator/error.go deleted file mode 100644 index 1da2336f47..0000000000 --- a/vendor/github.com/asaskevich/govalidator/error.go +++ /dev/null @@ -1,47 +0,0 @@ -package govalidator - -import ( - "sort" - "strings" -) - -// Errors is an array of multiple errors and conforms to the error interface. -type Errors []error - -// Errors returns itself. -func (es Errors) Errors() []error { - return es -} - -func (es Errors) Error() string { - var errs []string - for _, e := range es { - errs = append(errs, e.Error()) - } - sort.Strings(errs) - return strings.Join(errs, ";") -} - -// Error encapsulates a name, an error and whether there's a custom error message or not. -type Error struct { - Name string - Err error - CustomErrorMessageExists bool - - // Validator indicates the name of the validator that failed - Validator string - Path []string -} - -func (e Error) Error() string { - if e.CustomErrorMessageExists { - return e.Err.Error() - } - - errName := e.Name - if len(e.Path) > 0 { - errName = strings.Join(append(e.Path, e.Name), ".") - } - - return errName + ": " + e.Err.Error() -} diff --git a/vendor/github.com/asaskevich/govalidator/numerics.go b/vendor/github.com/asaskevich/govalidator/numerics.go deleted file mode 100644 index 5041d9e868..0000000000 --- a/vendor/github.com/asaskevich/govalidator/numerics.go +++ /dev/null @@ -1,100 +0,0 @@ -package govalidator - -import ( - "math" -) - -// Abs returns absolute value of number -func Abs(value float64) float64 { - return math.Abs(value) -} - -// Sign returns signum of number: 1 in case of value > 0, -1 in case of value < 0, 0 otherwise -func Sign(value float64) float64 { - if value > 0 { - return 1 - } else if value < 0 { - return -1 - } else { - return 0 - } -} - -// IsNegative returns true if value < 0 -func IsNegative(value float64) bool { - return value < 0 -} - -// IsPositive returns true if value > 0 -func IsPositive(value float64) bool { - return value > 0 -} - -// IsNonNegative returns true if value >= 0 -func IsNonNegative(value float64) bool { - return value >= 0 -} - -// IsNonPositive returns true if value <= 0 -func IsNonPositive(value float64) bool { - return value <= 0 -} - -// InRangeInt returns true if value lies between left and right border -func InRangeInt(value, left, right interface{}) bool { - value64, _ := ToInt(value) - left64, _ := ToInt(left) - right64, _ := ToInt(right) - if left64 > right64 { - left64, right64 = right64, left64 - } - return value64 >= left64 && value64 <= right64 -} - -// InRangeFloat32 returns true if value lies between left and right border -func InRangeFloat32(value, left, right float32) bool { - if left > right { - left, right = right, left - } - return value >= left && value <= right -} - -// InRangeFloat64 returns true if value lies between left and right border -func InRangeFloat64(value, left, right float64) bool { - if left > right { - left, right = right, left - } - return value >= left && value <= right -} - -// InRange returns true if value lies between left and right border, generic type to handle int, float32, float64 and string. -// All types must the same type. -// False if value doesn't lie in range or if it incompatible or not comparable -func InRange(value interface{}, left interface{}, right interface{}) bool { - switch value.(type) { - case int: - intValue, _ := ToInt(value) - intLeft, _ := ToInt(left) - intRight, _ := ToInt(right) - return InRangeInt(intValue, intLeft, intRight) - case float32, float64: - intValue, _ := ToFloat(value) - intLeft, _ := ToFloat(left) - intRight, _ := ToFloat(right) - return InRangeFloat64(intValue, intLeft, intRight) - case string: - return value.(string) >= left.(string) && value.(string) <= right.(string) - default: - return false - } -} - -// IsWhole returns true if value is whole number -func IsWhole(value float64) bool { - return math.Remainder(value, 1) == 0 -} - -// IsNatural returns true if value is natural number (positive and whole) -func IsNatural(value float64) bool { - return IsWhole(value) && IsPositive(value) -} diff --git a/vendor/github.com/asaskevich/govalidator/patterns.go b/vendor/github.com/asaskevich/govalidator/patterns.go deleted file mode 100644 index bafc3765ea..0000000000 --- a/vendor/github.com/asaskevich/govalidator/patterns.go +++ /dev/null @@ -1,113 +0,0 @@ -package govalidator - -import "regexp" - -// Basic regular expressions for validating strings -const ( - Email string = "^(((([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+(\\.([a-zA-Z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|\\.|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|\\d|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.)+(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])|(([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])([a-zA-Z]|\\d|-|_|~|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])*([a-zA-Z]|[\\x{00A0}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFEF}])))\\.?$" - CreditCard string = "^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$" - ISBN10 string = "^(?:[0-9]{9}X|[0-9]{10})$" - ISBN13 string = "^(?:[0-9]{13})$" - UUID3 string = "^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$" - UUID4 string = "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" - UUID5 string = "^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$" - UUID string = "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$" - Alpha string = "^[a-zA-Z]+$" - Alphanumeric string = "^[a-zA-Z0-9]+$" - Numeric string = "^[0-9]+$" - Int string = "^(?:[-+]?(?:0|[1-9][0-9]*))$" - Float string = "^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$" - Hexadecimal string = "^[0-9a-fA-F]+$" - Hexcolor string = "^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$" - RGBcolor string = "^rgb\\(\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*,\\s*(0|[1-9]\\d?|1\\d\\d?|2[0-4]\\d|25[0-5])\\s*\\)$" - ASCII string = "^[\x00-\x7F]+$" - Multibyte string = "[^\x00-\x7F]" - FullWidth string = "[^\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" - HalfWidth string = "[\u0020-\u007E\uFF61-\uFF9F\uFFA0-\uFFDC\uFFE8-\uFFEE0-9a-zA-Z]" - Base64 string = "^(?:[A-Za-z0-9+\\/]{4})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=|[A-Za-z0-9+\\/]{4})$" - PrintableASCII string = "^[\x20-\x7E]+$" - DataURI string = "^data:.+\\/(.+);base64$" - MagnetURI string = "^magnet:\\?xt=urn:[a-zA-Z0-9]+:[a-zA-Z0-9]{32,40}&dn=.+&tr=.+$" - Latitude string = "^[-+]?([1-8]?\\d(\\.\\d+)?|90(\\.0+)?)$" - Longitude string = "^[-+]?(180(\\.0+)?|((1[0-7]\\d)|([1-9]?\\d))(\\.\\d+)?)$" - DNSName string = `^([a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62}){1}(\.[a-zA-Z0-9_]{1}[a-zA-Z0-9_-]{0,62})*[\._]?$` - IP string = `(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))` - URLSchema string = `((ftp|tcp|udp|wss?|https?):\/\/)` - URLUsername string = `(\S+(:\S*)?@)` - URLPath string = `((\/|\?|#)[^\s]*)` - URLPort string = `(:(\d{1,5}))` - URLIP string = `([1-9]\d?|1\d\d|2[01]\d|22[0-3]|24\d|25[0-5])(\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])){2}(?:\.([0-9]\d?|1\d\d|2[0-4]\d|25[0-5]))` - URLSubdomain string = `((www\.)|([a-zA-Z0-9]+([-_\.]?[a-zA-Z0-9])*[a-zA-Z0-9]\.[a-zA-Z0-9]+))` - URL = `^` + URLSchema + `?` + URLUsername + `?` + `((` + URLIP + `|(\[` + IP + `\])|(([a-zA-Z0-9]([a-zA-Z0-9-_]+)?[a-zA-Z0-9]([-\.][a-zA-Z0-9]+)*)|(` + URLSubdomain + `?))?(([a-zA-Z\x{00a1}-\x{ffff}0-9]+-?-?)*[a-zA-Z\x{00a1}-\x{ffff}0-9]+)(?:\.([a-zA-Z\x{00a1}-\x{ffff}]{1,}))?))\.?` + URLPort + `?` + URLPath + `?$` - SSN string = `^\d{3}[- ]?\d{2}[- ]?\d{4}$` - WinPath string = `^[a-zA-Z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$` - UnixPath string = `^(/[^/\x00]*)+/?$` - WinARPath string = `^(?:(?:[a-zA-Z]:|\\\\[a-z0-9_.$●-]+\\[a-z0-9_.$●-]+)\\|\\?[^\\/:*?"<>|\r\n]+\\?)(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$` - UnixARPath string = `^((\.{0,2}/)?([^/\x00]*))+/?$` - Semver string = "^v?(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)(-(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(\\.(0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\\+[0-9a-zA-Z-]+(\\.[0-9a-zA-Z-]+)*)?$" - tagName string = "valid" - hasLowerCase string = ".*[[:lower:]]" - hasUpperCase string = ".*[[:upper:]]" - hasWhitespace string = ".*[[:space:]]" - hasWhitespaceOnly string = "^[[:space:]]+$" - IMEI string = "^[0-9a-f]{14}$|^\\d{15}$|^\\d{18}$" - IMSI string = "^\\d{14,15}$" - E164 string = `^\+?[1-9]\d{1,14}$` -) - -// Used by IsFilePath func -const ( - // Unknown is unresolved OS type - Unknown = iota - // Win is Windows type - Win - // Unix is *nix OS types - Unix -) - -var ( - userRegexp = regexp.MustCompile("^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~.-]+$") - hostRegexp = regexp.MustCompile("^[^\\s]+\\.[^\\s]+$") - userDotRegexp = regexp.MustCompile("(^[.]{1})|([.]{1}$)|([.]{2,})") - rxEmail = regexp.MustCompile(Email) - rxCreditCard = regexp.MustCompile(CreditCard) - rxISBN10 = regexp.MustCompile(ISBN10) - rxISBN13 = regexp.MustCompile(ISBN13) - rxUUID3 = regexp.MustCompile(UUID3) - rxUUID4 = regexp.MustCompile(UUID4) - rxUUID5 = regexp.MustCompile(UUID5) - rxUUID = regexp.MustCompile(UUID) - rxAlpha = regexp.MustCompile(Alpha) - rxAlphanumeric = regexp.MustCompile(Alphanumeric) - rxNumeric = regexp.MustCompile(Numeric) - rxInt = regexp.MustCompile(Int) - rxFloat = regexp.MustCompile(Float) - rxHexadecimal = regexp.MustCompile(Hexadecimal) - rxHexcolor = regexp.MustCompile(Hexcolor) - rxRGBcolor = regexp.MustCompile(RGBcolor) - rxASCII = regexp.MustCompile(ASCII) - rxPrintableASCII = regexp.MustCompile(PrintableASCII) - rxMultibyte = regexp.MustCompile(Multibyte) - rxFullWidth = regexp.MustCompile(FullWidth) - rxHalfWidth = regexp.MustCompile(HalfWidth) - rxBase64 = regexp.MustCompile(Base64) - rxDataURI = regexp.MustCompile(DataURI) - rxMagnetURI = regexp.MustCompile(MagnetURI) - rxLatitude = regexp.MustCompile(Latitude) - rxLongitude = regexp.MustCompile(Longitude) - rxDNSName = regexp.MustCompile(DNSName) - rxURL = regexp.MustCompile(URL) - rxSSN = regexp.MustCompile(SSN) - rxWinPath = regexp.MustCompile(WinPath) - rxUnixPath = regexp.MustCompile(UnixPath) - rxARWinPath = regexp.MustCompile(WinARPath) - rxARUnixPath = regexp.MustCompile(UnixARPath) - rxSemver = regexp.MustCompile(Semver) - rxHasLowerCase = regexp.MustCompile(hasLowerCase) - rxHasUpperCase = regexp.MustCompile(hasUpperCase) - rxHasWhitespace = regexp.MustCompile(hasWhitespace) - rxHasWhitespaceOnly = regexp.MustCompile(hasWhitespaceOnly) - rxIMEI = regexp.MustCompile(IMEI) - rxIMSI = regexp.MustCompile(IMSI) - rxE164 = regexp.MustCompile(E164) -) diff --git a/vendor/github.com/asaskevich/govalidator/types.go b/vendor/github.com/asaskevich/govalidator/types.go deleted file mode 100644 index c573abb51a..0000000000 --- a/vendor/github.com/asaskevich/govalidator/types.go +++ /dev/null @@ -1,656 +0,0 @@ -package govalidator - -import ( - "reflect" - "regexp" - "sort" - "sync" -) - -// Validator is a wrapper for a validator function that returns bool and accepts string. -type Validator func(str string) bool - -// CustomTypeValidator is a wrapper for validator functions that returns bool and accepts any type. -// The second parameter should be the context (in the case of validating a struct: the whole object being validated). -type CustomTypeValidator func(i interface{}, o interface{}) bool - -// ParamValidator is a wrapper for validator functions that accept additional parameters. -type ParamValidator func(str string, params ...string) bool - -// InterfaceParamValidator is a wrapper for functions that accept variants parameters for an interface value -type InterfaceParamValidator func(in interface{}, params ...string) bool -type tagOptionsMap map[string]tagOption - -func (t tagOptionsMap) orderedKeys() []string { - var keys []string - for k := range t { - keys = append(keys, k) - } - - sort.Slice(keys, func(a, b int) bool { - return t[keys[a]].order < t[keys[b]].order - }) - - return keys -} - -type tagOption struct { - name string - customErrorMessage string - order int -} - -// UnsupportedTypeError is a wrapper for reflect.Type -type UnsupportedTypeError struct { - Type reflect.Type -} - -// stringValues is a slice of reflect.Value holding *reflect.StringValue. -// It implements the methods to sort by string. -type stringValues []reflect.Value - -// InterfaceParamTagMap is a map of functions accept variants parameters for an interface value -var InterfaceParamTagMap = map[string]InterfaceParamValidator{ - "type": IsType, -} - -// InterfaceParamTagRegexMap maps interface param tags to their respective regexes. -var InterfaceParamTagRegexMap = map[string]*regexp.Regexp{ - "type": regexp.MustCompile(`^type\((.*)\)$`), -} - -// ParamTagMap is a map of functions accept variants parameters -var ParamTagMap = map[string]ParamValidator{ - "length": ByteLength, - "range": Range, - "runelength": RuneLength, - "stringlength": StringLength, - "matches": StringMatches, - "in": IsInRaw, - "rsapub": IsRsaPub, - "minstringlength": MinStringLength, - "maxstringlength": MaxStringLength, -} - -// ParamTagRegexMap maps param tags to their respective regexes. -var ParamTagRegexMap = map[string]*regexp.Regexp{ - "range": regexp.MustCompile("^range\\((\\d+)\\|(\\d+)\\)$"), - "length": regexp.MustCompile("^length\\((\\d+)\\|(\\d+)\\)$"), - "runelength": regexp.MustCompile("^runelength\\((\\d+)\\|(\\d+)\\)$"), - "stringlength": regexp.MustCompile("^stringlength\\((\\d+)\\|(\\d+)\\)$"), - "in": regexp.MustCompile(`^in\((.*)\)`), - "matches": regexp.MustCompile(`^matches\((.+)\)$`), - "rsapub": regexp.MustCompile("^rsapub\\((\\d+)\\)$"), - "minstringlength": regexp.MustCompile("^minstringlength\\((\\d+)\\)$"), - "maxstringlength": regexp.MustCompile("^maxstringlength\\((\\d+)\\)$"), -} - -type customTypeTagMap struct { - validators map[string]CustomTypeValidator - - sync.RWMutex -} - -func (tm *customTypeTagMap) Get(name string) (CustomTypeValidator, bool) { - tm.RLock() - defer tm.RUnlock() - v, ok := tm.validators[name] - return v, ok -} - -func (tm *customTypeTagMap) Set(name string, ctv CustomTypeValidator) { - tm.Lock() - defer tm.Unlock() - tm.validators[name] = ctv -} - -// CustomTypeTagMap is a map of functions that can be used as tags for ValidateStruct function. -// Use this to validate compound or custom types that need to be handled as a whole, e.g. -// `type UUID [16]byte` (this would be handled as an array of bytes). -var CustomTypeTagMap = &customTypeTagMap{validators: make(map[string]CustomTypeValidator)} - -// TagMap is a map of functions, that can be used as tags for ValidateStruct function. -var TagMap = map[string]Validator{ - "email": IsEmail, - "url": IsURL, - "dialstring": IsDialString, - "requrl": IsRequestURL, - "requri": IsRequestURI, - "alpha": IsAlpha, - "utfletter": IsUTFLetter, - "alphanum": IsAlphanumeric, - "utfletternum": IsUTFLetterNumeric, - "numeric": IsNumeric, - "utfnumeric": IsUTFNumeric, - "utfdigit": IsUTFDigit, - "hexadecimal": IsHexadecimal, - "hexcolor": IsHexcolor, - "rgbcolor": IsRGBcolor, - "lowercase": IsLowerCase, - "uppercase": IsUpperCase, - "int": IsInt, - "float": IsFloat, - "null": IsNull, - "notnull": IsNotNull, - "uuid": IsUUID, - "uuidv3": IsUUIDv3, - "uuidv4": IsUUIDv4, - "uuidv5": IsUUIDv5, - "creditcard": IsCreditCard, - "isbn10": IsISBN10, - "isbn13": IsISBN13, - "json": IsJSON, - "multibyte": IsMultibyte, - "ascii": IsASCII, - "printableascii": IsPrintableASCII, - "fullwidth": IsFullWidth, - "halfwidth": IsHalfWidth, - "variablewidth": IsVariableWidth, - "base64": IsBase64, - "datauri": IsDataURI, - "ip": IsIP, - "port": IsPort, - "ipv4": IsIPv4, - "ipv6": IsIPv6, - "dns": IsDNSName, - "host": IsHost, - "mac": IsMAC, - "latitude": IsLatitude, - "longitude": IsLongitude, - "ssn": IsSSN, - "semver": IsSemver, - "rfc3339": IsRFC3339, - "rfc3339WithoutZone": IsRFC3339WithoutZone, - "ISO3166Alpha2": IsISO3166Alpha2, - "ISO3166Alpha3": IsISO3166Alpha3, - "ISO4217": IsISO4217, - "IMEI": IsIMEI, - "ulid": IsULID, -} - -// ISO3166Entry stores country codes -type ISO3166Entry struct { - EnglishShortName string - FrenchShortName string - Alpha2Code string - Alpha3Code string - Numeric string -} - -//ISO3166List based on https://www.iso.org/obp/ui/#search/code/ Code Type "Officially Assigned Codes" -var ISO3166List = []ISO3166Entry{ - {"Afghanistan", "Afghanistan (l')", "AF", "AFG", "004"}, - {"Albania", "Albanie (l')", "AL", "ALB", "008"}, - {"Antarctica", "Antarctique (l')", "AQ", "ATA", "010"}, - {"Algeria", "Algérie (l')", "DZ", "DZA", "012"}, - {"American Samoa", "Samoa américaines (les)", "AS", "ASM", "016"}, - {"Andorra", "Andorre (l')", "AD", "AND", "020"}, - {"Angola", "Angola (l')", "AO", "AGO", "024"}, - {"Antigua and Barbuda", "Antigua-et-Barbuda", "AG", "ATG", "028"}, - {"Azerbaijan", "Azerbaïdjan (l')", "AZ", "AZE", "031"}, - {"Argentina", "Argentine (l')", "AR", "ARG", "032"}, - {"Australia", "Australie (l')", "AU", "AUS", "036"}, - {"Austria", "Autriche (l')", "AT", "AUT", "040"}, - {"Bahamas (the)", "Bahamas (les)", "BS", "BHS", "044"}, - {"Bahrain", "Bahreïn", "BH", "BHR", "048"}, - {"Bangladesh", "Bangladesh (le)", "BD", "BGD", "050"}, - {"Armenia", "Arménie (l')", "AM", "ARM", "051"}, - {"Barbados", "Barbade (la)", "BB", "BRB", "052"}, - {"Belgium", "Belgique (la)", "BE", "BEL", "056"}, - {"Bermuda", "Bermudes (les)", "BM", "BMU", "060"}, - {"Bhutan", "Bhoutan (le)", "BT", "BTN", "064"}, - {"Bolivia (Plurinational State of)", "Bolivie (État plurinational de)", "BO", "BOL", "068"}, - {"Bosnia and Herzegovina", "Bosnie-Herzégovine (la)", "BA", "BIH", "070"}, - {"Botswana", "Botswana (le)", "BW", "BWA", "072"}, - {"Bouvet Island", "Bouvet (l'Île)", "BV", "BVT", "074"}, - {"Brazil", "Brésil (le)", "BR", "BRA", "076"}, - {"Belize", "Belize (le)", "BZ", "BLZ", "084"}, - {"British Indian Ocean Territory (the)", "Indien (le Territoire britannique de l'océan)", "IO", "IOT", "086"}, - {"Solomon Islands", "Salomon (Îles)", "SB", "SLB", "090"}, - {"Virgin Islands (British)", "Vierges britanniques (les Îles)", "VG", "VGB", "092"}, - {"Brunei Darussalam", "Brunéi Darussalam (le)", "BN", "BRN", "096"}, - {"Bulgaria", "Bulgarie (la)", "BG", "BGR", "100"}, - {"Myanmar", "Myanmar (le)", "MM", "MMR", "104"}, - {"Burundi", "Burundi (le)", "BI", "BDI", "108"}, - {"Belarus", "Bélarus (le)", "BY", "BLR", "112"}, - {"Cambodia", "Cambodge (le)", "KH", "KHM", "116"}, - {"Cameroon", "Cameroun (le)", "CM", "CMR", "120"}, - {"Canada", "Canada (le)", "CA", "CAN", "124"}, - {"Cabo Verde", "Cabo Verde", "CV", "CPV", "132"}, - {"Cayman Islands (the)", "Caïmans (les Îles)", "KY", "CYM", "136"}, - {"Central African Republic (the)", "République centrafricaine (la)", "CF", "CAF", "140"}, - {"Sri Lanka", "Sri Lanka", "LK", "LKA", "144"}, - {"Chad", "Tchad (le)", "TD", "TCD", "148"}, - {"Chile", "Chili (le)", "CL", "CHL", "152"}, - {"China", "Chine (la)", "CN", "CHN", "156"}, - {"Taiwan (Province of China)", "Taïwan (Province de Chine)", "TW", "TWN", "158"}, - {"Christmas Island", "Christmas (l'Île)", "CX", "CXR", "162"}, - {"Cocos (Keeling) Islands (the)", "Cocos (les Îles)/ Keeling (les Îles)", "CC", "CCK", "166"}, - {"Colombia", "Colombie (la)", "CO", "COL", "170"}, - {"Comoros (the)", "Comores (les)", "KM", "COM", "174"}, - {"Mayotte", "Mayotte", "YT", "MYT", "175"}, - {"Congo (the)", "Congo (le)", "CG", "COG", "178"}, - {"Congo (the Democratic Republic of the)", "Congo (la République démocratique du)", "CD", "COD", "180"}, - {"Cook Islands (the)", "Cook (les Îles)", "CK", "COK", "184"}, - {"Costa Rica", "Costa Rica (le)", "CR", "CRI", "188"}, - {"Croatia", "Croatie (la)", "HR", "HRV", "191"}, - {"Cuba", "Cuba", "CU", "CUB", "192"}, - {"Cyprus", "Chypre", "CY", "CYP", "196"}, - {"Czech Republic (the)", "tchèque (la République)", "CZ", "CZE", "203"}, - {"Benin", "Bénin (le)", "BJ", "BEN", "204"}, - {"Denmark", "Danemark (le)", "DK", "DNK", "208"}, - {"Dominica", "Dominique (la)", "DM", "DMA", "212"}, - {"Dominican Republic (the)", "dominicaine (la République)", "DO", "DOM", "214"}, - {"Ecuador", "Équateur (l')", "EC", "ECU", "218"}, - {"El Salvador", "El Salvador", "SV", "SLV", "222"}, - {"Equatorial Guinea", "Guinée équatoriale (la)", "GQ", "GNQ", "226"}, - {"Ethiopia", "Éthiopie (l')", "ET", "ETH", "231"}, - {"Eritrea", "Érythrée (l')", "ER", "ERI", "232"}, - {"Estonia", "Estonie (l')", "EE", "EST", "233"}, - {"Faroe Islands (the)", "Féroé (les Îles)", "FO", "FRO", "234"}, - {"Falkland Islands (the) [Malvinas]", "Falkland (les Îles)/Malouines (les Îles)", "FK", "FLK", "238"}, - {"South Georgia and the South Sandwich Islands", "Géorgie du Sud-et-les Îles Sandwich du Sud (la)", "GS", "SGS", "239"}, - {"Fiji", "Fidji (les)", "FJ", "FJI", "242"}, - {"Finland", "Finlande (la)", "FI", "FIN", "246"}, - {"Åland Islands", "Åland(les Îles)", "AX", "ALA", "248"}, - {"France", "France (la)", "FR", "FRA", "250"}, - {"French Guiana", "Guyane française (la )", "GF", "GUF", "254"}, - {"French Polynesia", "Polynésie française (la)", "PF", "PYF", "258"}, - {"French Southern Territories (the)", "Terres australes françaises (les)", "TF", "ATF", "260"}, - {"Djibouti", "Djibouti", "DJ", "DJI", "262"}, - {"Gabon", "Gabon (le)", "GA", "GAB", "266"}, - {"Georgia", "Géorgie (la)", "GE", "GEO", "268"}, - {"Gambia (the)", "Gambie (la)", "GM", "GMB", "270"}, - {"Palestine, State of", "Palestine, État de", "PS", "PSE", "275"}, - {"Germany", "Allemagne (l')", "DE", "DEU", "276"}, - {"Ghana", "Ghana (le)", "GH", "GHA", "288"}, - {"Gibraltar", "Gibraltar", "GI", "GIB", "292"}, - {"Kiribati", "Kiribati", "KI", "KIR", "296"}, - {"Greece", "Grèce (la)", "GR", "GRC", "300"}, - {"Greenland", "Groenland (le)", "GL", "GRL", "304"}, - {"Grenada", "Grenade (la)", "GD", "GRD", "308"}, - {"Guadeloupe", "Guadeloupe (la)", "GP", "GLP", "312"}, - {"Guam", "Guam", "GU", "GUM", "316"}, - {"Guatemala", "Guatemala (le)", "GT", "GTM", "320"}, - {"Guinea", "Guinée (la)", "GN", "GIN", "324"}, - {"Guyana", "Guyana (le)", "GY", "GUY", "328"}, - {"Haiti", "Haïti", "HT", "HTI", "332"}, - {"Heard Island and McDonald Islands", "Heard-et-Îles MacDonald (l'Île)", "HM", "HMD", "334"}, - {"Holy See (the)", "Saint-Siège (le)", "VA", "VAT", "336"}, - {"Honduras", "Honduras (le)", "HN", "HND", "340"}, - {"Hong Kong", "Hong Kong", "HK", "HKG", "344"}, - {"Hungary", "Hongrie (la)", "HU", "HUN", "348"}, - {"Iceland", "Islande (l')", "IS", "ISL", "352"}, - {"India", "Inde (l')", "IN", "IND", "356"}, - {"Indonesia", "Indonésie (l')", "ID", "IDN", "360"}, - {"Iran (Islamic Republic of)", "Iran (République Islamique d')", "IR", "IRN", "364"}, - {"Iraq", "Iraq (l')", "IQ", "IRQ", "368"}, - {"Ireland", "Irlande (l')", "IE", "IRL", "372"}, - {"Israel", "Israël", "IL", "ISR", "376"}, - {"Italy", "Italie (l')", "IT", "ITA", "380"}, - {"Côte d'Ivoire", "Côte d'Ivoire (la)", "CI", "CIV", "384"}, - {"Jamaica", "Jamaïque (la)", "JM", "JAM", "388"}, - {"Japan", "Japon (le)", "JP", "JPN", "392"}, - {"Kazakhstan", "Kazakhstan (le)", "KZ", "KAZ", "398"}, - {"Jordan", "Jordanie (la)", "JO", "JOR", "400"}, - {"Kenya", "Kenya (le)", "KE", "KEN", "404"}, - {"Korea (the Democratic People's Republic of)", "Corée (la République populaire démocratique de)", "KP", "PRK", "408"}, - {"Korea (the Republic of)", "Corée (la République de)", "KR", "KOR", "410"}, - {"Kuwait", "Koweït (le)", "KW", "KWT", "414"}, - {"Kyrgyzstan", "Kirghizistan (le)", "KG", "KGZ", "417"}, - {"Lao People's Democratic Republic (the)", "Lao, République démocratique populaire", "LA", "LAO", "418"}, - {"Lebanon", "Liban (le)", "LB", "LBN", "422"}, - {"Lesotho", "Lesotho (le)", "LS", "LSO", "426"}, - {"Latvia", "Lettonie (la)", "LV", "LVA", "428"}, - {"Liberia", "Libéria (le)", "LR", "LBR", "430"}, - {"Libya", "Libye (la)", "LY", "LBY", "434"}, - {"Liechtenstein", "Liechtenstein (le)", "LI", "LIE", "438"}, - {"Lithuania", "Lituanie (la)", "LT", "LTU", "440"}, - {"Luxembourg", "Luxembourg (le)", "LU", "LUX", "442"}, - {"Macao", "Macao", "MO", "MAC", "446"}, - {"Madagascar", "Madagascar", "MG", "MDG", "450"}, - {"Malawi", "Malawi (le)", "MW", "MWI", "454"}, - {"Malaysia", "Malaisie (la)", "MY", "MYS", "458"}, - {"Maldives", "Maldives (les)", "MV", "MDV", "462"}, - {"Mali", "Mali (le)", "ML", "MLI", "466"}, - {"Malta", "Malte", "MT", "MLT", "470"}, - {"Martinique", "Martinique (la)", "MQ", "MTQ", "474"}, - {"Mauritania", "Mauritanie (la)", "MR", "MRT", "478"}, - {"Mauritius", "Maurice", "MU", "MUS", "480"}, - {"Mexico", "Mexique (le)", "MX", "MEX", "484"}, - {"Monaco", "Monaco", "MC", "MCO", "492"}, - {"Mongolia", "Mongolie (la)", "MN", "MNG", "496"}, - {"Moldova (the Republic of)", "Moldova , République de", "MD", "MDA", "498"}, - {"Montenegro", "Monténégro (le)", "ME", "MNE", "499"}, - {"Montserrat", "Montserrat", "MS", "MSR", "500"}, - {"Morocco", "Maroc (le)", "MA", "MAR", "504"}, - {"Mozambique", "Mozambique (le)", "MZ", "MOZ", "508"}, - {"Oman", "Oman", "OM", "OMN", "512"}, - {"Namibia", "Namibie (la)", "NA", "NAM", "516"}, - {"Nauru", "Nauru", "NR", "NRU", "520"}, - {"Nepal", "Népal (le)", "NP", "NPL", "524"}, - {"Netherlands (the)", "Pays-Bas (les)", "NL", "NLD", "528"}, - {"Curaçao", "Curaçao", "CW", "CUW", "531"}, - {"Aruba", "Aruba", "AW", "ABW", "533"}, - {"Sint Maarten (Dutch part)", "Saint-Martin (partie néerlandaise)", "SX", "SXM", "534"}, - {"Bonaire, Sint Eustatius and Saba", "Bonaire, Saint-Eustache et Saba", "BQ", "BES", "535"}, - {"New Caledonia", "Nouvelle-Calédonie (la)", "NC", "NCL", "540"}, - {"Vanuatu", "Vanuatu (le)", "VU", "VUT", "548"}, - {"New Zealand", "Nouvelle-Zélande (la)", "NZ", "NZL", "554"}, - {"Nicaragua", "Nicaragua (le)", "NI", "NIC", "558"}, - {"Niger (the)", "Niger (le)", "NE", "NER", "562"}, - {"Nigeria", "Nigéria (le)", "NG", "NGA", "566"}, - {"Niue", "Niue", "NU", "NIU", "570"}, - {"Norfolk Island", "Norfolk (l'Île)", "NF", "NFK", "574"}, - {"Norway", "Norvège (la)", "NO", "NOR", "578"}, - {"Northern Mariana Islands (the)", "Mariannes du Nord (les Îles)", "MP", "MNP", "580"}, - {"United States Minor Outlying Islands (the)", "Îles mineures éloignées des États-Unis (les)", "UM", "UMI", "581"}, - {"Micronesia (Federated States of)", "Micronésie (États fédérés de)", "FM", "FSM", "583"}, - {"Marshall Islands (the)", "Marshall (Îles)", "MH", "MHL", "584"}, - {"Palau", "Palaos (les)", "PW", "PLW", "585"}, - {"Pakistan", "Pakistan (le)", "PK", "PAK", "586"}, - {"Panama", "Panama (le)", "PA", "PAN", "591"}, - {"Papua New Guinea", "Papouasie-Nouvelle-Guinée (la)", "PG", "PNG", "598"}, - {"Paraguay", "Paraguay (le)", "PY", "PRY", "600"}, - {"Peru", "Pérou (le)", "PE", "PER", "604"}, - {"Philippines (the)", "Philippines (les)", "PH", "PHL", "608"}, - {"Pitcairn", "Pitcairn", "PN", "PCN", "612"}, - {"Poland", "Pologne (la)", "PL", "POL", "616"}, - {"Portugal", "Portugal (le)", "PT", "PRT", "620"}, - {"Guinea-Bissau", "Guinée-Bissau (la)", "GW", "GNB", "624"}, - {"Timor-Leste", "Timor-Leste (le)", "TL", "TLS", "626"}, - {"Puerto Rico", "Porto Rico", "PR", "PRI", "630"}, - {"Qatar", "Qatar (le)", "QA", "QAT", "634"}, - {"Réunion", "Réunion (La)", "RE", "REU", "638"}, - {"Romania", "Roumanie (la)", "RO", "ROU", "642"}, - {"Russian Federation (the)", "Russie (la Fédération de)", "RU", "RUS", "643"}, - {"Rwanda", "Rwanda (le)", "RW", "RWA", "646"}, - {"Saint Barthélemy", "Saint-Barthélemy", "BL", "BLM", "652"}, - {"Saint Helena, Ascension and Tristan da Cunha", "Sainte-Hélène, Ascension et Tristan da Cunha", "SH", "SHN", "654"}, - {"Saint Kitts and Nevis", "Saint-Kitts-et-Nevis", "KN", "KNA", "659"}, - {"Anguilla", "Anguilla", "AI", "AIA", "660"}, - {"Saint Lucia", "Sainte-Lucie", "LC", "LCA", "662"}, - {"Saint Martin (French part)", "Saint-Martin (partie française)", "MF", "MAF", "663"}, - {"Saint Pierre and Miquelon", "Saint-Pierre-et-Miquelon", "PM", "SPM", "666"}, - {"Saint Vincent and the Grenadines", "Saint-Vincent-et-les Grenadines", "VC", "VCT", "670"}, - {"San Marino", "Saint-Marin", "SM", "SMR", "674"}, - {"Sao Tome and Principe", "Sao Tomé-et-Principe", "ST", "STP", "678"}, - {"Saudi Arabia", "Arabie saoudite (l')", "SA", "SAU", "682"}, - {"Senegal", "Sénégal (le)", "SN", "SEN", "686"}, - {"Serbia", "Serbie (la)", "RS", "SRB", "688"}, - {"Seychelles", "Seychelles (les)", "SC", "SYC", "690"}, - {"Sierra Leone", "Sierra Leone (la)", "SL", "SLE", "694"}, - {"Singapore", "Singapour", "SG", "SGP", "702"}, - {"Slovakia", "Slovaquie (la)", "SK", "SVK", "703"}, - {"Viet Nam", "Viet Nam (le)", "VN", "VNM", "704"}, - {"Slovenia", "Slovénie (la)", "SI", "SVN", "705"}, - {"Somalia", "Somalie (la)", "SO", "SOM", "706"}, - {"South Africa", "Afrique du Sud (l')", "ZA", "ZAF", "710"}, - {"Zimbabwe", "Zimbabwe (le)", "ZW", "ZWE", "716"}, - {"Spain", "Espagne (l')", "ES", "ESP", "724"}, - {"South Sudan", "Soudan du Sud (le)", "SS", "SSD", "728"}, - {"Sudan (the)", "Soudan (le)", "SD", "SDN", "729"}, - {"Western Sahara*", "Sahara occidental (le)*", "EH", "ESH", "732"}, - {"Suriname", "Suriname (le)", "SR", "SUR", "740"}, - {"Svalbard and Jan Mayen", "Svalbard et l'Île Jan Mayen (le)", "SJ", "SJM", "744"}, - {"Swaziland", "Swaziland (le)", "SZ", "SWZ", "748"}, - {"Sweden", "Suède (la)", "SE", "SWE", "752"}, - {"Switzerland", "Suisse (la)", "CH", "CHE", "756"}, - {"Syrian Arab Republic", "République arabe syrienne (la)", "SY", "SYR", "760"}, - {"Tajikistan", "Tadjikistan (le)", "TJ", "TJK", "762"}, - {"Thailand", "Thaïlande (la)", "TH", "THA", "764"}, - {"Togo", "Togo (le)", "TG", "TGO", "768"}, - {"Tokelau", "Tokelau (les)", "TK", "TKL", "772"}, - {"Tonga", "Tonga (les)", "TO", "TON", "776"}, - {"Trinidad and Tobago", "Trinité-et-Tobago (la)", "TT", "TTO", "780"}, - {"United Arab Emirates (the)", "Émirats arabes unis (les)", "AE", "ARE", "784"}, - {"Tunisia", "Tunisie (la)", "TN", "TUN", "788"}, - {"Turkey", "Turquie (la)", "TR", "TUR", "792"}, - {"Turkmenistan", "Turkménistan (le)", "TM", "TKM", "795"}, - {"Turks and Caicos Islands (the)", "Turks-et-Caïcos (les Îles)", "TC", "TCA", "796"}, - {"Tuvalu", "Tuvalu (les)", "TV", "TUV", "798"}, - {"Uganda", "Ouganda (l')", "UG", "UGA", "800"}, - {"Ukraine", "Ukraine (l')", "UA", "UKR", "804"}, - {"Macedonia (the former Yugoslav Republic of)", "Macédoine (l'ex‑République yougoslave de)", "MK", "MKD", "807"}, - {"Egypt", "Égypte (l')", "EG", "EGY", "818"}, - {"United Kingdom of Great Britain and Northern Ireland (the)", "Royaume-Uni de Grande-Bretagne et d'Irlande du Nord (le)", "GB", "GBR", "826"}, - {"Guernsey", "Guernesey", "GG", "GGY", "831"}, - {"Jersey", "Jersey", "JE", "JEY", "832"}, - {"Isle of Man", "Île de Man", "IM", "IMN", "833"}, - {"Tanzania, United Republic of", "Tanzanie, République-Unie de", "TZ", "TZA", "834"}, - {"United States of America (the)", "États-Unis d'Amérique (les)", "US", "USA", "840"}, - {"Virgin Islands (U.S.)", "Vierges des États-Unis (les Îles)", "VI", "VIR", "850"}, - {"Burkina Faso", "Burkina Faso (le)", "BF", "BFA", "854"}, - {"Uruguay", "Uruguay (l')", "UY", "URY", "858"}, - {"Uzbekistan", "Ouzbékistan (l')", "UZ", "UZB", "860"}, - {"Venezuela (Bolivarian Republic of)", "Venezuela (République bolivarienne du)", "VE", "VEN", "862"}, - {"Wallis and Futuna", "Wallis-et-Futuna", "WF", "WLF", "876"}, - {"Samoa", "Samoa (le)", "WS", "WSM", "882"}, - {"Yemen", "Yémen (le)", "YE", "YEM", "887"}, - {"Zambia", "Zambie (la)", "ZM", "ZMB", "894"}, -} - -// ISO4217List is the list of ISO currency codes -var ISO4217List = []string{ - "AED", "AFN", "ALL", "AMD", "ANG", "AOA", "ARS", "AUD", "AWG", "AZN", - "BAM", "BBD", "BDT", "BGN", "BHD", "BIF", "BMD", "BND", "BOB", "BOV", "BRL", "BSD", "BTN", "BWP", "BYN", "BZD", - "CAD", "CDF", "CHE", "CHF", "CHW", "CLF", "CLP", "CNY", "COP", "COU", "CRC", "CUC", "CUP", "CVE", "CZK", - "DJF", "DKK", "DOP", "DZD", - "EGP", "ERN", "ETB", "EUR", - "FJD", "FKP", - "GBP", "GEL", "GHS", "GIP", "GMD", "GNF", "GTQ", "GYD", - "HKD", "HNL", "HRK", "HTG", "HUF", - "IDR", "ILS", "INR", "IQD", "IRR", "ISK", - "JMD", "JOD", "JPY", - "KES", "KGS", "KHR", "KMF", "KPW", "KRW", "KWD", "KYD", "KZT", - "LAK", "LBP", "LKR", "LRD", "LSL", "LYD", - "MAD", "MDL", "MGA", "MKD", "MMK", "MNT", "MOP", "MRO", "MUR", "MVR", "MWK", "MXN", "MXV", "MYR", "MZN", - "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", - "OMR", - "PAB", "PEN", "PGK", "PHP", "PKR", "PLN", "PYG", - "QAR", - "RON", "RSD", "RUB", "RWF", - "SAR", "SBD", "SCR", "SDG", "SEK", "SGD", "SHP", "SLL", "SOS", "SRD", "SSP", "STD", "STN", "SVC", "SYP", "SZL", - "THB", "TJS", "TMT", "TND", "TOP", "TRY", "TTD", "TWD", "TZS", - "UAH", "UGX", "USD", "USN", "UYI", "UYU", "UYW", "UZS", - "VEF", "VES", "VND", "VUV", - "WST", - "XAF", "XAG", "XAU", "XBA", "XBB", "XBC", "XBD", "XCD", "XDR", "XOF", "XPD", "XPF", "XPT", "XSU", "XTS", "XUA", "XXX", - "YER", - "ZAR", "ZMW", "ZWL", -} - -// ISO693Entry stores ISO language codes -type ISO693Entry struct { - Alpha3bCode string - Alpha2Code string - English string -} - -//ISO693List based on http://data.okfn.org/data/core/language-codes/r/language-codes-3b2.json -var ISO693List = []ISO693Entry{ - {Alpha3bCode: "aar", Alpha2Code: "aa", English: "Afar"}, - {Alpha3bCode: "abk", Alpha2Code: "ab", English: "Abkhazian"}, - {Alpha3bCode: "afr", Alpha2Code: "af", English: "Afrikaans"}, - {Alpha3bCode: "aka", Alpha2Code: "ak", English: "Akan"}, - {Alpha3bCode: "alb", Alpha2Code: "sq", English: "Albanian"}, - {Alpha3bCode: "amh", Alpha2Code: "am", English: "Amharic"}, - {Alpha3bCode: "ara", Alpha2Code: "ar", English: "Arabic"}, - {Alpha3bCode: "arg", Alpha2Code: "an", English: "Aragonese"}, - {Alpha3bCode: "arm", Alpha2Code: "hy", English: "Armenian"}, - {Alpha3bCode: "asm", Alpha2Code: "as", English: "Assamese"}, - {Alpha3bCode: "ava", Alpha2Code: "av", English: "Avaric"}, - {Alpha3bCode: "ave", Alpha2Code: "ae", English: "Avestan"}, - {Alpha3bCode: "aym", Alpha2Code: "ay", English: "Aymara"}, - {Alpha3bCode: "aze", Alpha2Code: "az", English: "Azerbaijani"}, - {Alpha3bCode: "bak", Alpha2Code: "ba", English: "Bashkir"}, - {Alpha3bCode: "bam", Alpha2Code: "bm", English: "Bambara"}, - {Alpha3bCode: "baq", Alpha2Code: "eu", English: "Basque"}, - {Alpha3bCode: "bel", Alpha2Code: "be", English: "Belarusian"}, - {Alpha3bCode: "ben", Alpha2Code: "bn", English: "Bengali"}, - {Alpha3bCode: "bih", Alpha2Code: "bh", English: "Bihari languages"}, - {Alpha3bCode: "bis", Alpha2Code: "bi", English: "Bislama"}, - {Alpha3bCode: "bos", Alpha2Code: "bs", English: "Bosnian"}, - {Alpha3bCode: "bre", Alpha2Code: "br", English: "Breton"}, - {Alpha3bCode: "bul", Alpha2Code: "bg", English: "Bulgarian"}, - {Alpha3bCode: "bur", Alpha2Code: "my", English: "Burmese"}, - {Alpha3bCode: "cat", Alpha2Code: "ca", English: "Catalan; Valencian"}, - {Alpha3bCode: "cha", Alpha2Code: "ch", English: "Chamorro"}, - {Alpha3bCode: "che", Alpha2Code: "ce", English: "Chechen"}, - {Alpha3bCode: "chi", Alpha2Code: "zh", English: "Chinese"}, - {Alpha3bCode: "chu", Alpha2Code: "cu", English: "Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old Church Slavonic"}, - {Alpha3bCode: "chv", Alpha2Code: "cv", English: "Chuvash"}, - {Alpha3bCode: "cor", Alpha2Code: "kw", English: "Cornish"}, - {Alpha3bCode: "cos", Alpha2Code: "co", English: "Corsican"}, - {Alpha3bCode: "cre", Alpha2Code: "cr", English: "Cree"}, - {Alpha3bCode: "cze", Alpha2Code: "cs", English: "Czech"}, - {Alpha3bCode: "dan", Alpha2Code: "da", English: "Danish"}, - {Alpha3bCode: "div", Alpha2Code: "dv", English: "Divehi; Dhivehi; Maldivian"}, - {Alpha3bCode: "dut", Alpha2Code: "nl", English: "Dutch; Flemish"}, - {Alpha3bCode: "dzo", Alpha2Code: "dz", English: "Dzongkha"}, - {Alpha3bCode: "eng", Alpha2Code: "en", English: "English"}, - {Alpha3bCode: "epo", Alpha2Code: "eo", English: "Esperanto"}, - {Alpha3bCode: "est", Alpha2Code: "et", English: "Estonian"}, - {Alpha3bCode: "ewe", Alpha2Code: "ee", English: "Ewe"}, - {Alpha3bCode: "fao", Alpha2Code: "fo", English: "Faroese"}, - {Alpha3bCode: "fij", Alpha2Code: "fj", English: "Fijian"}, - {Alpha3bCode: "fin", Alpha2Code: "fi", English: "Finnish"}, - {Alpha3bCode: "fre", Alpha2Code: "fr", English: "French"}, - {Alpha3bCode: "fry", Alpha2Code: "fy", English: "Western Frisian"}, - {Alpha3bCode: "ful", Alpha2Code: "ff", English: "Fulah"}, - {Alpha3bCode: "geo", Alpha2Code: "ka", English: "Georgian"}, - {Alpha3bCode: "ger", Alpha2Code: "de", English: "German"}, - {Alpha3bCode: "gla", Alpha2Code: "gd", English: "Gaelic; Scottish Gaelic"}, - {Alpha3bCode: "gle", Alpha2Code: "ga", English: "Irish"}, - {Alpha3bCode: "glg", Alpha2Code: "gl", English: "Galician"}, - {Alpha3bCode: "glv", Alpha2Code: "gv", English: "Manx"}, - {Alpha3bCode: "gre", Alpha2Code: "el", English: "Greek, Modern (1453-)"}, - {Alpha3bCode: "grn", Alpha2Code: "gn", English: "Guarani"}, - {Alpha3bCode: "guj", Alpha2Code: "gu", English: "Gujarati"}, - {Alpha3bCode: "hat", Alpha2Code: "ht", English: "Haitian; Haitian Creole"}, - {Alpha3bCode: "hau", Alpha2Code: "ha", English: "Hausa"}, - {Alpha3bCode: "heb", Alpha2Code: "he", English: "Hebrew"}, - {Alpha3bCode: "her", Alpha2Code: "hz", English: "Herero"}, - {Alpha3bCode: "hin", Alpha2Code: "hi", English: "Hindi"}, - {Alpha3bCode: "hmo", Alpha2Code: "ho", English: "Hiri Motu"}, - {Alpha3bCode: "hrv", Alpha2Code: "hr", English: "Croatian"}, - {Alpha3bCode: "hun", Alpha2Code: "hu", English: "Hungarian"}, - {Alpha3bCode: "ibo", Alpha2Code: "ig", English: "Igbo"}, - {Alpha3bCode: "ice", Alpha2Code: "is", English: "Icelandic"}, - {Alpha3bCode: "ido", Alpha2Code: "io", English: "Ido"}, - {Alpha3bCode: "iii", Alpha2Code: "ii", English: "Sichuan Yi; Nuosu"}, - {Alpha3bCode: "iku", Alpha2Code: "iu", English: "Inuktitut"}, - {Alpha3bCode: "ile", Alpha2Code: "ie", English: "Interlingue; Occidental"}, - {Alpha3bCode: "ina", Alpha2Code: "ia", English: "Interlingua (International Auxiliary Language Association)"}, - {Alpha3bCode: "ind", Alpha2Code: "id", English: "Indonesian"}, - {Alpha3bCode: "ipk", Alpha2Code: "ik", English: "Inupiaq"}, - {Alpha3bCode: "ita", Alpha2Code: "it", English: "Italian"}, - {Alpha3bCode: "jav", Alpha2Code: "jv", English: "Javanese"}, - {Alpha3bCode: "jpn", Alpha2Code: "ja", English: "Japanese"}, - {Alpha3bCode: "kal", Alpha2Code: "kl", English: "Kalaallisut; Greenlandic"}, - {Alpha3bCode: "kan", Alpha2Code: "kn", English: "Kannada"}, - {Alpha3bCode: "kas", Alpha2Code: "ks", English: "Kashmiri"}, - {Alpha3bCode: "kau", Alpha2Code: "kr", English: "Kanuri"}, - {Alpha3bCode: "kaz", Alpha2Code: "kk", English: "Kazakh"}, - {Alpha3bCode: "khm", Alpha2Code: "km", English: "Central Khmer"}, - {Alpha3bCode: "kik", Alpha2Code: "ki", English: "Kikuyu; Gikuyu"}, - {Alpha3bCode: "kin", Alpha2Code: "rw", English: "Kinyarwanda"}, - {Alpha3bCode: "kir", Alpha2Code: "ky", English: "Kirghiz; Kyrgyz"}, - {Alpha3bCode: "kom", Alpha2Code: "kv", English: "Komi"}, - {Alpha3bCode: "kon", Alpha2Code: "kg", English: "Kongo"}, - {Alpha3bCode: "kor", Alpha2Code: "ko", English: "Korean"}, - {Alpha3bCode: "kua", Alpha2Code: "kj", English: "Kuanyama; Kwanyama"}, - {Alpha3bCode: "kur", Alpha2Code: "ku", English: "Kurdish"}, - {Alpha3bCode: "lao", Alpha2Code: "lo", English: "Lao"}, - {Alpha3bCode: "lat", Alpha2Code: "la", English: "Latin"}, - {Alpha3bCode: "lav", Alpha2Code: "lv", English: "Latvian"}, - {Alpha3bCode: "lim", Alpha2Code: "li", English: "Limburgan; Limburger; Limburgish"}, - {Alpha3bCode: "lin", Alpha2Code: "ln", English: "Lingala"}, - {Alpha3bCode: "lit", Alpha2Code: "lt", English: "Lithuanian"}, - {Alpha3bCode: "ltz", Alpha2Code: "lb", English: "Luxembourgish; Letzeburgesch"}, - {Alpha3bCode: "lub", Alpha2Code: "lu", English: "Luba-Katanga"}, - {Alpha3bCode: "lug", Alpha2Code: "lg", English: "Ganda"}, - {Alpha3bCode: "mac", Alpha2Code: "mk", English: "Macedonian"}, - {Alpha3bCode: "mah", Alpha2Code: "mh", English: "Marshallese"}, - {Alpha3bCode: "mal", Alpha2Code: "ml", English: "Malayalam"}, - {Alpha3bCode: "mao", Alpha2Code: "mi", English: "Maori"}, - {Alpha3bCode: "mar", Alpha2Code: "mr", English: "Marathi"}, - {Alpha3bCode: "may", Alpha2Code: "ms", English: "Malay"}, - {Alpha3bCode: "mlg", Alpha2Code: "mg", English: "Malagasy"}, - {Alpha3bCode: "mlt", Alpha2Code: "mt", English: "Maltese"}, - {Alpha3bCode: "mon", Alpha2Code: "mn", English: "Mongolian"}, - {Alpha3bCode: "nau", Alpha2Code: "na", English: "Nauru"}, - {Alpha3bCode: "nav", Alpha2Code: "nv", English: "Navajo; Navaho"}, - {Alpha3bCode: "nbl", Alpha2Code: "nr", English: "Ndebele, South; South Ndebele"}, - {Alpha3bCode: "nde", Alpha2Code: "nd", English: "Ndebele, North; North Ndebele"}, - {Alpha3bCode: "ndo", Alpha2Code: "ng", English: "Ndonga"}, - {Alpha3bCode: "nep", Alpha2Code: "ne", English: "Nepali"}, - {Alpha3bCode: "nno", Alpha2Code: "nn", English: "Norwegian Nynorsk; Nynorsk, Norwegian"}, - {Alpha3bCode: "nob", Alpha2Code: "nb", English: "Bokmål, Norwegian; Norwegian Bokmål"}, - {Alpha3bCode: "nor", Alpha2Code: "no", English: "Norwegian"}, - {Alpha3bCode: "nya", Alpha2Code: "ny", English: "Chichewa; Chewa; Nyanja"}, - {Alpha3bCode: "oci", Alpha2Code: "oc", English: "Occitan (post 1500); Provençal"}, - {Alpha3bCode: "oji", Alpha2Code: "oj", English: "Ojibwa"}, - {Alpha3bCode: "ori", Alpha2Code: "or", English: "Oriya"}, - {Alpha3bCode: "orm", Alpha2Code: "om", English: "Oromo"}, - {Alpha3bCode: "oss", Alpha2Code: "os", English: "Ossetian; Ossetic"}, - {Alpha3bCode: "pan", Alpha2Code: "pa", English: "Panjabi; Punjabi"}, - {Alpha3bCode: "per", Alpha2Code: "fa", English: "Persian"}, - {Alpha3bCode: "pli", Alpha2Code: "pi", English: "Pali"}, - {Alpha3bCode: "pol", Alpha2Code: "pl", English: "Polish"}, - {Alpha3bCode: "por", Alpha2Code: "pt", English: "Portuguese"}, - {Alpha3bCode: "pus", Alpha2Code: "ps", English: "Pushto; Pashto"}, - {Alpha3bCode: "que", Alpha2Code: "qu", English: "Quechua"}, - {Alpha3bCode: "roh", Alpha2Code: "rm", English: "Romansh"}, - {Alpha3bCode: "rum", Alpha2Code: "ro", English: "Romanian; Moldavian; Moldovan"}, - {Alpha3bCode: "run", Alpha2Code: "rn", English: "Rundi"}, - {Alpha3bCode: "rus", Alpha2Code: "ru", English: "Russian"}, - {Alpha3bCode: "sag", Alpha2Code: "sg", English: "Sango"}, - {Alpha3bCode: "san", Alpha2Code: "sa", English: "Sanskrit"}, - {Alpha3bCode: "sin", Alpha2Code: "si", English: "Sinhala; Sinhalese"}, - {Alpha3bCode: "slo", Alpha2Code: "sk", English: "Slovak"}, - {Alpha3bCode: "slv", Alpha2Code: "sl", English: "Slovenian"}, - {Alpha3bCode: "sme", Alpha2Code: "se", English: "Northern Sami"}, - {Alpha3bCode: "smo", Alpha2Code: "sm", English: "Samoan"}, - {Alpha3bCode: "sna", Alpha2Code: "sn", English: "Shona"}, - {Alpha3bCode: "snd", Alpha2Code: "sd", English: "Sindhi"}, - {Alpha3bCode: "som", Alpha2Code: "so", English: "Somali"}, - {Alpha3bCode: "sot", Alpha2Code: "st", English: "Sotho, Southern"}, - {Alpha3bCode: "spa", Alpha2Code: "es", English: "Spanish; Castilian"}, - {Alpha3bCode: "srd", Alpha2Code: "sc", English: "Sardinian"}, - {Alpha3bCode: "srp", Alpha2Code: "sr", English: "Serbian"}, - {Alpha3bCode: "ssw", Alpha2Code: "ss", English: "Swati"}, - {Alpha3bCode: "sun", Alpha2Code: "su", English: "Sundanese"}, - {Alpha3bCode: "swa", Alpha2Code: "sw", English: "Swahili"}, - {Alpha3bCode: "swe", Alpha2Code: "sv", English: "Swedish"}, - {Alpha3bCode: "tah", Alpha2Code: "ty", English: "Tahitian"}, - {Alpha3bCode: "tam", Alpha2Code: "ta", English: "Tamil"}, - {Alpha3bCode: "tat", Alpha2Code: "tt", English: "Tatar"}, - {Alpha3bCode: "tel", Alpha2Code: "te", English: "Telugu"}, - {Alpha3bCode: "tgk", Alpha2Code: "tg", English: "Tajik"}, - {Alpha3bCode: "tgl", Alpha2Code: "tl", English: "Tagalog"}, - {Alpha3bCode: "tha", Alpha2Code: "th", English: "Thai"}, - {Alpha3bCode: "tib", Alpha2Code: "bo", English: "Tibetan"}, - {Alpha3bCode: "tir", Alpha2Code: "ti", English: "Tigrinya"}, - {Alpha3bCode: "ton", Alpha2Code: "to", English: "Tonga (Tonga Islands)"}, - {Alpha3bCode: "tsn", Alpha2Code: "tn", English: "Tswana"}, - {Alpha3bCode: "tso", Alpha2Code: "ts", English: "Tsonga"}, - {Alpha3bCode: "tuk", Alpha2Code: "tk", English: "Turkmen"}, - {Alpha3bCode: "tur", Alpha2Code: "tr", English: "Turkish"}, - {Alpha3bCode: "twi", Alpha2Code: "tw", English: "Twi"}, - {Alpha3bCode: "uig", Alpha2Code: "ug", English: "Uighur; Uyghur"}, - {Alpha3bCode: "ukr", Alpha2Code: "uk", English: "Ukrainian"}, - {Alpha3bCode: "urd", Alpha2Code: "ur", English: "Urdu"}, - {Alpha3bCode: "uzb", Alpha2Code: "uz", English: "Uzbek"}, - {Alpha3bCode: "ven", Alpha2Code: "ve", English: "Venda"}, - {Alpha3bCode: "vie", Alpha2Code: "vi", English: "Vietnamese"}, - {Alpha3bCode: "vol", Alpha2Code: "vo", English: "Volapük"}, - {Alpha3bCode: "wel", Alpha2Code: "cy", English: "Welsh"}, - {Alpha3bCode: "wln", Alpha2Code: "wa", English: "Walloon"}, - {Alpha3bCode: "wol", Alpha2Code: "wo", English: "Wolof"}, - {Alpha3bCode: "xho", Alpha2Code: "xh", English: "Xhosa"}, - {Alpha3bCode: "yid", Alpha2Code: "yi", English: "Yiddish"}, - {Alpha3bCode: "yor", Alpha2Code: "yo", English: "Yoruba"}, - {Alpha3bCode: "zha", Alpha2Code: "za", English: "Zhuang; Chuang"}, - {Alpha3bCode: "zul", Alpha2Code: "zu", English: "Zulu"}, -} diff --git a/vendor/github.com/asaskevich/govalidator/utils.go b/vendor/github.com/asaskevich/govalidator/utils.go deleted file mode 100644 index f4c30f824a..0000000000 --- a/vendor/github.com/asaskevich/govalidator/utils.go +++ /dev/null @@ -1,270 +0,0 @@ -package govalidator - -import ( - "errors" - "fmt" - "html" - "math" - "path" - "regexp" - "strings" - "unicode" - "unicode/utf8" -) - -// Contains checks if the string contains the substring. -func Contains(str, substring string) bool { - return strings.Contains(str, substring) -} - -// Matches checks if string matches the pattern (pattern is regular expression) -// In case of error return false -func Matches(str, pattern string) bool { - match, _ := regexp.MatchString(pattern, str) - return match -} - -// LeftTrim trims characters from the left side of the input. -// If second argument is empty, it will remove leading spaces. -func LeftTrim(str, chars string) string { - if chars == "" { - return strings.TrimLeftFunc(str, unicode.IsSpace) - } - r, _ := regexp.Compile("^[" + chars + "]+") - return r.ReplaceAllString(str, "") -} - -// RightTrim trims characters from the right side of the input. -// If second argument is empty, it will remove trailing spaces. -func RightTrim(str, chars string) string { - if chars == "" { - return strings.TrimRightFunc(str, unicode.IsSpace) - } - r, _ := regexp.Compile("[" + chars + "]+$") - return r.ReplaceAllString(str, "") -} - -// Trim trims characters from both sides of the input. -// If second argument is empty, it will remove spaces. -func Trim(str, chars string) string { - return LeftTrim(RightTrim(str, chars), chars) -} - -// WhiteList removes characters that do not appear in the whitelist. -func WhiteList(str, chars string) string { - pattern := "[^" + chars + "]+" - r, _ := regexp.Compile(pattern) - return r.ReplaceAllString(str, "") -} - -// BlackList removes characters that appear in the blacklist. -func BlackList(str, chars string) string { - pattern := "[" + chars + "]+" - r, _ := regexp.Compile(pattern) - return r.ReplaceAllString(str, "") -} - -// StripLow removes characters with a numerical value < 32 and 127, mostly control characters. -// If keep_new_lines is true, newline characters are preserved (\n and \r, hex 0xA and 0xD). -func StripLow(str string, keepNewLines bool) string { - chars := "" - if keepNewLines { - chars = "\x00-\x09\x0B\x0C\x0E-\x1F\x7F" - } else { - chars = "\x00-\x1F\x7F" - } - return BlackList(str, chars) -} - -// ReplacePattern replaces regular expression pattern in string -func ReplacePattern(str, pattern, replace string) string { - r, _ := regexp.Compile(pattern) - return r.ReplaceAllString(str, replace) -} - -// Escape replaces <, >, & and " with HTML entities. -var Escape = html.EscapeString - -func addSegment(inrune, segment []rune) []rune { - if len(segment) == 0 { - return inrune - } - if len(inrune) != 0 { - inrune = append(inrune, '_') - } - inrune = append(inrune, segment...) - return inrune -} - -// UnderscoreToCamelCase converts from underscore separated form to camel case form. -// Ex.: my_func => MyFunc -func UnderscoreToCamelCase(s string) string { - return strings.Replace(strings.Title(strings.Replace(strings.ToLower(s), "_", " ", -1)), " ", "", -1) -} - -// CamelCaseToUnderscore converts from camel case form to underscore separated form. -// Ex.: MyFunc => my_func -func CamelCaseToUnderscore(str string) string { - var output []rune - var segment []rune - for _, r := range str { - - // not treat number as separate segment - if !unicode.IsLower(r) && string(r) != "_" && !unicode.IsNumber(r) { - output = addSegment(output, segment) - segment = nil - } - segment = append(segment, unicode.ToLower(r)) - } - output = addSegment(output, segment) - return string(output) -} - -// Reverse returns reversed string -func Reverse(s string) string { - r := []rune(s) - for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 { - r[i], r[j] = r[j], r[i] - } - return string(r) -} - -// GetLines splits string by "\n" and return array of lines -func GetLines(s string) []string { - return strings.Split(s, "\n") -} - -// GetLine returns specified line of multiline string -func GetLine(s string, index int) (string, error) { - lines := GetLines(s) - if index < 0 || index >= len(lines) { - return "", errors.New("line index out of bounds") - } - return lines[index], nil -} - -// RemoveTags removes all tags from HTML string -func RemoveTags(s string) string { - return ReplacePattern(s, "<[^>]*>", "") -} - -// SafeFileName returns safe string that can be used in file names -func SafeFileName(str string) string { - name := strings.ToLower(str) - name = path.Clean(path.Base(name)) - name = strings.Trim(name, " ") - separators, err := regexp.Compile(`[ &_=+:]`) - if err == nil { - name = separators.ReplaceAllString(name, "-") - } - legal, err := regexp.Compile(`[^[:alnum:]-.]`) - if err == nil { - name = legal.ReplaceAllString(name, "") - } - for strings.Contains(name, "--") { - name = strings.Replace(name, "--", "-", -1) - } - return name -} - -// NormalizeEmail canonicalize an email address. -// The local part of the email address is lowercased for all domains; the hostname is always lowercased and -// the local part of the email address is always lowercased for hosts that are known to be case-insensitive (currently only GMail). -// Normalization follows special rules for known providers: currently, GMail addresses have dots removed in the local part and -// are stripped of tags (e.g. some.one+tag@gmail.com becomes someone@gmail.com) and all @googlemail.com addresses are -// normalized to @gmail.com. -func NormalizeEmail(str string) (string, error) { - if !IsEmail(str) { - return "", fmt.Errorf("%s is not an email", str) - } - parts := strings.Split(str, "@") - parts[0] = strings.ToLower(parts[0]) - parts[1] = strings.ToLower(parts[1]) - if parts[1] == "gmail.com" || parts[1] == "googlemail.com" { - parts[1] = "gmail.com" - parts[0] = strings.Split(ReplacePattern(parts[0], `\.`, ""), "+")[0] - } - return strings.Join(parts, "@"), nil -} - -// Truncate a string to the closest length without breaking words. -func Truncate(str string, length int, ending string) string { - var aftstr, befstr string - if len(str) > length { - words := strings.Fields(str) - before, present := 0, 0 - for i := range words { - befstr = aftstr - before = present - aftstr = aftstr + words[i] + " " - present = len(aftstr) - if present > length && i != 0 { - if (length - before) < (present - length) { - return Trim(befstr, " /\\.,\"'#!?&@+-") + ending - } - return Trim(aftstr, " /\\.,\"'#!?&@+-") + ending - } - } - } - - return str -} - -// PadLeft pads left side of a string if size of string is less then indicated pad length -func PadLeft(str string, padStr string, padLen int) string { - return buildPadStr(str, padStr, padLen, true, false) -} - -// PadRight pads right side of a string if size of string is less then indicated pad length -func PadRight(str string, padStr string, padLen int) string { - return buildPadStr(str, padStr, padLen, false, true) -} - -// PadBoth pads both sides of a string if size of string is less then indicated pad length -func PadBoth(str string, padStr string, padLen int) string { - return buildPadStr(str, padStr, padLen, true, true) -} - -// PadString either left, right or both sides. -// Note that padding string can be unicode and more then one character -func buildPadStr(str string, padStr string, padLen int, padLeft bool, padRight bool) string { - - // When padded length is less then the current string size - if padLen < utf8.RuneCountInString(str) { - return str - } - - padLen -= utf8.RuneCountInString(str) - - targetLen := padLen - - targetLenLeft := targetLen - targetLenRight := targetLen - if padLeft && padRight { - targetLenLeft = padLen / 2 - targetLenRight = padLen - targetLenLeft - } - - strToRepeatLen := utf8.RuneCountInString(padStr) - - repeatTimes := int(math.Ceil(float64(targetLen) / float64(strToRepeatLen))) - repeatedString := strings.Repeat(padStr, repeatTimes) - - leftSide := "" - if padLeft { - leftSide = repeatedString[0:targetLenLeft] - } - - rightSide := "" - if padRight { - rightSide = repeatedString[0:targetLenRight] - } - - return leftSide + str + rightSide -} - -// TruncatingErrorf removes extra args from fmt.Errorf if not formatted in the str object -func TruncatingErrorf(str string, args ...interface{}) error { - n := strings.Count(str, "%s") - return fmt.Errorf(str, args[:n]...) -} diff --git a/vendor/github.com/asaskevich/govalidator/validator.go b/vendor/github.com/asaskevich/govalidator/validator.go deleted file mode 100644 index c9c4fac065..0000000000 --- a/vendor/github.com/asaskevich/govalidator/validator.go +++ /dev/null @@ -1,1768 +0,0 @@ -// Package govalidator is package of validators and sanitizers for strings, structs and collections. -package govalidator - -import ( - "bytes" - "crypto/rsa" - "crypto/x509" - "encoding/base64" - "encoding/json" - "encoding/pem" - "fmt" - "io/ioutil" - "net" - "net/url" - "reflect" - "regexp" - "sort" - "strconv" - "strings" - "time" - "unicode" - "unicode/utf8" -) - -var ( - fieldsRequiredByDefault bool - nilPtrAllowedByRequired = false - notNumberRegexp = regexp.MustCompile("[^0-9]+") - whiteSpacesAndMinus = regexp.MustCompile(`[\s-]+`) - paramsRegexp = regexp.MustCompile(`\(.*\)$`) -) - -const maxURLRuneCount = 2083 -const minURLRuneCount = 3 -const rfc3339WithoutZone = "2006-01-02T15:04:05" - -// SetFieldsRequiredByDefault causes validation to fail when struct fields -// do not include validations or are not explicitly marked as exempt (using `valid:"-"` or `valid:"email,optional"`). -// This struct definition will fail govalidator.ValidateStruct() (and the field values do not matter): -// type exampleStruct struct { -// Name string `` -// Email string `valid:"email"` -// This, however, will only fail when Email is empty or an invalid email address: -// type exampleStruct2 struct { -// Name string `valid:"-"` -// Email string `valid:"email"` -// Lastly, this will only fail when Email is an invalid email address but not when it's empty: -// type exampleStruct2 struct { -// Name string `valid:"-"` -// Email string `valid:"email,optional"` -func SetFieldsRequiredByDefault(value bool) { - fieldsRequiredByDefault = value -} - -// SetNilPtrAllowedByRequired causes validation to pass for nil ptrs when a field is set to required. -// The validation will still reject ptr fields in their zero value state. Example with this enabled: -// type exampleStruct struct { -// Name *string `valid:"required"` -// With `Name` set to "", this will be considered invalid input and will cause a validation error. -// With `Name` set to nil, this will be considered valid by validation. -// By default this is disabled. -func SetNilPtrAllowedByRequired(value bool) { - nilPtrAllowedByRequired = value -} - -// IsEmail checks if the string is an email. -func IsEmail(str string) bool { - // TODO uppercase letters are not supported - return rxEmail.MatchString(str) -} - -// IsExistingEmail checks if the string is an email of existing domain -func IsExistingEmail(email string) bool { - - if len(email) < 6 || len(email) > 254 { - return false - } - at := strings.LastIndex(email, "@") - if at <= 0 || at > len(email)-3 { - return false - } - user := email[:at] - host := email[at+1:] - if len(user) > 64 { - return false - } - switch host { - case "localhost", "example.com": - return true - } - if userDotRegexp.MatchString(user) || !userRegexp.MatchString(user) || !hostRegexp.MatchString(host) { - return false - } - if _, err := net.LookupMX(host); err != nil { - if _, err := net.LookupIP(host); err != nil { - return false - } - } - - return true -} - -// IsURL checks if the string is an URL. -func IsURL(str string) bool { - if str == "" || utf8.RuneCountInString(str) >= maxURLRuneCount || len(str) <= minURLRuneCount || strings.HasPrefix(str, ".") { - return false - } - strTemp := str - if strings.Contains(str, ":") && !strings.Contains(str, "://") { - // support no indicated urlscheme but with colon for port number - // http:// is appended so url.Parse will succeed, strTemp used so it does not impact rxURL.MatchString - strTemp = "http://" + str - } - u, err := url.Parse(strTemp) - if err != nil { - return false - } - if strings.HasPrefix(u.Host, ".") { - return false - } - if u.Host == "" && (u.Path != "" && !strings.Contains(u.Path, ".")) { - return false - } - return rxURL.MatchString(str) -} - -// IsRequestURL checks if the string rawurl, assuming -// it was received in an HTTP request, is a valid -// URL confirm to RFC 3986 -func IsRequestURL(rawurl string) bool { - url, err := url.ParseRequestURI(rawurl) - if err != nil { - return false //Couldn't even parse the rawurl - } - if len(url.Scheme) == 0 { - return false //No Scheme found - } - return true -} - -// IsRequestURI checks if the string rawurl, assuming -// it was received in an HTTP request, is an -// absolute URI or an absolute path. -func IsRequestURI(rawurl string) bool { - _, err := url.ParseRequestURI(rawurl) - return err == nil -} - -// IsAlpha checks if the string contains only letters (a-zA-Z). Empty string is valid. -func IsAlpha(str string) bool { - if IsNull(str) { - return true - } - return rxAlpha.MatchString(str) -} - -//IsUTFLetter checks if the string contains only unicode letter characters. -//Similar to IsAlpha but for all languages. Empty string is valid. -func IsUTFLetter(str string) bool { - if IsNull(str) { - return true - } - - for _, c := range str { - if !unicode.IsLetter(c) { - return false - } - } - return true - -} - -// IsAlphanumeric checks if the string contains only letters and numbers. Empty string is valid. -func IsAlphanumeric(str string) bool { - if IsNull(str) { - return true - } - return rxAlphanumeric.MatchString(str) -} - -// IsUTFLetterNumeric checks if the string contains only unicode letters and numbers. Empty string is valid. -func IsUTFLetterNumeric(str string) bool { - if IsNull(str) { - return true - } - for _, c := range str { - if !unicode.IsLetter(c) && !unicode.IsNumber(c) { //letters && numbers are ok - return false - } - } - return true - -} - -// IsNumeric checks if the string contains only numbers. Empty string is valid. -func IsNumeric(str string) bool { - if IsNull(str) { - return true - } - return rxNumeric.MatchString(str) -} - -// IsUTFNumeric checks if the string contains only unicode numbers of any kind. -// Numbers can be 0-9 but also Fractions ¾,Roman Ⅸ and Hangzhou 〩. Empty string is valid. -func IsUTFNumeric(str string) bool { - if IsNull(str) { - return true - } - if strings.IndexAny(str, "+-") > 0 { - return false - } - if len(str) > 1 { - str = strings.TrimPrefix(str, "-") - str = strings.TrimPrefix(str, "+") - } - for _, c := range str { - if !unicode.IsNumber(c) { //numbers && minus sign are ok - return false - } - } - return true - -} - -// IsUTFDigit checks if the string contains only unicode radix-10 decimal digits. Empty string is valid. -func IsUTFDigit(str string) bool { - if IsNull(str) { - return true - } - if strings.IndexAny(str, "+-") > 0 { - return false - } - if len(str) > 1 { - str = strings.TrimPrefix(str, "-") - str = strings.TrimPrefix(str, "+") - } - for _, c := range str { - if !unicode.IsDigit(c) { //digits && minus sign are ok - return false - } - } - return true - -} - -// IsHexadecimal checks if the string is a hexadecimal number. -func IsHexadecimal(str string) bool { - return rxHexadecimal.MatchString(str) -} - -// IsHexcolor checks if the string is a hexadecimal color. -func IsHexcolor(str string) bool { - return rxHexcolor.MatchString(str) -} - -// IsRGBcolor checks if the string is a valid RGB color in form rgb(RRR, GGG, BBB). -func IsRGBcolor(str string) bool { - return rxRGBcolor.MatchString(str) -} - -// IsLowerCase checks if the string is lowercase. Empty string is valid. -func IsLowerCase(str string) bool { - if IsNull(str) { - return true - } - return str == strings.ToLower(str) -} - -// IsUpperCase checks if the string is uppercase. Empty string is valid. -func IsUpperCase(str string) bool { - if IsNull(str) { - return true - } - return str == strings.ToUpper(str) -} - -// HasLowerCase checks if the string contains at least 1 lowercase. Empty string is valid. -func HasLowerCase(str string) bool { - if IsNull(str) { - return true - } - return rxHasLowerCase.MatchString(str) -} - -// HasUpperCase checks if the string contains as least 1 uppercase. Empty string is valid. -func HasUpperCase(str string) bool { - if IsNull(str) { - return true - } - return rxHasUpperCase.MatchString(str) -} - -// IsInt checks if the string is an integer. Empty string is valid. -func IsInt(str string) bool { - if IsNull(str) { - return true - } - return rxInt.MatchString(str) -} - -// IsFloat checks if the string is a float. -func IsFloat(str string) bool { - return str != "" && rxFloat.MatchString(str) -} - -// IsDivisibleBy checks if the string is a number that's divisible by another. -// If second argument is not valid integer or zero, it's return false. -// Otherwise, if first argument is not valid integer or zero, it's return true (Invalid string converts to zero). -func IsDivisibleBy(str, num string) bool { - f, _ := ToFloat(str) - p := int64(f) - q, _ := ToInt(num) - if q == 0 { - return false - } - return (p == 0) || (p%q == 0) -} - -// IsNull checks if the string is null. -func IsNull(str string) bool { - return len(str) == 0 -} - -// IsNotNull checks if the string is not null. -func IsNotNull(str string) bool { - return !IsNull(str) -} - -// HasWhitespaceOnly checks the string only contains whitespace -func HasWhitespaceOnly(str string) bool { - return len(str) > 0 && rxHasWhitespaceOnly.MatchString(str) -} - -// HasWhitespace checks if the string contains any whitespace -func HasWhitespace(str string) bool { - return len(str) > 0 && rxHasWhitespace.MatchString(str) -} - -// IsByteLength checks if the string's length (in bytes) falls in a range. -func IsByteLength(str string, min, max int) bool { - return len(str) >= min && len(str) <= max -} - -// IsUUIDv3 checks if the string is a UUID version 3. -func IsUUIDv3(str string) bool { - return rxUUID3.MatchString(str) -} - -// IsUUIDv4 checks if the string is a UUID version 4. -func IsUUIDv4(str string) bool { - return rxUUID4.MatchString(str) -} - -// IsUUIDv5 checks if the string is a UUID version 5. -func IsUUIDv5(str string) bool { - return rxUUID5.MatchString(str) -} - -// IsUUID checks if the string is a UUID (version 3, 4 or 5). -func IsUUID(str string) bool { - return rxUUID.MatchString(str) -} - -// Byte to index table for O(1) lookups when unmarshaling. -// We use 0xFF as sentinel value for invalid indexes. -var ulidDec = [...]byte{ - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, - 0x0F, 0x10, 0x11, 0xFF, 0x12, 0x13, 0xFF, 0x14, 0x15, 0xFF, - 0x16, 0x17, 0x18, 0x19, 0x1A, 0xFF, 0x1B, 0x1C, 0x1D, 0x1E, - 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x0B, 0x0C, - 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0xFF, 0x12, 0x13, 0xFF, 0x14, - 0x15, 0xFF, 0x16, 0x17, 0x18, 0x19, 0x1A, 0xFF, 0x1B, 0x1C, - 0x1D, 0x1E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, -} - -// EncodedSize is the length of a text encoded ULID. -const ulidEncodedSize = 26 - -// IsULID checks if the string is a ULID. -// -// Implementation got from: -// https://github.com/oklog/ulid (Apache-2.0 License) -// -func IsULID(str string) bool { - // Check if a base32 encoded ULID is the right length. - if len(str) != ulidEncodedSize { - return false - } - - // Check if all the characters in a base32 encoded ULID are part of the - // expected base32 character set. - if ulidDec[str[0]] == 0xFF || - ulidDec[str[1]] == 0xFF || - ulidDec[str[2]] == 0xFF || - ulidDec[str[3]] == 0xFF || - ulidDec[str[4]] == 0xFF || - ulidDec[str[5]] == 0xFF || - ulidDec[str[6]] == 0xFF || - ulidDec[str[7]] == 0xFF || - ulidDec[str[8]] == 0xFF || - ulidDec[str[9]] == 0xFF || - ulidDec[str[10]] == 0xFF || - ulidDec[str[11]] == 0xFF || - ulidDec[str[12]] == 0xFF || - ulidDec[str[13]] == 0xFF || - ulidDec[str[14]] == 0xFF || - ulidDec[str[15]] == 0xFF || - ulidDec[str[16]] == 0xFF || - ulidDec[str[17]] == 0xFF || - ulidDec[str[18]] == 0xFF || - ulidDec[str[19]] == 0xFF || - ulidDec[str[20]] == 0xFF || - ulidDec[str[21]] == 0xFF || - ulidDec[str[22]] == 0xFF || - ulidDec[str[23]] == 0xFF || - ulidDec[str[24]] == 0xFF || - ulidDec[str[25]] == 0xFF { - return false - } - - // Check if the first character in a base32 encoded ULID will overflow. This - // happens because the base32 representation encodes 130 bits, while the - // ULID is only 128 bits. - // - // See https://github.com/oklog/ulid/issues/9 for details. - if str[0] > '7' { - return false - } - return true -} - -// IsCreditCard checks if the string is a credit card. -func IsCreditCard(str string) bool { - sanitized := whiteSpacesAndMinus.ReplaceAllString(str, "") - if !rxCreditCard.MatchString(sanitized) { - return false - } - - number, _ := ToInt(sanitized) - number, lastDigit := number / 10, number % 10 - - var sum int64 - for i:=0; number > 0; i++ { - digit := number % 10 - - if i % 2 == 0 { - digit *= 2 - if digit > 9 { - digit -= 9 - } - } - - sum += digit - number = number / 10 - } - - return (sum + lastDigit) % 10 == 0 -} - -// IsISBN10 checks if the string is an ISBN version 10. -func IsISBN10(str string) bool { - return IsISBN(str, 10) -} - -// IsISBN13 checks if the string is an ISBN version 13. -func IsISBN13(str string) bool { - return IsISBN(str, 13) -} - -// IsISBN checks if the string is an ISBN (version 10 or 13). -// If version value is not equal to 10 or 13, it will be checks both variants. -func IsISBN(str string, version int) bool { - sanitized := whiteSpacesAndMinus.ReplaceAllString(str, "") - var checksum int32 - var i int32 - if version == 10 { - if !rxISBN10.MatchString(sanitized) { - return false - } - for i = 0; i < 9; i++ { - checksum += (i + 1) * int32(sanitized[i]-'0') - } - if sanitized[9] == 'X' { - checksum += 10 * 10 - } else { - checksum += 10 * int32(sanitized[9]-'0') - } - if checksum%11 == 0 { - return true - } - return false - } else if version == 13 { - if !rxISBN13.MatchString(sanitized) { - return false - } - factor := []int32{1, 3} - for i = 0; i < 12; i++ { - checksum += factor[i%2] * int32(sanitized[i]-'0') - } - return (int32(sanitized[12]-'0'))-((10-(checksum%10))%10) == 0 - } - return IsISBN(str, 10) || IsISBN(str, 13) -} - -// IsJSON checks if the string is valid JSON (note: uses json.Unmarshal). -func IsJSON(str string) bool { - var js json.RawMessage - return json.Unmarshal([]byte(str), &js) == nil -} - -// IsMultibyte checks if the string contains one or more multibyte chars. Empty string is valid. -func IsMultibyte(str string) bool { - if IsNull(str) { - return true - } - return rxMultibyte.MatchString(str) -} - -// IsASCII checks if the string contains ASCII chars only. Empty string is valid. -func IsASCII(str string) bool { - if IsNull(str) { - return true - } - return rxASCII.MatchString(str) -} - -// IsPrintableASCII checks if the string contains printable ASCII chars only. Empty string is valid. -func IsPrintableASCII(str string) bool { - if IsNull(str) { - return true - } - return rxPrintableASCII.MatchString(str) -} - -// IsFullWidth checks if the string contains any full-width chars. Empty string is valid. -func IsFullWidth(str string) bool { - if IsNull(str) { - return true - } - return rxFullWidth.MatchString(str) -} - -// IsHalfWidth checks if the string contains any half-width chars. Empty string is valid. -func IsHalfWidth(str string) bool { - if IsNull(str) { - return true - } - return rxHalfWidth.MatchString(str) -} - -// IsVariableWidth checks if the string contains a mixture of full and half-width chars. Empty string is valid. -func IsVariableWidth(str string) bool { - if IsNull(str) { - return true - } - return rxHalfWidth.MatchString(str) && rxFullWidth.MatchString(str) -} - -// IsBase64 checks if a string is base64 encoded. -func IsBase64(str string) bool { - return rxBase64.MatchString(str) -} - -// IsFilePath checks is a string is Win or Unix file path and returns it's type. -func IsFilePath(str string) (bool, int) { - if rxWinPath.MatchString(str) { - //check windows path limit see: - // http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath - if len(str[3:]) > 32767 { - return false, Win - } - return true, Win - } else if rxUnixPath.MatchString(str) { - return true, Unix - } - return false, Unknown -} - -//IsWinFilePath checks both relative & absolute paths in Windows -func IsWinFilePath(str string) bool { - if rxARWinPath.MatchString(str) { - //check windows path limit see: - // http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath - if len(str[3:]) > 32767 { - return false - } - return true - } - return false -} - -//IsUnixFilePath checks both relative & absolute paths in Unix -func IsUnixFilePath(str string) bool { - if rxARUnixPath.MatchString(str) { - return true - } - return false -} - -// IsDataURI checks if a string is base64 encoded data URI such as an image -func IsDataURI(str string) bool { - dataURI := strings.Split(str, ",") - if !rxDataURI.MatchString(dataURI[0]) { - return false - } - return IsBase64(dataURI[1]) -} - -// IsMagnetURI checks if a string is valid magnet URI -func IsMagnetURI(str string) bool { - return rxMagnetURI.MatchString(str) -} - -// IsISO3166Alpha2 checks if a string is valid two-letter country code -func IsISO3166Alpha2(str string) bool { - for _, entry := range ISO3166List { - if str == entry.Alpha2Code { - return true - } - } - return false -} - -// IsISO3166Alpha3 checks if a string is valid three-letter country code -func IsISO3166Alpha3(str string) bool { - for _, entry := range ISO3166List { - if str == entry.Alpha3Code { - return true - } - } - return false -} - -// IsISO693Alpha2 checks if a string is valid two-letter language code -func IsISO693Alpha2(str string) bool { - for _, entry := range ISO693List { - if str == entry.Alpha2Code { - return true - } - } - return false -} - -// IsISO693Alpha3b checks if a string is valid three-letter language code -func IsISO693Alpha3b(str string) bool { - for _, entry := range ISO693List { - if str == entry.Alpha3bCode { - return true - } - } - return false -} - -// IsDNSName will validate the given string as a DNS name -func IsDNSName(str string) bool { - if str == "" || len(strings.Replace(str, ".", "", -1)) > 255 { - // constraints already violated - return false - } - return !IsIP(str) && rxDNSName.MatchString(str) -} - -// IsHash checks if a string is a hash of type algorithm. -// Algorithm is one of ['md4', 'md5', 'sha1', 'sha256', 'sha384', 'sha512', 'ripemd128', 'ripemd160', 'tiger128', 'tiger160', 'tiger192', 'crc32', 'crc32b'] -func IsHash(str string, algorithm string) bool { - var len string - algo := strings.ToLower(algorithm) - - if algo == "crc32" || algo == "crc32b" { - len = "8" - } else if algo == "md5" || algo == "md4" || algo == "ripemd128" || algo == "tiger128" { - len = "32" - } else if algo == "sha1" || algo == "ripemd160" || algo == "tiger160" { - len = "40" - } else if algo == "tiger192" { - len = "48" - } else if algo == "sha3-224" { - len = "56" - } else if algo == "sha256" || algo == "sha3-256" { - len = "64" - } else if algo == "sha384" || algo == "sha3-384" { - len = "96" - } else if algo == "sha512" || algo == "sha3-512" { - len = "128" - } else { - return false - } - - return Matches(str, "^[a-f0-9]{"+len+"}$") -} - -// IsSHA3224 checks is a string is a SHA3-224 hash. Alias for `IsHash(str, "sha3-224")` -func IsSHA3224(str string) bool { - return IsHash(str, "sha3-224") -} - -// IsSHA3256 checks is a string is a SHA3-256 hash. Alias for `IsHash(str, "sha3-256")` -func IsSHA3256(str string) bool { - return IsHash(str, "sha3-256") -} - -// IsSHA3384 checks is a string is a SHA3-384 hash. Alias for `IsHash(str, "sha3-384")` -func IsSHA3384(str string) bool { - return IsHash(str, "sha3-384") -} - -// IsSHA3512 checks is a string is a SHA3-512 hash. Alias for `IsHash(str, "sha3-512")` -func IsSHA3512(str string) bool { - return IsHash(str, "sha3-512") -} - -// IsSHA512 checks is a string is a SHA512 hash. Alias for `IsHash(str, "sha512")` -func IsSHA512(str string) bool { - return IsHash(str, "sha512") -} - -// IsSHA384 checks is a string is a SHA384 hash. Alias for `IsHash(str, "sha384")` -func IsSHA384(str string) bool { - return IsHash(str, "sha384") -} - -// IsSHA256 checks is a string is a SHA256 hash. Alias for `IsHash(str, "sha256")` -func IsSHA256(str string) bool { - return IsHash(str, "sha256") -} - -// IsTiger192 checks is a string is a Tiger192 hash. Alias for `IsHash(str, "tiger192")` -func IsTiger192(str string) bool { - return IsHash(str, "tiger192") -} - -// IsTiger160 checks is a string is a Tiger160 hash. Alias for `IsHash(str, "tiger160")` -func IsTiger160(str string) bool { - return IsHash(str, "tiger160") -} - -// IsRipeMD160 checks is a string is a RipeMD160 hash. Alias for `IsHash(str, "ripemd160")` -func IsRipeMD160(str string) bool { - return IsHash(str, "ripemd160") -} - -// IsSHA1 checks is a string is a SHA-1 hash. Alias for `IsHash(str, "sha1")` -func IsSHA1(str string) bool { - return IsHash(str, "sha1") -} - -// IsTiger128 checks is a string is a Tiger128 hash. Alias for `IsHash(str, "tiger128")` -func IsTiger128(str string) bool { - return IsHash(str, "tiger128") -} - -// IsRipeMD128 checks is a string is a RipeMD128 hash. Alias for `IsHash(str, "ripemd128")` -func IsRipeMD128(str string) bool { - return IsHash(str, "ripemd128") -} - -// IsCRC32 checks is a string is a CRC32 hash. Alias for `IsHash(str, "crc32")` -func IsCRC32(str string) bool { - return IsHash(str, "crc32") -} - -// IsCRC32b checks is a string is a CRC32b hash. Alias for `IsHash(str, "crc32b")` -func IsCRC32b(str string) bool { - return IsHash(str, "crc32b") -} - -// IsMD5 checks is a string is a MD5 hash. Alias for `IsHash(str, "md5")` -func IsMD5(str string) bool { - return IsHash(str, "md5") -} - -// IsMD4 checks is a string is a MD4 hash. Alias for `IsHash(str, "md4")` -func IsMD4(str string) bool { - return IsHash(str, "md4") -} - -// IsDialString validates the given string for usage with the various Dial() functions -func IsDialString(str string) bool { - if h, p, err := net.SplitHostPort(str); err == nil && h != "" && p != "" && (IsDNSName(h) || IsIP(h)) && IsPort(p) { - return true - } - - return false -} - -// IsIP checks if a string is either IP version 4 or 6. Alias for `net.ParseIP` -func IsIP(str string) bool { - return net.ParseIP(str) != nil -} - -// IsPort checks if a string represents a valid port -func IsPort(str string) bool { - if i, err := strconv.Atoi(str); err == nil && i > 0 && i < 65536 { - return true - } - return false -} - -// IsIPv4 checks if the string is an IP version 4. -func IsIPv4(str string) bool { - ip := net.ParseIP(str) - return ip != nil && strings.Contains(str, ".") -} - -// IsIPv6 checks if the string is an IP version 6. -func IsIPv6(str string) bool { - ip := net.ParseIP(str) - return ip != nil && strings.Contains(str, ":") -} - -// IsCIDR checks if the string is an valid CIDR notiation (IPV4 & IPV6) -func IsCIDR(str string) bool { - _, _, err := net.ParseCIDR(str) - return err == nil -} - -// IsMAC checks if a string is valid MAC address. -// Possible MAC formats: -// 01:23:45:67:89:ab -// 01:23:45:67:89:ab:cd:ef -// 01-23-45-67-89-ab -// 01-23-45-67-89-ab-cd-ef -// 0123.4567.89ab -// 0123.4567.89ab.cdef -func IsMAC(str string) bool { - _, err := net.ParseMAC(str) - return err == nil -} - -// IsHost checks if the string is a valid IP (both v4 and v6) or a valid DNS name -func IsHost(str string) bool { - return IsIP(str) || IsDNSName(str) -} - -// IsMongoID checks if the string is a valid hex-encoded representation of a MongoDB ObjectId. -func IsMongoID(str string) bool { - return rxHexadecimal.MatchString(str) && (len(str) == 24) -} - -// IsLatitude checks if a string is valid latitude. -func IsLatitude(str string) bool { - return rxLatitude.MatchString(str) -} - -// IsLongitude checks if a string is valid longitude. -func IsLongitude(str string) bool { - return rxLongitude.MatchString(str) -} - -// IsIMEI checks if a string is valid IMEI -func IsIMEI(str string) bool { - return rxIMEI.MatchString(str) -} - -// IsIMSI checks if a string is valid IMSI -func IsIMSI(str string) bool { - if !rxIMSI.MatchString(str) { - return false - } - - mcc, err := strconv.ParseInt(str[0:3], 10, 32) - if err != nil { - return false - } - - switch mcc { - case 202, 204, 206, 208, 212, 213, 214, 216, 218, 219: - case 220, 221, 222, 226, 228, 230, 231, 232, 234, 235: - case 238, 240, 242, 244, 246, 247, 248, 250, 255, 257: - case 259, 260, 262, 266, 268, 270, 272, 274, 276, 278: - case 280, 282, 283, 284, 286, 288, 289, 290, 292, 293: - case 294, 295, 297, 302, 308, 310, 311, 312, 313, 314: - case 315, 316, 330, 332, 334, 338, 340, 342, 344, 346: - case 348, 350, 352, 354, 356, 358, 360, 362, 363, 364: - case 365, 366, 368, 370, 372, 374, 376, 400, 401, 402: - case 404, 405, 406, 410, 412, 413, 414, 415, 416, 417: - case 418, 419, 420, 421, 422, 424, 425, 426, 427, 428: - case 429, 430, 431, 432, 434, 436, 437, 438, 440, 441: - case 450, 452, 454, 455, 456, 457, 460, 461, 466, 467: - case 470, 472, 502, 505, 510, 514, 515, 520, 525, 528: - case 530, 536, 537, 539, 540, 541, 542, 543, 544, 545: - case 546, 547, 548, 549, 550, 551, 552, 553, 554, 555: - case 602, 603, 604, 605, 606, 607, 608, 609, 610, 611: - case 612, 613, 614, 615, 616, 617, 618, 619, 620, 621: - case 622, 623, 624, 625, 626, 627, 628, 629, 630, 631: - case 632, 633, 634, 635, 636, 637, 638, 639, 640, 641: - case 642, 643, 645, 646, 647, 648, 649, 650, 651, 652: - case 653, 654, 655, 657, 658, 659, 702, 704, 706, 708: - case 710, 712, 714, 716, 722, 724, 730, 732, 734, 736: - case 738, 740, 742, 744, 746, 748, 750, 995: - return true - default: - return false - } - return true -} - -// IsRsaPublicKey checks if a string is valid public key with provided length -func IsRsaPublicKey(str string, keylen int) bool { - bb := bytes.NewBufferString(str) - pemBytes, err := ioutil.ReadAll(bb) - if err != nil { - return false - } - block, _ := pem.Decode(pemBytes) - if block != nil && block.Type != "PUBLIC KEY" { - return false - } - var der []byte - - if block != nil { - der = block.Bytes - } else { - der, err = base64.StdEncoding.DecodeString(str) - if err != nil { - return false - } - } - - key, err := x509.ParsePKIXPublicKey(der) - if err != nil { - return false - } - pubkey, ok := key.(*rsa.PublicKey) - if !ok { - return false - } - bitlen := len(pubkey.N.Bytes()) * 8 - return bitlen == int(keylen) -} - -// IsRegex checks if a give string is a valid regex with RE2 syntax or not -func IsRegex(str string) bool { - if _, err := regexp.Compile(str); err == nil { - return true - } - return false -} - -func toJSONName(tag string) string { - if tag == "" { - return "" - } - - // JSON name always comes first. If there's no options then split[0] is - // JSON name, if JSON name is not set, then split[0] is an empty string. - split := strings.SplitN(tag, ",", 2) - - name := split[0] - - // However it is possible that the field is skipped when - // (de-)serializing from/to JSON, in which case assume that there is no - // tag name to use - if name == "-" { - return "" - } - return name -} - -func prependPathToErrors(err error, path string) error { - switch err2 := err.(type) { - case Error: - err2.Path = append([]string{path}, err2.Path...) - return err2 - case Errors: - errors := err2.Errors() - for i, err3 := range errors { - errors[i] = prependPathToErrors(err3, path) - } - return err2 - } - return err -} - -// ValidateArray performs validation according to condition iterator that validates every element of the array -func ValidateArray(array []interface{}, iterator ConditionIterator) bool { - return Every(array, iterator) -} - -// ValidateMap use validation map for fields. -// result will be equal to `false` if there are any errors. -// s is the map containing the data to be validated. -// m is the validation map in the form: -// map[string]interface{}{"name":"required,alpha","address":map[string]interface{}{"line1":"required,alphanum"}} -func ValidateMap(s map[string]interface{}, m map[string]interface{}) (bool, error) { - if s == nil { - return true, nil - } - result := true - var err error - var errs Errors - var index int - val := reflect.ValueOf(s) - for key, value := range s { - presentResult := true - validator, ok := m[key] - if !ok { - presentResult = false - var err error - err = fmt.Errorf("all map keys has to be present in the validation map; got %s", key) - err = prependPathToErrors(err, key) - errs = append(errs, err) - } - valueField := reflect.ValueOf(value) - mapResult := true - typeResult := true - structResult := true - resultField := true - switch subValidator := validator.(type) { - case map[string]interface{}: - var err error - if v, ok := value.(map[string]interface{}); !ok { - mapResult = false - err = fmt.Errorf("map validator has to be for the map type only; got %s", valueField.Type().String()) - err = prependPathToErrors(err, key) - errs = append(errs, err) - } else { - mapResult, err = ValidateMap(v, subValidator) - if err != nil { - mapResult = false - err = prependPathToErrors(err, key) - errs = append(errs, err) - } - } - case string: - if (valueField.Kind() == reflect.Struct || - (valueField.Kind() == reflect.Ptr && valueField.Elem().Kind() == reflect.Struct)) && - subValidator != "-" { - var err error - structResult, err = ValidateStruct(valueField.Interface()) - if err != nil { - err = prependPathToErrors(err, key) - errs = append(errs, err) - } - } - resultField, err = typeCheck(valueField, reflect.StructField{ - Name: key, - PkgPath: "", - Type: val.Type(), - Tag: reflect.StructTag(fmt.Sprintf("%s:%q", tagName, subValidator)), - Offset: 0, - Index: []int{index}, - Anonymous: false, - }, val, nil) - if err != nil { - errs = append(errs, err) - } - case nil: - // already handlerd when checked before - default: - typeResult = false - err = fmt.Errorf("map validator has to be either map[string]interface{} or string; got %s", valueField.Type().String()) - err = prependPathToErrors(err, key) - errs = append(errs, err) - } - result = result && presentResult && typeResult && resultField && structResult && mapResult - index++ - } - // checks required keys - requiredResult := true - for key, value := range m { - if schema, ok := value.(string); ok { - tags := parseTagIntoMap(schema) - if required, ok := tags["required"]; ok { - if _, ok := s[key]; !ok { - requiredResult = false - if required.customErrorMessage != "" { - err = Error{key, fmt.Errorf(required.customErrorMessage), true, "required", []string{}} - } else { - err = Error{key, fmt.Errorf("required field missing"), false, "required", []string{}} - } - errs = append(errs, err) - } - } - } - } - - if len(errs) > 0 { - err = errs - } - return result && requiredResult, err -} - -// ValidateStruct use tags for fields. -// result will be equal to `false` if there are any errors. -// todo currently there is no guarantee that errors will be returned in predictable order (tests may to fail) -func ValidateStruct(s interface{}) (bool, error) { - if s == nil { - return true, nil - } - result := true - var err error - val := reflect.ValueOf(s) - if val.Kind() == reflect.Interface || val.Kind() == reflect.Ptr { - val = val.Elem() - } - // we only accept structs - if val.Kind() != reflect.Struct { - return false, fmt.Errorf("function only accepts structs; got %s", val.Kind()) - } - var errs Errors - for i := 0; i < val.NumField(); i++ { - valueField := val.Field(i) - typeField := val.Type().Field(i) - if typeField.PkgPath != "" { - continue // Private field - } - structResult := true - if valueField.Kind() == reflect.Interface { - valueField = valueField.Elem() - } - if (valueField.Kind() == reflect.Struct || - (valueField.Kind() == reflect.Ptr && valueField.Elem().Kind() == reflect.Struct)) && - typeField.Tag.Get(tagName) != "-" { - var err error - structResult, err = ValidateStruct(valueField.Interface()) - if err != nil { - err = prependPathToErrors(err, typeField.Name) - errs = append(errs, err) - } - } - resultField, err2 := typeCheck(valueField, typeField, val, nil) - if err2 != nil { - - // Replace structure name with JSON name if there is a tag on the variable - jsonTag := toJSONName(typeField.Tag.Get("json")) - if jsonTag != "" { - switch jsonError := err2.(type) { - case Error: - jsonError.Name = jsonTag - err2 = jsonError - case Errors: - for i2, err3 := range jsonError { - switch customErr := err3.(type) { - case Error: - customErr.Name = jsonTag - jsonError[i2] = customErr - } - } - - err2 = jsonError - } - } - - errs = append(errs, err2) - } - result = result && resultField && structResult - } - if len(errs) > 0 { - err = errs - } - return result, err -} - -// ValidateStructAsync performs async validation of the struct and returns results through the channels -func ValidateStructAsync(s interface{}) (<-chan bool, <-chan error) { - res := make(chan bool) - errors := make(chan error) - - go func() { - defer close(res) - defer close(errors) - - isValid, isFailed := ValidateStruct(s) - - res <- isValid - errors <- isFailed - }() - - return res, errors -} - -// ValidateMapAsync performs async validation of the map and returns results through the channels -func ValidateMapAsync(s map[string]interface{}, m map[string]interface{}) (<-chan bool, <-chan error) { - res := make(chan bool) - errors := make(chan error) - - go func() { - defer close(res) - defer close(errors) - - isValid, isFailed := ValidateMap(s, m) - - res <- isValid - errors <- isFailed - }() - - return res, errors -} - -// parseTagIntoMap parses a struct tag `valid:required~Some error message,length(2|3)` into map[string]string{"required": "Some error message", "length(2|3)": ""} -func parseTagIntoMap(tag string) tagOptionsMap { - optionsMap := make(tagOptionsMap) - options := strings.Split(tag, ",") - - for i, option := range options { - option = strings.TrimSpace(option) - - validationOptions := strings.Split(option, "~") - if !isValidTag(validationOptions[0]) { - continue - } - if len(validationOptions) == 2 { - optionsMap[validationOptions[0]] = tagOption{validationOptions[0], validationOptions[1], i} - } else { - optionsMap[validationOptions[0]] = tagOption{validationOptions[0], "", i} - } - } - return optionsMap -} - -func isValidTag(s string) bool { - if s == "" { - return false - } - for _, c := range s { - switch { - case strings.ContainsRune("\\'\"!#$%&()*+-./:<=>?@[]^_{|}~ ", c): - // Backslash and quote chars are reserved, but - // otherwise any punctuation chars are allowed - // in a tag name. - default: - if !unicode.IsLetter(c) && !unicode.IsDigit(c) { - return false - } - } - } - return true -} - -// IsSSN will validate the given string as a U.S. Social Security Number -func IsSSN(str string) bool { - if str == "" || len(str) != 11 { - return false - } - return rxSSN.MatchString(str) -} - -// IsSemver checks if string is valid semantic version -func IsSemver(str string) bool { - return rxSemver.MatchString(str) -} - -// IsType checks if interface is of some type -func IsType(v interface{}, params ...string) bool { - if len(params) == 1 { - typ := params[0] - return strings.Replace(reflect.TypeOf(v).String(), " ", "", -1) == strings.Replace(typ, " ", "", -1) - } - return false -} - -// IsTime checks if string is valid according to given format -func IsTime(str string, format string) bool { - _, err := time.Parse(format, str) - return err == nil -} - -// IsUnixTime checks if string is valid unix timestamp value -func IsUnixTime(str string) bool { - if _, err := strconv.Atoi(str); err == nil { - return true - } - return false -} - -// IsRFC3339 checks if string is valid timestamp value according to RFC3339 -func IsRFC3339(str string) bool { - return IsTime(str, time.RFC3339) -} - -// IsRFC3339WithoutZone checks if string is valid timestamp value according to RFC3339 which excludes the timezone. -func IsRFC3339WithoutZone(str string) bool { - return IsTime(str, rfc3339WithoutZone) -} - -// IsISO4217 checks if string is valid ISO currency code -func IsISO4217(str string) bool { - for _, currency := range ISO4217List { - if str == currency { - return true - } - } - - return false -} - -// ByteLength checks string's length -func ByteLength(str string, params ...string) bool { - if len(params) == 2 { - min, _ := ToInt(params[0]) - max, _ := ToInt(params[1]) - return len(str) >= int(min) && len(str) <= int(max) - } - - return false -} - -// RuneLength checks string's length -// Alias for StringLength -func RuneLength(str string, params ...string) bool { - return StringLength(str, params...) -} - -// IsRsaPub checks whether string is valid RSA key -// Alias for IsRsaPublicKey -func IsRsaPub(str string, params ...string) bool { - if len(params) == 1 { - len, _ := ToInt(params[0]) - return IsRsaPublicKey(str, int(len)) - } - - return false -} - -// StringMatches checks if a string matches a given pattern. -func StringMatches(s string, params ...string) bool { - if len(params) == 1 { - pattern := params[0] - return Matches(s, pattern) - } - return false -} - -// StringLength checks string's length (including multi byte strings) -func StringLength(str string, params ...string) bool { - - if len(params) == 2 { - strLength := utf8.RuneCountInString(str) - min, _ := ToInt(params[0]) - max, _ := ToInt(params[1]) - return strLength >= int(min) && strLength <= int(max) - } - - return false -} - -// MinStringLength checks string's minimum length (including multi byte strings) -func MinStringLength(str string, params ...string) bool { - - if len(params) == 1 { - strLength := utf8.RuneCountInString(str) - min, _ := ToInt(params[0]) - return strLength >= int(min) - } - - return false -} - -// MaxStringLength checks string's maximum length (including multi byte strings) -func MaxStringLength(str string, params ...string) bool { - - if len(params) == 1 { - strLength := utf8.RuneCountInString(str) - max, _ := ToInt(params[0]) - return strLength <= int(max) - } - - return false -} - -// Range checks string's length -func Range(str string, params ...string) bool { - if len(params) == 2 { - value, _ := ToFloat(str) - min, _ := ToFloat(params[0]) - max, _ := ToFloat(params[1]) - return InRange(value, min, max) - } - - return false -} - -// IsInRaw checks if string is in list of allowed values -func IsInRaw(str string, params ...string) bool { - if len(params) == 1 { - rawParams := params[0] - - parsedParams := strings.Split(rawParams, "|") - - return IsIn(str, parsedParams...) - } - - return false -} - -// IsIn checks if string str is a member of the set of strings params -func IsIn(str string, params ...string) bool { - for _, param := range params { - if str == param { - return true - } - } - - return false -} - -func checkRequired(v reflect.Value, t reflect.StructField, options tagOptionsMap) (bool, error) { - if nilPtrAllowedByRequired { - k := v.Kind() - if (k == reflect.Ptr || k == reflect.Interface) && v.IsNil() { - return true, nil - } - } - - if requiredOption, isRequired := options["required"]; isRequired { - if len(requiredOption.customErrorMessage) > 0 { - return false, Error{t.Name, fmt.Errorf(requiredOption.customErrorMessage), true, "required", []string{}} - } - return false, Error{t.Name, fmt.Errorf("non zero value required"), false, "required", []string{}} - } else if _, isOptional := options["optional"]; fieldsRequiredByDefault && !isOptional { - return false, Error{t.Name, fmt.Errorf("Missing required field"), false, "required", []string{}} - } - // not required and empty is valid - return true, nil -} - -func typeCheck(v reflect.Value, t reflect.StructField, o reflect.Value, options tagOptionsMap) (isValid bool, resultErr error) { - if !v.IsValid() { - return false, nil - } - - tag := t.Tag.Get(tagName) - - // checks if the field should be ignored - switch tag { - case "": - if v.Kind() != reflect.Slice && v.Kind() != reflect.Map { - if !fieldsRequiredByDefault { - return true, nil - } - return false, Error{t.Name, fmt.Errorf("All fields are required to at least have one validation defined"), false, "required", []string{}} - } - case "-": - return true, nil - } - - isRootType := false - if options == nil { - isRootType = true - options = parseTagIntoMap(tag) - } - - if isEmptyValue(v) { - // an empty value is not validated, checks only required - isValid, resultErr = checkRequired(v, t, options) - for key := range options { - delete(options, key) - } - return isValid, resultErr - } - - var customTypeErrors Errors - optionsOrder := options.orderedKeys() - for _, validatorName := range optionsOrder { - validatorStruct := options[validatorName] - if validatefunc, ok := CustomTypeTagMap.Get(validatorName); ok { - delete(options, validatorName) - - if result := validatefunc(v.Interface(), o.Interface()); !result { - if len(validatorStruct.customErrorMessage) > 0 { - customTypeErrors = append(customTypeErrors, Error{Name: t.Name, Err: TruncatingErrorf(validatorStruct.customErrorMessage, fmt.Sprint(v), validatorName), CustomErrorMessageExists: true, Validator: stripParams(validatorName)}) - continue - } - customTypeErrors = append(customTypeErrors, Error{Name: t.Name, Err: fmt.Errorf("%s does not validate as %s", fmt.Sprint(v), validatorName), CustomErrorMessageExists: false, Validator: stripParams(validatorName)}) - } - } - } - - if len(customTypeErrors.Errors()) > 0 { - return false, customTypeErrors - } - - if isRootType { - // Ensure that we've checked the value by all specified validators before report that the value is valid - defer func() { - delete(options, "optional") - delete(options, "required") - - if isValid && resultErr == nil && len(options) != 0 { - optionsOrder := options.orderedKeys() - for _, validator := range optionsOrder { - isValid = false - resultErr = Error{t.Name, fmt.Errorf( - "The following validator is invalid or can't be applied to the field: %q", validator), false, stripParams(validator), []string{}} - return - } - } - }() - } - - for _, validatorSpec := range optionsOrder { - validatorStruct := options[validatorSpec] - var negate bool - validator := validatorSpec - customMsgExists := len(validatorStruct.customErrorMessage) > 0 - - // checks whether the tag looks like '!something' or 'something' - if validator[0] == '!' { - validator = validator[1:] - negate = true - } - - // checks for interface param validators - for key, value := range InterfaceParamTagRegexMap { - ps := value.FindStringSubmatch(validator) - if len(ps) == 0 { - continue - } - - validatefunc, ok := InterfaceParamTagMap[key] - if !ok { - continue - } - - delete(options, validatorSpec) - - field := fmt.Sprint(v) - if result := validatefunc(v.Interface(), ps[1:]...); (!result && !negate) || (result && negate) { - if customMsgExists { - return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - if negate { - return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - } - } - - switch v.Kind() { - case reflect.Bool, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, - reflect.Float32, reflect.Float64, - reflect.String: - // for each tag option checks the map of validator functions - for _, validatorSpec := range optionsOrder { - validatorStruct := options[validatorSpec] - var negate bool - validator := validatorSpec - customMsgExists := len(validatorStruct.customErrorMessage) > 0 - - // checks whether the tag looks like '!something' or 'something' - if validator[0] == '!' { - validator = validator[1:] - negate = true - } - - // checks for param validators - for key, value := range ParamTagRegexMap { - ps := value.FindStringSubmatch(validator) - if len(ps) == 0 { - continue - } - - validatefunc, ok := ParamTagMap[key] - if !ok { - continue - } - - delete(options, validatorSpec) - - switch v.Kind() { - case reflect.String, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Float32, reflect.Float64: - - field := fmt.Sprint(v) // make value into string, then validate with regex - if result := validatefunc(field, ps[1:]...); (!result && !negate) || (result && negate) { - if customMsgExists { - return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - if negate { - return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - default: - // type not yet supported, fail - return false, Error{t.Name, fmt.Errorf("Validator %s doesn't support kind %s", validator, v.Kind()), false, stripParams(validatorSpec), []string{}} - } - } - - if validatefunc, ok := TagMap[validator]; ok { - delete(options, validatorSpec) - - switch v.Kind() { - case reflect.String, - reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, - reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, - reflect.Float32, reflect.Float64: - field := fmt.Sprint(v) // make value into string, then validate with regex - if result := validatefunc(field); !result && !negate || result && negate { - if customMsgExists { - return false, Error{t.Name, TruncatingErrorf(validatorStruct.customErrorMessage, field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - if negate { - return false, Error{t.Name, fmt.Errorf("%s does validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - return false, Error{t.Name, fmt.Errorf("%s does not validate as %s", field, validator), customMsgExists, stripParams(validatorSpec), []string{}} - } - default: - //Not Yet Supported Types (Fail here!) - err := fmt.Errorf("Validator %s doesn't support kind %s for value %v", validator, v.Kind(), v) - return false, Error{t.Name, err, false, stripParams(validatorSpec), []string{}} - } - } - } - return true, nil - case reflect.Map: - if v.Type().Key().Kind() != reflect.String { - return false, &UnsupportedTypeError{v.Type()} - } - var sv stringValues - sv = v.MapKeys() - sort.Sort(sv) - result := true - for i, k := range sv { - var resultItem bool - var err error - if v.MapIndex(k).Kind() != reflect.Struct { - resultItem, err = typeCheck(v.MapIndex(k), t, o, options) - if err != nil { - return false, err - } - } else { - resultItem, err = ValidateStruct(v.MapIndex(k).Interface()) - if err != nil { - err = prependPathToErrors(err, t.Name+"."+sv[i].Interface().(string)) - return false, err - } - } - result = result && resultItem - } - return result, nil - case reflect.Slice, reflect.Array: - result := true - for i := 0; i < v.Len(); i++ { - var resultItem bool - var err error - if v.Index(i).Kind() != reflect.Struct { - resultItem, err = typeCheck(v.Index(i), t, o, options) - if err != nil { - return false, err - } - } else { - resultItem, err = ValidateStruct(v.Index(i).Interface()) - if err != nil { - err = prependPathToErrors(err, t.Name+"."+strconv.Itoa(i)) - return false, err - } - } - result = result && resultItem - } - return result, nil - case reflect.Interface: - // If the value is an interface then encode its element - if v.IsNil() { - return true, nil - } - return ValidateStruct(v.Interface()) - case reflect.Ptr: - // If the value is a pointer then checks its element - if v.IsNil() { - return true, nil - } - return typeCheck(v.Elem(), t, o, options) - case reflect.Struct: - return true, nil - default: - return false, &UnsupportedTypeError{v.Type()} - } -} - -func stripParams(validatorString string) string { - return paramsRegexp.ReplaceAllString(validatorString, "") -} - -// isEmptyValue checks whether value empty or not -func isEmptyValue(v reflect.Value) bool { - switch v.Kind() { - case reflect.String, reflect.Array: - return v.Len() == 0 - case reflect.Map, reflect.Slice: - return v.Len() == 0 || v.IsNil() - case reflect.Bool: - return !v.Bool() - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - return v.Int() == 0 - case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: - return v.Uint() == 0 - case reflect.Float32, reflect.Float64: - return v.Float() == 0 - case reflect.Interface, reflect.Ptr: - return v.IsNil() - } - - return reflect.DeepEqual(v.Interface(), reflect.Zero(v.Type()).Interface()) -} - -// ErrorByField returns error for specified field of the struct -// validated by ValidateStruct or empty string if there are no errors -// or this field doesn't exists or doesn't have any errors. -func ErrorByField(e error, field string) string { - if e == nil { - return "" - } - return ErrorsByField(e)[field] -} - -// ErrorsByField returns map of errors of the struct validated -// by ValidateStruct or empty map if there are no errors. -func ErrorsByField(e error) map[string]string { - m := make(map[string]string) - if e == nil { - return m - } - // prototype for ValidateStruct - - switch e := e.(type) { - case Error: - m[e.Name] = e.Err.Error() - case Errors: - for _, item := range e.Errors() { - n := ErrorsByField(item) - for k, v := range n { - m[k] = v - } - } - } - - return m -} - -// Error returns string equivalent for reflect.Type -func (e *UnsupportedTypeError) Error() string { - return "validator: unsupported type: " + e.Type.String() -} - -func (sv stringValues) Len() int { return len(sv) } -func (sv stringValues) Swap(i, j int) { sv[i], sv[j] = sv[j], sv[i] } -func (sv stringValues) Less(i, j int) bool { return sv.get(i) < sv.get(j) } -func (sv stringValues) get(i int) string { return sv[i].String() } - -func IsE164(str string) bool { - return rxE164.MatchString(str) -} diff --git a/vendor/github.com/asaskevich/govalidator/wercker.yml b/vendor/github.com/asaskevich/govalidator/wercker.yml deleted file mode 100644 index bc5f7b0864..0000000000 --- a/vendor/github.com/asaskevich/govalidator/wercker.yml +++ /dev/null @@ -1,15 +0,0 @@ -box: golang -build: - steps: - - setup-go-workspace - - - script: - name: go get - code: | - go version - go get -t ./... - - - script: - name: go test - code: | - go test -race -v ./... diff --git a/vendor/github.com/containers/image/v5/copy/single.go b/vendor/github.com/containers/image/v5/copy/single.go index f7aca8381d..19d410a61d 100644 --- a/vendor/github.com/containers/image/v5/copy/single.go +++ b/vendor/github.com/containers/image/v5/copy/single.go @@ -812,6 +812,7 @@ func (ic *imageCopier) copyLayer(ctx context.Context, srcInfo types.BlobInfo, to } uploadedBlob, err := ic.c.dest.PutBlobPartial(ctx, &proxy, srcInfo, private.PutBlobPartialOptions{ Cache: ic.c.blobInfoCache, + EmptyLayer: emptyLayer, LayerIndex: layerIndex, }) if err == nil { diff --git a/vendor/github.com/containers/image/v5/docker/docker_image_dest.go b/vendor/github.com/containers/image/v5/docker/docker_image_dest.go index b08ebc6fec..76e48a3845 100644 --- a/vendor/github.com/containers/image/v5/docker/docker_image_dest.go +++ b/vendor/github.com/containers/image/v5/docker/docker_image_dest.go @@ -615,11 +615,11 @@ func (d *dockerImageDestination) PutSignaturesWithFormat(ctx context.Context, si } switch { case d.c.supportsSignatures: - if err := d.putSignaturesToAPIExtension(ctx, signatures, *instanceDigest); err != nil { + if err := d.putSignaturesToAPIExtension(ctx, otherSignatures, *instanceDigest); err != nil { return err } case d.c.signatureBase != nil: - if err := d.putSignaturesToLookaside(signatures, *instanceDigest); err != nil { + if err := d.putSignaturesToLookaside(otherSignatures, *instanceDigest); err != nil { return err } default: diff --git a/vendor/github.com/containers/image/v5/internal/private/private.go b/vendor/github.com/containers/image/v5/internal/private/private.go index d9466e9001..ae0cbdf220 100644 --- a/vendor/github.com/containers/image/v5/internal/private/private.go +++ b/vendor/github.com/containers/image/v5/internal/private/private.go @@ -118,6 +118,7 @@ type PutBlobOptions struct { // PutBlobPartialOptions are used in PutBlobPartial. type PutBlobPartialOptions struct { Cache blobinfocache.BlobInfoCache2 // Cache to use and/or update. + EmptyLayer bool // True if the blob is an "empty"/"throwaway" layer, and may not necessarily be physically represented. LayerIndex int // A zero-based index of the layer within the image (PutBlobPartial is only called with layer-like blobs, not configs) } diff --git a/vendor/github.com/containers/image/v5/signature/fulcio_cert.go b/vendor/github.com/containers/image/v5/signature/fulcio_cert.go index cce4677486..908dd0fd59 100644 --- a/vendor/github.com/containers/image/v5/signature/fulcio_cert.go +++ b/vendor/github.com/containers/image/v5/signature/fulcio_cert.go @@ -1,5 +1,3 @@ -//go:build !containers_image_fulcio_stub - package signature import ( diff --git a/vendor/github.com/containers/image/v5/signature/fulcio_cert_stub.go b/vendor/github.com/containers/image/v5/signature/fulcio_cert_stub.go deleted file mode 100644 index da8e13c1df..0000000000 --- a/vendor/github.com/containers/image/v5/signature/fulcio_cert_stub.go +++ /dev/null @@ -1,27 +0,0 @@ -//go:build containers_image_fulcio_stub - -package signature - -import ( - "crypto" - "crypto/ecdsa" - "crypto/x509" - "errors" -) - -type fulcioTrustRoot struct { - caCertificates *x509.CertPool - oidcIssuer string - subjectEmail string -} - -func (f *fulcioTrustRoot) validate() error { - return errors.New("fulcio disabled at compile-time") -} - -func verifyRekorFulcio(rekorPublicKeys []*ecdsa.PublicKey, fulcioTrustRoot *fulcioTrustRoot, untrustedRekorSET []byte, - untrustedCertificateBytes []byte, untrustedIntermediateChainBytes []byte, untrustedBase64Signature string, - untrustedPayloadBytes []byte) (crypto.PublicKey, error) { - return nil, errors.New("fulcio disabled at compile-time") - -} diff --git a/vendor/github.com/containers/image/v5/signature/internal/rekor_api_types.go b/vendor/github.com/containers/image/v5/signature/internal/rekor_api_types.go new file mode 100644 index 0000000000..7b941f5365 --- /dev/null +++ b/vendor/github.com/containers/image/v5/signature/internal/rekor_api_types.go @@ -0,0 +1,95 @@ +package internal + +import ( + "bytes" + "encoding/json" + "fmt" +) + +const rekorHashedrekordKind = "hashedrekord" + +type RekorHashedrekord struct { + APIVersion *string `json:"apiVersion"` + Spec json.RawMessage `json:"spec"` +} + +func (m *RekorHashedrekord) Kind() string { + return rekorHashedrekordKind +} + +func (m *RekorHashedrekord) SetKind(val string) { +} + +func (m *RekorHashedrekord) UnmarshalJSON(raw []byte) error { + var base struct { + Kind string `json:"kind"` + } + dec := json.NewDecoder(bytes.NewReader(raw)) + dec.UseNumber() + if err := dec.Decode(&base); err != nil { + return err + } + + switch base.Kind { + case rekorHashedrekordKind: + var data struct { // We can’t use RekorHashedRekord directly, because that would be an infinite recursion. + APIVersion *string `json:"apiVersion"` + Spec json.RawMessage `json:"spec"` + } + dec = json.NewDecoder(bytes.NewReader(raw)) + dec.UseNumber() + if err := dec.Decode(&data); err != nil { + return err + } + res := RekorHashedrekord{ + APIVersion: data.APIVersion, + Spec: data.Spec, + } + *m = res + return nil + + default: + return fmt.Errorf("invalid kind value: %q", base.Kind) + } +} + +func (m RekorHashedrekord) MarshalJSON() ([]byte, error) { + return json.Marshal(struct { + Kind string `json:"kind"` + APIVersion *string `json:"apiVersion"` + Spec json.RawMessage `json:"spec"` + }{ + Kind: m.Kind(), + APIVersion: m.APIVersion, + Spec: m.Spec, + }) +} + +type RekorHashedrekordV001Schema struct { + Data *RekorHashedrekordV001SchemaData `json:"data"` + Signature *RekorHashedrekordV001SchemaSignature `json:"signature"` +} + +type RekorHashedrekordV001SchemaData struct { + Hash *RekorHashedrekordV001SchemaDataHash `json:"hash,omitempty"` +} + +type RekorHashedrekordV001SchemaDataHash struct { + Algorithm *string `json:"algorithm"` + Value *string `json:"value"` +} + +const ( + RekorHashedrekordV001SchemaDataHashAlgorithmSha256 string = "sha256" + RekorHashedrekordV001SchemaDataHashAlgorithmSha384 string = "sha384" + RekorHashedrekordV001SchemaDataHashAlgorithmSha512 string = "sha512" +) + +type RekorHashedrekordV001SchemaSignature struct { + Content []byte `json:"content,omitempty"` + PublicKey *RekorHashedrekordV001SchemaSignaturePublicKey `json:"publicKey,omitempty"` +} + +type RekorHashedrekordV001SchemaSignaturePublicKey struct { + Content []byte `json:"content,omitempty"` +} diff --git a/vendor/github.com/containers/image/v5/signature/internal/rekor_set.go b/vendor/github.com/containers/image/v5/signature/internal/rekor_set.go index f26a978701..1c20e496a7 100644 --- a/vendor/github.com/containers/image/v5/signature/internal/rekor_set.go +++ b/vendor/github.com/containers/image/v5/signature/internal/rekor_set.go @@ -1,5 +1,3 @@ -//go:build !containers_image_rekor_stub - package internal import ( @@ -14,12 +12,11 @@ import ( "time" "github.com/cyberphone/json-canonicalization/go/src/webpki.org/jsoncanonicalizer" - "github.com/sigstore/rekor/pkg/generated/models" ) // This is the github.com/sigstore/rekor/pkg/generated/models.Hashedrekord.APIVersion for github.com/sigstore/rekor/pkg/generated/models.HashedrekordV001Schema. // We could alternatively use github.com/sigstore/rekor/pkg/types/hashedrekord.APIVERSION, but that subpackage adds too many dependencies. -const HashedRekordV001APIVersion = "0.0.1" +const RekorHashedRekordV001APIVersion = "0.0.1" // UntrustedRekorSET is a parsed content of the sigstore-signature Rekor SET // (note that this a signature-specific format, not a format directly used by the Rekor API). @@ -137,31 +134,20 @@ func VerifyRekorSET(publicKeys []*ecdsa.PublicKey, unverifiedRekorSET []byte, un if err := json.Unmarshal(untrustedSETPayloadCanonicalBytes, &rekorPayload); err != nil { return time.Time{}, NewInvalidSignatureError(fmt.Sprintf("parsing Rekor SET payload: %v", err.Error())) } - // FIXME: Use a different decoder implementation? The Swagger-generated code is kinda ridiculous, with the need to re-marshal - // hashedRekor.Spec and so on. - // Especially if we anticipate needing to decode different data formats… - // That would also allow being much more strict about JSON. - // - // Alternatively, rely on the existing .Validate() methods instead of manually checking for nil all over the place. - var hashedRekord models.Hashedrekord + // FIXME: Consider being much more strict about decoding JSON. + var hashedRekord RekorHashedrekord if err := json.Unmarshal(rekorPayload.Body, &hashedRekord); err != nil { return time.Time{}, NewInvalidSignatureError(fmt.Sprintf("decoding the body of a Rekor SET payload: %v", err)) } - // The decode of models.HashedRekord validates the "kind": "hashedrecord" field, which is otherwise invisible to us. + // The decode of HashedRekord validates the "kind": "hashedrecord" field, which is otherwise invisible to us. if hashedRekord.APIVersion == nil { return time.Time{}, NewInvalidSignatureError("missing Rekor SET Payload API version") } - if *hashedRekord.APIVersion != HashedRekordV001APIVersion { + if *hashedRekord.APIVersion != RekorHashedRekordV001APIVersion { return time.Time{}, NewInvalidSignatureError(fmt.Sprintf("unsupported Rekor SET Payload hashedrekord version %#v", hashedRekord.APIVersion)) } - hashedRekordV001Bytes, err := json.Marshal(hashedRekord.Spec) - if err != nil { - // Coverage: hashedRekord.Spec is an any that was just unmarshaled, - // so this should never fail. - return time.Time{}, NewInvalidSignatureError(fmt.Sprintf("re-creating hashedrekord spec: %v", err)) - } - var hashedRekordV001 models.HashedrekordV001Schema - if err := json.Unmarshal(hashedRekordV001Bytes, &hashedRekordV001); err != nil { + var hashedRekordV001 RekorHashedrekordV001Schema + if err := json.Unmarshal(hashedRekord.Spec, &hashedRekordV001); err != nil { return time.Time{}, NewInvalidSignatureError(fmt.Sprintf("decoding hashedrekod spec: %v", err)) } @@ -217,7 +203,7 @@ func VerifyRekorSET(publicKeys []*ecdsa.PublicKey, unverifiedRekorSET []byte, un // Eventually we should support them as well. // Short-term, Cosign (as of 2024-02 and Cosign 2.2.3) only produces and accepts SHA-256, so right now that’s not a compatibility // issue. - if *hashedRekordV001.Data.Hash.Algorithm != models.HashedrekordV001SchemaDataHashAlgorithmSha256 { + if *hashedRekordV001.Data.Hash.Algorithm != RekorHashedrekordV001SchemaDataHashAlgorithmSha256 { return time.Time{}, NewInvalidSignatureError(fmt.Sprintf(`Unexpected "data.hash.algorithm" value %#v`, *hashedRekordV001.Data.Hash.Algorithm)) } if hashedRekordV001.Data.Hash.Value == nil { diff --git a/vendor/github.com/containers/image/v5/signature/internal/rekor_set_stub.go b/vendor/github.com/containers/image/v5/signature/internal/rekor_set_stub.go deleted file mode 100644 index 4ff3da7edb..0000000000 --- a/vendor/github.com/containers/image/v5/signature/internal/rekor_set_stub.go +++ /dev/null @@ -1,14 +0,0 @@ -//go:build containers_image_rekor_stub - -package internal - -import ( - "crypto/ecdsa" - "time" -) - -// VerifyRekorSET verifies that unverifiedRekorSET is correctly signed by publicKey and matches the rest of the data. -// Returns bundle upload time on success. -func VerifyRekorSET(publicKeys []*ecdsa.PublicKey, unverifiedRekorSET []byte, unverifiedKeyOrCertBytes []byte, unverifiedBase64Signature string, unverifiedPayloadBytes []byte) (time.Time, error) { - return time.Time{}, NewInvalidSignatureError("rekor disabled at compile-time") -} diff --git a/vendor/github.com/containers/image/v5/transports/transports.go b/vendor/github.com/containers/image/v5/transports/transports.go index 834f33b489..4c9c0889c2 100644 --- a/vendor/github.com/containers/image/v5/transports/transports.go +++ b/vendor/github.com/containers/image/v5/transports/transports.go @@ -72,7 +72,7 @@ func ImageName(ref types.ImageReference) string { return ref.Transport().Name() + ":" + ref.StringWithinTransport() } -var deprecatedTransports = set.NewWithValues("atomic") +var deprecatedTransports = set.NewWithValues("atomic", "ostree") // ListNames returns a list of non deprecated transport names. // Deprecated transports can be used, but are not presented to users. diff --git a/vendor/github.com/containers/image/v5/types/types.go b/vendor/github.com/containers/image/v5/types/types.go index 9883bde6d2..a93951780b 100644 --- a/vendor/github.com/containers/image/v5/types/types.go +++ b/vendor/github.com/containers/image/v5/types/types.go @@ -659,6 +659,8 @@ type SystemContext struct { // If true, the physical pull source of docker transport images logged as info level DockerLogMirrorChoice bool // Directory to use for OSTree temporary files + // + // Deprecated: The OSTree transport has been removed. OSTreeTmpDirPath string // If true, all blobs will have precomputed digests to ensure layers are not uploaded that already exist on the registry. // Note that this requires writing blobs to temporary files, and takes more time than the default behavior, diff --git a/vendor/github.com/containers/image/v5/version/version.go b/vendor/github.com/containers/image/v5/version/version.go index e9d548a855..5510e2e79e 100644 --- a/vendor/github.com/containers/image/v5/version/version.go +++ b/vendor/github.com/containers/image/v5/version/version.go @@ -6,9 +6,9 @@ const ( // VersionMajor is for an API incompatible changes VersionMajor = 5 // VersionMinor is for functionality in a backwards-compatible manner - VersionMinor = 35 + VersionMinor = 36 // VersionPatch is for backwards-compatible bug fixes - VersionPatch = 0 + VersionPatch = 1 // VersionDev indicates development branch. Releases will be empty string. VersionDev = "" diff --git a/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock.go b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock.go new file mode 100644 index 0000000000..4f340ae3c1 --- /dev/null +++ b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock.go @@ -0,0 +1,64 @@ +package rawfilelock + +import ( + "os" +) + +type LockType byte + +const ( + ReadLock LockType = iota + WriteLock +) + +type FileHandle = fileHandle + +// OpenLock opens a file for locking +// WARNING: This is the underlying file locking primitive of the OS; +// because closing FileHandle releases the lock, it is not suitable for use +// if there is any chance of two concurrent goroutines attempting to use the same lock. +// Most users should use the higher-level operations from internal/staging_lockfile or pkg/lockfile. +func OpenLock(path string, readOnly bool) (FileHandle, error) { + flags := os.O_CREATE + if readOnly { + flags |= os.O_RDONLY + } else { + flags |= os.O_RDWR + } + + fd, err := openHandle(path, flags) + if err == nil { + return fd, nil + } + + return fd, &os.PathError{Op: "open", Path: path, Err: err} +} + +// TryLockFile attempts to lock a file handle +func TryLockFile(fd FileHandle, lockType LockType) error { + return lockHandle(fd, lockType, true) +} + +// LockFile locks a file handle +func LockFile(fd FileHandle, lockType LockType) error { + return lockHandle(fd, lockType, false) +} + +// UnlockAndClose unlocks and closes a file handle +func UnlockAndCloseHandle(fd FileHandle) { + unlockAndCloseHandle(fd) +} + +// CloseHandle closes a file handle without unlocking +// +// WARNING: This is a last-resort function for error handling only! +// On Unix systems, closing a file descriptor automatically releases any locks, +// so "closing without unlocking" is impossible. This function will release +// the lock as a side effect of closing the file. +// +// This function should only be used in error paths where the lock state +// is already corrupted or when giving up on lock management entirely. +// Normal code should use UnlockAndCloseHandle instead. +func CloseHandle(fd FileHandle) { + closeHandle(fd) +} diff --git a/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_unix.go b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_unix.go new file mode 100644 index 0000000000..2685540769 --- /dev/null +++ b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_unix.go @@ -0,0 +1,49 @@ +//go:build !windows + +package rawfilelock + +import ( + "time" + + "golang.org/x/sys/unix" +) + +type fileHandle uintptr + +func openHandle(path string, mode int) (fileHandle, error) { + mode |= unix.O_CLOEXEC + fd, err := unix.Open(path, mode, 0o644) + return fileHandle(fd), err +} + +func lockHandle(fd fileHandle, lType LockType, nonblocking bool) error { + fType := unix.F_RDLCK + if lType != ReadLock { + fType = unix.F_WRLCK + } + lk := unix.Flock_t{ + Type: int16(fType), + Whence: int16(unix.SEEK_SET), + Start: 0, + Len: 0, + } + cmd := unix.F_SETLKW + if nonblocking { + cmd = unix.F_SETLK + } + for { + err := unix.FcntlFlock(uintptr(fd), cmd, &lk) + if err == nil || nonblocking { + return err + } + time.Sleep(10 * time.Millisecond) + } +} + +func unlockAndCloseHandle(fd fileHandle) { + unix.Close(int(fd)) +} + +func closeHandle(fd fileHandle) { + unix.Close(int(fd)) +} diff --git a/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_windows.go b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_windows.go new file mode 100644 index 0000000000..9c0d692f8a --- /dev/null +++ b/vendor/github.com/containers/storage/internal/rawfilelock/rawfilelock_windows.go @@ -0,0 +1,48 @@ +//go:build windows + +package rawfilelock + +import ( + "golang.org/x/sys/windows" +) + +const ( + reserved = 0 + allBytes = ^uint32(0) +) + +type fileHandle windows.Handle + +func openHandle(path string, mode int) (fileHandle, error) { + mode |= windows.O_CLOEXEC + fd, err := windows.Open(path, mode, windows.S_IWRITE) + return fileHandle(fd), err +} + +func lockHandle(fd fileHandle, lType LockType, nonblocking bool) error { + flags := 0 + if lType != ReadLock { + flags = windows.LOCKFILE_EXCLUSIVE_LOCK + } + if nonblocking { + flags |= windows.LOCKFILE_FAIL_IMMEDIATELY + } + ol := new(windows.Overlapped) + if err := windows.LockFileEx(windows.Handle(fd), uint32(flags), reserved, allBytes, allBytes, ol); err != nil { + if nonblocking { + return err + } + panic(err) + } + return nil +} + +func unlockAndCloseHandle(fd fileHandle) { + ol := new(windows.Overlapped) + windows.UnlockFileEx(windows.Handle(fd), reserved, allBytes, allBytes, ol) + closeHandle(fd) +} + +func closeHandle(fd fileHandle) { + windows.Close(windows.Handle(fd)) +} diff --git a/vendor/github.com/containers/storage/pkg/archive/archive.go b/vendor/github.com/containers/storage/pkg/archive/archive.go index aee06d71c7..a66d2b8913 100644 --- a/vendor/github.com/containers/storage/pkg/archive/archive.go +++ b/vendor/github.com/containers/storage/pkg/archive/archive.go @@ -528,11 +528,29 @@ func canonicalTarName(name string, isDir bool) (string, error) { return name, nil } -// addFile adds a file from `path` as `name` to the tar archive. -func (ta *tarWriter) addFile(path, name string) error { +type addFileData struct { + // The path from which to read contents. + path string + + // os.Stat for the above. + fi os.FileInfo + + // The file header of the above. + hdr *tar.Header + + // if present, an extra whiteout entry to write after the header. + extraWhiteout *tar.Header +} + +// prepareAddFile generates the tar file header(s) for adding a file +// from path as name to the tar archive, without writing to the +// tar stream. Thus, any error may be ignored without corrupting the +// tar file. A (nil, nil) return means that the file should be +// ignored for non-error reasons. +func (ta *tarWriter) prepareAddFile(path, name string) (*addFileData, error) { fi, err := os.Lstat(path) if err != nil { - return err + return nil, err } var link string @@ -540,26 +558,26 @@ func (ta *tarWriter) addFile(path, name string) error { var err error link, err = os.Readlink(path) if err != nil { - return err + return nil, err } } if fi.Mode()&os.ModeSocket != 0 { logrus.Infof("archive: skipping %q since it is a socket", path) - return nil + return nil, nil } hdr, err := FileInfoHeader(name, fi, link) if err != nil { - return err + return nil, err } if err := readSecurityXattrToTarHeader(path, hdr); err != nil { - return err + return nil, err } if err := readUserXattrToTarHeader(path, hdr); err != nil { - return err + return nil, err } if err := ReadFileFlagsToTarHeader(path, hdr); err != nil { - return err + return nil, err } if ta.CopyPass { copyPassHeader(hdr) @@ -568,18 +586,13 @@ func (ta *tarWriter) addFile(path, name string) error { // if it's not a directory and has more than 1 link, // it's hard linked, so set the type flag accordingly if !fi.IsDir() && hasHardlinks(fi) { - inode, err := getInodeFromStat(fi.Sys()) - if err != nil { - return err - } + inode := getInodeFromStat(fi.Sys()) // a link should have a name that it links too // and that linked name should be first in the tar archive if oldpath, ok := ta.SeenFiles[inode]; ok { hdr.Typeflag = tar.TypeLink hdr.Linkname = oldpath - hdr.Size = 0 // This Must be here for the writer math to add up! - } else { - ta.SeenFiles[inode] = name + hdr.Size = 0 // This must be here for the writer math to add up! } } @@ -589,11 +602,11 @@ func (ta *tarWriter) addFile(path, name string) error { if !strings.HasPrefix(filepath.Base(hdr.Name), WhiteoutPrefix) && !ta.IDMappings.Empty() { fileIDPair, err := getFileUIDGID(fi.Sys()) if err != nil { - return err + return nil, err } hdr.Uid, hdr.Gid, err = ta.IDMappings.ToContainer(fileIDPair) if err != nil { - return err + return nil, err } } @@ -616,26 +629,48 @@ func (ta *tarWriter) addFile(path, name string) error { maybeTruncateHeaderModTime(hdr) + result := &addFileData{ + path: path, + hdr: hdr, + fi: fi, + } if ta.WhiteoutConverter != nil { - wo, err := ta.WhiteoutConverter.ConvertWrite(hdr, path, fi) + // The WhiteoutConverter suggests a generic mechanism, + // but this code is only used to convert between + // overlayfs (on-disk) and AUFS (in the tar file) + // whiteouts, and is initiated because the overlayfs + // storage driver returns OverlayWhiteoutFormat from + // Driver.getWhiteoutFormat(). + // + // For AUFS, a directory with all its contents deleted + // should be represented as a directory containing a + // magic whiteout empty regular file, hence the + // extraWhiteout header returned here. + result.extraWhiteout, err = ta.WhiteoutConverter.ConvertWrite(hdr, path, fi) if err != nil { - return err + return nil, err } + } - // If a new whiteout file exists, write original hdr, then - // replace hdr with wo to be written after. Whiteouts should - // always be written after the original. Note the original - // hdr may have been updated to be a whiteout with returning - // a whiteout header - if wo != nil { - if err := ta.TarWriter.WriteHeader(hdr); err != nil { - return err - } - if hdr.Typeflag == tar.TypeReg && hdr.Size > 0 { - return fmt.Errorf("tar: cannot use whiteout for non-empty file") - } - hdr = wo + return result, nil +} + +// addFile performs the write. An error here corrupts the tar file. +func (ta *tarWriter) addFile(headers *addFileData) error { + hdr := headers.hdr + if headers.extraWhiteout != nil { + if hdr.Typeflag == tar.TypeReg && hdr.Size > 0 { + // If we write hdr with hdr.Size > 0, we have + // to write the body before we can write the + // extraWhiteout header. This can only happen + // if the contract for WhiteoutConverter is + // not honored, so bail out. + return fmt.Errorf("tar: cannot use extra whiteout with non-empty file %s", hdr.Name) + } + if err := ta.TarWriter.WriteHeader(hdr); err != nil { + return err } + hdr = headers.extraWhiteout } if err := ta.TarWriter.WriteHeader(hdr); err != nil { @@ -643,7 +678,7 @@ func (ta *tarWriter) addFile(path, name string) error { } if hdr.Typeflag == tar.TypeReg && hdr.Size > 0 { - file, err := os.Open(path) + file, err := os.Open(headers.path) if err != nil { return err } @@ -661,6 +696,13 @@ func (ta *tarWriter) addFile(path, name string) error { } } + if !headers.fi.IsDir() && hasHardlinks(headers.fi) { + ino := getInodeFromStat(headers.fi.Sys()) + if _, seen := ta.SeenFiles[ino]; !seen { + ta.SeenFiles[ino] = headers.hdr.Name + } + } + return nil } @@ -853,184 +895,189 @@ func extractTarFileEntry(path, extractDir string, hdr *tar.Header, reader io.Rea } // Tar creates an archive from the directory at `path`, and returns it as a -// stream of bytes. +// stream of bytes. This is a convenience wrapper for [TarWithOptions]. func Tar(path string, compression Compression) (io.ReadCloser, error) { return TarWithOptions(path, &TarOptions{Compression: compression}) } -// TarWithOptions creates an archive from the directory at `path`, only including files whose relative -// paths are included in `options.IncludeFiles` (if non-nil) or not in `options.ExcludePatterns`. -func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error) { - tarWithOptionsTo := func(dest io.WriteCloser, srcPath string, options *TarOptions) (result error) { - // Fix the source path to work with long path names. This is a no-op - // on platforms other than Windows. - srcPath = fixVolumePathPrefix(srcPath) - defer func() { - if err := dest.Close(); err != nil && result == nil { - result = err - } - }() - - pm, err := fileutils.NewPatternMatcher(options.ExcludePatterns) - if err != nil { - return err +func tarWithOptionsTo(dest io.WriteCloser, srcPath string, options *TarOptions) (result error) { + // Fix the source path to work with long path names. This is a no-op + // on platforms other than Windows. + srcPath = fixVolumePathPrefix(srcPath) + defer func() { + if err := dest.Close(); err != nil && result == nil { + result = err } + }() - compressWriter, err := CompressStream(dest, options.Compression) - if err != nil { - return err - } + pm, err := fileutils.NewPatternMatcher(options.ExcludePatterns) + if err != nil { + return err + } - ta := newTarWriter( - idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps), - compressWriter, - options.ChownOpts, - options.Timestamp, - ) - ta.WhiteoutConverter = GetWhiteoutConverter(options.WhiteoutFormat, options.WhiteoutData) - ta.CopyPass = options.CopyPass + compressWriter, err := CompressStream(dest, options.Compression) + if err != nil { + return err + } - includeFiles := options.IncludeFiles - defer func() { - if err := compressWriter.Close(); err != nil && result == nil { - result = err - } - }() + ta := newTarWriter( + idtools.NewIDMappingsFromMaps(options.UIDMaps, options.GIDMaps), + compressWriter, + options.ChownOpts, + options.Timestamp, + ) + ta.WhiteoutConverter = GetWhiteoutConverter(options.WhiteoutFormat, options.WhiteoutData) + ta.CopyPass = options.CopyPass - // this buffer is needed for the duration of this piped stream - defer pools.BufioWriter32KPool.Put(ta.Buffer) + includeFiles := options.IncludeFiles + defer func() { + if err := compressWriter.Close(); err != nil && result == nil { + result = err + } + }() - // In general we log errors here but ignore them because - // during e.g. a diff operation the container can continue - // mutating the filesystem and we can see transient errors - // from this + // this buffer is needed for the duration of this piped stream + defer pools.BufioWriter32KPool.Put(ta.Buffer) - stat, err := os.Lstat(srcPath) - if err != nil { - return err - } + // In general we log errors here but ignore them because + // during e.g. a diff operation the container can continue + // mutating the filesystem and we can see transient errors + // from this - if !stat.IsDir() { - // We can't later join a non-dir with any includes because the - // 'walk' will error if "file/." is stat-ed and "file" is not a - // directory. So, we must split the source path and use the - // basename as the include. - if len(includeFiles) > 0 { - logrus.Warn("Tar: Can't archive a file with includes") - } + stat, err := os.Lstat(srcPath) + if err != nil { + return err + } - dir, base := SplitPathDirEntry(srcPath) - srcPath = dir - includeFiles = []string{base} + if !stat.IsDir() { + // We can't later join a non-dir with any includes because the + // 'walk' will error if "file/." is stat-ed and "file" is not a + // directory. So, we must split the source path and use the + // basename as the include. + if len(includeFiles) > 0 { + logrus.Warn("Tar: Can't archive a file with includes") } - if len(includeFiles) == 0 { - includeFiles = []string{"."} - } + dir, base := SplitPathDirEntry(srcPath) + srcPath = dir + includeFiles = []string{base} + } - seen := make(map[string]bool) + if len(includeFiles) == 0 { + includeFiles = []string{"."} + } - for _, include := range includeFiles { - rebaseName := options.RebaseNames[include] + seen := make(map[string]bool) - walkRoot := getWalkRoot(srcPath, include) - if err := filepath.WalkDir(walkRoot, func(filePath string, d fs.DirEntry, err error) error { - if err != nil { - logrus.Errorf("Tar: Can't stat file %s to tar: %s", srcPath, err) - return nil - } + for _, include := range includeFiles { + rebaseName := options.RebaseNames[include] - relFilePath, err := filepath.Rel(srcPath, filePath) - if err != nil || (!options.IncludeSourceDir && relFilePath == "." && d.IsDir()) { - // Error getting relative path OR we are looking - // at the source directory path. Skip in both situations. - return nil //nolint: nilerr - } + walkRoot := getWalkRoot(srcPath, include) + if err := filepath.WalkDir(walkRoot, func(filePath string, d fs.DirEntry, err error) error { + if err != nil { + logrus.Errorf("Tar: Can't stat file %s to tar: %s", srcPath, err) + return nil + } - if options.IncludeSourceDir && include == "." && relFilePath != "." { - relFilePath = strings.Join([]string{".", relFilePath}, string(filepath.Separator)) - } + relFilePath, err := filepath.Rel(srcPath, filePath) + if err != nil || (!options.IncludeSourceDir && relFilePath == "." && d.IsDir()) { + // Error getting relative path OR we are looking + // at the source directory path. Skip in both situations. + return nil //nolint: nilerr + } + + if options.IncludeSourceDir && include == "." && relFilePath != "." { + relFilePath = strings.Join([]string{".", relFilePath}, string(filepath.Separator)) + } - skip := false + skip := false - // If "include" is an exact match for the current file - // then even if there's an "excludePatterns" pattern that - // matches it, don't skip it. IOW, assume an explicit 'include' - // is asking for that file no matter what - which is true - // for some files, like .dockerignore and Dockerfile (sometimes) - if include != relFilePath { - matches, err := pm.IsMatch(relFilePath) - if err != nil { - return fmt.Errorf("matching %s: %w", relFilePath, err) - } - skip = matches + // If "include" is an exact match for the current file + // then even if there's an "excludePatterns" pattern that + // matches it, don't skip it. IOW, assume an explicit 'include' + // is asking for that file no matter what - which is true + // for some files, like .dockerignore and Dockerfile (sometimes) + if include != relFilePath { + matches, err := pm.IsMatch(relFilePath) + if err != nil { + return fmt.Errorf("matching %s: %w", relFilePath, err) } + skip = matches + } - if skip { - // If we want to skip this file and its a directory - // then we should first check to see if there's an - // excludes pattern (e.g. !dir/file) that starts with this - // dir. If so then we can't skip this dir. + if skip { + // If we want to skip this file and its a directory + // then we should first check to see if there's an + // excludes pattern (e.g. !dir/file) that starts with this + // dir. If so then we can't skip this dir. - // Its not a dir then so we can just return/skip. - if !d.IsDir() { - return nil - } + // Its not a dir then so we can just return/skip. + if !d.IsDir() { + return nil + } - // No exceptions (!...) in patterns so just skip dir - if !pm.Exclusions() { - return filepath.SkipDir - } + // No exceptions (!...) in patterns so just skip dir + if !pm.Exclusions() { + return filepath.SkipDir + } - dirSlash := relFilePath + string(filepath.Separator) + dirSlash := relFilePath + string(filepath.Separator) - for _, pat := range pm.Patterns() { - if !pat.Exclusion() { - continue - } - if strings.HasPrefix(pat.String()+string(filepath.Separator), dirSlash) { - // found a match - so can't skip this dir - return nil - } + for _, pat := range pm.Patterns() { + if !pat.Exclusion() { + continue + } + if strings.HasPrefix(pat.String()+string(filepath.Separator), dirSlash) { + // found a match - so can't skip this dir + return nil } - - // No matching exclusion dir so just skip dir - return filepath.SkipDir } - if seen[relFilePath] { - return nil - } - seen[relFilePath] = true - - // Rename the base resource. - if rebaseName != "" { - var replacement string - if rebaseName != string(filepath.Separator) { - // Special case the root directory to replace with an - // empty string instead so that we don't end up with - // double slashes in the paths. - replacement = rebaseName - } + // No matching exclusion dir so just skip dir + return filepath.SkipDir + } - relFilePath = strings.Replace(relFilePath, include, replacement, 1) + if seen[relFilePath] { + return nil + } + seen[relFilePath] = true + + // Rename the base resource. + if rebaseName != "" { + var replacement string + if rebaseName != string(filepath.Separator) { + // Special case the root directory to replace with an + // empty string instead so that we don't end up with + // double slashes in the paths. + replacement = rebaseName } - if err := ta.addFile(filePath, relFilePath); err != nil { - logrus.Errorf("Can't add file %s to tar: %s", filePath, err) - // if pipe is broken, stop writing tar stream to it - if err == io.ErrClosedPipe { - return err - } + relFilePath = strings.Replace(relFilePath, include, replacement, 1) + } + + headers, err := ta.prepareAddFile(filePath, relFilePath) + if err != nil { + logrus.Errorf("Can't add file %s to tar: %s; skipping", filePath, err) + } else if headers != nil { + if err := ta.addFile(headers); err != nil { + return err } - return nil - }); err != nil { - return err } + return nil + }); err != nil { + return err } - return ta.TarWriter.Close() } + return ta.TarWriter.Close() +} +// TarWithOptions creates an archive from the directory at `path`, only including files whose relative +// paths are included in `options.IncludeFiles` (if non-nil) or not in `options.ExcludePatterns`. +// +// If used on a file system being modified concurrently, +// TarWithOptions will create a valid tar archive, but may leave out +// some files. +func TarWithOptions(srcPath string, options *TarOptions) (io.ReadCloser, error) { pipeReader, pipeWriter := io.Pipe() go func() { err := tarWithOptionsTo(pipeWriter, srcPath, options) @@ -1446,7 +1493,7 @@ func NewTempArchive(src io.Reader, dir string) (*TempArchive, error) { if _, err := io.Copy(f, src); err != nil { return nil, err } - if _, err := f.Seek(0, 0); err != nil { + if _, err := f.Seek(0, io.SeekStart); err != nil { return nil, err } st, err := f.Stat() diff --git a/vendor/github.com/containers/storage/pkg/archive/archive_unix.go b/vendor/github.com/containers/storage/pkg/archive/archive_unix.go index 3a02a88c14..d9bcb97ba0 100644 --- a/vendor/github.com/containers/storage/pkg/archive/archive_unix.go +++ b/vendor/github.com/containers/storage/pkg/archive/archive_unix.go @@ -82,7 +82,7 @@ func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat any) (err erro return } -func getInodeFromStat(stat any) (inode uint64, err error) { +func getInodeFromStat(stat any) (inode uint64) { s, ok := stat.(*syscall.Stat_t) if ok { diff --git a/vendor/github.com/containers/storage/pkg/archive/archive_windows.go b/vendor/github.com/containers/storage/pkg/archive/archive_windows.go index 6db31cf4cf..e987828698 100644 --- a/vendor/github.com/containers/storage/pkg/archive/archive_windows.go +++ b/vendor/github.com/containers/storage/pkg/archive/archive_windows.go @@ -57,7 +57,7 @@ func setHeaderForSpecialDevice(hdr *tar.Header, name string, stat interface{}) ( return } -func getInodeFromStat(stat interface{}) (inode uint64, err error) { +func getInodeFromStat(stat interface{}) (inode uint64) { // do nothing. no notion of Inode in stat on Windows return } diff --git a/vendor/github.com/containers/storage/pkg/archive/changes.go b/vendor/github.com/containers/storage/pkg/archive/changes.go index a5847cca54..76edac85d4 100644 --- a/vendor/github.com/containers/storage/pkg/archive/changes.go +++ b/vendor/github.com/containers/storage/pkg/archive/changes.go @@ -481,8 +481,14 @@ func ExportChanges(dir string, changes []Change, uidMaps, gidMaps []idtools.IDMa } } else { path := filepath.Join(dir, change.Path) - if err := ta.addFile(path, change.Path[1:]); err != nil { + headers, err := ta.prepareAddFile(path, change.Path[1:]) + if err != nil { logrus.Debugf("Can't add file %s to tar: %s", path, err) + } else if headers != nil { + if err := ta.addFile(headers); err != nil { + writer.CloseWithError(err) + return + } } } } diff --git a/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go b/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go index 0de063a24c..2930723aa7 100644 --- a/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go +++ b/vendor/github.com/containers/storage/pkg/chunked/compressor/compressor.go @@ -11,7 +11,6 @@ import ( "github.com/containers/storage/pkg/chunked/internal/minimal" "github.com/containers/storage/pkg/ioutils" - "github.com/klauspost/compress/zstd" "github.com/opencontainers/go-digest" "github.com/vbatts/tar-split/archive/tar" "github.com/vbatts/tar-split/tar/asm" @@ -202,15 +201,15 @@ type tarSplitData struct { compressed *bytes.Buffer digester digest.Digester uncompressedCounter *ioutils.WriteCounter - zstd *zstd.Encoder + zstd minimal.ZstdWriter packer storage.Packer } -func newTarSplitData(level int) (*tarSplitData, error) { +func newTarSplitData(createZstdWriter minimal.CreateZstdWriterFunc) (*tarSplitData, error) { compressed := bytes.NewBuffer(nil) digester := digest.Canonical.Digester() - zstdWriter, err := minimal.ZstdWriterWithLevel(io.MultiWriter(compressed, digester.Hash()), level) + zstdWriter, err := createZstdWriter(io.MultiWriter(compressed, digester.Hash())) if err != nil { return nil, err } @@ -227,11 +226,11 @@ func newTarSplitData(level int) (*tarSplitData, error) { }, nil } -func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, reader io.Reader, level int) error { +func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, reader io.Reader, createZstdWriter minimal.CreateZstdWriterFunc) error { // total written so far. Used to retrieve partial offsets in the file dest := ioutils.NewWriteCounter(destFile) - tarSplitData, err := newTarSplitData(level) + tarSplitData, err := newTarSplitData(createZstdWriter) if err != nil { return err } @@ -251,7 +250,7 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r buf := make([]byte, 4096) - zstdWriter, err := minimal.ZstdWriterWithLevel(dest, level) + zstdWriter, err := createZstdWriter(dest) if err != nil { return err } @@ -404,18 +403,11 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r return err } - if err := zstdWriter.Flush(); err != nil { - zstdWriter.Close() - return err - } if err := zstdWriter.Close(); err != nil { return err } zstdWriter = nil - if err := tarSplitData.zstd.Flush(); err != nil { - return err - } if err := tarSplitData.zstd.Close(); err != nil { return err } @@ -427,7 +419,7 @@ func writeZstdChunkedStream(destFile io.Writer, outMetadata map[string]string, r UncompressedSize: tarSplitData.uncompressedCounter.Count, } - return minimal.WriteZstdChunkedManifest(dest, outMetadata, uint64(dest.Count), &ts, metadata, level) + return minimal.WriteZstdChunkedManifest(dest, outMetadata, uint64(dest.Count), &ts, metadata, createZstdWriter) } type zstdChunkedWriter struct { @@ -454,7 +446,7 @@ func (w zstdChunkedWriter) Write(p []byte) (int, error) { } } -// zstdChunkedWriterWithLevel writes a zstd compressed tarball where each file is +// makeZstdChunkedWriter writes a zstd compressed tarball where each file is // compressed separately so it can be addressed separately. Idea based on CRFS: // https://github.com/google/crfs // The difference with CRFS is that the zstd compression is used instead of gzip. @@ -469,12 +461,12 @@ func (w zstdChunkedWriter) Write(p []byte) (int, error) { // [SKIPPABLE FRAME 1]: [ZSTD SKIPPABLE FRAME, SIZE=MANIFEST LENGTH][MANIFEST] // [SKIPPABLE FRAME 2]: [ZSTD SKIPPABLE FRAME, SIZE=16][MANIFEST_OFFSET][MANIFEST_LENGTH][MANIFEST_LENGTH_UNCOMPRESSED][MANIFEST_TYPE][CHUNKED_ZSTD_MAGIC_NUMBER] // MANIFEST_OFFSET, MANIFEST_LENGTH, MANIFEST_LENGTH_UNCOMPRESSED and CHUNKED_ZSTD_MAGIC_NUMBER are 64 bits unsigned in little endian format. -func zstdChunkedWriterWithLevel(out io.Writer, metadata map[string]string, level int) (io.WriteCloser, error) { +func makeZstdChunkedWriter(out io.Writer, metadata map[string]string, createZstdWriter minimal.CreateZstdWriterFunc) (io.WriteCloser, error) { ch := make(chan error, 1) r, w := io.Pipe() go func() { - ch <- writeZstdChunkedStream(out, metadata, r, level) + ch <- writeZstdChunkedStream(out, metadata, r, createZstdWriter) _, _ = io.Copy(io.Discard, r) // Ordinarily writeZstdChunkedStream consumes all of r. If it fails, ensure the write end never blocks and eventually terminates. r.Close() close(ch) @@ -493,5 +485,40 @@ func ZstdCompressor(r io.Writer, metadata map[string]string, level *int) (io.Wri level = &l } - return zstdChunkedWriterWithLevel(r, metadata, *level) + createZstdWriter := func(dest io.Writer) (minimal.ZstdWriter, error) { + return minimal.ZstdWriterWithLevel(dest, *level) + } + + return makeZstdChunkedWriter(r, metadata, createZstdWriter) +} + +type noCompression struct { + dest io.Writer +} + +func (n *noCompression) Write(p []byte) (int, error) { + return n.dest.Write(p) +} + +func (n *noCompression) Close() error { + return nil +} + +func (n *noCompression) Flush() error { + return nil +} + +func (n *noCompression) Reset(dest io.Writer) { + n.dest = dest +} + +// NoCompression writes directly to the output file without any compression +// +// Such an output does not follow the zstd:chunked spec and cannot be generally consumed; this function +// only exists for internal purposes and should not be called from outside c/storage. +func NoCompression(r io.Writer, metadata map[string]string) (io.WriteCloser, error) { + createZstdWriter := func(dest io.Writer) (minimal.ZstdWriter, error) { + return &noCompression{dest: dest}, nil + } + return makeZstdChunkedWriter(r, metadata, createZstdWriter) } diff --git a/vendor/github.com/containers/storage/pkg/chunked/internal/minimal/compression.go b/vendor/github.com/containers/storage/pkg/chunked/internal/minimal/compression.go index f85c5973ca..4191524cc5 100644 --- a/vendor/github.com/containers/storage/pkg/chunked/internal/minimal/compression.go +++ b/vendor/github.com/containers/storage/pkg/chunked/internal/minimal/compression.go @@ -20,6 +20,15 @@ import ( "github.com/vbatts/tar-split/archive/tar" ) +// ZstdWriter is an interface that wraps standard io.WriteCloser and Reset() to reuse the compressor with a new writer. +type ZstdWriter interface { + io.WriteCloser + Reset(dest io.Writer) +} + +// CreateZstdWriterFunc is a function that creates a ZstdWriter for the provided destination writer. +type CreateZstdWriterFunc func(dest io.Writer) (ZstdWriter, error) + // TOC is short for Table of Contents and is used by the zstd:chunked // file format to effectively add an overall index into the contents // of a tarball; it also includes file metadata. @@ -179,7 +188,7 @@ type TarSplitData struct { UncompressedSize int64 } -func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, tarSplitData *TarSplitData, metadata []FileMetadata, level int) error { +func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, tarSplitData *TarSplitData, metadata []FileMetadata, createZstdWriter CreateZstdWriterFunc) error { // 8 is the size of the zstd skippable frame header + the frame size const zstdSkippableFrameHeader = 8 manifestOffset := offset + zstdSkippableFrameHeader @@ -198,7 +207,7 @@ func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, off } var compressedBuffer bytes.Buffer - zstdWriter, err := ZstdWriterWithLevel(&compressedBuffer, level) + zstdWriter, err := createZstdWriter(&compressedBuffer) if err != nil { return err } @@ -244,7 +253,7 @@ func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, off return appendZstdSkippableFrame(dest, manifestDataLE) } -func ZstdWriterWithLevel(dest io.Writer, level int) (*zstd.Encoder, error) { +func ZstdWriterWithLevel(dest io.Writer, level int) (ZstdWriter, error) { el := zstd.EncoderLevelFromZstd(level) return zstd.NewWriter(dest, zstd.WithEncoderLevel(el)) } diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go index 52f6c0a62c..dfe81c2458 100644 --- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go +++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile.go @@ -6,6 +6,8 @@ import ( "path/filepath" "sync" "time" + + "github.com/containers/storage/internal/rawfilelock" ) // A Locker represents a file lock where the file is used to cache an @@ -55,13 +57,6 @@ type Locker interface { AssertLockedForWriting() } -type lockType byte - -const ( - readLock lockType = iota - writeLock -) - // LockFile represents a file lock where the file is used to cache an // identifier of the last party that made changes to whatever's being protected // by the lock. @@ -79,12 +74,12 @@ type LockFile struct { stateMutex *sync.Mutex counter int64 lw LastWrite // A global value valid as of the last .Touch() or .Modified() - lockType lockType + lockType rawfilelock.LockType locked bool // The following fields are only modified on transitions between counter == 0 / counter != 0. // Thus, they can be safely accessed by users _that currently hold the LockFile_ without locking. // In other cases, they need to be protected using stateMutex. - fd fileHandle + fd rawfilelock.FileHandle } var ( @@ -129,12 +124,12 @@ func (l *LockFile) Lock() { if l.ro { panic("can't take write lock on read-only lock file") } - l.lock(writeLock) + l.lock(rawfilelock.WriteLock) } // RLock locks the lockfile as a reader. func (l *LockFile) RLock() { - l.lock(readLock) + l.lock(rawfilelock.ReadLock) } // TryLock attempts to lock the lockfile as a writer. Panic if the lock is a read-only one. @@ -142,12 +137,12 @@ func (l *LockFile) TryLock() error { if l.ro { panic("can't take write lock on read-only lock file") } - return l.tryLock(writeLock) + return l.tryLock(rawfilelock.WriteLock) } // TryRLock attempts to lock the lockfile as a reader. func (l *LockFile) TryRLock() error { - return l.tryLock(readLock) + return l.tryLock(rawfilelock.ReadLock) } // Unlock unlocks the lockfile. @@ -172,9 +167,9 @@ func (l *LockFile) Unlock() { l.locked = false // Close the file descriptor on the last unlock, releasing the // file lock. - unlockAndCloseHandle(l.fd) + rawfilelock.UnlockAndCloseHandle(l.fd) } - if l.lockType == readLock { + if l.lockType == rawfilelock.ReadLock { l.rwMutex.RUnlock() } else { l.rwMutex.Unlock() @@ -206,7 +201,7 @@ func (l *LockFile) AssertLockedForWriting() { l.AssertLocked() // Like AssertLocked, don’t even bother with l.stateMutex. - if l.lockType == readLock { + if l.lockType == rawfilelock.ReadLock { panic("internal error: lock is not held for writing") } } @@ -273,7 +268,7 @@ func (l *LockFile) Touch() error { return err } l.stateMutex.Lock() - if !l.locked || (l.lockType == readLock) { + if !l.locked || (l.lockType == rawfilelock.ReadLock) { panic("attempted to update last-writer in lockfile without the write lock") } defer l.stateMutex.Unlock() @@ -324,6 +319,24 @@ func getLockfile(path string, ro bool) (*LockFile, error) { return lockFile, nil } +// openLock opens a lock file at the specified path, creating the parent directory if it does not exist. +func openLock(path string, readOnly bool) (rawfilelock.FileHandle, error) { + fd, err := rawfilelock.OpenLock(path, readOnly) + if err == nil { + return fd, nil + } + + // the directory of the lockfile seems to be removed, try to create it + if os.IsNotExist(err) { + if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil { + return fd, fmt.Errorf("creating lock file directory: %w", err) + } + + return openLock(path, readOnly) + } + return fd, &os.PathError{Op: "open", Path: path, Err: err} +} + // createLockFileForPath returns new *LockFile object, possibly (depending on the platform) // working inter-process and associated with the specified path. // @@ -343,11 +356,11 @@ func createLockFileForPath(path string, ro bool) (*LockFile, error) { if err != nil { return nil, err } - unlockAndCloseHandle(fd) + rawfilelock.UnlockAndCloseHandle(fd) - lType := writeLock + lType := rawfilelock.WriteLock if ro { - lType = readLock + lType = rawfilelock.ReadLock } return &LockFile{ @@ -362,40 +375,10 @@ func createLockFileForPath(path string, ro bool) (*LockFile, error) { }, nil } -// openLock opens the file at path and returns the corresponding file -// descriptor. The path is opened either read-only or read-write, -// depending on the value of ro argument. -// -// openLock will create the file and its parent directories, -// if necessary. -func openLock(path string, ro bool) (fd fileHandle, err error) { - flags := os.O_CREATE - if ro { - flags |= os.O_RDONLY - } else { - flags |= os.O_RDWR - } - fd, err = openHandle(path, flags) - if err == nil { - return fd, nil - } - - // the directory of the lockfile seems to be removed, try to create it - if os.IsNotExist(err) { - if err := os.MkdirAll(filepath.Dir(path), 0o700); err != nil { - return fd, fmt.Errorf("creating lock file directory: %w", err) - } - - return openLock(path, ro) - } - - return fd, &os.PathError{Op: "open", Path: path, Err: err} -} - // lock locks the lockfile via syscall based on the specified type and // command. -func (l *LockFile) lock(lType lockType) { - if lType == readLock { +func (l *LockFile) lock(lType rawfilelock.LockType) { + if lType == rawfilelock.ReadLock { l.rwMutex.RLock() } else { l.rwMutex.Lock() @@ -413,7 +396,7 @@ func (l *LockFile) lock(lType lockType) { // Optimization: only use the (expensive) syscall when // the counter is 0. In this case, we're either the first // reader lock or a writer lock. - if err := lockHandle(l.fd, lType, false); err != nil { + if err := rawfilelock.LockFile(l.fd, lType); err != nil { panic(err) } } @@ -424,10 +407,10 @@ func (l *LockFile) lock(lType lockType) { // lock locks the lockfile via syscall based on the specified type and // command. -func (l *LockFile) tryLock(lType lockType) error { +func (l *LockFile) tryLock(lType rawfilelock.LockType) error { var success bool var rwMutexUnlocker func() - if lType == readLock { + if lType == rawfilelock.ReadLock { success = l.rwMutex.TryRLock() rwMutexUnlocker = l.rwMutex.RUnlock } else { @@ -451,8 +434,8 @@ func (l *LockFile) tryLock(lType lockType) error { // Optimization: only use the (expensive) syscall when // the counter is 0. In this case, we're either the first // reader lock or a writer lock. - if err = lockHandle(l.fd, lType, true); err != nil { - closeHandle(fd) + if err = rawfilelock.TryLockFile(l.fd, lType); err != nil { + rawfilelock.CloseHandle(fd) rwMutexUnlocker() return err } diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go index 885f2f88a2..14c27c51fb 100644 --- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go +++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_unix.go @@ -9,8 +9,6 @@ import ( "golang.org/x/sys/unix" ) -type fileHandle uintptr - // GetLastWrite returns a LastWrite value corresponding to current state of the lock. // This is typically called before (_not after_) loading the state when initializing a consumer // of the data protected by the lock. @@ -66,41 +64,3 @@ func (l *LockFile) TouchedSince(when time.Time) bool { touched := time.Unix(mtim.Unix()) return when.Before(touched) } - -func openHandle(path string, mode int) (fileHandle, error) { - mode |= unix.O_CLOEXEC - fd, err := unix.Open(path, mode, 0o644) - return fileHandle(fd), err -} - -func lockHandle(fd fileHandle, lType lockType, nonblocking bool) error { - fType := unix.F_RDLCK - if lType != readLock { - fType = unix.F_WRLCK - } - lk := unix.Flock_t{ - Type: int16(fType), - Whence: int16(unix.SEEK_SET), - Start: 0, - Len: 0, - } - cmd := unix.F_SETLKW - if nonblocking { - cmd = unix.F_SETLK - } - for { - err := unix.FcntlFlock(uintptr(fd), cmd, &lk) - if err == nil || nonblocking { - return err - } - time.Sleep(10 * time.Millisecond) - } -} - -func unlockAndCloseHandle(fd fileHandle) { - unix.Close(int(fd)) -} - -func closeHandle(fd fileHandle) { - unix.Close(int(fd)) -} diff --git a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go index 0cc1c50cc8..e66f7bfbbc 100644 --- a/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go +++ b/vendor/github.com/containers/storage/pkg/lockfile/lockfile_windows.go @@ -14,8 +14,6 @@ const ( allBytes = ^uint32(0) ) -type fileHandle windows.Handle - // GetLastWrite returns a LastWrite value corresponding to current state of the lock. // This is typically called before (_not after_) loading the state when initializing a consumer // of the data protected by the lock. @@ -73,37 +71,3 @@ func (l *LockFile) TouchedSince(when time.Time) bool { } return when.Before(stat.ModTime()) } - -func openHandle(path string, mode int) (fileHandle, error) { - mode |= windows.O_CLOEXEC - fd, err := windows.Open(path, mode, windows.S_IWRITE) - return fileHandle(fd), err -} - -func lockHandle(fd fileHandle, lType lockType, nonblocking bool) error { - flags := 0 - if lType != readLock { - flags = windows.LOCKFILE_EXCLUSIVE_LOCK - } - if nonblocking { - flags |= windows.LOCKFILE_FAIL_IMMEDIATELY - } - ol := new(windows.Overlapped) - if err := windows.LockFileEx(windows.Handle(fd), uint32(flags), reserved, allBytes, allBytes, ol); err != nil { - if nonblocking { - return err - } - panic(err) - } - return nil -} - -func unlockAndCloseHandle(fd fileHandle) { - ol := new(windows.Overlapped) - windows.UnlockFileEx(windows.Handle(fd), reserved, allBytes, allBytes, ol) - closeHandle(fd) -} - -func closeHandle(fd fileHandle) { - windows.Close(windows.Handle(fd)) -} diff --git a/vendor/github.com/docker/cli/cli/config/configfile/file.go b/vendor/github.com/docker/cli/cli/config/configfile/file.go index 396f900345..530c522856 100644 --- a/vendor/github.com/docker/cli/cli/config/configfile/file.go +++ b/vendor/github.com/docker/cli/cli/config/configfile/file.go @@ -56,7 +56,7 @@ type configEnv struct { AuthConfigs map[string]configEnvAuth `json:"auths"` } -// dockerEnvConfig is an environment variable that contains a JSON encoded +// DockerEnvConfigKey is an environment variable that contains a JSON encoded // credential config. It only supports storing the credentials as a base64 // encoded string in the format base64("username:pat"). // @@ -71,7 +71,7 @@ type configEnv struct { // } // } // } -const dockerEnvConfig = "DOCKER_AUTH_CONFIG" +const DockerEnvConfigKey = "DOCKER_AUTH_CONFIG" // ProxyConfig contains proxy configuration settings type ProxyConfig struct { @@ -296,7 +296,7 @@ func (configFile *ConfigFile) GetCredentialsStore(registryHostname string) crede store = newNativeStore(configFile, helper) } - envConfig := os.Getenv(dockerEnvConfig) + envConfig := os.Getenv(DockerEnvConfigKey) if envConfig == "" { return store } diff --git a/vendor/github.com/go-openapi/analysis/.codecov.yml b/vendor/github.com/go-openapi/analysis/.codecov.yml deleted file mode 100644 index 841c4281e2..0000000000 --- a/vendor/github.com/go-openapi/analysis/.codecov.yml +++ /dev/null @@ -1,5 +0,0 @@ -coverage: - status: - patch: - default: - target: 80% diff --git a/vendor/github.com/go-openapi/analysis/.gitattributes b/vendor/github.com/go-openapi/analysis/.gitattributes deleted file mode 100644 index d020be8ea4..0000000000 --- a/vendor/github.com/go-openapi/analysis/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -*.go text eol=lf - diff --git a/vendor/github.com/go-openapi/analysis/.gitignore b/vendor/github.com/go-openapi/analysis/.gitignore deleted file mode 100644 index 87c3bd3e66..0000000000 --- a/vendor/github.com/go-openapi/analysis/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -secrets.yml -coverage.out -coverage.txt -*.cov -.idea diff --git a/vendor/github.com/go-openapi/analysis/.golangci.yml b/vendor/github.com/go-openapi/analysis/.golangci.yml deleted file mode 100644 index 22f8d21cca..0000000000 --- a/vendor/github.com/go-openapi/analysis/.golangci.yml +++ /dev/null @@ -1,61 +0,0 @@ -linters-settings: - govet: - check-shadowing: true - golint: - min-confidence: 0 - gocyclo: - min-complexity: 45 - maligned: - suggest-new: true - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - maligned - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - gomnd - - exhaustivestruct - - goerr113 - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - ifshort - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - - deadcode - - interfacer - - scopelint - - varcheck - - structcheck - - golint - - nosnakecase diff --git a/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/analysis/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/analysis/LICENSE b/vendor/github.com/go-openapi/analysis/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/analysis/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/analysis/README.md b/vendor/github.com/go-openapi/analysis/README.md deleted file mode 100644 index e005d4b37b..0000000000 --- a/vendor/github.com/go-openapi/analysis/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# OpenAPI analysis [![Build Status](https://github.com/go-openapi/analysis/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/analysis/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/analysis/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/analysis) - -[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/analysis/master/LICENSE) -[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/analysis.svg)](https://pkg.go.dev/github.com/go-openapi/analysis) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/analysis)](https://goreportcard.com/report/github.com/go-openapi/analysis) - - -A foundational library to analyze an OAI specification document for easier reasoning about the content. - -## What's inside? - -* An analyzer providing methods to walk the functional content of a specification -* A spec flattener producing a self-contained document bundle, while preserving `$ref`s -* A spec merger ("mixin") to merge several spec documents into a primary spec -* A spec "fixer" ensuring that response descriptions are non empty - -[Documentation](https://pkg.go.dev/github.com/go-openapi/analysis) - -## FAQ - -* Does this library support OpenAPI 3? - -> No. -> This package currently only supports OpenAPI 2.0 (aka Swagger 2.0). -> There is no plan to make it evolve toward supporting OpenAPI 3.x. -> This [discussion thread](https://github.com/go-openapi/spec/issues/21) relates the full story. diff --git a/vendor/github.com/go-openapi/analysis/analyzer.go b/vendor/github.com/go-openapi/analysis/analyzer.go deleted file mode 100644 index c17aee1b61..0000000000 --- a/vendor/github.com/go-openapi/analysis/analyzer.go +++ /dev/null @@ -1,1064 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package analysis - -import ( - "fmt" - slashpath "path" - "strconv" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -type referenceAnalysis struct { - schemas map[string]spec.Ref - responses map[string]spec.Ref - parameters map[string]spec.Ref - items map[string]spec.Ref - headerItems map[string]spec.Ref - parameterItems map[string]spec.Ref - allRefs map[string]spec.Ref - pathItems map[string]spec.Ref -} - -func (r *referenceAnalysis) addRef(key string, ref spec.Ref) { - r.allRefs["#"+key] = ref -} - -func (r *referenceAnalysis) addItemsRef(key string, items *spec.Items, location string) { - r.items["#"+key] = items.Ref - r.addRef(key, items.Ref) - if location == "header" { - // NOTE: in swagger 2.0, headers and parameters (but not body param schemas) are simple schemas - // and $ref are not supported here. However it is possible to analyze this. - r.headerItems["#"+key] = items.Ref - } else { - r.parameterItems["#"+key] = items.Ref - } -} - -func (r *referenceAnalysis) addSchemaRef(key string, ref SchemaRef) { - r.schemas["#"+key] = ref.Schema.Ref - r.addRef(key, ref.Schema.Ref) -} - -func (r *referenceAnalysis) addResponseRef(key string, resp *spec.Response) { - r.responses["#"+key] = resp.Ref - r.addRef(key, resp.Ref) -} - -func (r *referenceAnalysis) addParamRef(key string, param *spec.Parameter) { - r.parameters["#"+key] = param.Ref - r.addRef(key, param.Ref) -} - -func (r *referenceAnalysis) addPathItemRef(key string, pathItem *spec.PathItem) { - r.pathItems["#"+key] = pathItem.Ref - r.addRef(key, pathItem.Ref) -} - -type patternAnalysis struct { - parameters map[string]string - headers map[string]string - items map[string]string - schemas map[string]string - allPatterns map[string]string -} - -func (p *patternAnalysis) addPattern(key, pattern string) { - p.allPatterns["#"+key] = pattern -} - -func (p *patternAnalysis) addParameterPattern(key, pattern string) { - p.parameters["#"+key] = pattern - p.addPattern(key, pattern) -} - -func (p *patternAnalysis) addHeaderPattern(key, pattern string) { - p.headers["#"+key] = pattern - p.addPattern(key, pattern) -} - -func (p *patternAnalysis) addItemsPattern(key, pattern string) { - p.items["#"+key] = pattern - p.addPattern(key, pattern) -} - -func (p *patternAnalysis) addSchemaPattern(key, pattern string) { - p.schemas["#"+key] = pattern - p.addPattern(key, pattern) -} - -type enumAnalysis struct { - parameters map[string][]interface{} - headers map[string][]interface{} - items map[string][]interface{} - schemas map[string][]interface{} - allEnums map[string][]interface{} -} - -func (p *enumAnalysis) addEnum(key string, enum []interface{}) { - p.allEnums["#"+key] = enum -} - -func (p *enumAnalysis) addParameterEnum(key string, enum []interface{}) { - p.parameters["#"+key] = enum - p.addEnum(key, enum) -} - -func (p *enumAnalysis) addHeaderEnum(key string, enum []interface{}) { - p.headers["#"+key] = enum - p.addEnum(key, enum) -} - -func (p *enumAnalysis) addItemsEnum(key string, enum []interface{}) { - p.items["#"+key] = enum - p.addEnum(key, enum) -} - -func (p *enumAnalysis) addSchemaEnum(key string, enum []interface{}) { - p.schemas["#"+key] = enum - p.addEnum(key, enum) -} - -// New takes a swagger spec object and returns an analyzed spec document. -// The analyzed document contains a number of indices that make it easier to -// reason about semantics of a swagger specification for use in code generation -// or validation etc. -func New(doc *spec.Swagger) *Spec { - a := &Spec{ - spec: doc, - references: referenceAnalysis{}, - patterns: patternAnalysis{}, - enums: enumAnalysis{}, - } - a.reset() - a.initialize() - - return a -} - -// Spec is an analyzed specification object. It takes a swagger spec object and turns it into a registry -// with a bunch of utility methods to act on the information in the spec. -type Spec struct { - spec *spec.Swagger - consumes map[string]struct{} - produces map[string]struct{} - authSchemes map[string]struct{} - operations map[string]map[string]*spec.Operation - references referenceAnalysis - patterns patternAnalysis - enums enumAnalysis - allSchemas map[string]SchemaRef - allOfs map[string]SchemaRef -} - -func (s *Spec) reset() { - s.consumes = make(map[string]struct{}, 150) - s.produces = make(map[string]struct{}, 150) - s.authSchemes = make(map[string]struct{}, 150) - s.operations = make(map[string]map[string]*spec.Operation, 150) - s.allSchemas = make(map[string]SchemaRef, 150) - s.allOfs = make(map[string]SchemaRef, 150) - s.references.schemas = make(map[string]spec.Ref, 150) - s.references.pathItems = make(map[string]spec.Ref, 150) - s.references.responses = make(map[string]spec.Ref, 150) - s.references.parameters = make(map[string]spec.Ref, 150) - s.references.items = make(map[string]spec.Ref, 150) - s.references.headerItems = make(map[string]spec.Ref, 150) - s.references.parameterItems = make(map[string]spec.Ref, 150) - s.references.allRefs = make(map[string]spec.Ref, 150) - s.patterns.parameters = make(map[string]string, 150) - s.patterns.headers = make(map[string]string, 150) - s.patterns.items = make(map[string]string, 150) - s.patterns.schemas = make(map[string]string, 150) - s.patterns.allPatterns = make(map[string]string, 150) - s.enums.parameters = make(map[string][]interface{}, 150) - s.enums.headers = make(map[string][]interface{}, 150) - s.enums.items = make(map[string][]interface{}, 150) - s.enums.schemas = make(map[string][]interface{}, 150) - s.enums.allEnums = make(map[string][]interface{}, 150) -} - -func (s *Spec) reload() { - s.reset() - s.initialize() -} - -func (s *Spec) initialize() { - for _, c := range s.spec.Consumes { - s.consumes[c] = struct{}{} - } - for _, c := range s.spec.Produces { - s.produces[c] = struct{}{} - } - for _, ss := range s.spec.Security { - for k := range ss { - s.authSchemes[k] = struct{}{} - } - } - for path, pathItem := range s.AllPaths() { - s.analyzeOperations(path, &pathItem) //#nosec - } - - for name, parameter := range s.spec.Parameters { - refPref := slashpath.Join("/parameters", jsonpointer.Escape(name)) - if parameter.Items != nil { - s.analyzeItems("items", parameter.Items, refPref, "parameter") - } - if parameter.In == "body" && parameter.Schema != nil { - s.analyzeSchema("schema", parameter.Schema, refPref) - } - if parameter.Pattern != "" { - s.patterns.addParameterPattern(refPref, parameter.Pattern) - } - if len(parameter.Enum) > 0 { - s.enums.addParameterEnum(refPref, parameter.Enum) - } - } - - for name, response := range s.spec.Responses { - refPref := slashpath.Join("/responses", jsonpointer.Escape(name)) - for k, v := range response.Headers { - hRefPref := slashpath.Join(refPref, "headers", k) - if v.Items != nil { - s.analyzeItems("items", v.Items, hRefPref, "header") - } - if v.Pattern != "" { - s.patterns.addHeaderPattern(hRefPref, v.Pattern) - } - if len(v.Enum) > 0 { - s.enums.addHeaderEnum(hRefPref, v.Enum) - } - } - if response.Schema != nil { - s.analyzeSchema("schema", response.Schema, refPref) - } - } - - for name := range s.spec.Definitions { - schema := s.spec.Definitions[name] - s.analyzeSchema(name, &schema, "/definitions") - } - // TODO: after analyzing all things and flattening schemas etc - // resolve all the collected references to their final representations - // best put in a separate method because this could get expensive -} - -func (s *Spec) analyzeOperations(path string, pi *spec.PathItem) { - // TODO: resolve refs here? - // Currently, operations declared via pathItem $ref are known only after expansion - op := pi - if pi.Ref.String() != "" { - key := slashpath.Join("/paths", jsonpointer.Escape(path)) - s.references.addPathItemRef(key, pi) - } - s.analyzeOperation("GET", path, op.Get) - s.analyzeOperation("PUT", path, op.Put) - s.analyzeOperation("POST", path, op.Post) - s.analyzeOperation("PATCH", path, op.Patch) - s.analyzeOperation("DELETE", path, op.Delete) - s.analyzeOperation("HEAD", path, op.Head) - s.analyzeOperation("OPTIONS", path, op.Options) - for i, param := range op.Parameters { - refPref := slashpath.Join("/paths", jsonpointer.Escape(path), "parameters", strconv.Itoa(i)) - if param.Ref.String() != "" { - s.references.addParamRef(refPref, ¶m) //#nosec - } - if param.Pattern != "" { - s.patterns.addParameterPattern(refPref, param.Pattern) - } - if len(param.Enum) > 0 { - s.enums.addParameterEnum(refPref, param.Enum) - } - if param.Items != nil { - s.analyzeItems("items", param.Items, refPref, "parameter") - } - if param.Schema != nil { - s.analyzeSchema("schema", param.Schema, refPref) - } - } -} - -func (s *Spec) analyzeItems(name string, items *spec.Items, prefix, location string) { - if items == nil { - return - } - refPref := slashpath.Join(prefix, name) - s.analyzeItems(name, items.Items, refPref, location) - if items.Ref.String() != "" { - s.references.addItemsRef(refPref, items, location) - } - if items.Pattern != "" { - s.patterns.addItemsPattern(refPref, items.Pattern) - } - if len(items.Enum) > 0 { - s.enums.addItemsEnum(refPref, items.Enum) - } -} - -func (s *Spec) analyzeParameter(prefix string, i int, param spec.Parameter) { - refPref := slashpath.Join(prefix, "parameters", strconv.Itoa(i)) - if param.Ref.String() != "" { - s.references.addParamRef(refPref, ¶m) //#nosec - } - - if param.Pattern != "" { - s.patterns.addParameterPattern(refPref, param.Pattern) - } - - if len(param.Enum) > 0 { - s.enums.addParameterEnum(refPref, param.Enum) - } - - s.analyzeItems("items", param.Items, refPref, "parameter") - if param.In == "body" && param.Schema != nil { - s.analyzeSchema("schema", param.Schema, refPref) - } -} - -func (s *Spec) analyzeOperation(method, path string, op *spec.Operation) { - if op == nil { - return - } - - for _, c := range op.Consumes { - s.consumes[c] = struct{}{} - } - - for _, c := range op.Produces { - s.produces[c] = struct{}{} - } - - for _, ss := range op.Security { - for k := range ss { - s.authSchemes[k] = struct{}{} - } - } - - if _, ok := s.operations[method]; !ok { - s.operations[method] = make(map[string]*spec.Operation) - } - - s.operations[method][path] = op - prefix := slashpath.Join("/paths", jsonpointer.Escape(path), strings.ToLower(method)) - for i, param := range op.Parameters { - s.analyzeParameter(prefix, i, param) - } - - if op.Responses == nil { - return - } - - if op.Responses.Default != nil { - s.analyzeDefaultResponse(prefix, op.Responses.Default) - } - - for k, res := range op.Responses.StatusCodeResponses { - s.analyzeResponse(prefix, k, res) - } -} - -func (s *Spec) analyzeDefaultResponse(prefix string, res *spec.Response) { - refPref := slashpath.Join(prefix, "responses", "default") - if res.Ref.String() != "" { - s.references.addResponseRef(refPref, res) - } - - for k, v := range res.Headers { - hRefPref := slashpath.Join(refPref, "headers", k) - s.analyzeItems("items", v.Items, hRefPref, "header") - if v.Pattern != "" { - s.patterns.addHeaderPattern(hRefPref, v.Pattern) - } - } - - if res.Schema != nil { - s.analyzeSchema("schema", res.Schema, refPref) - } -} - -func (s *Spec) analyzeResponse(prefix string, k int, res spec.Response) { - refPref := slashpath.Join(prefix, "responses", strconv.Itoa(k)) - if res.Ref.String() != "" { - s.references.addResponseRef(refPref, &res) //#nosec - } - - for k, v := range res.Headers { - hRefPref := slashpath.Join(refPref, "headers", k) - s.analyzeItems("items", v.Items, hRefPref, "header") - if v.Pattern != "" { - s.patterns.addHeaderPattern(hRefPref, v.Pattern) - } - - if len(v.Enum) > 0 { - s.enums.addHeaderEnum(hRefPref, v.Enum) - } - } - - if res.Schema != nil { - s.analyzeSchema("schema", res.Schema, refPref) - } -} - -func (s *Spec) analyzeSchema(name string, schema *spec.Schema, prefix string) { - refURI := slashpath.Join(prefix, jsonpointer.Escape(name)) - schRef := SchemaRef{ - Name: name, - Schema: schema, - Ref: spec.MustCreateRef("#" + refURI), - TopLevel: prefix == "/definitions", - } - - s.allSchemas["#"+refURI] = schRef - - if schema.Ref.String() != "" { - s.references.addSchemaRef(refURI, schRef) - } - - if schema.Pattern != "" { - s.patterns.addSchemaPattern(refURI, schema.Pattern) - } - - if len(schema.Enum) > 0 { - s.enums.addSchemaEnum(refURI, schema.Enum) - } - - for k, v := range schema.Definitions { - v := v - s.analyzeSchema(k, &v, slashpath.Join(refURI, "definitions")) - } - - for k, v := range schema.Properties { - v := v - s.analyzeSchema(k, &v, slashpath.Join(refURI, "properties")) - } - - for k, v := range schema.PatternProperties { - v := v - // NOTE: swagger 2.0 does not support PatternProperties. - // However it is possible to analyze this in a schema - s.analyzeSchema(k, &v, slashpath.Join(refURI, "patternProperties")) - } - - for i := range schema.AllOf { - v := &schema.AllOf[i] - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "allOf")) - } - - if len(schema.AllOf) > 0 { - s.allOfs["#"+refURI] = schRef - } - - for i := range schema.AnyOf { - v := &schema.AnyOf[i] - // NOTE: swagger 2.0 does not support anyOf constructs. - // However it is possible to analyze this in a schema - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "anyOf")) - } - - for i := range schema.OneOf { - v := &schema.OneOf[i] - // NOTE: swagger 2.0 does not support oneOf constructs. - // However it is possible to analyze this in a schema - s.analyzeSchema(strconv.Itoa(i), v, slashpath.Join(refURI, "oneOf")) - } - - if schema.Not != nil { - // NOTE: swagger 2.0 does not support "not" constructs. - // However it is possible to analyze this in a schema - s.analyzeSchema("not", schema.Not, refURI) - } - - if schema.AdditionalProperties != nil && schema.AdditionalProperties.Schema != nil { - s.analyzeSchema("additionalProperties", schema.AdditionalProperties.Schema, refURI) - } - - if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil { - // NOTE: swagger 2.0 does not support AdditionalItems. - // However it is possible to analyze this in a schema - s.analyzeSchema("additionalItems", schema.AdditionalItems.Schema, refURI) - } - - if schema.Items != nil { - if schema.Items.Schema != nil { - s.analyzeSchema("items", schema.Items.Schema, refURI) - } - - for i := range schema.Items.Schemas { - sch := &schema.Items.Schemas[i] - s.analyzeSchema(strconv.Itoa(i), sch, slashpath.Join(refURI, "items")) - } - } -} - -// SecurityRequirement is a representation of a security requirement for an operation -type SecurityRequirement struct { - Name string - Scopes []string -} - -// SecurityRequirementsFor gets the security requirements for the operation -func (s *Spec) SecurityRequirementsFor(operation *spec.Operation) [][]SecurityRequirement { - if s.spec.Security == nil && operation.Security == nil { - return nil - } - - schemes := s.spec.Security - if operation.Security != nil { - schemes = operation.Security - } - - result := [][]SecurityRequirement{} - for _, scheme := range schemes { - if len(scheme) == 0 { - // append a zero object for anonymous - result = append(result, []SecurityRequirement{{}}) - - continue - } - - var reqs []SecurityRequirement - for k, v := range scheme { - if v == nil { - v = []string{} - } - reqs = append(reqs, SecurityRequirement{Name: k, Scopes: v}) - } - - result = append(result, reqs) - } - - return result -} - -// SecurityDefinitionsForRequirements gets the matching security definitions for a set of requirements -func (s *Spec) SecurityDefinitionsForRequirements(requirements []SecurityRequirement) map[string]spec.SecurityScheme { - result := make(map[string]spec.SecurityScheme) - - for _, v := range requirements { - if definition, ok := s.spec.SecurityDefinitions[v.Name]; ok { - if definition != nil { - result[v.Name] = *definition - } - } - } - - return result -} - -// SecurityDefinitionsFor gets the matching security definitions for a set of requirements -func (s *Spec) SecurityDefinitionsFor(operation *spec.Operation) map[string]spec.SecurityScheme { - requirements := s.SecurityRequirementsFor(operation) - if len(requirements) == 0 { - return nil - } - - result := make(map[string]spec.SecurityScheme) - for _, reqs := range requirements { - for _, v := range reqs { - if v.Name == "" { - // optional requirement - continue - } - - if _, ok := result[v.Name]; ok { - // duplicate requirement - continue - } - - if definition, ok := s.spec.SecurityDefinitions[v.Name]; ok { - if definition != nil { - result[v.Name] = *definition - } - } - } - } - - return result -} - -// ConsumesFor gets the mediatypes for the operation -func (s *Spec) ConsumesFor(operation *spec.Operation) []string { - if len(operation.Consumes) == 0 { - cons := make(map[string]struct{}, len(s.spec.Consumes)) - for _, k := range s.spec.Consumes { - cons[k] = struct{}{} - } - - return s.structMapKeys(cons) - } - - cons := make(map[string]struct{}, len(operation.Consumes)) - for _, c := range operation.Consumes { - cons[c] = struct{}{} - } - - return s.structMapKeys(cons) -} - -// ProducesFor gets the mediatypes for the operation -func (s *Spec) ProducesFor(operation *spec.Operation) []string { - if len(operation.Produces) == 0 { - prod := make(map[string]struct{}, len(s.spec.Produces)) - for _, k := range s.spec.Produces { - prod[k] = struct{}{} - } - - return s.structMapKeys(prod) - } - - prod := make(map[string]struct{}, len(operation.Produces)) - for _, c := range operation.Produces { - prod[c] = struct{}{} - } - - return s.structMapKeys(prod) -} - -func mapKeyFromParam(param *spec.Parameter) string { - return fmt.Sprintf("%s#%s", param.In, fieldNameFromParam(param)) -} - -func fieldNameFromParam(param *spec.Parameter) string { - // TODO: this should be x-go-name - if nm, ok := param.Extensions.GetString("go-name"); ok { - return nm - } - - return swag.ToGoName(param.Name) -} - -// ErrorOnParamFunc is a callback function to be invoked -// whenever an error is encountered while resolving references -// on parameters. -// -// This function takes as input the spec.Parameter which triggered the -// error and the error itself. -// -// If the callback function returns false, the calling function should bail. -// -// If it returns true, the calling function should continue evaluating parameters. -// A nil ErrorOnParamFunc must be evaluated as equivalent to panic(). -type ErrorOnParamFunc func(spec.Parameter, error) bool - -func (s *Spec) paramsAsMap(parameters []spec.Parameter, res map[string]spec.Parameter, callmeOnError ErrorOnParamFunc) { - for _, param := range parameters { - pr := param - if pr.Ref.String() == "" { - res[mapKeyFromParam(&pr)] = pr - - continue - } - - // resolve $ref - if callmeOnError == nil { - callmeOnError = func(_ spec.Parameter, err error) bool { - panic(err) - } - } - - obj, _, err := pr.Ref.GetPointer().Get(s.spec) - if err != nil { - if callmeOnError(param, fmt.Errorf("invalid reference: %q", pr.Ref.String())) { - continue - } - - break - } - - objAsParam, ok := obj.(spec.Parameter) - if !ok { - if callmeOnError(param, fmt.Errorf("resolved reference is not a parameter: %q", pr.Ref.String())) { - continue - } - - break - } - - pr = objAsParam - res[mapKeyFromParam(&pr)] = pr - } -} - -// ParametersFor the specified operation id. -// -// Assumes parameters properly resolve references if any and that -// such references actually resolve to a parameter object. -// Otherwise, panics. -func (s *Spec) ParametersFor(operationID string) []spec.Parameter { - return s.SafeParametersFor(operationID, nil) -} - -// SafeParametersFor the specified operation id. -// -// Does not assume parameters properly resolve references or that -// such references actually resolve to a parameter object. -// -// Upon error, invoke a ErrorOnParamFunc callback with the erroneous -// parameters. If the callback is set to nil, panics upon errors. -func (s *Spec) SafeParametersFor(operationID string, callmeOnError ErrorOnParamFunc) []spec.Parameter { - gatherParams := func(pi *spec.PathItem, op *spec.Operation) []spec.Parameter { - bag := make(map[string]spec.Parameter) - s.paramsAsMap(pi.Parameters, bag, callmeOnError) - s.paramsAsMap(op.Parameters, bag, callmeOnError) - - var res []spec.Parameter - for _, v := range bag { - res = append(res, v) - } - - return res - } - - for _, pi := range s.spec.Paths.Paths { - if pi.Get != nil && pi.Get.ID == operationID { - return gatherParams(&pi, pi.Get) //#nosec - } - if pi.Head != nil && pi.Head.ID == operationID { - return gatherParams(&pi, pi.Head) //#nosec - } - if pi.Options != nil && pi.Options.ID == operationID { - return gatherParams(&pi, pi.Options) //#nosec - } - if pi.Post != nil && pi.Post.ID == operationID { - return gatherParams(&pi, pi.Post) //#nosec - } - if pi.Patch != nil && pi.Patch.ID == operationID { - return gatherParams(&pi, pi.Patch) //#nosec - } - if pi.Put != nil && pi.Put.ID == operationID { - return gatherParams(&pi, pi.Put) //#nosec - } - if pi.Delete != nil && pi.Delete.ID == operationID { - return gatherParams(&pi, pi.Delete) //#nosec - } - } - - return nil -} - -// ParamsFor the specified method and path. Aggregates them with the defaults etc, so it's all the params that -// apply for the method and path. -// -// Assumes parameters properly resolve references if any and that -// such references actually resolve to a parameter object. -// Otherwise, panics. -func (s *Spec) ParamsFor(method, path string) map[string]spec.Parameter { - return s.SafeParamsFor(method, path, nil) -} - -// SafeParamsFor the specified method and path. Aggregates them with the defaults etc, so it's all the params that -// apply for the method and path. -// -// Does not assume parameters properly resolve references or that -// such references actually resolve to a parameter object. -// -// Upon error, invoke a ErrorOnParamFunc callback with the erroneous -// parameters. If the callback is set to nil, panics upon errors. -func (s *Spec) SafeParamsFor(method, path string, callmeOnError ErrorOnParamFunc) map[string]spec.Parameter { - res := make(map[string]spec.Parameter) - if pi, ok := s.spec.Paths.Paths[path]; ok { - s.paramsAsMap(pi.Parameters, res, callmeOnError) - s.paramsAsMap(s.operations[strings.ToUpper(method)][path].Parameters, res, callmeOnError) - } - - return res -} - -// OperationForName gets the operation for the given id -func (s *Spec) OperationForName(operationID string) (string, string, *spec.Operation, bool) { - for method, pathItem := range s.operations { - for path, op := range pathItem { - if operationID == op.ID { - return method, path, op, true - } - } - } - - return "", "", nil, false -} - -// OperationFor the given method and path -func (s *Spec) OperationFor(method, path string) (*spec.Operation, bool) { - if mp, ok := s.operations[strings.ToUpper(method)]; ok { - op, fn := mp[path] - - return op, fn - } - - return nil, false -} - -// Operations gathers all the operations specified in the spec document -func (s *Spec) Operations() map[string]map[string]*spec.Operation { - return s.operations -} - -func (s *Spec) structMapKeys(mp map[string]struct{}) []string { - if len(mp) == 0 { - return nil - } - - result := make([]string, 0, len(mp)) - for k := range mp { - result = append(result, k) - } - - return result -} - -// AllPaths returns all the paths in the swagger spec -func (s *Spec) AllPaths() map[string]spec.PathItem { - if s.spec == nil || s.spec.Paths == nil { - return nil - } - - return s.spec.Paths.Paths -} - -// OperationIDs gets all the operation ids based on method an dpath -func (s *Spec) OperationIDs() []string { - if len(s.operations) == 0 { - return nil - } - - result := make([]string, 0, len(s.operations)) - for method, v := range s.operations { - for p, o := range v { - if o.ID != "" { - result = append(result, o.ID) - } else { - result = append(result, fmt.Sprintf("%s %s", strings.ToUpper(method), p)) - } - } - } - - return result -} - -// OperationMethodPaths gets all the operation ids based on method an dpath -func (s *Spec) OperationMethodPaths() []string { - if len(s.operations) == 0 { - return nil - } - - result := make([]string, 0, len(s.operations)) - for method, v := range s.operations { - for p := range v { - result = append(result, fmt.Sprintf("%s %s", strings.ToUpper(method), p)) - } - } - - return result -} - -// RequiredConsumes gets all the distinct consumes that are specified in the specification document -func (s *Spec) RequiredConsumes() []string { - return s.structMapKeys(s.consumes) -} - -// RequiredProduces gets all the distinct produces that are specified in the specification document -func (s *Spec) RequiredProduces() []string { - return s.structMapKeys(s.produces) -} - -// RequiredSecuritySchemes gets all the distinct security schemes that are specified in the swagger spec -func (s *Spec) RequiredSecuritySchemes() []string { - return s.structMapKeys(s.authSchemes) -} - -// SchemaRef is a reference to a schema -type SchemaRef struct { - Name string - Ref spec.Ref - Schema *spec.Schema - TopLevel bool -} - -// SchemasWithAllOf returns schema references to all schemas that are defined -// with an allOf key -func (s *Spec) SchemasWithAllOf() (result []SchemaRef) { - for _, v := range s.allOfs { - result = append(result, v) - } - - return -} - -// AllDefinitions returns schema references for all the definitions that were discovered -func (s *Spec) AllDefinitions() (result []SchemaRef) { - for _, v := range s.allSchemas { - result = append(result, v) - } - - return -} - -// AllDefinitionReferences returns json refs for all the discovered schemas -func (s *Spec) AllDefinitionReferences() (result []string) { - for _, v := range s.references.schemas { - result = append(result, v.String()) - } - - return -} - -// AllParameterReferences returns json refs for all the discovered parameters -func (s *Spec) AllParameterReferences() (result []string) { - for _, v := range s.references.parameters { - result = append(result, v.String()) - } - - return -} - -// AllResponseReferences returns json refs for all the discovered responses -func (s *Spec) AllResponseReferences() (result []string) { - for _, v := range s.references.responses { - result = append(result, v.String()) - } - - return -} - -// AllPathItemReferences returns the references for all the items -func (s *Spec) AllPathItemReferences() (result []string) { - for _, v := range s.references.pathItems { - result = append(result, v.String()) - } - - return -} - -// AllItemsReferences returns the references for all the items in simple schemas (parameters or headers). -// -// NOTE: since Swagger 2.0 forbids $ref in simple params, this should always yield an empty slice for a valid -// Swagger 2.0 spec. -func (s *Spec) AllItemsReferences() (result []string) { - for _, v := range s.references.items { - result = append(result, v.String()) - } - - return -} - -// AllReferences returns all the references found in the document, with possible duplicates -func (s *Spec) AllReferences() (result []string) { - for _, v := range s.references.allRefs { - result = append(result, v.String()) - } - - return -} - -// AllRefs returns all the unique references found in the document -func (s *Spec) AllRefs() (result []spec.Ref) { - set := make(map[string]struct{}) - for _, v := range s.references.allRefs { - a := v.String() - if a == "" { - continue - } - - if _, ok := set[a]; !ok { - set[a] = struct{}{} - result = append(result, v) - } - } - - return -} - -func cloneStringMap(source map[string]string) map[string]string { - res := make(map[string]string, len(source)) - for k, v := range source { - res[k] = v - } - - return res -} - -func cloneEnumMap(source map[string][]interface{}) map[string][]interface{} { - res := make(map[string][]interface{}, len(source)) - for k, v := range source { - res[k] = v - } - - return res -} - -// ParameterPatterns returns all the patterns found in parameters -// the map is cloned to avoid accidental changes -func (s *Spec) ParameterPatterns() map[string]string { - return cloneStringMap(s.patterns.parameters) -} - -// HeaderPatterns returns all the patterns found in response headers -// the map is cloned to avoid accidental changes -func (s *Spec) HeaderPatterns() map[string]string { - return cloneStringMap(s.patterns.headers) -} - -// ItemsPatterns returns all the patterns found in simple array items -// the map is cloned to avoid accidental changes -func (s *Spec) ItemsPatterns() map[string]string { - return cloneStringMap(s.patterns.items) -} - -// SchemaPatterns returns all the patterns found in schemas -// the map is cloned to avoid accidental changes -func (s *Spec) SchemaPatterns() map[string]string { - return cloneStringMap(s.patterns.schemas) -} - -// AllPatterns returns all the patterns found in the spec -// the map is cloned to avoid accidental changes -func (s *Spec) AllPatterns() map[string]string { - return cloneStringMap(s.patterns.allPatterns) -} - -// ParameterEnums returns all the enums found in parameters -// the map is cloned to avoid accidental changes -func (s *Spec) ParameterEnums() map[string][]interface{} { - return cloneEnumMap(s.enums.parameters) -} - -// HeaderEnums returns all the enums found in response headers -// the map is cloned to avoid accidental changes -func (s *Spec) HeaderEnums() map[string][]interface{} { - return cloneEnumMap(s.enums.headers) -} - -// ItemsEnums returns all the enums found in simple array items -// the map is cloned to avoid accidental changes -func (s *Spec) ItemsEnums() map[string][]interface{} { - return cloneEnumMap(s.enums.items) -} - -// SchemaEnums returns all the enums found in schemas -// the map is cloned to avoid accidental changes -func (s *Spec) SchemaEnums() map[string][]interface{} { - return cloneEnumMap(s.enums.schemas) -} - -// AllEnums returns all the enums found in the spec -// the map is cloned to avoid accidental changes -func (s *Spec) AllEnums() map[string][]interface{} { - return cloneEnumMap(s.enums.allEnums) -} diff --git a/vendor/github.com/go-openapi/analysis/debug.go b/vendor/github.com/go-openapi/analysis/debug.go deleted file mode 100644 index 33c15704ec..0000000000 --- a/vendor/github.com/go-openapi/analysis/debug.go +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package analysis - -import ( - "os" - - "github.com/go-openapi/analysis/internal/debug" -) - -var debugLog = debug.GetLogger("analysis", os.Getenv("SWAGGER_DEBUG") != "") diff --git a/vendor/github.com/go-openapi/analysis/doc.go b/vendor/github.com/go-openapi/analysis/doc.go deleted file mode 100644 index e8d9f9b131..0000000000 --- a/vendor/github.com/go-openapi/analysis/doc.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/* -Package analysis provides methods to work with a Swagger specification document from -package go-openapi/spec. - -## Analyzing a specification - -An analysed specification object (type Spec) provides methods to work with swagger definition. - -## Flattening or expanding a specification - -Flattening a specification bundles all remote $ref in the main spec document. -Depending on flattening options, additional preprocessing may take place: - - full flattening: replacing all inline complex constructs by a named entry in #/definitions - - expand: replace all $ref's in the document by their expanded content - -## Merging several specifications - -Mixin several specifications merges all Swagger constructs, and warns about found conflicts. - -## Fixing a specification - -Unmarshalling a specification with golang json unmarshalling may lead to -some unwanted result on present but empty fields. - -## Analyzing a Swagger schema - -Swagger schemas are analyzed to determine their complexity and qualify their content. -*/ -package analysis diff --git a/vendor/github.com/go-openapi/analysis/fixer.go b/vendor/github.com/go-openapi/analysis/fixer.go deleted file mode 100644 index 7c2ca08416..0000000000 --- a/vendor/github.com/go-openapi/analysis/fixer.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package analysis - -import "github.com/go-openapi/spec" - -// FixEmptyResponseDescriptions replaces empty ("") response -// descriptions in the input with "(empty)" to ensure that the -// resulting Swagger is stays valid. The problem appears to arise -// from reading in valid specs that have a explicit response -// description of "" (valid, response.description is required), but -// due to zero values being omitted upon re-serializing (omitempty) we -// lose them unless we stick some chars in there. -func FixEmptyResponseDescriptions(s *spec.Swagger) { - for k, v := range s.Responses { - FixEmptyDesc(&v) //#nosec - s.Responses[k] = v - } - - if s.Paths == nil { - return - } - - for _, v := range s.Paths.Paths { - if v.Get != nil { - FixEmptyDescs(v.Get.Responses) - } - if v.Put != nil { - FixEmptyDescs(v.Put.Responses) - } - if v.Post != nil { - FixEmptyDescs(v.Post.Responses) - } - if v.Delete != nil { - FixEmptyDescs(v.Delete.Responses) - } - if v.Options != nil { - FixEmptyDescs(v.Options.Responses) - } - if v.Head != nil { - FixEmptyDescs(v.Head.Responses) - } - if v.Patch != nil { - FixEmptyDescs(v.Patch.Responses) - } - } -} - -// FixEmptyDescs adds "(empty)" as the description for any Response in -// the given Responses object that doesn't already have one. -func FixEmptyDescs(rs *spec.Responses) { - FixEmptyDesc(rs.Default) - for k, v := range rs.StatusCodeResponses { - FixEmptyDesc(&v) //#nosec - rs.StatusCodeResponses[k] = v - } -} - -// FixEmptyDesc adds "(empty)" as the description to the given -// Response object if it doesn't already have one and isn't a -// ref. No-op on nil input. -func FixEmptyDesc(rs *spec.Response) { - if rs == nil || rs.Description != "" || rs.Ref.Ref.GetURL() != nil { - return - } - rs.Description = "(empty)" -} diff --git a/vendor/github.com/go-openapi/analysis/flatten.go b/vendor/github.com/go-openapi/analysis/flatten.go deleted file mode 100644 index ebedcc9df3..0000000000 --- a/vendor/github.com/go-openapi/analysis/flatten.go +++ /dev/null @@ -1,814 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package analysis - -import ( - "fmt" - "log" - "path" - "sort" - "strings" - - "github.com/go-openapi/analysis/internal/flatten/normalize" - "github.com/go-openapi/analysis/internal/flatten/operations" - "github.com/go-openapi/analysis/internal/flatten/replace" - "github.com/go-openapi/analysis/internal/flatten/schutils" - "github.com/go-openapi/analysis/internal/flatten/sortref" - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" -) - -const definitionsPath = "#/definitions" - -// newRef stores information about refs created during the flattening process -type newRef struct { - key string - newName string - path string - isOAIGen bool - resolved bool - schema *spec.Schema - parents []string -} - -// context stores intermediary results from flatten -type context struct { - newRefs map[string]*newRef - warnings []string - resolved map[string]string -} - -func newContext() *context { - return &context{ - newRefs: make(map[string]*newRef, 150), - warnings: make([]string, 0), - resolved: make(map[string]string, 50), - } -} - -// Flatten an analyzed spec and produce a self-contained spec bundle. -// -// There is a minimal and a full flattening mode. -// -// Minimally flattening a spec means: -// - Expanding parameters, responses, path items, parameter items and header items (references to schemas are left -// unscathed) -// - Importing external (http, file) references so they become internal to the document -// - Moving every JSON pointer to a $ref to a named definition (i.e. the reworked spec does not contain pointers -// like "$ref": "#/definitions/myObject/allOfs/1") -// -// A minimally flattened spec thus guarantees the following properties: -// - all $refs point to a local definition (i.e. '#/definitions/...') -// - definitions are unique -// -// NOTE: arbitrary JSON pointers (other than $refs to top level definitions) are rewritten as definitions if they -// represent a complex schema or express commonality in the spec. -// Otherwise, they are simply expanded. -// Self-referencing JSON pointers cannot resolve to a type and trigger an error. -// -// Minimal flattening is necessary and sufficient for codegen rendering using go-swagger. -// -// Fully flattening a spec means: -// - Moving every complex inline schema to be a definition with an auto-generated name in a depth-first fashion. -// -// By complex, we mean every JSON object with some properties. -// Arrays, when they do not define a tuple, -// or empty objects with or without additionalProperties, are not considered complex and remain inline. -// -// NOTE: rewritten schemas get a vendor extension x-go-gen-location so we know from which part of the spec definitions -// have been created. -// -// Available flattening options: -// - Minimal: stops flattening after minimal $ref processing, leaving schema constructs untouched -// - Expand: expand all $ref's in the document (inoperant if Minimal set to true) -// - Verbose: croaks about name conflicts detected -// - RemoveUnused: removes unused parameters, responses and definitions after expansion/flattening -// -// NOTE: expansion removes all $ref save circular $ref, which remain in place -// -// TODO: additional options -// - ProgagateNameExtensions: ensure that created entries properly follow naming rules when their parent have set a -// x-go-name extension -// - LiftAllOfs: -// - limit the flattening of allOf members when simple objects -// - merge allOf with validation only -// - merge allOf with extensions only -// - ... -func Flatten(opts FlattenOpts) error { - debugLog("FlattenOpts: %#v", opts) - - opts.flattenContext = newContext() - - // 1. Recursively expand responses, parameters, path items and items in simple schemas. - // - // This simplifies the spec and leaves only the $ref's in schema objects. - if err := expand(&opts); err != nil { - return err - } - - // 2. Strip the current document from absolute $ref's that actually a in the root, - // so we can recognize them as proper definitions - // - // In particular, this works around issue go-openapi/spec#76: leading absolute file in $ref is stripped - if err := normalizeRef(&opts); err != nil { - return err - } - - // 3. Optionally remove shared parameters and responses already expanded (now unused). - // - // Operation parameters (i.e. under paths) remain. - if opts.RemoveUnused { - removeUnusedShared(&opts) - } - - // 4. Import all remote references. - if err := importReferences(&opts); err != nil { - return err - } - - // 5. full flattening: rewrite inline schemas (schemas that aren't simple types or arrays or maps) - if !opts.Minimal && !opts.Expand { - if err := nameInlinedSchemas(&opts); err != nil { - return err - } - } - - // 6. Rewrite JSON pointers other than $ref to named definitions - // and attempt to resolve conflicting names whenever possible. - if err := stripPointersAndOAIGen(&opts); err != nil { - return err - } - - // 7. Strip the spec from unused definitions - if opts.RemoveUnused { - removeUnused(&opts) - } - - // 8. Issue warning notifications, if any - opts.croak() - - // TODO: simplify known schema patterns to flat objects with properties - // examples: - // - lift simple allOf object, - // - empty allOf with validation only or extensions only - // - rework allOf arrays - // - rework allOf additionalProperties - - return nil -} - -func expand(opts *FlattenOpts) error { - if err := spec.ExpandSpec(opts.Swagger(), opts.ExpandOpts(!opts.Expand)); err != nil { - return err - } - - opts.Spec.reload() // re-analyze - - return nil -} - -// normalizeRef strips the current file from any absolute file $ref. This works around issue go-openapi/spec#76: -// leading absolute file in $ref is stripped -func normalizeRef(opts *FlattenOpts) error { - debugLog("normalizeRef") - - altered := false - for k, w := range opts.Spec.references.allRefs { - if !strings.HasPrefix(w.String(), opts.BasePath+definitionsPath) { // may be a mix of / and \, depending on OS - continue - } - - altered = true - debugLog("stripping absolute path for: %s", w.String()) - - // strip the base path from definition - if err := replace.UpdateRef(opts.Swagger(), k, - spec.MustCreateRef(path.Join(definitionsPath, path.Base(w.String())))); err != nil { - return err - } - } - - if altered { - opts.Spec.reload() // re-analyze - } - - return nil -} - -func removeUnusedShared(opts *FlattenOpts) { - opts.Swagger().Parameters = nil - opts.Swagger().Responses = nil - - opts.Spec.reload() // re-analyze -} - -func importReferences(opts *FlattenOpts) error { - var ( - imported bool - err error - ) - - for !imported && err == nil { - // iteratively import remote references until none left. - // This inlining deals with name conflicts by introducing auto-generated names ("OAIGen") - imported, err = importExternalReferences(opts) - - opts.Spec.reload() // re-analyze - } - - return err -} - -// nameInlinedSchemas replaces every complex inline construct by a named definition. -func nameInlinedSchemas(opts *FlattenOpts) error { - debugLog("nameInlinedSchemas") - - namer := &InlineSchemaNamer{ - Spec: opts.Swagger(), - Operations: operations.AllOpRefsByRef(opts.Spec, nil), - flattenContext: opts.flattenContext, - opts: opts, - } - - depthFirst := sortref.DepthFirst(opts.Spec.allSchemas) - for _, key := range depthFirst { - sch := opts.Spec.allSchemas[key] - if sch.Schema == nil || sch.Schema.Ref.String() != "" || sch.TopLevel { - continue - } - - asch, err := Schema(SchemaOpts{Schema: sch.Schema, Root: opts.Swagger(), BasePath: opts.BasePath}) - if err != nil { - return fmt.Errorf("schema analysis [%s]: %w", key, err) - } - - if asch.isAnalyzedAsComplex() { // move complex schemas to definitions - if err := namer.Name(key, sch.Schema, asch); err != nil { - return err - } - } - } - - opts.Spec.reload() // re-analyze - - return nil -} - -func removeUnused(opts *FlattenOpts) { - for removeUnusedSinglePass(opts) { - // continue until no unused definition remains - } -} - -func removeUnusedSinglePass(opts *FlattenOpts) (hasRemoved bool) { - expected := make(map[string]struct{}) - for k := range opts.Swagger().Definitions { - expected[path.Join(definitionsPath, jsonpointer.Escape(k))] = struct{}{} - } - - for _, k := range opts.Spec.AllDefinitionReferences() { - delete(expected, k) - } - - for k := range expected { - hasRemoved = true - debugLog("removing unused definition %s", path.Base(k)) - if opts.Verbose { - log.Printf("info: removing unused definition: %s", path.Base(k)) - } - delete(opts.Swagger().Definitions, path.Base(k)) - } - - opts.Spec.reload() // re-analyze - - return hasRemoved -} - -func importKnownRef(entry sortref.RefRevIdx, refStr, newName string, opts *FlattenOpts) error { - // rewrite ref with already resolved external ref (useful for cyclical refs): - // rewrite external refs to local ones - debugLog("resolving known ref [%s] to %s", refStr, newName) - - for _, key := range entry.Keys { - if err := replace.UpdateRef(opts.Swagger(), key, spec.MustCreateRef(path.Join(definitionsPath, newName))); err != nil { - return err - } - } - - return nil -} - -func importNewRef(entry sortref.RefRevIdx, refStr string, opts *FlattenOpts) error { - var ( - isOAIGen bool - newName string - ) - - debugLog("resolving schema from remote $ref [%s]", refStr) - - sch, err := spec.ResolveRefWithBase(opts.Swagger(), &entry.Ref, opts.ExpandOpts(false)) - if err != nil { - return fmt.Errorf("could not resolve schema: %w", err) - } - - // at this stage only $ref analysis matters - partialAnalyzer := &Spec{ - references: referenceAnalysis{}, - patterns: patternAnalysis{}, - enums: enumAnalysis{}, - } - partialAnalyzer.reset() - partialAnalyzer.analyzeSchema("", sch, "/") - - // now rewrite those refs with rebase - for key, ref := range partialAnalyzer.references.allRefs { - if err := replace.UpdateRef(sch, key, spec.MustCreateRef(normalize.RebaseRef(entry.Ref.String(), ref.String()))); err != nil { - return fmt.Errorf("failed to rewrite ref for key %q at %s: %w", key, entry.Ref.String(), err) - } - } - - // generate a unique name - isOAIGen means that a naming conflict was resolved by changing the name - newName, isOAIGen = uniqifyName(opts.Swagger().Definitions, nameFromRef(entry.Ref, opts)) - debugLog("new name for [%s]: %s - with name conflict:%t", strings.Join(entry.Keys, ", "), newName, isOAIGen) - - opts.flattenContext.resolved[refStr] = newName - - // rewrite the external refs to local ones - for _, key := range entry.Keys { - if err := replace.UpdateRef(opts.Swagger(), key, - spec.MustCreateRef(path.Join(definitionsPath, newName))); err != nil { - return err - } - - // keep track of created refs - resolved := false - if _, ok := opts.flattenContext.newRefs[key]; ok { - resolved = opts.flattenContext.newRefs[key].resolved - } - - debugLog("keeping track of ref: %s (%s), resolved: %t", key, newName, resolved) - opts.flattenContext.newRefs[key] = &newRef{ - key: key, - newName: newName, - path: path.Join(definitionsPath, newName), - isOAIGen: isOAIGen, - resolved: resolved, - schema: sch, - } - } - - // add the resolved schema to the definitions - schutils.Save(opts.Swagger(), newName, sch) - - return nil -} - -// importExternalReferences iteratively digs remote references and imports them into the main schema. -// -// At every iteration, new remotes may be found when digging deeper: they are rebased to the current schema before being imported. -// -// This returns true when no more remote references can be found. -func importExternalReferences(opts *FlattenOpts) (bool, error) { - debugLog("importExternalReferences") - - groupedRefs := sortref.ReverseIndex(opts.Spec.references.schemas, opts.BasePath) - sortedRefStr := make([]string, 0, len(groupedRefs)) - if opts.flattenContext == nil { - opts.flattenContext = newContext() - } - - // sort $ref resolution to ensure deterministic name conflict resolution - for refStr := range groupedRefs { - sortedRefStr = append(sortedRefStr, refStr) - } - sort.Strings(sortedRefStr) - - complete := true - - for _, refStr := range sortedRefStr { - entry := groupedRefs[refStr] - if entry.Ref.HasFragmentOnly { - continue - } - - complete = false - - newName := opts.flattenContext.resolved[refStr] - if newName != "" { - if err := importKnownRef(entry, refStr, newName, opts); err != nil { - return false, err - } - - continue - } - - // resolve schemas - if err := importNewRef(entry, refStr, opts); err != nil { - return false, err - } - } - - // maintains ref index entries - for k := range opts.flattenContext.newRefs { - r := opts.flattenContext.newRefs[k] - - // update tracking with resolved schemas - if r.schema.Ref.String() != "" { - ref := spec.MustCreateRef(r.path) - sch, err := spec.ResolveRefWithBase(opts.Swagger(), &ref, opts.ExpandOpts(false)) - if err != nil { - return false, fmt.Errorf("could not resolve schema: %w", err) - } - - r.schema = sch - } - - if r.path == k { - continue - } - - // update tracking with renamed keys: got a cascade of refs - renamed := *r - renamed.key = r.path - opts.flattenContext.newRefs[renamed.path] = &renamed - - // indirect ref - r.newName = path.Base(k) - r.schema = spec.RefSchema(r.path) - r.path = k - r.isOAIGen = strings.Contains(k, "OAIGen") - } - - return complete, nil -} - -// stripPointersAndOAIGen removes anonymous JSON pointers from spec and chain with name conflicts handler. -// This loops until the spec has no such pointer and all name conflicts have been reduced as much as possible. -func stripPointersAndOAIGen(opts *FlattenOpts) error { - // name all JSON pointers to anonymous documents - if err := namePointers(opts); err != nil { - return err - } - - // remove unnecessary OAIGen ref (created when flattening external refs creates name conflicts) - hasIntroducedPointerOrInline, ers := stripOAIGen(opts) - if ers != nil { - return ers - } - - // iterate as pointer or OAIGen resolution may introduce inline schemas or pointers - for hasIntroducedPointerOrInline { - if !opts.Minimal { - opts.Spec.reload() // re-analyze - if err := nameInlinedSchemas(opts); err != nil { - return err - } - } - - if err := namePointers(opts); err != nil { - return err - } - - // restrip and re-analyze - var err error - if hasIntroducedPointerOrInline, err = stripOAIGen(opts); err != nil { - return err - } - } - - return nil -} - -// stripOAIGen strips the spec from unnecessary OAIGen constructs, initially created to dedupe flattened definitions. -// -// A dedupe is deemed unnecessary whenever: -// - the only conflict is with its (single) parent: OAIGen is merged into its parent (reinlining) -// - there is a conflict with multiple parents: merge OAIGen in first parent, the rewrite other parents to point to -// the first parent. -// -// This function returns true whenever it re-inlined a complex schema, so the caller may chose to iterate -// pointer and name resolution again. -func stripOAIGen(opts *FlattenOpts) (bool, error) { - debugLog("stripOAIGen") - replacedWithComplex := false - - // figure out referers of OAIGen definitions (doing it before the ref start mutating) - for _, r := range opts.flattenContext.newRefs { - updateRefParents(opts.Spec.references.allRefs, r) - } - - for k := range opts.flattenContext.newRefs { - r := opts.flattenContext.newRefs[k] - debugLog("newRefs[%s]: isOAIGen: %t, resolved: %t, name: %s, path:%s, #parents: %d, parents: %v, ref: %s", - k, r.isOAIGen, r.resolved, r.newName, r.path, len(r.parents), r.parents, r.schema.Ref.String()) - - if !r.isOAIGen || len(r.parents) == 0 { - continue - } - - hasReplacedWithComplex, err := stripOAIGenForRef(opts, k, r) - if err != nil { - return replacedWithComplex, err - } - - replacedWithComplex = replacedWithComplex || hasReplacedWithComplex - } - - debugLog("replacedWithComplex: %t", replacedWithComplex) - opts.Spec.reload() // re-analyze - - return replacedWithComplex, nil -} - -// updateRefParents updates all parents of an updated $ref -func updateRefParents(allRefs map[string]spec.Ref, r *newRef) { - if !r.isOAIGen || r.resolved { // bail on already resolved entries (avoid looping) - return - } - for k, v := range allRefs { - if r.path != v.String() { - continue - } - - found := false - for _, p := range r.parents { - if p == k { - found = true - - break - } - } - if !found { - r.parents = append(r.parents, k) - } - } -} - -func stripOAIGenForRef(opts *FlattenOpts, k string, r *newRef) (bool, error) { - replacedWithComplex := false - - pr := sortref.TopmostFirst(r.parents) - - // rewrite first parent schema in hierarchical then lexicographical order - debugLog("rewrite first parent %s with schema", pr[0]) - if err := replace.UpdateRefWithSchema(opts.Swagger(), pr[0], r.schema); err != nil { - return false, err - } - - if pa, ok := opts.flattenContext.newRefs[pr[0]]; ok && pa.isOAIGen { - // update parent in ref index entry - debugLog("update parent entry: %s", pr[0]) - pa.schema = r.schema - pa.resolved = false - replacedWithComplex = true - } - - // rewrite other parents to point to first parent - if len(pr) > 1 { - for _, p := range pr[1:] { - replacingRef := spec.MustCreateRef(pr[0]) - - // set complex when replacing ref is an anonymous jsonpointer: further processing may be required - replacedWithComplex = replacedWithComplex || path.Dir(replacingRef.String()) != definitionsPath - debugLog("rewrite parent with ref: %s", replacingRef.String()) - - // NOTE: it is possible at this stage to introduce json pointers (to non-definitions places). - // Those are stripped later on. - if err := replace.UpdateRef(opts.Swagger(), p, replacingRef); err != nil { - return false, err - } - - if pa, ok := opts.flattenContext.newRefs[p]; ok && pa.isOAIGen { - // update parent in ref index - debugLog("update parent entry: %s", p) - pa.schema = r.schema - pa.resolved = false - replacedWithComplex = true - } - } - } - - // remove OAIGen definition - debugLog("removing definition %s", path.Base(r.path)) - delete(opts.Swagger().Definitions, path.Base(r.path)) - - // propagate changes in ref index for keys which have this one as a parent - for kk, value := range opts.flattenContext.newRefs { - if kk == k || !value.isOAIGen || value.resolved { - continue - } - - found := false - newParents := make([]string, 0, len(value.parents)) - for _, parent := range value.parents { - switch { - case parent == r.path: - found = true - parent = pr[0] - case strings.HasPrefix(parent, r.path+"/"): - found = true - parent = path.Join(pr[0], strings.TrimPrefix(parent, r.path)) - } - - newParents = append(newParents, parent) - } - - if found { - value.parents = newParents - } - } - - // mark naming conflict as resolved - debugLog("marking naming conflict resolved for key: %s", r.key) - opts.flattenContext.newRefs[r.key].isOAIGen = false - opts.flattenContext.newRefs[r.key].resolved = true - - // determine if the previous substitution did inline a complex schema - if r.schema != nil && r.schema.Ref.String() == "" { // inline schema - asch, err := Schema(SchemaOpts{Schema: r.schema, Root: opts.Swagger(), BasePath: opts.BasePath}) - if err != nil { - return false, err - } - - debugLog("re-inlined schema: parent: %s, %t", pr[0], asch.isAnalyzedAsComplex()) - replacedWithComplex = replacedWithComplex || !(path.Dir(pr[0]) == definitionsPath) && asch.isAnalyzedAsComplex() - } - - return replacedWithComplex, nil -} - -// namePointers replaces all JSON pointers to anonymous documents by a $ref to a new named definitions. -// -// This is carried on depth-first. Pointers to $refs which are top level definitions are replaced by the $ref itself. -// Pointers to simple types are expanded, unless they express commonality (i.e. several such $ref are used). -func namePointers(opts *FlattenOpts) error { - debugLog("name pointers") - - refsToReplace := make(map[string]SchemaRef, len(opts.Spec.references.schemas)) - for k, ref := range opts.Spec.references.allRefs { - debugLog("name pointers: %q => %#v", k, ref) - if path.Dir(ref.String()) == definitionsPath { - // this a ref to a top-level definition: ok - continue - } - - result, err := replace.DeepestRef(opts.Swagger(), opts.ExpandOpts(false), ref) - if err != nil { - return fmt.Errorf("at %s, %w", k, err) - } - - replacingRef := result.Ref - sch := result.Schema - if opts.flattenContext != nil { - opts.flattenContext.warnings = append(opts.flattenContext.warnings, result.Warnings...) - } - - debugLog("planning pointer to replace at %s: %s, resolved to: %s", k, ref.String(), replacingRef.String()) - refsToReplace[k] = SchemaRef{ - Name: k, // caller - Ref: replacingRef, // called - Schema: sch, - TopLevel: path.Dir(replacingRef.String()) == definitionsPath, - } - } - - depthFirst := sortref.DepthFirst(refsToReplace) - namer := &InlineSchemaNamer{ - Spec: opts.Swagger(), - Operations: operations.AllOpRefsByRef(opts.Spec, nil), - flattenContext: opts.flattenContext, - opts: opts, - } - - for _, key := range depthFirst { - v := refsToReplace[key] - // update current replacement, which may have been updated by previous changes of deeper elements - result, erd := replace.DeepestRef(opts.Swagger(), opts.ExpandOpts(false), v.Ref) - if erd != nil { - return fmt.Errorf("at %s, %w", key, erd) - } - - if opts.flattenContext != nil { - opts.flattenContext.warnings = append(opts.flattenContext.warnings, result.Warnings...) - } - - v.Ref = result.Ref - v.Schema = result.Schema - v.TopLevel = path.Dir(result.Ref.String()) == definitionsPath - debugLog("replacing pointer at %s: resolved to: %s", key, v.Ref.String()) - - if v.TopLevel { - debugLog("replace pointer %s by canonical definition: %s", key, v.Ref.String()) - - // if the schema is a $ref to a top level definition, just rewrite the pointer to this $ref - if err := replace.UpdateRef(opts.Swagger(), key, v.Ref); err != nil { - return err - } - - continue - } - - if err := flattenAnonPointer(key, v, refsToReplace, namer, opts); err != nil { - return err - } - } - - opts.Spec.reload() // re-analyze - - return nil -} - -func flattenAnonPointer(key string, v SchemaRef, refsToReplace map[string]SchemaRef, namer *InlineSchemaNamer, opts *FlattenOpts) error { - // this is a JSON pointer to an anonymous document (internal or external): - // create a definition for this schema when: - // - it is a complex schema - // - or it is pointed by more than one $ref (i.e. expresses commonality) - // otherwise, expand the pointer (single reference to a simple type) - // - // The named definition for this follows the target's key, not the caller's - debugLog("namePointers at %s for %s", key, v.Ref.String()) - - // qualify the expanded schema - asch, ers := Schema(SchemaOpts{Schema: v.Schema, Root: opts.Swagger(), BasePath: opts.BasePath}) - if ers != nil { - return fmt.Errorf("schema analysis [%s]: %w", key, ers) - } - callers := make([]string, 0, 64) - - debugLog("looking for callers") - - an := New(opts.Swagger()) - for k, w := range an.references.allRefs { - r, err := replace.DeepestRef(opts.Swagger(), opts.ExpandOpts(false), w) - if err != nil { - return fmt.Errorf("at %s, %w", key, err) - } - - if opts.flattenContext != nil { - opts.flattenContext.warnings = append(opts.flattenContext.warnings, r.Warnings...) - } - - if r.Ref.String() == v.Ref.String() { - callers = append(callers, k) - } - } - - debugLog("callers for %s: %d", v.Ref.String(), len(callers)) - if len(callers) == 0 { - // has already been updated and resolved - return nil - } - - parts := sortref.KeyParts(v.Ref.String()) - debugLog("number of callers for %s: %d", v.Ref.String(), len(callers)) - - // identifying edge case when the namer did nothing because we point to a non-schema object - // no definition is created and we expand the $ref for all callers - debugLog("decide what to do with the schema pointed to: asch.IsSimpleSchema=%t, len(callers)=%d, parts.IsSharedParam=%t, parts.IsSharedResponse=%t", - asch.IsSimpleSchema, len(callers), parts.IsSharedParam(), parts.IsSharedResponse(), - ) - - if (!asch.IsSimpleSchema || len(callers) > 1) && !parts.IsSharedParam() && !parts.IsSharedResponse() { - debugLog("replace JSON pointer at [%s] by definition: %s", key, v.Ref.String()) - if err := namer.Name(v.Ref.String(), v.Schema, asch); err != nil { - return err - } - - // regular case: we named the $ref as a definition, and we move all callers to this new $ref - for _, caller := range callers { - if caller == key { - continue - } - - // move $ref for next to resolve - debugLog("identified caller of %s at [%s]", v.Ref.String(), caller) - c := refsToReplace[caller] - c.Ref = v.Ref - refsToReplace[caller] = c - } - - return nil - } - - // everything that is a simple schema and not factorizable is expanded - debugLog("expand JSON pointer for key=%s", key) - - if err := replace.UpdateRefWithSchema(opts.Swagger(), key, v.Schema); err != nil { - return err - } - // NOTE: there is no other caller to update - - return nil -} diff --git a/vendor/github.com/go-openapi/analysis/flatten_name.go b/vendor/github.com/go-openapi/analysis/flatten_name.go deleted file mode 100644 index c7d7938ebe..0000000000 --- a/vendor/github.com/go-openapi/analysis/flatten_name.go +++ /dev/null @@ -1,308 +0,0 @@ -package analysis - -import ( - "fmt" - "path" - "sort" - "strings" - - "github.com/go-openapi/analysis/internal/flatten/operations" - "github.com/go-openapi/analysis/internal/flatten/replace" - "github.com/go-openapi/analysis/internal/flatten/schutils" - "github.com/go-openapi/analysis/internal/flatten/sortref" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -// InlineSchemaNamer finds a new name for an inlined type -type InlineSchemaNamer struct { - Spec *spec.Swagger - Operations map[string]operations.OpRef - flattenContext *context - opts *FlattenOpts -} - -// Name yields a new name for the inline schema -func (isn *InlineSchemaNamer) Name(key string, schema *spec.Schema, aschema *AnalyzedSchema) error { - debugLog("naming inlined schema at %s", key) - - parts := sortref.KeyParts(key) - for _, name := range namesFromKey(parts, aschema, isn.Operations) { - if name == "" { - continue - } - - // create unique name - mangle := mangler(isn.opts) - newName, isOAIGen := uniqifyName(isn.Spec.Definitions, mangle(name)) - - // clone schema - sch := schutils.Clone(schema) - - // replace values on schema - debugLog("rewriting schema to ref: key=%s with new name: %s", key, newName) - if err := replace.RewriteSchemaToRef(isn.Spec, key, - spec.MustCreateRef(path.Join(definitionsPath, newName))); err != nil { - return fmt.Errorf("error while creating definition %q from inline schema: %w", newName, err) - } - - // rewrite any dependent $ref pointing to this place, - // when not already pointing to a top-level definition. - // - // NOTE: this is important if such referers use arbitrary JSON pointers. - an := New(isn.Spec) - for k, v := range an.references.allRefs { - r, erd := replace.DeepestRef(isn.opts.Swagger(), isn.opts.ExpandOpts(false), v) - if erd != nil { - return fmt.Errorf("at %s, %w", k, erd) - } - - if isn.opts.flattenContext != nil { - isn.opts.flattenContext.warnings = append(isn.opts.flattenContext.warnings, r.Warnings...) - } - - if r.Ref.String() != key && (r.Ref.String() != path.Join(definitionsPath, newName) || path.Dir(v.String()) == definitionsPath) { - continue - } - - debugLog("found a $ref to a rewritten schema: %s points to %s", k, v.String()) - - // rewrite $ref to the new target - if err := replace.UpdateRef(isn.Spec, k, - spec.MustCreateRef(path.Join(definitionsPath, newName))); err != nil { - return err - } - } - - // NOTE: this extension is currently not used by go-swagger (provided for information only) - sch.AddExtension("x-go-gen-location", GenLocation(parts)) - - // save cloned schema to definitions - schutils.Save(isn.Spec, newName, sch) - - // keep track of created refs - if isn.flattenContext == nil { - continue - } - - debugLog("track created ref: key=%s, newName=%s, isOAIGen=%t", key, newName, isOAIGen) - resolved := false - - if _, ok := isn.flattenContext.newRefs[key]; ok { - resolved = isn.flattenContext.newRefs[key].resolved - } - - isn.flattenContext.newRefs[key] = &newRef{ - key: key, - newName: newName, - path: path.Join(definitionsPath, newName), - isOAIGen: isOAIGen, - resolved: resolved, - schema: sch, - } - } - - return nil -} - -// uniqifyName yields a unique name for a definition -func uniqifyName(definitions spec.Definitions, name string) (string, bool) { - isOAIGen := false - if name == "" { - name = "oaiGen" - isOAIGen = true - } - - if len(definitions) == 0 { - return name, isOAIGen - } - - unq := true - for k := range definitions { - if strings.EqualFold(k, name) { - unq = false - - break - } - } - - if unq { - return name, isOAIGen - } - - name += "OAIGen" - isOAIGen = true - var idx int - unique := name - _, known := definitions[unique] - - for known { - idx++ - unique = fmt.Sprintf("%s%d", name, idx) - _, known = definitions[unique] - } - - return unique, isOAIGen -} - -func namesFromKey(parts sortref.SplitKey, aschema *AnalyzedSchema, operations map[string]operations.OpRef) []string { - var ( - baseNames [][]string - startIndex int - ) - - switch { - case parts.IsOperation(): - baseNames, startIndex = namesForOperation(parts, operations) - case parts.IsDefinition(): - baseNames, startIndex = namesForDefinition(parts) - default: - // this a non-standard pointer: build a name by concatenating its parts - baseNames = [][]string{parts} - startIndex = len(baseNames) + 1 - } - - result := make([]string, 0, len(baseNames)) - for _, segments := range baseNames { - nm := parts.BuildName(segments, startIndex, partAdder(aschema)) - if nm == "" { - continue - } - - result = append(result, nm) - } - sort.Strings(result) - - debugLog("names from parts: %v => %v", parts, result) - return result -} - -func namesForParam(parts sortref.SplitKey, operations map[string]operations.OpRef) ([][]string, int) { - var ( - baseNames [][]string - startIndex int - ) - - piref := parts.PathItemRef() - if piref.String() != "" && parts.IsOperationParam() { - if op, ok := operations[piref.String()]; ok { - startIndex = 5 - baseNames = append(baseNames, []string{op.ID, "params", "body"}) - } - } else if parts.IsSharedOperationParam() { - pref := parts.PathRef() - for k, v := range operations { - if strings.HasPrefix(k, pref.String()) { - startIndex = 4 - baseNames = append(baseNames, []string{v.ID, "params", "body"}) - } - } - } - - return baseNames, startIndex -} - -func namesForOperation(parts sortref.SplitKey, operations map[string]operations.OpRef) ([][]string, int) { - var ( - baseNames [][]string - startIndex int - ) - - // params - if parts.IsOperationParam() || parts.IsSharedOperationParam() { - baseNames, startIndex = namesForParam(parts, operations) - } - - // responses - if parts.IsOperationResponse() { - piref := parts.PathItemRef() - if piref.String() != "" { - if op, ok := operations[piref.String()]; ok { - startIndex = 6 - baseNames = append(baseNames, []string{op.ID, parts.ResponseName(), "body"}) - } - } - } - - return baseNames, startIndex -} - -func namesForDefinition(parts sortref.SplitKey) ([][]string, int) { - nm := parts.DefinitionName() - if nm != "" { - return [][]string{{parts.DefinitionName()}}, 2 - } - - return [][]string{}, 0 -} - -// partAdder knows how to interpret a schema when it comes to build a name from parts -func partAdder(aschema *AnalyzedSchema) sortref.PartAdder { - return func(part string) []string { - segments := make([]string, 0, 2) - - if part == "items" || part == "additionalItems" { - if aschema.IsTuple || aschema.IsTupleWithExtra { - segments = append(segments, "tuple") - } else { - segments = append(segments, "items") - } - - if part == "additionalItems" { - segments = append(segments, part) - } - - return segments - } - - segments = append(segments, part) - - return segments - } -} - -func mangler(o *FlattenOpts) func(string) string { - if o.KeepNames { - return func(in string) string { return in } - } - - return swag.ToJSONName -} - -func nameFromRef(ref spec.Ref, o *FlattenOpts) string { - mangle := mangler(o) - - u := ref.GetURL() - if u.Fragment != "" { - return mangle(path.Base(u.Fragment)) - } - - if u.Path != "" { - bn := path.Base(u.Path) - if bn != "" && bn != "/" { - ext := path.Ext(bn) - if ext != "" { - return mangle(bn[:len(bn)-len(ext)]) - } - - return mangle(bn) - } - } - - return mangle(strings.ReplaceAll(u.Host, ".", " ")) -} - -// GenLocation indicates from which section of the specification (models or operations) a definition has been created. -// -// This is reflected in the output spec with a "x-go-gen-location" extension. At the moment, this is provided -// for information only. -func GenLocation(parts sortref.SplitKey) string { - switch { - case parts.IsOperation(): - return "operations" - case parts.IsDefinition(): - return "models" - default: - return "" - } -} diff --git a/vendor/github.com/go-openapi/analysis/flatten_options.go b/vendor/github.com/go-openapi/analysis/flatten_options.go deleted file mode 100644 index c943fe1e84..0000000000 --- a/vendor/github.com/go-openapi/analysis/flatten_options.go +++ /dev/null @@ -1,79 +0,0 @@ -package analysis - -import ( - "log" - - "github.com/go-openapi/spec" -) - -// FlattenOpts configuration for flattening a swagger specification. -// -// The BasePath parameter is used to locate remote relative $ref found in the specification. -// This path is a file: it points to the location of the root document and may be either a local -// file path or a URL. -// -// If none specified, relative references (e.g. "$ref": "folder/schema.yaml#/definitions/...") -// found in the spec are searched from the current working directory. -type FlattenOpts struct { - Spec *Spec // The analyzed spec to work with - flattenContext *context // Internal context to track flattening activity - - BasePath string // The location of the root document for this spec to resolve relative $ref - - // Flattening options - Expand bool // When true, skip flattening the spec and expand it instead (if Minimal is false) - Minimal bool // When true, do not decompose complex structures such as allOf - Verbose bool // enable some reporting on possible name conflicts detected - RemoveUnused bool // When true, remove unused parameters, responses and definitions after expansion/flattening - ContinueOnError bool // Continue when spec expansion issues are found - KeepNames bool // Do not attempt to jsonify names from references when flattening - - /* Extra keys */ - _ struct{} // require keys -} - -// ExpandOpts creates a spec.ExpandOptions to configure expanding a specification document. -func (f *FlattenOpts) ExpandOpts(skipSchemas bool) *spec.ExpandOptions { - return &spec.ExpandOptions{ - RelativeBase: f.BasePath, - SkipSchemas: skipSchemas, - ContinueOnError: f.ContinueOnError, - } -} - -// Swagger gets the swagger specification for this flatten operation -func (f *FlattenOpts) Swagger() *spec.Swagger { - return f.Spec.spec -} - -// croak logs notifications and warnings about valid, but possibly unwanted constructs resulting -// from flattening a spec -func (f *FlattenOpts) croak() { - if !f.Verbose { - return - } - - reported := make(map[string]bool, len(f.flattenContext.newRefs)) - for _, v := range f.Spec.references.allRefs { - // warns about duplicate handling - for _, r := range f.flattenContext.newRefs { - if r.isOAIGen && r.path == v.String() { - reported[r.newName] = true - } - } - } - - for k := range reported { - log.Printf("warning: duplicate flattened definition name resolved as %s", k) - } - - // warns about possible type mismatches - uniqueMsg := make(map[string]bool) - for _, msg := range f.flattenContext.warnings { - if _, ok := uniqueMsg[msg]; ok { - continue - } - log.Printf("warning: %s", msg) - uniqueMsg[msg] = true - } -} diff --git a/vendor/github.com/go-openapi/analysis/internal/debug/debug.go b/vendor/github.com/go-openapi/analysis/internal/debug/debug.go deleted file mode 100644 index 39f55a97bf..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/debug/debug.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package debug - -import ( - "fmt" - "log" - "os" - "path/filepath" - "runtime" -) - -var ( - output = os.Stdout -) - -// GetLogger provides a prefix debug logger -func GetLogger(prefix string, debug bool) func(string, ...interface{}) { - if debug { - logger := log.New(output, prefix+":", log.LstdFlags) - - return func(msg string, args ...interface{}) { - _, file1, pos1, _ := runtime.Caller(1) - logger.Printf("%s:%d: %s", filepath.Base(file1), pos1, fmt.Sprintf(msg, args...)) - } - } - - return func(_ string, _ ...interface{}) {} -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/normalize/normalize.go b/vendor/github.com/go-openapi/analysis/internal/flatten/normalize/normalize.go deleted file mode 100644 index 8c9df0580d..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/normalize/normalize.go +++ /dev/null @@ -1,87 +0,0 @@ -package normalize - -import ( - "net/url" - "path" - "path/filepath" - "strings" - - "github.com/go-openapi/spec" -) - -// RebaseRef rebases a remote ref relative to a base ref. -// -// NOTE: does not support JSONschema ID for $ref (we assume we are working with swagger specs here). -// -// NOTE(windows): -// * refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec) -// * "/ in paths may appear as escape sequences -func RebaseRef(baseRef string, ref string) string { - baseRef, _ = url.PathUnescape(baseRef) - ref, _ = url.PathUnescape(ref) - - if baseRef == "" || baseRef == "." || strings.HasPrefix(baseRef, "#") { - return ref - } - - parts := strings.Split(ref, "#") - - baseParts := strings.Split(baseRef, "#") - baseURL, _ := url.Parse(baseParts[0]) - if strings.HasPrefix(ref, "#") { - if baseURL.Host == "" { - return strings.Join([]string{baseParts[0], parts[1]}, "#") - } - - return strings.Join([]string{baseParts[0], parts[1]}, "#") - } - - refURL, _ := url.Parse(parts[0]) - if refURL.Host != "" || filepath.IsAbs(parts[0]) { - // not rebasing an absolute path - return ref - } - - // there is a relative path - var basePath string - if baseURL.Host != "" { - // when there is a host, standard URI rules apply (with "/") - baseURL.Path = path.Dir(baseURL.Path) - baseURL.Path = path.Join(baseURL.Path, "/"+parts[0]) - - return baseURL.String() - } - - // this is a local relative path - // basePart[0] and parts[0] are local filesystem directories/files - basePath = filepath.Dir(baseParts[0]) - relPath := filepath.Join(basePath, string(filepath.Separator)+parts[0]) - if len(parts) > 1 { - return strings.Join([]string{relPath, parts[1]}, "#") - } - - return relPath -} - -// Path renders absolute path on remote file refs -// -// NOTE(windows): -// * refs are assumed to have been normalized with drive letter lower cased (from go-openapi/spec) -// * "/ in paths may appear as escape sequences -func Path(ref spec.Ref, basePath string) string { - uri, _ := url.PathUnescape(ref.String()) - if ref.HasFragmentOnly || filepath.IsAbs(uri) { - return uri - } - - refURL, _ := url.Parse(uri) - if refURL.Host != "" { - return uri - } - - parts := strings.Split(uri, "#") - // BasePath, parts[0] are local filesystem directories, guaranteed to be absolute at this stage - parts[0] = filepath.Join(filepath.Dir(basePath), parts[0]) - - return strings.Join(parts, "#") -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/operations/operations.go b/vendor/github.com/go-openapi/analysis/internal/flatten/operations/operations.go deleted file mode 100644 index 7f3a2b8717..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/operations/operations.go +++ /dev/null @@ -1,90 +0,0 @@ -package operations - -import ( - "path" - "sort" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -// AllOpRefsByRef returns an index of sortable operations -func AllOpRefsByRef(specDoc Provider, operationIDs []string) map[string]OpRef { - return OpRefsByRef(GatherOperations(specDoc, operationIDs)) -} - -// OpRefsByRef indexes a map of sortable operations -func OpRefsByRef(oprefs map[string]OpRef) map[string]OpRef { - result := make(map[string]OpRef, len(oprefs)) - for _, v := range oprefs { - result[v.Ref.String()] = v - } - - return result -} - -// OpRef is an indexable, sortable operation -type OpRef struct { - Method string - Path string - Key string - ID string - Op *spec.Operation - Ref spec.Ref -} - -// OpRefs is a sortable collection of operations -type OpRefs []OpRef - -func (o OpRefs) Len() int { return len(o) } -func (o OpRefs) Swap(i, j int) { o[i], o[j] = o[j], o[i] } -func (o OpRefs) Less(i, j int) bool { return o[i].Key < o[j].Key } - -// Provider knows how to collect operations from a spec -type Provider interface { - Operations() map[string]map[string]*spec.Operation -} - -// GatherOperations builds a map of sorted operations from a spec -func GatherOperations(specDoc Provider, operationIDs []string) map[string]OpRef { - var oprefs OpRefs - - for method, pathItem := range specDoc.Operations() { - for pth, operation := range pathItem { - vv := *operation - oprefs = append(oprefs, OpRef{ - Key: swag.ToGoName(strings.ToLower(method) + " " + pth), - Method: method, - Path: pth, - ID: vv.ID, - Op: &vv, - Ref: spec.MustCreateRef("#" + path.Join("/paths", jsonpointer.Escape(pth), method)), - }) - } - } - - sort.Sort(oprefs) - - operations := make(map[string]OpRef) - for _, opr := range oprefs { - nm := opr.ID - if nm == "" { - nm = opr.Key - } - - oo, found := operations[nm] - if found && oo.Method != opr.Method && oo.Path != opr.Path { - nm = opr.Key - } - - if len(operationIDs) == 0 || swag.ContainsStrings(operationIDs, opr.ID) || swag.ContainsStrings(operationIDs, nm) { - opr.ID = nm - opr.Op.ID = nm - operations[nm] = opr - } - } - - return operations -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/replace/replace.go b/vendor/github.com/go-openapi/analysis/internal/flatten/replace/replace.go deleted file mode 100644 index c0f43e728a..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/replace/replace.go +++ /dev/null @@ -1,458 +0,0 @@ -package replace - -import ( - "encoding/json" - "fmt" - "net/url" - "os" - "path" - "strconv" - - "github.com/go-openapi/analysis/internal/debug" - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" -) - -const definitionsPath = "#/definitions" - -var debugLog = debug.GetLogger("analysis/flatten/replace", os.Getenv("SWAGGER_DEBUG") != "") - -// RewriteSchemaToRef replaces a schema with a Ref -func RewriteSchemaToRef(sp *spec.Swagger, key string, ref spec.Ref) error { - debugLog("rewriting schema to ref for %s with %s", key, ref.String()) - _, value, err := getPointerFromKey(sp, key) - if err != nil { - return err - } - - switch refable := value.(type) { - case *spec.Schema: - return rewriteParentRef(sp, key, ref) - - case spec.Schema: - return rewriteParentRef(sp, key, ref) - - case *spec.SchemaOrArray: - if refable.Schema != nil { - refable.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - } - - case *spec.SchemaOrBool: - if refable.Schema != nil { - refable.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - } - case map[string]interface{}: // this happens e.g. if a schema points to an extension unmarshaled as map[string]interface{} - return rewriteParentRef(sp, key, ref) - default: - return fmt.Errorf("no schema with ref found at %s for %T", key, value) - } - - return nil -} - -func rewriteParentRef(sp *spec.Swagger, key string, ref spec.Ref) error { - parent, entry, pvalue, err := getParentFromKey(sp, key) - if err != nil { - return err - } - - debugLog("rewriting holder for %T", pvalue) - switch container := pvalue.(type) { - case spec.Response: - if err := rewriteParentRef(sp, "#"+parent, ref); err != nil { - return err - } - - case *spec.Response: - container.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case *spec.Responses: - statusCode, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", key[1:], err) - } - resp := container.StatusCodeResponses[statusCode] - resp.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - container.StatusCodeResponses[statusCode] = resp - - case map[string]spec.Response: - resp := container[entry] - resp.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - container[entry] = resp - - case spec.Parameter: - if err := rewriteParentRef(sp, "#"+parent, ref); err != nil { - return err - } - - case map[string]spec.Parameter: - param := container[entry] - param.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - container[entry] = param - - case []spec.Parameter: - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", key[1:], err) - } - param := container[idx] - param.Schema = &spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - container[idx] = param - - case spec.Definitions: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case map[string]spec.Schema: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case []spec.Schema: - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", key[1:], err) - } - container[idx] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case *spec.SchemaOrArray: - // NOTE: this is necessarily an array - otherwise, the parent would be *Schema - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", key[1:], err) - } - container.Schemas[idx] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case spec.SchemaProperties: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case *interface{}: - *container = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - // NOTE: can't have case *spec.SchemaOrBool = parent in this case is *Schema - - default: - return fmt.Errorf("unhandled parent schema rewrite %s (%T)", key, pvalue) - } - - return nil -} - -// getPointerFromKey retrieves the content of the JSON pointer "key" -func getPointerFromKey(sp interface{}, key string) (string, interface{}, error) { - switch sp.(type) { - case *spec.Schema: - case *spec.Swagger: - default: - panic("unexpected type used in getPointerFromKey") - } - if key == "#/" { - return "", sp, nil - } - // unescape chars in key, e.g. "{}" from path params - pth, _ := url.PathUnescape(key[1:]) - ptr, err := jsonpointer.New(pth) - if err != nil { - return "", nil, err - } - - value, _, err := ptr.Get(sp) - if err != nil { - debugLog("error when getting key: %s with path: %s", key, pth) - - return "", nil, err - } - - return pth, value, nil -} - -// getParentFromKey retrieves the container of the JSON pointer "key" -func getParentFromKey(sp interface{}, key string) (string, string, interface{}, error) { - switch sp.(type) { - case *spec.Schema: - case *spec.Swagger: - default: - panic("unexpected type used in getPointerFromKey") - } - // unescape chars in key, e.g. "{}" from path params - pth, _ := url.PathUnescape(key[1:]) - - parent, entry := path.Dir(pth), path.Base(pth) - debugLog("getting schema holder at: %s, with entry: %s", parent, entry) - - pptr, err := jsonpointer.New(parent) - if err != nil { - return "", "", nil, err - } - pvalue, _, err := pptr.Get(sp) - if err != nil { - return "", "", nil, fmt.Errorf("can't get parent for %s: %w", parent, err) - } - - return parent, entry, pvalue, nil -} - -// UpdateRef replaces a ref by another one -func UpdateRef(sp interface{}, key string, ref spec.Ref) error { - switch sp.(type) { - case *spec.Schema: - case *spec.Swagger: - default: - panic("unexpected type used in getPointerFromKey") - } - debugLog("updating ref for %s with %s", key, ref.String()) - pth, value, err := getPointerFromKey(sp, key) - if err != nil { - return err - } - - switch refable := value.(type) { - case *spec.Schema: - refable.Ref = ref - case *spec.SchemaOrArray: - if refable.Schema != nil { - refable.Schema.Ref = ref - } - case *spec.SchemaOrBool: - if refable.Schema != nil { - refable.Schema.Ref = ref - } - case spec.Schema: - debugLog("rewriting holder for %T", refable) - _, entry, pvalue, erp := getParentFromKey(sp, key) - if erp != nil { - return err - } - switch container := pvalue.(type) { - case spec.Definitions: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case map[string]spec.Schema: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case []spec.Schema: - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", pth, err) - } - container[idx] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case *spec.SchemaOrArray: - // NOTE: this is necessarily an array - otherwise, the parent would be *Schema - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", pth, err) - } - container.Schemas[idx] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - case spec.SchemaProperties: - container[entry] = spec.Schema{SchemaProps: spec.SchemaProps{Ref: ref}} - - // NOTE: can't have case *spec.SchemaOrBool = parent in this case is *Schema - - default: - return fmt.Errorf("unhandled container type at %s: %T", key, value) - } - - default: - return fmt.Errorf("no schema with ref found at %s for %T", key, value) - } - - return nil -} - -// UpdateRefWithSchema replaces a ref with a schema (i.e. re-inline schema) -func UpdateRefWithSchema(sp *spec.Swagger, key string, sch *spec.Schema) error { - debugLog("updating ref for %s with schema", key) - pth, value, err := getPointerFromKey(sp, key) - if err != nil { - return err - } - - switch refable := value.(type) { - case *spec.Schema: - *refable = *sch - case spec.Schema: - _, entry, pvalue, erp := getParentFromKey(sp, key) - if erp != nil { - return err - } - switch container := pvalue.(type) { - case spec.Definitions: - container[entry] = *sch - - case map[string]spec.Schema: - container[entry] = *sch - - case []spec.Schema: - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", pth, err) - } - container[idx] = *sch - - case *spec.SchemaOrArray: - // NOTE: this is necessarily an array - otherwise, the parent would be *Schema - idx, err := strconv.Atoi(entry) - if err != nil { - return fmt.Errorf("%s not a number: %w", pth, err) - } - container.Schemas[idx] = *sch - - case spec.SchemaProperties: - container[entry] = *sch - - // NOTE: can't have case *spec.SchemaOrBool = parent in this case is *Schema - - default: - return fmt.Errorf("unhandled type for parent of [%s]: %T", key, value) - } - case *spec.SchemaOrArray: - *refable.Schema = *sch - // NOTE: can't have case *spec.SchemaOrBool = parent in this case is *Schema - case *spec.SchemaOrBool: - *refable.Schema = *sch - default: - return fmt.Errorf("no schema with ref found at %s for %T", key, value) - } - - return nil -} - -// DeepestRefResult holds the results from DeepestRef analysis -type DeepestRefResult struct { - Ref spec.Ref - Schema *spec.Schema - Warnings []string -} - -// DeepestRef finds the first definition ref, from a cascade of nested refs which are not definitions. -// - if no definition is found, returns the deepest ref. -// - pointers to external files are expanded -// -// NOTE: all external $ref's are assumed to be already expanded at this stage. -func DeepestRef(sp *spec.Swagger, opts *spec.ExpandOptions, ref spec.Ref) (*DeepestRefResult, error) { - if !ref.HasFragmentOnly { - // we found an external $ref, which is odd at this stage: - // do nothing on external $refs - return &DeepestRefResult{Ref: ref}, nil - } - - currentRef := ref - visited := make(map[string]bool, 64) - warnings := make([]string, 0, 2) - -DOWNREF: - for currentRef.String() != "" { - if path.Dir(currentRef.String()) == definitionsPath { - // this is a top-level definition: stop here and return this ref - return &DeepestRefResult{Ref: currentRef}, nil - } - - if _, beenThere := visited[currentRef.String()]; beenThere { - return nil, - fmt.Errorf("cannot resolve cyclic chain of pointers under %s", currentRef.String()) - } - - visited[currentRef.String()] = true - value, _, err := currentRef.GetPointer().Get(sp) - if err != nil { - return nil, err - } - - switch refable := value.(type) { - case *spec.Schema: - if refable.Ref.String() == "" { - break DOWNREF - } - currentRef = refable.Ref - - case spec.Schema: - if refable.Ref.String() == "" { - break DOWNREF - } - currentRef = refable.Ref - - case *spec.SchemaOrArray: - if refable.Schema == nil || refable.Schema != nil && refable.Schema.Ref.String() == "" { - break DOWNREF - } - currentRef = refable.Schema.Ref - - case *spec.SchemaOrBool: - if refable.Schema == nil || refable.Schema != nil && refable.Schema.Ref.String() == "" { - break DOWNREF - } - currentRef = refable.Schema.Ref - - case spec.Response: - // a pointer points to a schema initially marshalled in responses section... - // Attempt to convert this to a schema. If this fails, the spec is invalid - asJSON, _ := refable.MarshalJSON() - var asSchema spec.Schema - - err := asSchema.UnmarshalJSON(asJSON) - if err != nil { - return nil, - fmt.Errorf("invalid type for resolved JSON pointer %s. Expected a schema a, got: %T (%v)", - currentRef.String(), value, err, - ) - } - warnings = append(warnings, fmt.Sprintf("found $ref %q (response) interpreted as schema", currentRef.String())) - - if asSchema.Ref.String() == "" { - break DOWNREF - } - currentRef = asSchema.Ref - - case spec.Parameter: - // a pointer points to a schema initially marshalled in parameters section... - // Attempt to convert this to a schema. If this fails, the spec is invalid - asJSON, _ := refable.MarshalJSON() - var asSchema spec.Schema - if err := asSchema.UnmarshalJSON(asJSON); err != nil { - return nil, - fmt.Errorf("invalid type for resolved JSON pointer %s. Expected a schema a, got: %T (%v)", - currentRef.String(), value, err, - ) - } - - warnings = append(warnings, fmt.Sprintf("found $ref %q (parameter) interpreted as schema", currentRef.String())) - - if asSchema.Ref.String() == "" { - break DOWNREF - } - currentRef = asSchema.Ref - - default: - // fallback: attempts to resolve the pointer as a schema - if refable == nil { - break DOWNREF - } - - asJSON, _ := json.Marshal(refable) - var asSchema spec.Schema - if err := asSchema.UnmarshalJSON(asJSON); err != nil { - return nil, - fmt.Errorf("unhandled type to resolve JSON pointer %s. Expected a Schema, got: %T (%v)", - currentRef.String(), value, err, - ) - } - warnings = append(warnings, fmt.Sprintf("found $ref %q (%T) interpreted as schema", currentRef.String(), refable)) - - if asSchema.Ref.String() == "" { - break DOWNREF - } - currentRef = asSchema.Ref - } - } - - // assess what schema we're ending with - sch, erv := spec.ResolveRefWithBase(sp, ¤tRef, opts) - if erv != nil { - return nil, erv - } - - if sch == nil { - return nil, fmt.Errorf("no schema found at %s", currentRef.String()) - } - - return &DeepestRefResult{Ref: currentRef, Schema: sch, Warnings: warnings}, nil -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/schutils/flatten_schema.go b/vendor/github.com/go-openapi/analysis/internal/flatten/schutils/flatten_schema.go deleted file mode 100644 index 4590236e68..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/schutils/flatten_schema.go +++ /dev/null @@ -1,29 +0,0 @@ -// Package schutils provides tools to save or clone a schema -// when flattening a spec. -package schutils - -import ( - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -// Save registers a schema as an entry in spec #/definitions -func Save(sp *spec.Swagger, name string, schema *spec.Schema) { - if schema == nil { - return - } - - if sp.Definitions == nil { - sp.Definitions = make(map[string]spec.Schema, 150) - } - - sp.Definitions[name] = *schema -} - -// Clone deep-clones a schema -func Clone(schema *spec.Schema) *spec.Schema { - var sch spec.Schema - _ = swag.FromDynamicJSON(schema, &sch) - - return &sch -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/keys.go b/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/keys.go deleted file mode 100644 index ac80fc2e83..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/keys.go +++ /dev/null @@ -1,201 +0,0 @@ -package sortref - -import ( - "net/http" - "path" - "strconv" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/spec" -) - -const ( - paths = "paths" - responses = "responses" - parameters = "parameters" - definitions = "definitions" -) - -var ( - ignoredKeys map[string]struct{} - validMethods map[string]struct{} -) - -func init() { - ignoredKeys = map[string]struct{}{ - "schema": {}, - "properties": {}, - "not": {}, - "anyOf": {}, - "oneOf": {}, - } - - validMethods = map[string]struct{}{ - "GET": {}, - "HEAD": {}, - "OPTIONS": {}, - "PATCH": {}, - "POST": {}, - "PUT": {}, - "DELETE": {}, - } -} - -// Key represent a key item constructed from /-separated segments -type Key struct { - Segments int - Key string -} - -// Keys is a sortable collable collection of Keys -type Keys []Key - -func (k Keys) Len() int { return len(k) } -func (k Keys) Swap(i, j int) { k[i], k[j] = k[j], k[i] } -func (k Keys) Less(i, j int) bool { - return k[i].Segments > k[j].Segments || (k[i].Segments == k[j].Segments && k[i].Key < k[j].Key) -} - -// KeyParts construct a SplitKey with all its /-separated segments decomposed. It is sortable. -func KeyParts(key string) SplitKey { - var res []string - for _, part := range strings.Split(key[1:], "/") { - if part != "" { - res = append(res, jsonpointer.Unescape(part)) - } - } - - return res -} - -// SplitKey holds of the parts of a /-separated key, so that their location may be determined. -type SplitKey []string - -// IsDefinition is true when the split key is in the #/definitions section of a spec -func (s SplitKey) IsDefinition() bool { - return len(s) > 1 && s[0] == definitions -} - -// DefinitionName yields the name of the definition -func (s SplitKey) DefinitionName() string { - if !s.IsDefinition() { - return "" - } - - return s[1] -} - -func (s SplitKey) isKeyName(i int) bool { - if i <= 0 { - return false - } - - count := 0 - for idx := i - 1; idx > 0; idx-- { - if s[idx] != "properties" { - break - } - count++ - } - - return count%2 != 0 -} - -// PartAdder know how to construct the components of a new name -type PartAdder func(string) []string - -// BuildName builds a name from segments -func (s SplitKey) BuildName(segments []string, startIndex int, adder PartAdder) string { - for i, part := range s[startIndex:] { - if _, ignored := ignoredKeys[part]; !ignored || s.isKeyName(startIndex+i) { - segments = append(segments, adder(part)...) - } - } - - return strings.Join(segments, " ") -} - -// IsOperation is true when the split key is in the operations section -func (s SplitKey) IsOperation() bool { - return len(s) > 1 && s[0] == paths -} - -// IsSharedOperationParam is true when the split key is in the parameters section of a path -func (s SplitKey) IsSharedOperationParam() bool { - return len(s) > 2 && s[0] == paths && s[2] == parameters -} - -// IsSharedParam is true when the split key is in the #/parameters section of a spec -func (s SplitKey) IsSharedParam() bool { - return len(s) > 1 && s[0] == parameters -} - -// IsOperationParam is true when the split key is in the parameters section of an operation -func (s SplitKey) IsOperationParam() bool { - return len(s) > 3 && s[0] == paths && s[3] == parameters -} - -// IsOperationResponse is true when the split key is in the responses section of an operation -func (s SplitKey) IsOperationResponse() bool { - return len(s) > 3 && s[0] == paths && s[3] == responses -} - -// IsSharedResponse is true when the split key is in the #/responses section of a spec -func (s SplitKey) IsSharedResponse() bool { - return len(s) > 1 && s[0] == responses -} - -// IsDefaultResponse is true when the split key is the default response for an operation -func (s SplitKey) IsDefaultResponse() bool { - return len(s) > 4 && s[0] == paths && s[3] == responses && s[4] == "default" -} - -// IsStatusCodeResponse is true when the split key is an operation response with a status code -func (s SplitKey) IsStatusCodeResponse() bool { - isInt := func() bool { - _, err := strconv.Atoi(s[4]) - - return err == nil - } - - return len(s) > 4 && s[0] == paths && s[3] == responses && isInt() -} - -// ResponseName yields either the status code or "Default" for a response -func (s SplitKey) ResponseName() string { - if s.IsStatusCodeResponse() { - code, _ := strconv.Atoi(s[4]) - - return http.StatusText(code) - } - - if s.IsDefaultResponse() { - return "Default" - } - - return "" -} - -// PathItemRef constructs a $ref object from a split key of the form /{path}/{method} -func (s SplitKey) PathItemRef() spec.Ref { - if len(s) < 3 { - return spec.Ref{} - } - - pth, method := s[1], s[2] - if _, isValidMethod := validMethods[strings.ToUpper(method)]; !isValidMethod && !strings.HasPrefix(method, "x-") { - return spec.Ref{} - } - - return spec.MustCreateRef("#" + path.Join("/", paths, jsonpointer.Escape(pth), strings.ToUpper(method))) -} - -// PathRef constructs a $ref object from a split key of the form /paths/{reference} -func (s SplitKey) PathRef() spec.Ref { - if !s.IsOperation() { - return spec.Ref{} - } - - return spec.MustCreateRef("#" + path.Join("/", paths, jsonpointer.Escape(s[1]))) -} diff --git a/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/sort_ref.go b/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/sort_ref.go deleted file mode 100644 index 73243df87f..0000000000 --- a/vendor/github.com/go-openapi/analysis/internal/flatten/sortref/sort_ref.go +++ /dev/null @@ -1,141 +0,0 @@ -package sortref - -import ( - "reflect" - "sort" - "strings" - - "github.com/go-openapi/analysis/internal/flatten/normalize" - "github.com/go-openapi/spec" -) - -var depthGroupOrder = []string{ - "sharedParam", "sharedResponse", "sharedOpParam", "opParam", "codeResponse", "defaultResponse", "definition", -} - -type mapIterator struct { - len int - mapIter *reflect.MapIter -} - -func (i *mapIterator) Next() bool { - return i.mapIter.Next() -} - -func (i *mapIterator) Len() int { - return i.len -} - -func (i *mapIterator) Key() string { - return i.mapIter.Key().String() -} - -func mustMapIterator(anyMap interface{}) *mapIterator { - val := reflect.ValueOf(anyMap) - - return &mapIterator{mapIter: val.MapRange(), len: val.Len()} -} - -// DepthFirst sorts a map of anything. It groups keys by category -// (shared params, op param, statuscode response, default response, definitions) -// sort groups internally by number of parts in the key and lexical names -// flatten groups into a single list of keys -func DepthFirst(in interface{}) []string { - iterator := mustMapIterator(in) - sorted := make([]string, 0, iterator.Len()) - grouped := make(map[string]Keys, iterator.Len()) - - for iterator.Next() { - k := iterator.Key() - split := KeyParts(k) - var pk string - - if split.IsSharedOperationParam() { - pk = "sharedOpParam" - } - if split.IsOperationParam() { - pk = "opParam" - } - if split.IsStatusCodeResponse() { - pk = "codeResponse" - } - if split.IsDefaultResponse() { - pk = "defaultResponse" - } - if split.IsDefinition() { - pk = "definition" - } - if split.IsSharedParam() { - pk = "sharedParam" - } - if split.IsSharedResponse() { - pk = "sharedResponse" - } - grouped[pk] = append(grouped[pk], Key{Segments: len(split), Key: k}) - } - - for _, pk := range depthGroupOrder { - res := grouped[pk] - sort.Sort(res) - - for _, v := range res { - sorted = append(sorted, v.Key) - } - } - - return sorted -} - -// topMostRefs is able to sort refs by hierarchical then lexicographic order, -// yielding refs ordered breadth-first. -type topmostRefs []string - -func (k topmostRefs) Len() int { return len(k) } -func (k topmostRefs) Swap(i, j int) { k[i], k[j] = k[j], k[i] } -func (k topmostRefs) Less(i, j int) bool { - li, lj := len(strings.Split(k[i], "/")), len(strings.Split(k[j], "/")) - if li == lj { - return k[i] < k[j] - } - - return li < lj -} - -// TopmostFirst sorts references by depth -func TopmostFirst(refs []string) []string { - res := topmostRefs(refs) - sort.Sort(res) - - return res -} - -// RefRevIdx is a reverse index for references -type RefRevIdx struct { - Ref spec.Ref - Keys []string -} - -// ReverseIndex builds a reverse index for references in schemas -func ReverseIndex(schemas map[string]spec.Ref, basePath string) map[string]RefRevIdx { - collected := make(map[string]RefRevIdx) - for key, schRef := range schemas { - // normalize paths before sorting, - // so we get together keys that are from the same external file - normalizedPath := normalize.Path(schRef, basePath) - - entry, ok := collected[normalizedPath] - if ok { - entry.Keys = append(entry.Keys, key) - collected[normalizedPath] = entry - - continue - } - - collected[normalizedPath] = RefRevIdx{ - Ref: schRef, - Keys: []string{key}, - } - } - - return collected -} diff --git a/vendor/github.com/go-openapi/analysis/mixin.go b/vendor/github.com/go-openapi/analysis/mixin.go deleted file mode 100644 index 7785a29b27..0000000000 --- a/vendor/github.com/go-openapi/analysis/mixin.go +++ /dev/null @@ -1,515 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package analysis - -import ( - "fmt" - "reflect" - - "github.com/go-openapi/spec" -) - -// Mixin modifies the primary swagger spec by adding the paths and -// definitions from the mixin specs. Top level parameters and -// responses from the mixins are also carried over. Operation id -// collisions are avoided by appending "Mixin" but only if -// needed. -// -// The following parts of primary are subject to merge, filling empty details -// - Info -// - BasePath -// - Host -// - ExternalDocs -// -// Consider calling FixEmptyResponseDescriptions() on the modified primary -// if you read them from storage and they are valid to start with. -// -// Entries in "paths", "definitions", "parameters" and "responses" are -// added to the primary in the order of the given mixins. If the entry -// already exists in primary it is skipped with a warning message. -// -// The count of skipped entries (from collisions) is returned so any -// deviation from the number expected can flag a warning in your build -// scripts. Carefully review the collisions before accepting them; -// consider renaming things if possible. -// -// No key normalization takes place (paths, type defs, -// etc). Ensure they are canonical if your downstream tools do -// key normalization of any form. -// -// Merging schemes (http, https), and consumers/producers do not account for -// collisions. -func Mixin(primary *spec.Swagger, mixins ...*spec.Swagger) []string { - skipped := make([]string, 0, len(mixins)) - opIDs := getOpIDs(primary) - initPrimary(primary) - - for i, m := range mixins { - skipped = append(skipped, mergeSwaggerProps(primary, m)...) - - skipped = append(skipped, mergeConsumes(primary, m)...) - - skipped = append(skipped, mergeProduces(primary, m)...) - - skipped = append(skipped, mergeTags(primary, m)...) - - skipped = append(skipped, mergeSchemes(primary, m)...) - - skipped = append(skipped, mergeSecurityDefinitions(primary, m)...) - - skipped = append(skipped, mergeSecurityRequirements(primary, m)...) - - skipped = append(skipped, mergeDefinitions(primary, m)...) - - // merging paths requires a map of operationIDs to work with - skipped = append(skipped, mergePaths(primary, m, opIDs, i)...) - - skipped = append(skipped, mergeParameters(primary, m)...) - - skipped = append(skipped, mergeResponses(primary, m)...) - } - - return skipped -} - -// getOpIDs extracts all the paths..operationIds from the given -// spec and returns them as the keys in a map with 'true' values. -func getOpIDs(s *spec.Swagger) map[string]bool { - rv := make(map[string]bool) - if s.Paths == nil { - return rv - } - - for _, v := range s.Paths.Paths { - piops := pathItemOps(v) - - for _, op := range piops { - rv[op.ID] = true - } - } - - return rv -} - -func pathItemOps(p spec.PathItem) []*spec.Operation { - var rv []*spec.Operation - rv = appendOp(rv, p.Get) - rv = appendOp(rv, p.Put) - rv = appendOp(rv, p.Post) - rv = appendOp(rv, p.Delete) - rv = appendOp(rv, p.Head) - rv = appendOp(rv, p.Patch) - - return rv -} - -func appendOp(ops []*spec.Operation, op *spec.Operation) []*spec.Operation { - if op == nil { - return ops - } - - return append(ops, op) -} - -func mergeSecurityDefinitions(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for k, v := range m.SecurityDefinitions { - if _, exists := primary.SecurityDefinitions[k]; exists { - warn := fmt.Sprintf( - "SecurityDefinitions entry '%v' already exists in primary or higher priority mixin, skipping\n", k) - skipped = append(skipped, warn) - - continue - } - - primary.SecurityDefinitions[k] = v - } - - return -} - -func mergeSecurityRequirements(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for _, v := range m.Security { - found := false - for _, vv := range primary.Security { - if reflect.DeepEqual(v, vv) { - found = true - - break - } - } - - if found { - warn := fmt.Sprintf( - "Security requirement: '%v' already exists in primary or higher priority mixin, skipping\n", v) - skipped = append(skipped, warn) - - continue - } - primary.Security = append(primary.Security, v) - } - - return -} - -func mergeDefinitions(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for k, v := range m.Definitions { - // assume name collisions represent IDENTICAL type. careful. - if _, exists := primary.Definitions[k]; exists { - warn := fmt.Sprintf( - "definitions entry '%v' already exists in primary or higher priority mixin, skipping\n", k) - skipped = append(skipped, warn) - - continue - } - primary.Definitions[k] = v - } - - return -} - -func mergePaths(primary *spec.Swagger, m *spec.Swagger, opIDs map[string]bool, mixIndex int) (skipped []string) { - if m.Paths != nil { - for k, v := range m.Paths.Paths { - if _, exists := primary.Paths.Paths[k]; exists { - warn := fmt.Sprintf( - "paths entry '%v' already exists in primary or higher priority mixin, skipping\n", k) - skipped = append(skipped, warn) - - continue - } - - // Swagger requires that operationIds be - // unique within a spec. If we find a - // collision we append "Mixin0" to the - // operatoinId we are adding, where 0 is mixin - // index. We assume that operationIds with - // all the proivded specs are already unique. - piops := pathItemOps(v) - for _, piop := range piops { - if opIDs[piop.ID] { - piop.ID = fmt.Sprintf("%v%v%v", piop.ID, "Mixin", mixIndex) - } - opIDs[piop.ID] = true - } - primary.Paths.Paths[k] = v - } - } - - return -} - -func mergeParameters(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for k, v := range m.Parameters { - // could try to rename on conflict but would - // have to fix $refs in the mixin. Complain - // for now - if _, exists := primary.Parameters[k]; exists { - warn := fmt.Sprintf( - "top level parameters entry '%v' already exists in primary or higher priority mixin, skipping\n", k) - skipped = append(skipped, warn) - - continue - } - primary.Parameters[k] = v - } - - return -} - -func mergeResponses(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for k, v := range m.Responses { - // could try to rename on conflict but would - // have to fix $refs in the mixin. Complain - // for now - if _, exists := primary.Responses[k]; exists { - warn := fmt.Sprintf( - "top level responses entry '%v' already exists in primary or higher priority mixin, skipping\n", k) - skipped = append(skipped, warn) - - continue - } - primary.Responses[k] = v - } - - return skipped -} - -func mergeConsumes(primary *spec.Swagger, m *spec.Swagger) []string { - for _, v := range m.Consumes { - found := false - for _, vv := range primary.Consumes { - if v == vv { - found = true - - break - } - } - - if found { - // no warning here: we just skip it - continue - } - primary.Consumes = append(primary.Consumes, v) - } - - return []string{} -} - -func mergeProduces(primary *spec.Swagger, m *spec.Swagger) []string { - for _, v := range m.Produces { - found := false - for _, vv := range primary.Produces { - if v == vv { - found = true - - break - } - } - - if found { - // no warning here: we just skip it - continue - } - primary.Produces = append(primary.Produces, v) - } - - return []string{} -} - -func mergeTags(primary *spec.Swagger, m *spec.Swagger) (skipped []string) { - for _, v := range m.Tags { - found := false - for _, vv := range primary.Tags { - if v.Name == vv.Name { - found = true - - break - } - } - - if found { - warn := fmt.Sprintf( - "top level tags entry with name '%v' already exists in primary or higher priority mixin, skipping\n", - v.Name, - ) - skipped = append(skipped, warn) - - continue - } - - primary.Tags = append(primary.Tags, v) - } - - return -} - -func mergeSchemes(primary *spec.Swagger, m *spec.Swagger) []string { - for _, v := range m.Schemes { - found := false - for _, vv := range primary.Schemes { - if v == vv { - found = true - - break - } - } - - if found { - // no warning here: we just skip it - continue - } - primary.Schemes = append(primary.Schemes, v) - } - - return []string{} -} - -func mergeSwaggerProps(primary *spec.Swagger, m *spec.Swagger) []string { - var skipped, skippedInfo, skippedDocs []string - - primary.Extensions, skipped = mergeExtensions(primary.Extensions, m.Extensions) - - // merging details in swagger top properties - if primary.Host == "" { - primary.Host = m.Host - } - - if primary.BasePath == "" { - primary.BasePath = m.BasePath - } - - if primary.Info == nil { - primary.Info = m.Info - } else if m.Info != nil { - skippedInfo = mergeInfo(primary.Info, m.Info) - skipped = append(skipped, skippedInfo...) - } - - if primary.ExternalDocs == nil { - primary.ExternalDocs = m.ExternalDocs - } else if m != nil { - skippedDocs = mergeExternalDocs(primary.ExternalDocs, m.ExternalDocs) - skipped = append(skipped, skippedDocs...) - } - - return skipped -} - -//nolint:unparam -func mergeExternalDocs(primary *spec.ExternalDocumentation, m *spec.ExternalDocumentation) []string { - if primary.Description == "" { - primary.Description = m.Description - } - - if primary.URL == "" { - primary.URL = m.URL - } - - return nil -} - -func mergeInfo(primary *spec.Info, m *spec.Info) []string { - var sk, skipped []string - - primary.Extensions, sk = mergeExtensions(primary.Extensions, m.Extensions) - skipped = append(skipped, sk...) - - if primary.Description == "" { - primary.Description = m.Description - } - - if primary.Title == "" { - primary.Description = m.Description - } - - if primary.TermsOfService == "" { - primary.TermsOfService = m.TermsOfService - } - - if primary.Version == "" { - primary.Version = m.Version - } - - if primary.Contact == nil { - primary.Contact = m.Contact - } else if m.Contact != nil { - var csk []string - primary.Contact.Extensions, csk = mergeExtensions(primary.Contact.Extensions, m.Contact.Extensions) - skipped = append(skipped, csk...) - - if primary.Contact.Name == "" { - primary.Contact.Name = m.Contact.Name - } - - if primary.Contact.URL == "" { - primary.Contact.URL = m.Contact.URL - } - - if primary.Contact.Email == "" { - primary.Contact.Email = m.Contact.Email - } - } - - if primary.License == nil { - primary.License = m.License - } else if m.License != nil { - var lsk []string - primary.License.Extensions, lsk = mergeExtensions(primary.License.Extensions, m.License.Extensions) - skipped = append(skipped, lsk...) - - if primary.License.Name == "" { - primary.License.Name = m.License.Name - } - - if primary.License.URL == "" { - primary.License.URL = m.License.URL - } - } - - return skipped -} - -func mergeExtensions(primary spec.Extensions, m spec.Extensions) (result spec.Extensions, skipped []string) { - if primary == nil { - result = m - - return - } - - if m == nil { - result = primary - - return - } - - result = primary - for k, v := range m { - if _, found := primary[k]; found { - skipped = append(skipped, k) - - continue - } - - primary[k] = v - } - - return -} - -func initPrimary(primary *spec.Swagger) { - if primary.SecurityDefinitions == nil { - primary.SecurityDefinitions = make(map[string]*spec.SecurityScheme) - } - - if primary.Security == nil { - primary.Security = make([]map[string][]string, 0, 10) - } - - if primary.Produces == nil { - primary.Produces = make([]string, 0, 10) - } - - if primary.Consumes == nil { - primary.Consumes = make([]string, 0, 10) - } - - if primary.Tags == nil { - primary.Tags = make([]spec.Tag, 0, 10) - } - - if primary.Schemes == nil { - primary.Schemes = make([]string, 0, 10) - } - - if primary.Paths == nil { - primary.Paths = &spec.Paths{Paths: make(map[string]spec.PathItem)} - } - - if primary.Paths.Paths == nil { - primary.Paths.Paths = make(map[string]spec.PathItem) - } - - if primary.Definitions == nil { - primary.Definitions = make(spec.Definitions) - } - - if primary.Parameters == nil { - primary.Parameters = make(map[string]spec.Parameter) - } - - if primary.Responses == nil { - primary.Responses = make(map[string]spec.Response) - } -} diff --git a/vendor/github.com/go-openapi/analysis/schema.go b/vendor/github.com/go-openapi/analysis/schema.go deleted file mode 100644 index ab190db5b7..0000000000 --- a/vendor/github.com/go-openapi/analysis/schema.go +++ /dev/null @@ -1,256 +0,0 @@ -package analysis - -import ( - "errors" - - "github.com/go-openapi/spec" - "github.com/go-openapi/strfmt" -) - -// SchemaOpts configures the schema analyzer -type SchemaOpts struct { - Schema *spec.Schema - Root interface{} - BasePath string - _ struct{} -} - -// Schema analysis, will classify the schema according to known -// patterns. -func Schema(opts SchemaOpts) (*AnalyzedSchema, error) { - if opts.Schema == nil { - return nil, errors.New("no schema to analyze") - } - - a := &AnalyzedSchema{ - schema: opts.Schema, - root: opts.Root, - basePath: opts.BasePath, - } - - a.initializeFlags() - a.inferKnownType() - a.inferEnum() - a.inferBaseType() - - if err := a.inferMap(); err != nil { - return nil, err - } - if err := a.inferArray(); err != nil { - return nil, err - } - - a.inferTuple() - - if err := a.inferFromRef(); err != nil { - return nil, err - } - - a.inferSimpleSchema() - - return a, nil -} - -// AnalyzedSchema indicates what the schema represents -type AnalyzedSchema struct { - schema *spec.Schema - root interface{} - basePath string - - hasProps bool - hasAllOf bool - hasItems bool - hasAdditionalProps bool - hasAdditionalItems bool - hasRef bool - - IsKnownType bool - IsSimpleSchema bool - IsArray bool - IsSimpleArray bool - IsMap bool - IsSimpleMap bool - IsExtendedObject bool - IsTuple bool - IsTupleWithExtra bool - IsBaseType bool - IsEnum bool -} - -// Inherits copies value fields from other onto this schema -func (a *AnalyzedSchema) inherits(other *AnalyzedSchema) { - if other == nil { - return - } - a.hasProps = other.hasProps - a.hasAllOf = other.hasAllOf - a.hasItems = other.hasItems - a.hasAdditionalItems = other.hasAdditionalItems - a.hasAdditionalProps = other.hasAdditionalProps - a.hasRef = other.hasRef - - a.IsKnownType = other.IsKnownType - a.IsSimpleSchema = other.IsSimpleSchema - a.IsArray = other.IsArray - a.IsSimpleArray = other.IsSimpleArray - a.IsMap = other.IsMap - a.IsSimpleMap = other.IsSimpleMap - a.IsExtendedObject = other.IsExtendedObject - a.IsTuple = other.IsTuple - a.IsTupleWithExtra = other.IsTupleWithExtra - a.IsBaseType = other.IsBaseType - a.IsEnum = other.IsEnum -} - -func (a *AnalyzedSchema) inferFromRef() error { - if a.hasRef { - sch := new(spec.Schema) - sch.Ref = a.schema.Ref - err := spec.ExpandSchema(sch, a.root, nil) - if err != nil { - return err - } - rsch, err := Schema(SchemaOpts{ - Schema: sch, - Root: a.root, - BasePath: a.basePath, - }) - if err != nil { - // NOTE(fredbi): currently the only cause for errors is - // unresolved ref. Since spec.ExpandSchema() expands the - // schema recursively, there is no chance to get there, - // until we add more causes for error in this schema analysis. - return err - } - a.inherits(rsch) - } - - return nil -} - -func (a *AnalyzedSchema) inferSimpleSchema() { - a.IsSimpleSchema = a.IsKnownType || a.IsSimpleArray || a.IsSimpleMap -} - -func (a *AnalyzedSchema) inferKnownType() { - tpe := a.schema.Type - format := a.schema.Format - a.IsKnownType = tpe.Contains("boolean") || - tpe.Contains("integer") || - tpe.Contains("number") || - tpe.Contains("string") || - (format != "" && strfmt.Default.ContainsName(format)) || - (a.isObjectType() && !a.hasProps && !a.hasAllOf && !a.hasAdditionalProps && !a.hasAdditionalItems) -} - -func (a *AnalyzedSchema) inferMap() error { - if !a.isObjectType() { - return nil - } - - hasExtra := a.hasProps || a.hasAllOf - a.IsMap = a.hasAdditionalProps && !hasExtra - a.IsExtendedObject = a.hasAdditionalProps && hasExtra - - if !a.IsMap { - return nil - } - - // maps - if a.schema.AdditionalProperties.Schema != nil { - msch, err := Schema(SchemaOpts{ - Schema: a.schema.AdditionalProperties.Schema, - Root: a.root, - BasePath: a.basePath, - }) - if err != nil { - return err - } - a.IsSimpleMap = msch.IsSimpleSchema - } else if a.schema.AdditionalProperties.Allows { - a.IsSimpleMap = true - } - - return nil -} - -func (a *AnalyzedSchema) inferArray() error { - // an array has Items defined as an object schema, otherwise we qualify this JSON array as a tuple - // (yes, even if the Items array contains only one element). - // arrays in JSON schema may be unrestricted (i.e no Items specified). - // Note that arrays in Swagger MUST have Items. Nonetheless, we analyze unrestricted arrays. - // - // NOTE: the spec package misses the distinction between: - // items: [] and items: {}, so we consider both arrays here. - a.IsArray = a.isArrayType() && (a.schema.Items == nil || a.schema.Items.Schemas == nil) - if a.IsArray && a.hasItems { - if a.schema.Items.Schema != nil { - itsch, err := Schema(SchemaOpts{ - Schema: a.schema.Items.Schema, - Root: a.root, - BasePath: a.basePath, - }) - if err != nil { - return err - } - - a.IsSimpleArray = itsch.IsSimpleSchema - } - } - - if a.IsArray && !a.hasItems { - a.IsSimpleArray = true - } - - return nil -} - -func (a *AnalyzedSchema) inferTuple() { - tuple := a.hasItems && a.schema.Items.Schemas != nil - a.IsTuple = tuple && !a.hasAdditionalItems - a.IsTupleWithExtra = tuple && a.hasAdditionalItems -} - -func (a *AnalyzedSchema) inferBaseType() { - if a.isObjectType() { - a.IsBaseType = a.schema.Discriminator != "" - } -} - -func (a *AnalyzedSchema) inferEnum() { - a.IsEnum = len(a.schema.Enum) > 0 -} - -func (a *AnalyzedSchema) initializeFlags() { - a.hasProps = len(a.schema.Properties) > 0 - a.hasAllOf = len(a.schema.AllOf) > 0 - a.hasRef = a.schema.Ref.String() != "" - - a.hasItems = a.schema.Items != nil && - (a.schema.Items.Schema != nil || len(a.schema.Items.Schemas) > 0) - - a.hasAdditionalProps = a.schema.AdditionalProperties != nil && - (a.schema.AdditionalProperties.Schema != nil || a.schema.AdditionalProperties.Allows) - - a.hasAdditionalItems = a.schema.AdditionalItems != nil && - (a.schema.AdditionalItems.Schema != nil || a.schema.AdditionalItems.Allows) -} - -func (a *AnalyzedSchema) isObjectType() bool { - return !a.hasRef && (a.schema.Type == nil || a.schema.Type.Contains("") || a.schema.Type.Contains("object")) -} - -func (a *AnalyzedSchema) isArrayType() bool { - return !a.hasRef && (a.schema.Type != nil && a.schema.Type.Contains("array")) -} - -// isAnalyzedAsComplex determines if an analyzed schema is eligible to flattening (i.e. it is "complex"). -// -// Complex means the schema is any of: -// - a simple type (primitive) -// - an array of something (items are possibly complex ; if this is the case, items will generate a definition) -// - a map of something (additionalProperties are possibly complex ; if this is the case, additionalProperties will -// generate a definition) -func (a *AnalyzedSchema) isAnalyzedAsComplex() bool { - return !a.IsSimpleSchema && !a.IsArray && !a.IsMap -} diff --git a/vendor/github.com/go-openapi/errors/.gitattributes b/vendor/github.com/go-openapi/errors/.gitattributes deleted file mode 100644 index a0717e4b3b..0000000000 --- a/vendor/github.com/go-openapi/errors/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.go text eol=lf \ No newline at end of file diff --git a/vendor/github.com/go-openapi/errors/.gitignore b/vendor/github.com/go-openapi/errors/.gitignore deleted file mode 100644 index dd91ed6a04..0000000000 --- a/vendor/github.com/go-openapi/errors/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -secrets.yml -coverage.out diff --git a/vendor/github.com/go-openapi/errors/.golangci.yml b/vendor/github.com/go-openapi/errors/.golangci.yml deleted file mode 100644 index ee8b9bd1f1..0000000000 --- a/vendor/github.com/go-openapi/errors/.golangci.yml +++ /dev/null @@ -1,55 +0,0 @@ -linters-settings: - gocyclo: - min-complexity: 45 - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - #- deadcode - #- interfacer - #- scopelint - #- varcheck - #- structcheck - #- golint - #- nosnakecase - #- maligned - #- goerr113 - #- ifshort - #- gomnd - #- exhaustivestruct diff --git a/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/errors/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/errors/LICENSE b/vendor/github.com/go-openapi/errors/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/errors/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/errors/README.md b/vendor/github.com/go-openapi/errors/README.md deleted file mode 100644 index 6d57ea55c7..0000000000 --- a/vendor/github.com/go-openapi/errors/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# OpenAPI errors [![Build Status](https://github.com/go-openapi/errors/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/errors/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/errors/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/errors) - -[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/errors/master/LICENSE) -[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/errors.svg)](https://pkg.go.dev/github.com/go-openapi/errors) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/errors)](https://goreportcard.com/report/github.com/go-openapi/errors) - -Shared errors and error interface used throughout the various libraries found in the go-openapi toolkit. diff --git a/vendor/github.com/go-openapi/errors/api.go b/vendor/github.com/go-openapi/errors/api.go deleted file mode 100644 index d6f507f42d..0000000000 --- a/vendor/github.com/go-openapi/errors/api.go +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import ( - "encoding/json" - "fmt" - "net/http" - "reflect" - "strings" -) - -// DefaultHTTPCode is used when the error Code cannot be used as an HTTP code. -var DefaultHTTPCode = http.StatusUnprocessableEntity - -// Error represents a error interface all swagger framework errors implement -type Error interface { - error - Code() int32 -} - -type apiError struct { - code int32 - message string -} - -func (a *apiError) Error() string { - return a.message -} - -func (a *apiError) Code() int32 { - return a.code -} - -// MarshalJSON implements the JSON encoding interface -func (a apiError) MarshalJSON() ([]byte, error) { - return json.Marshal(map[string]interface{}{ - "code": a.code, - "message": a.message, - }) -} - -// New creates a new API error with a code and a message -func New(code int32, message string, args ...interface{}) Error { - if len(args) > 0 { - return &apiError{ - code: code, - message: fmt.Sprintf(message, args...), - } - } - return &apiError{ - code: code, - message: message, - } -} - -// NotFound creates a new not found error -func NotFound(message string, args ...interface{}) Error { - if message == "" { - message = "Not found" - } - return New(http.StatusNotFound, fmt.Sprintf(message, args...)) -} - -// NotImplemented creates a new not implemented error -func NotImplemented(message string) Error { - return New(http.StatusNotImplemented, message) -} - -// MethodNotAllowedError represents an error for when the path matches but the method doesn't -type MethodNotAllowedError struct { - code int32 - Allowed []string - message string -} - -func (m *MethodNotAllowedError) Error() string { - return m.message -} - -// Code the error code -func (m *MethodNotAllowedError) Code() int32 { - return m.code -} - -// MarshalJSON implements the JSON encoding interface -func (m MethodNotAllowedError) MarshalJSON() ([]byte, error) { - return json.Marshal(map[string]interface{}{ - "code": m.code, - "message": m.message, - "allowed": m.Allowed, - }) -} - -func errorAsJSON(err Error) []byte { - //nolint:errchkjson - b, _ := json.Marshal(struct { - Code int32 `json:"code"` - Message string `json:"message"` - }{err.Code(), err.Error()}) - return b -} - -func flattenComposite(errs *CompositeError) *CompositeError { - var res []error - for _, er := range errs.Errors { - switch e := er.(type) { - case *CompositeError: - if e != nil && len(e.Errors) > 0 { - flat := flattenComposite(e) - if len(flat.Errors) > 0 { - res = append(res, flat.Errors...) - } - } - default: - if e != nil { - res = append(res, e) - } - } - } - return CompositeValidationError(res...) -} - -// MethodNotAllowed creates a new method not allowed error -func MethodNotAllowed(requested string, allow []string) Error { - msg := fmt.Sprintf("method %s is not allowed, but [%s] are", requested, strings.Join(allow, ",")) - return &MethodNotAllowedError{ - code: http.StatusMethodNotAllowed, - Allowed: allow, - message: msg, - } -} - -// ServeError implements the http error handler interface -func ServeError(rw http.ResponseWriter, r *http.Request, err error) { - rw.Header().Set("Content-Type", "application/json") - switch e := err.(type) { - case *CompositeError: - er := flattenComposite(e) - // strips composite errors to first element only - if len(er.Errors) > 0 { - ServeError(rw, r, er.Errors[0]) - } else { - // guard against empty CompositeError (invalid construct) - ServeError(rw, r, nil) - } - case *MethodNotAllowedError: - rw.Header().Add("Allow", strings.Join(e.Allowed, ",")) - rw.WriteHeader(asHTTPCode(int(e.Code()))) - if r == nil || r.Method != http.MethodHead { - _, _ = rw.Write(errorAsJSON(e)) - } - case Error: - value := reflect.ValueOf(e) - if value.Kind() == reflect.Ptr && value.IsNil() { - rw.WriteHeader(http.StatusInternalServerError) - _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, "Unknown error"))) - return - } - rw.WriteHeader(asHTTPCode(int(e.Code()))) - if r == nil || r.Method != http.MethodHead { - _, _ = rw.Write(errorAsJSON(e)) - } - case nil: - rw.WriteHeader(http.StatusInternalServerError) - _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, "Unknown error"))) - default: - rw.WriteHeader(http.StatusInternalServerError) - if r == nil || r.Method != http.MethodHead { - _, _ = rw.Write(errorAsJSON(New(http.StatusInternalServerError, err.Error()))) - } - } -} - -func asHTTPCode(input int) int { - if input >= maximumValidHTTPCode { - return DefaultHTTPCode - } - return input -} diff --git a/vendor/github.com/go-openapi/errors/auth.go b/vendor/github.com/go-openapi/errors/auth.go deleted file mode 100644 index 0545b501bd..0000000000 --- a/vendor/github.com/go-openapi/errors/auth.go +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import "net/http" - -// Unauthenticated returns an unauthenticated error -func Unauthenticated(scheme string) Error { - return New(http.StatusUnauthorized, "unauthenticated for %s", scheme) -} diff --git a/vendor/github.com/go-openapi/errors/doc.go b/vendor/github.com/go-openapi/errors/doc.go deleted file mode 100644 index af01190ce6..0000000000 --- a/vendor/github.com/go-openapi/errors/doc.go +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -/* -Package errors provides an Error interface and several concrete types -implementing this interface to manage API errors and JSON-schema validation -errors. - -A middleware handler ServeError() is provided to serve the errors types -it defines. - -It is used throughout the various go-openapi toolkit libraries -(https://github.com/go-openapi). -*/ -package errors diff --git a/vendor/github.com/go-openapi/errors/headers.go b/vendor/github.com/go-openapi/errors/headers.go deleted file mode 100644 index 6ea1151f41..0000000000 --- a/vendor/github.com/go-openapi/errors/headers.go +++ /dev/null @@ -1,103 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import ( - "encoding/json" - "fmt" - "net/http" -) - -// Validation represents a failure of a precondition -type Validation struct { //nolint: errname - code int32 - Name string - In string - Value interface{} - message string - Values []interface{} -} - -func (e *Validation) Error() string { - return e.message -} - -// Code the error code -func (e *Validation) Code() int32 { - return e.code -} - -// MarshalJSON implements the JSON encoding interface -func (e Validation) MarshalJSON() ([]byte, error) { - return json.Marshal(map[string]interface{}{ - "code": e.code, - "message": e.message, - "in": e.In, - "name": e.Name, - "value": e.Value, - "values": e.Values, - }) -} - -// ValidateName sets the name for a validation or updates it for a nested property -func (e *Validation) ValidateName(name string) *Validation { - if name != "" { - if e.Name == "" { - e.Name = name - e.message = name + e.message - } else { - e.Name = name + "." + e.Name - e.message = name + "." + e.message - } - } - return e -} - -const ( - contentTypeFail = `unsupported media type %q, only %v are allowed` - responseFormatFail = `unsupported media type requested, only %v are available` -) - -// InvalidContentType error for an invalid content type -func InvalidContentType(value string, allowed []string) *Validation { - values := make([]interface{}, 0, len(allowed)) - for _, v := range allowed { - values = append(values, v) - } - return &Validation{ - code: http.StatusUnsupportedMediaType, - Name: "Content-Type", - In: "header", - Value: value, - Values: values, - message: fmt.Sprintf(contentTypeFail, value, allowed), - } -} - -// InvalidResponseFormat error for an unacceptable response format request -func InvalidResponseFormat(value string, allowed []string) *Validation { - values := make([]interface{}, 0, len(allowed)) - for _, v := range allowed { - values = append(values, v) - } - return &Validation{ - code: http.StatusNotAcceptable, - Name: "Accept", - In: "header", - Value: value, - Values: values, - message: fmt.Sprintf(responseFormatFail, allowed), - } -} diff --git a/vendor/github.com/go-openapi/errors/middleware.go b/vendor/github.com/go-openapi/errors/middleware.go deleted file mode 100644 index 67f80386a2..0000000000 --- a/vendor/github.com/go-openapi/errors/middleware.go +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import ( - "bytes" - "fmt" - "strings" -) - -// APIVerificationFailed is an error that contains all the missing info for a mismatched section -// between the api registrations and the api spec -type APIVerificationFailed struct { //nolint: errname - Section string `json:"section,omitempty"` - MissingSpecification []string `json:"missingSpecification,omitempty"` - MissingRegistration []string `json:"missingRegistration,omitempty"` -} - -func (v *APIVerificationFailed) Error() string { - buf := bytes.NewBuffer(nil) - - hasRegMissing := len(v.MissingRegistration) > 0 - hasSpecMissing := len(v.MissingSpecification) > 0 - - if hasRegMissing { - buf.WriteString(fmt.Sprintf("missing [%s] %s registrations", strings.Join(v.MissingRegistration, ", "), v.Section)) - } - - if hasRegMissing && hasSpecMissing { - buf.WriteString("\n") - } - - if hasSpecMissing { - buf.WriteString(fmt.Sprintf("missing from spec file [%s] %s", strings.Join(v.MissingSpecification, ", "), v.Section)) - } - - return buf.String() -} diff --git a/vendor/github.com/go-openapi/errors/parsing.go b/vendor/github.com/go-openapi/errors/parsing.go deleted file mode 100644 index ce1ef9cb67..0000000000 --- a/vendor/github.com/go-openapi/errors/parsing.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import ( - "encoding/json" - "fmt" - "net/http" -) - -// ParseError represents a parsing error -type ParseError struct { - code int32 - Name string - In string - Value string - Reason error - message string -} - -func (e *ParseError) Error() string { - return e.message -} - -// Code returns the http status code for this error -func (e *ParseError) Code() int32 { - return e.code -} - -// MarshalJSON implements the JSON encoding interface -func (e ParseError) MarshalJSON() ([]byte, error) { - var reason string - if e.Reason != nil { - reason = e.Reason.Error() - } - return json.Marshal(map[string]interface{}{ - "code": e.code, - "message": e.message, - "in": e.In, - "name": e.Name, - "value": e.Value, - "reason": reason, - }) -} - -const ( - parseErrorTemplContent = `parsing %s %s from %q failed, because %s` - parseErrorTemplContentNoIn = `parsing %s from %q failed, because %s` -) - -// NewParseError creates a new parse error -func NewParseError(name, in, value string, reason error) *ParseError { - var msg string - if in == "" { - msg = fmt.Sprintf(parseErrorTemplContentNoIn, name, value, reason) - } else { - msg = fmt.Sprintf(parseErrorTemplContent, name, in, value, reason) - } - return &ParseError{ - code: http.StatusBadRequest, - Name: name, - In: in, - Value: value, - Reason: reason, - message: msg, - } -} diff --git a/vendor/github.com/go-openapi/errors/schema.go b/vendor/github.com/go-openapi/errors/schema.go deleted file mode 100644 index 8f3239dfd9..0000000000 --- a/vendor/github.com/go-openapi/errors/schema.go +++ /dev/null @@ -1,619 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package errors - -import ( - "encoding/json" - "fmt" - "net/http" - "strings" -) - -const ( - invalidType = "%s is an invalid type name" - typeFail = "%s in %s must be of type %s" - typeFailWithData = "%s in %s must be of type %s: %q" - typeFailWithError = "%s in %s must be of type %s, because: %s" - requiredFail = "%s in %s is required" - readOnlyFail = "%s in %s is readOnly" - tooLongMessage = "%s in %s should be at most %d chars long" - tooShortMessage = "%s in %s should be at least %d chars long" - patternFail = "%s in %s should match '%s'" - enumFail = "%s in %s should be one of %v" - multipleOfFail = "%s in %s should be a multiple of %v" - maximumIncFail = "%s in %s should be less than or equal to %v" - maximumExcFail = "%s in %s should be less than %v" - minIncFail = "%s in %s should be greater than or equal to %v" - minExcFail = "%s in %s should be greater than %v" - uniqueFail = "%s in %s shouldn't contain duplicates" - maximumItemsFail = "%s in %s should have at most %d items" - minItemsFail = "%s in %s should have at least %d items" - typeFailNoIn = "%s must be of type %s" - typeFailWithDataNoIn = "%s must be of type %s: %q" - typeFailWithErrorNoIn = "%s must be of type %s, because: %s" - requiredFailNoIn = "%s is required" - readOnlyFailNoIn = "%s is readOnly" - tooLongMessageNoIn = "%s should be at most %d chars long" - tooShortMessageNoIn = "%s should be at least %d chars long" - patternFailNoIn = "%s should match '%s'" - enumFailNoIn = "%s should be one of %v" - multipleOfFailNoIn = "%s should be a multiple of %v" - maximumIncFailNoIn = "%s should be less than or equal to %v" - maximumExcFailNoIn = "%s should be less than %v" - minIncFailNoIn = "%s should be greater than or equal to %v" - minExcFailNoIn = "%s should be greater than %v" - uniqueFailNoIn = "%s shouldn't contain duplicates" - maximumItemsFailNoIn = "%s should have at most %d items" - minItemsFailNoIn = "%s should have at least %d items" - noAdditionalItems = "%s in %s can't have additional items" - noAdditionalItemsNoIn = "%s can't have additional items" - tooFewProperties = "%s in %s should have at least %d properties" - tooFewPropertiesNoIn = "%s should have at least %d properties" - tooManyProperties = "%s in %s should have at most %d properties" - tooManyPropertiesNoIn = "%s should have at most %d properties" - unallowedProperty = "%s.%s in %s is a forbidden property" - unallowedPropertyNoIn = "%s.%s is a forbidden property" - failedAllPatternProps = "%s.%s in %s failed all pattern properties" - failedAllPatternPropsNoIn = "%s.%s failed all pattern properties" - multipleOfMustBePositive = "factor MultipleOf declared for %s must be positive: %v" -) - -const maximumValidHTTPCode = 600 - -// All code responses can be used to differentiate errors for different handling -// by the consuming program -const ( - // CompositeErrorCode remains 422 for backwards-compatibility - // and to separate it from validation errors with cause - CompositeErrorCode = http.StatusUnprocessableEntity - - // InvalidTypeCode is used for any subclass of invalid types - InvalidTypeCode = maximumValidHTTPCode + iota - RequiredFailCode - TooLongFailCode - TooShortFailCode - PatternFailCode - EnumFailCode - MultipleOfFailCode - MaxFailCode - MinFailCode - UniqueFailCode - MaxItemsFailCode - MinItemsFailCode - NoAdditionalItemsCode - TooFewPropertiesCode - TooManyPropertiesCode - UnallowedPropertyCode - FailedAllPatternPropsCode - MultipleOfMustBePositiveCode - ReadOnlyFailCode -) - -// CompositeError is an error that groups several errors together -type CompositeError struct { - Errors []error - code int32 - message string -} - -// Code for this error -func (c *CompositeError) Code() int32 { - return c.code -} - -func (c *CompositeError) Error() string { - if len(c.Errors) > 0 { - msgs := []string{c.message + ":"} - for _, e := range c.Errors { - msgs = append(msgs, e.Error()) - } - return strings.Join(msgs, "\n") - } - return c.message -} - -func (c *CompositeError) Unwrap() []error { - return c.Errors -} - -// MarshalJSON implements the JSON encoding interface -func (c CompositeError) MarshalJSON() ([]byte, error) { - return json.Marshal(map[string]interface{}{ - "code": c.code, - "message": c.message, - "errors": c.Errors, - }) -} - -// CompositeValidationError an error to wrap a bunch of other errors -func CompositeValidationError(errors ...error) *CompositeError { - return &CompositeError{ - code: CompositeErrorCode, - Errors: append(make([]error, 0, len(errors)), errors...), - message: "validation failure list", - } -} - -// ValidateName recursively sets the name for all validations or updates them for nested properties -func (c *CompositeError) ValidateName(name string) *CompositeError { - for i, e := range c.Errors { - if ve, ok := e.(*Validation); ok { - c.Errors[i] = ve.ValidateName(name) - } else if ce, ok := e.(*CompositeError); ok { - c.Errors[i] = ce.ValidateName(name) - } - } - - return c -} - -// FailedAllPatternProperties an error for when the property doesn't match a pattern -func FailedAllPatternProperties(name, in, key string) *Validation { - msg := fmt.Sprintf(failedAllPatternProps, name, key, in) - if in == "" { - msg = fmt.Sprintf(failedAllPatternPropsNoIn, name, key) - } - return &Validation{ - code: FailedAllPatternPropsCode, - Name: name, - In: in, - Value: key, - message: msg, - } -} - -// PropertyNotAllowed an error for when the property doesn't match a pattern -func PropertyNotAllowed(name, in, key string) *Validation { - msg := fmt.Sprintf(unallowedProperty, name, key, in) - if in == "" { - msg = fmt.Sprintf(unallowedPropertyNoIn, name, key) - } - return &Validation{ - code: UnallowedPropertyCode, - Name: name, - In: in, - Value: key, - message: msg, - } -} - -// TooFewProperties an error for an object with too few properties -func TooFewProperties(name, in string, n int64) *Validation { - msg := fmt.Sprintf(tooFewProperties, name, in, n) - if in == "" { - msg = fmt.Sprintf(tooFewPropertiesNoIn, name, n) - } - return &Validation{ - code: TooFewPropertiesCode, - Name: name, - In: in, - Value: n, - message: msg, - } -} - -// TooManyProperties an error for an object with too many properties -func TooManyProperties(name, in string, n int64) *Validation { - msg := fmt.Sprintf(tooManyProperties, name, in, n) - if in == "" { - msg = fmt.Sprintf(tooManyPropertiesNoIn, name, n) - } - return &Validation{ - code: TooManyPropertiesCode, - Name: name, - In: in, - Value: n, - message: msg, - } -} - -// AdditionalItemsNotAllowed an error for invalid additional items -func AdditionalItemsNotAllowed(name, in string) *Validation { - msg := fmt.Sprintf(noAdditionalItems, name, in) - if in == "" { - msg = fmt.Sprintf(noAdditionalItemsNoIn, name) - } - return &Validation{ - code: NoAdditionalItemsCode, - Name: name, - In: in, - message: msg, - } -} - -// InvalidCollectionFormat another flavor of invalid type error -func InvalidCollectionFormat(name, in, format string) *Validation { - return &Validation{ - code: InvalidTypeCode, - Name: name, - In: in, - Value: format, - message: fmt.Sprintf("the collection format %q is not supported for the %s param %q", format, in, name), - } -} - -// InvalidTypeName an error for when the type is invalid -func InvalidTypeName(typeName string) *Validation { - return &Validation{ - code: InvalidTypeCode, - Value: typeName, - message: fmt.Sprintf(invalidType, typeName), - } -} - -// InvalidType creates an error for when the type is invalid -func InvalidType(name, in, typeName string, value interface{}) *Validation { - var message string - - if in != "" { - switch value.(type) { - case string: - message = fmt.Sprintf(typeFailWithData, name, in, typeName, value) - case error: - message = fmt.Sprintf(typeFailWithError, name, in, typeName, value) - default: - message = fmt.Sprintf(typeFail, name, in, typeName) - } - } else { - switch value.(type) { - case string: - message = fmt.Sprintf(typeFailWithDataNoIn, name, typeName, value) - case error: - message = fmt.Sprintf(typeFailWithErrorNoIn, name, typeName, value) - default: - message = fmt.Sprintf(typeFailNoIn, name, typeName) - } - } - - return &Validation{ - code: InvalidTypeCode, - Name: name, - In: in, - Value: value, - message: message, - } - -} - -// DuplicateItems error for when an array contains duplicates -func DuplicateItems(name, in string) *Validation { - msg := fmt.Sprintf(uniqueFail, name, in) - if in == "" { - msg = fmt.Sprintf(uniqueFailNoIn, name) - } - return &Validation{ - code: UniqueFailCode, - Name: name, - In: in, - message: msg, - } -} - -// TooManyItems error for when an array contains too many items -func TooManyItems(name, in string, maximum int64, value interface{}) *Validation { - msg := fmt.Sprintf(maximumItemsFail, name, in, maximum) - if in == "" { - msg = fmt.Sprintf(maximumItemsFailNoIn, name, maximum) - } - - return &Validation{ - code: MaxItemsFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// TooFewItems error for when an array contains too few items -func TooFewItems(name, in string, minimum int64, value interface{}) *Validation { - msg := fmt.Sprintf(minItemsFail, name, in, minimum) - if in == "" { - msg = fmt.Sprintf(minItemsFailNoIn, name, minimum) - } - return &Validation{ - code: MinItemsFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// ExceedsMaximumInt error for when maximumimum validation fails -func ExceedsMaximumInt(name, in string, maximum int64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := maximumIncFailNoIn - if exclusive { - m = maximumExcFailNoIn - } - message = fmt.Sprintf(m, name, maximum) - } else { - m := maximumIncFail - if exclusive { - m = maximumExcFail - } - message = fmt.Sprintf(m, name, in, maximum) - } - return &Validation{ - code: MaxFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// ExceedsMaximumUint error for when maximumimum validation fails -func ExceedsMaximumUint(name, in string, maximum uint64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := maximumIncFailNoIn - if exclusive { - m = maximumExcFailNoIn - } - message = fmt.Sprintf(m, name, maximum) - } else { - m := maximumIncFail - if exclusive { - m = maximumExcFail - } - message = fmt.Sprintf(m, name, in, maximum) - } - return &Validation{ - code: MaxFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// ExceedsMaximum error for when maximumimum validation fails -func ExceedsMaximum(name, in string, maximum float64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := maximumIncFailNoIn - if exclusive { - m = maximumExcFailNoIn - } - message = fmt.Sprintf(m, name, maximum) - } else { - m := maximumIncFail - if exclusive { - m = maximumExcFail - } - message = fmt.Sprintf(m, name, in, maximum) - } - return &Validation{ - code: MaxFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// ExceedsMinimumInt error for when minimum validation fails -func ExceedsMinimumInt(name, in string, minimum int64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := minIncFailNoIn - if exclusive { - m = minExcFailNoIn - } - message = fmt.Sprintf(m, name, minimum) - } else { - m := minIncFail - if exclusive { - m = minExcFail - } - message = fmt.Sprintf(m, name, in, minimum) - } - return &Validation{ - code: MinFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// ExceedsMinimumUint error for when minimum validation fails -func ExceedsMinimumUint(name, in string, minimum uint64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := minIncFailNoIn - if exclusive { - m = minExcFailNoIn - } - message = fmt.Sprintf(m, name, minimum) - } else { - m := minIncFail - if exclusive { - m = minExcFail - } - message = fmt.Sprintf(m, name, in, minimum) - } - return &Validation{ - code: MinFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// ExceedsMinimum error for when minimum validation fails -func ExceedsMinimum(name, in string, minimum float64, exclusive bool, value interface{}) *Validation { - var message string - if in == "" { - m := minIncFailNoIn - if exclusive { - m = minExcFailNoIn - } - message = fmt.Sprintf(m, name, minimum) - } else { - m := minIncFail - if exclusive { - m = minExcFail - } - message = fmt.Sprintf(m, name, in, minimum) - } - return &Validation{ - code: MinFailCode, - Name: name, - In: in, - Value: value, - message: message, - } -} - -// NotMultipleOf error for when multiple of validation fails -func NotMultipleOf(name, in string, multiple, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(multipleOfFailNoIn, name, multiple) - } else { - msg = fmt.Sprintf(multipleOfFail, name, in, multiple) - } - return &Validation{ - code: MultipleOfFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// EnumFail error for when an enum validation fails -func EnumFail(name, in string, value interface{}, values []interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(enumFailNoIn, name, values) - } else { - msg = fmt.Sprintf(enumFail, name, in, values) - } - - return &Validation{ - code: EnumFailCode, - Name: name, - In: in, - Value: value, - Values: values, - message: msg, - } -} - -// Required error for when a value is missing -func Required(name, in string, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(requiredFailNoIn, name) - } else { - msg = fmt.Sprintf(requiredFail, name, in) - } - return &Validation{ - code: RequiredFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// ReadOnly error for when a value is present in request -func ReadOnly(name, in string, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(readOnlyFailNoIn, name) - } else { - msg = fmt.Sprintf(readOnlyFail, name, in) - } - return &Validation{ - code: ReadOnlyFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// TooLong error for when a string is too long -func TooLong(name, in string, maximum int64, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(tooLongMessageNoIn, name, maximum) - } else { - msg = fmt.Sprintf(tooLongMessage, name, in, maximum) - } - return &Validation{ - code: TooLongFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// TooShort error for when a string is too short -func TooShort(name, in string, minimum int64, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(tooShortMessageNoIn, name, minimum) - } else { - msg = fmt.Sprintf(tooShortMessage, name, in, minimum) - } - - return &Validation{ - code: TooShortFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// FailedPattern error for when a string fails a regex pattern match -// the pattern that is returned is the ECMA syntax version of the pattern not the golang version. -func FailedPattern(name, in, pattern string, value interface{}) *Validation { - var msg string - if in == "" { - msg = fmt.Sprintf(patternFailNoIn, name, pattern) - } else { - msg = fmt.Sprintf(patternFail, name, in, pattern) - } - - return &Validation{ - code: PatternFailCode, - Name: name, - In: in, - Value: value, - message: msg, - } -} - -// MultipleOfMustBePositive error for when a -// multipleOf factor is negative -func MultipleOfMustBePositive(name, in string, factor interface{}) *Validation { - return &Validation{ - code: MultipleOfMustBePositiveCode, - Name: name, - In: in, - Value: factor, - message: fmt.Sprintf(multipleOfMustBePositive, name, factor), - } -} diff --git a/vendor/github.com/go-openapi/loads/.editorconfig b/vendor/github.com/go-openapi/loads/.editorconfig deleted file mode 100644 index 3152da69a5..0000000000 --- a/vendor/github.com/go-openapi/loads/.editorconfig +++ /dev/null @@ -1,26 +0,0 @@ -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true - -# Set default charset -[*.{js,py,go,scala,rb,java,html,css,less,sass,md}] -charset = utf-8 - -# Tab indentation (no size specified) -[*.go] -indent_style = tab - -[*.md] -trim_trailing_whitespace = false - -# Matches the exact files either package.json or .travis.yml -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 diff --git a/vendor/github.com/go-openapi/loads/.gitignore b/vendor/github.com/go-openapi/loads/.gitignore deleted file mode 100644 index e4f15f17bf..0000000000 --- a/vendor/github.com/go-openapi/loads/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -secrets.yml -coverage.out -profile.cov -profile.out diff --git a/vendor/github.com/go-openapi/loads/.golangci.yml b/vendor/github.com/go-openapi/loads/.golangci.yml deleted file mode 100644 index 22f8d21cca..0000000000 --- a/vendor/github.com/go-openapi/loads/.golangci.yml +++ /dev/null @@ -1,61 +0,0 @@ -linters-settings: - govet: - check-shadowing: true - golint: - min-confidence: 0 - gocyclo: - min-complexity: 45 - maligned: - suggest-new: true - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - maligned - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - gomnd - - exhaustivestruct - - goerr113 - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - ifshort - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - - deadcode - - interfacer - - scopelint - - varcheck - - structcheck - - golint - - nosnakecase diff --git a/vendor/github.com/go-openapi/loads/.travis.yml b/vendor/github.com/go-openapi/loads/.travis.yml deleted file mode 100644 index cd4a7c331b..0000000000 --- a/vendor/github.com/go-openapi/loads/.travis.yml +++ /dev/null @@ -1,25 +0,0 @@ -after_success: -- bash <(curl -s https://codecov.io/bash) -go: -- 1.16.x -- 1.x -install: -- go get gotest.tools/gotestsum -language: go -arch: -- amd64 -- ppc64le -jobs: - include: - # include linting job, but only for latest go version and amd64 arch - - go: 1.x - arch: amd64 - install: - go get github.com/golangci/golangci-lint/cmd/golangci-lint - script: - - golangci-lint run --new-from-rev master -notifications: - slack: - secure: OxkPwVp35qBTUilgWC8xykSj+sGMcj0h8IIOKD+Rflx2schZVlFfdYdyVBM+s9OqeOfvtuvnR9v1Ye2rPKAvcjWdC4LpRGUsgmItZaI6Um8Aj6+K9udCw5qrtZVfOVmRu8LieH//XznWWKdOultUuniW0MLqw5+II87Gd00RWbCGi0hk0PykHe7uK+PDA2BEbqyZ2WKKYCvfB3j+0nrFOHScXqnh0V05l2E83J4+Sgy1fsPy+1WdX58ZlNBG333ibaC1FS79XvKSmTgKRkx3+YBo97u6ZtUmJa5WZjf2OdLG3KIckGWAv6R5xgxeU31N0Ng8L332w/Edpp2O/M2bZwdnKJ8hJQikXIAQbICbr+lTDzsoNzMdEIYcHpJ5hjPbiUl3Bmd+Jnsjf5McgAZDiWIfpCKZ29tPCEkVwRsOCqkyPRMNMzHHmoja495P5jR+ODS7+J8RFg5xgcnOgpP9D4Wlhztlf5WyZMpkLxTUD+bZq2SRf50HfHFXTkfq22zPl3d1eq0yrLwh/Z/fWKkfb6SyysROL8y6s8u3dpFX1YHSg0BR6i913h4aoZw9B2BG27cafLLTwKYsp2dFo1PWl4O6u9giFJIeqwloZHLKKrwh0cBFhB7RH0I58asxkZpCH6uWjJierahmHe7iS+E6i+9oCHkOZ59hmCYNimIs3hM= -script: -- gotestsum -f short-verbose -- -race -timeout=20m -coverprofile=coverage.txt -covermode=atomic ./... diff --git a/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/loads/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/loads/LICENSE b/vendor/github.com/go-openapi/loads/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/loads/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/loads/README.md b/vendor/github.com/go-openapi/loads/README.md deleted file mode 100644 index f8bd440dfc..0000000000 --- a/vendor/github.com/go-openapi/loads/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Loads OAI specs [![Build Status](https://github.com/go-openapi/loads/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/loads/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/loads/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/loads) - -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/loads/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/loads?status.svg)](http://godoc.org/github.com/go-openapi/loads) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/loads)](https://goreportcard.com/report/github.com/go-openapi/loads) - -Loading of OAI specification documents from local or remote locations. Supports JSON and YAML documents. diff --git a/vendor/github.com/go-openapi/loads/doc.go b/vendor/github.com/go-openapi/loads/doc.go deleted file mode 100644 index 5bcaef5dbc..0000000000 --- a/vendor/github.com/go-openapi/loads/doc.go +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -// Package loads provides document loading methods for swagger (OAI) specifications. -// -// It is used by other go-openapi packages to load and run analysis on local or remote spec documents. -package loads diff --git a/vendor/github.com/go-openapi/loads/loaders.go b/vendor/github.com/go-openapi/loads/loaders.go deleted file mode 100644 index b2d1e034c5..0000000000 --- a/vendor/github.com/go-openapi/loads/loaders.go +++ /dev/null @@ -1,133 +0,0 @@ -package loads - -import ( - "encoding/json" - "errors" - "net/url" - - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -var ( - // Default chain of loaders, defined at the package level. - // - // By default this matches json and yaml documents. - // - // May be altered with AddLoader(). - loaders *loader -) - -func init() { - jsonLoader := &loader{ - DocLoaderWithMatch: DocLoaderWithMatch{ - Match: func(_ string) bool { - return true - }, - Fn: JSONDoc, - }, - } - - loaders = jsonLoader.WithHead(&loader{ - DocLoaderWithMatch: DocLoaderWithMatch{ - Match: swag.YAMLMatcher, - Fn: swag.YAMLDoc, - }, - }) - - // sets the global default loader for go-openapi/spec - spec.PathLoader = loaders.Load -} - -// DocLoader represents a doc loader type -type DocLoader func(string) (json.RawMessage, error) - -// DocMatcher represents a predicate to check if a loader matches -type DocMatcher func(string) bool - -// DocLoaderWithMatch describes a loading function for a given extension match. -type DocLoaderWithMatch struct { - Fn DocLoader - Match DocMatcher -} - -// NewDocLoaderWithMatch builds a DocLoaderWithMatch to be used in load options -func NewDocLoaderWithMatch(fn DocLoader, matcher DocMatcher) DocLoaderWithMatch { - return DocLoaderWithMatch{ - Fn: fn, - Match: matcher, - } -} - -type loader struct { - DocLoaderWithMatch - Next *loader -} - -// WithHead adds a loader at the head of the current stack -func (l *loader) WithHead(head *loader) *loader { - if head == nil { - return l - } - head.Next = l - return head -} - -// WithNext adds a loader at the trail of the current stack -func (l *loader) WithNext(next *loader) *loader { - l.Next = next - return next -} - -// Load the raw document from path -func (l *loader) Load(path string) (json.RawMessage, error) { - _, erp := url.Parse(path) - if erp != nil { - return nil, erp - } - - lastErr := errors.New("no loader matched") // default error if no match was found - for ldr := l; ldr != nil; ldr = ldr.Next { - if ldr.Match != nil && !ldr.Match(path) { - continue - } - - // try then move to next one if there is an error - b, err := ldr.Fn(path) - if err == nil { - return b, nil - } - - lastErr = err - } - - return nil, lastErr -} - -// JSONDoc loads a json document from either a file or a remote url -func JSONDoc(path string) (json.RawMessage, error) { - data, err := swag.LoadFromFileOrHTTP(path) - if err != nil { - return nil, err - } - return json.RawMessage(data), nil -} - -// AddLoader for a document, executed before other previously set loaders. -// -// This sets the configuration at the package level. -// -// NOTE: -// - this updates the default loader used by github.com/go-openapi/spec -// - since this sets package level globals, you shouln't call this concurrently -func AddLoader(predicate DocMatcher, load DocLoader) { - loaders = loaders.WithHead(&loader{ - DocLoaderWithMatch: DocLoaderWithMatch{ - Match: predicate, - Fn: load, - }, - }) - - // sets the global default loader for go-openapi/spec - spec.PathLoader = loaders.Load -} diff --git a/vendor/github.com/go-openapi/loads/options.go b/vendor/github.com/go-openapi/loads/options.go deleted file mode 100644 index f8305d5607..0000000000 --- a/vendor/github.com/go-openapi/loads/options.go +++ /dev/null @@ -1,61 +0,0 @@ -package loads - -type options struct { - loader *loader -} - -func defaultOptions() *options { - return &options{ - loader: loaders, - } -} - -func loaderFromOptions(options []LoaderOption) *loader { - opts := defaultOptions() - for _, apply := range options { - apply(opts) - } - - return opts.loader -} - -// LoaderOption allows to fine-tune the spec loader behavior -type LoaderOption func(*options) - -// WithDocLoader sets a custom loader for loading specs -func WithDocLoader(l DocLoader) LoaderOption { - return func(opt *options) { - if l == nil { - return - } - opt.loader = &loader{ - DocLoaderWithMatch: DocLoaderWithMatch{ - Fn: l, - }, - } - } -} - -// WithDocLoaderMatches sets a chain of custom loaders for loading specs -// for different extension matches. -// -// Loaders are executed in the order of provided DocLoaderWithMatch'es. -func WithDocLoaderMatches(l ...DocLoaderWithMatch) LoaderOption { - return func(opt *options) { - var final, prev *loader - for _, ldr := range l { - if ldr.Fn == nil { - continue - } - - if prev == nil { - final = &loader{DocLoaderWithMatch: ldr} - prev = final - continue - } - - prev = prev.WithNext(&loader{DocLoaderWithMatch: ldr}) - } - opt.loader = final - } -} diff --git a/vendor/github.com/go-openapi/loads/spec.go b/vendor/github.com/go-openapi/loads/spec.go deleted file mode 100644 index c9039cd5d7..0000000000 --- a/vendor/github.com/go-openapi/loads/spec.go +++ /dev/null @@ -1,275 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package loads - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "fmt" - - "github.com/go-openapi/analysis" - "github.com/go-openapi/spec" - "github.com/go-openapi/swag" -) - -func init() { - gob.Register(map[string]interface{}{}) - gob.Register([]interface{}{}) -} - -// Document represents a swagger spec document -type Document struct { - // specAnalyzer - Analyzer *analysis.Spec - spec *spec.Swagger - specFilePath string - origSpec *spec.Swagger - schema *spec.Schema - pathLoader *loader - raw json.RawMessage -} - -// JSONSpec loads a spec from a json document -func JSONSpec(path string, options ...LoaderOption) (*Document, error) { - data, err := JSONDoc(path) - if err != nil { - return nil, err - } - // convert to json - doc, err := Analyzed(data, "", options...) - if err != nil { - return nil, err - } - - doc.specFilePath = path - - return doc, nil -} - -// Embedded returns a Document based on embedded specs. No analysis is required -func Embedded(orig, flat json.RawMessage, options ...LoaderOption) (*Document, error) { - var origSpec, flatSpec spec.Swagger - if err := json.Unmarshal(orig, &origSpec); err != nil { - return nil, err - } - if err := json.Unmarshal(flat, &flatSpec); err != nil { - return nil, err - } - return &Document{ - raw: orig, - origSpec: &origSpec, - spec: &flatSpec, - pathLoader: loaderFromOptions(options), - }, nil -} - -// Spec loads a new spec document from a local or remote path -func Spec(path string, options ...LoaderOption) (*Document, error) { - ldr := loaderFromOptions(options) - - b, err := ldr.Load(path) - if err != nil { - return nil, err - } - - document, err := Analyzed(b, "", options...) - if err != nil { - return nil, err - } - - document.specFilePath = path - document.pathLoader = ldr - - return document, nil -} - -// Analyzed creates a new analyzed spec document for a root json.RawMessage. -func Analyzed(data json.RawMessage, version string, options ...LoaderOption) (*Document, error) { - if version == "" { - version = "2.0" - } - if version != "2.0" { - return nil, fmt.Errorf("spec version %q is not supported", version) - } - - raw, err := trimData(data) // trim blanks, then convert yaml docs into json - if err != nil { - return nil, err - } - - swspec := new(spec.Swagger) - if err = json.Unmarshal(raw, swspec); err != nil { - return nil, err - } - - origsqspec, err := cloneSpec(swspec) - if err != nil { - return nil, err - } - - d := &Document{ - Analyzer: analysis.New(swspec), // NOTE: at this moment, analysis does not follow $refs to documents outside the root doc - schema: spec.MustLoadSwagger20Schema(), - spec: swspec, - raw: raw, - origSpec: origsqspec, - pathLoader: loaderFromOptions(options), - } - - return d, nil -} - -func trimData(in json.RawMessage) (json.RawMessage, error) { - trimmed := bytes.TrimSpace(in) - if len(trimmed) == 0 { - return in, nil - } - - if trimmed[0] == '{' || trimmed[0] == '[' { - return trimmed, nil - } - - // assume yaml doc: convert it to json - yml, err := swag.BytesToYAMLDoc(trimmed) - if err != nil { - return nil, fmt.Errorf("analyzed: %v", err) - } - - d, err := swag.YAMLToJSON(yml) - if err != nil { - return nil, fmt.Errorf("analyzed: %v", err) - } - - return d, nil -} - -// Expanded expands the $ref fields in the spec document and returns a new spec document -func (d *Document) Expanded(options ...*spec.ExpandOptions) (*Document, error) { - swspec := new(spec.Swagger) - if err := json.Unmarshal(d.raw, swspec); err != nil { - return nil, err - } - - var expandOptions *spec.ExpandOptions - if len(options) > 0 { - expandOptions = options[0] - if expandOptions.RelativeBase == "" { - expandOptions.RelativeBase = d.specFilePath - } - } else { - expandOptions = &spec.ExpandOptions{ - RelativeBase: d.specFilePath, - } - } - - if expandOptions.PathLoader == nil { - if d.pathLoader != nil { - // use loader from Document options - expandOptions.PathLoader = d.pathLoader.Load - } else { - // use package level loader - expandOptions.PathLoader = loaders.Load - } - } - - if err := spec.ExpandSpec(swspec, expandOptions); err != nil { - return nil, err - } - - dd := &Document{ - Analyzer: analysis.New(swspec), - spec: swspec, - specFilePath: d.specFilePath, - schema: spec.MustLoadSwagger20Schema(), - raw: d.raw, - origSpec: d.origSpec, - } - return dd, nil -} - -// BasePath the base path for the API specified by this spec -func (d *Document) BasePath() string { - return d.spec.BasePath -} - -// Version returns the version of this spec -func (d *Document) Version() string { - return d.spec.Swagger -} - -// Schema returns the swagger 2.0 schema -func (d *Document) Schema() *spec.Schema { - return d.schema -} - -// Spec returns the swagger spec object model -func (d *Document) Spec() *spec.Swagger { - return d.spec -} - -// Host returns the host for the API -func (d *Document) Host() string { - return d.spec.Host -} - -// Raw returns the raw swagger spec as json bytes -func (d *Document) Raw() json.RawMessage { - return d.raw -} - -// OrigSpec yields the original spec -func (d *Document) OrigSpec() *spec.Swagger { - return d.origSpec -} - -// ResetDefinitions gives a shallow copy with the models reset to the original spec -func (d *Document) ResetDefinitions() *Document { - defs := make(map[string]spec.Schema, len(d.origSpec.Definitions)) - for k, v := range d.origSpec.Definitions { - defs[k] = v - } - - d.spec.Definitions = defs - return d -} - -// Pristine creates a new pristine document instance based on the input data -func (d *Document) Pristine() *Document { - raw, _ := json.Marshal(d.Spec()) - dd, _ := Analyzed(raw, d.Version()) - dd.pathLoader = d.pathLoader - dd.specFilePath = d.specFilePath - - return dd -} - -// SpecFilePath returns the file path of the spec if one is defined -func (d *Document) SpecFilePath() string { - return d.specFilePath -} - -func cloneSpec(src *spec.Swagger) (*spec.Swagger, error) { - var b bytes.Buffer - if err := gob.NewEncoder(&b).Encode(src); err != nil { - return nil, err - } - - var dst spec.Swagger - if err := gob.NewDecoder(&b).Decode(&dst); err != nil { - return nil, err - } - return &dst, nil -} diff --git a/vendor/github.com/go-openapi/runtime/.editorconfig b/vendor/github.com/go-openapi/runtime/.editorconfig deleted file mode 100644 index 3152da69a5..0000000000 --- a/vendor/github.com/go-openapi/runtime/.editorconfig +++ /dev/null @@ -1,26 +0,0 @@ -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true - -# Set default charset -[*.{js,py,go,scala,rb,java,html,css,less,sass,md}] -charset = utf-8 - -# Tab indentation (no size specified) -[*.go] -indent_style = tab - -[*.md] -trim_trailing_whitespace = false - -# Matches the exact files either package.json or .travis.yml -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 diff --git a/vendor/github.com/go-openapi/runtime/.gitattributes b/vendor/github.com/go-openapi/runtime/.gitattributes deleted file mode 100644 index d207b1802b..0000000000 --- a/vendor/github.com/go-openapi/runtime/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.go text eol=lf diff --git a/vendor/github.com/go-openapi/runtime/.gitignore b/vendor/github.com/go-openapi/runtime/.gitignore deleted file mode 100644 index fea8b84eca..0000000000 --- a/vendor/github.com/go-openapi/runtime/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -secrets.yml -coverage.out -*.cov -*.out -playground diff --git a/vendor/github.com/go-openapi/runtime/.golangci.yml b/vendor/github.com/go-openapi/runtime/.golangci.yml deleted file mode 100644 index 1c75557bac..0000000000 --- a/vendor/github.com/go-openapi/runtime/.golangci.yml +++ /dev/null @@ -1,62 +0,0 @@ -linters-settings: - govet: - check-shadowing: true - golint: - min-confidence: 0 - gocyclo: - min-complexity: 45 - maligned: - suggest-new: true - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - nilerr # nilerr crashes on this repo - - maligned - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - gomnd - - exhaustivestruct - - goerr113 - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - ifshort - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - - deadcode - - interfacer - - scopelint - - varcheck - - structcheck - - golint - - nosnakecase diff --git a/vendor/github.com/go-openapi/runtime/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/runtime/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/runtime/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/runtime/LICENSE b/vendor/github.com/go-openapi/runtime/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/runtime/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/runtime/README.md b/vendor/github.com/go-openapi/runtime/README.md deleted file mode 100644 index b07e0ad9d6..0000000000 --- a/vendor/github.com/go-openapi/runtime/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# runtime [![Build Status](https://github.com/go-openapi/runtime/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/runtime/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/runtime/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/runtime) - -[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/runtime/master/LICENSE) -[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/runtime.svg)](https://pkg.go.dev/github.com/go-openapi/runtime) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/runtime)](https://goreportcard.com/report/github.com/go-openapi/runtime) - -# go OpenAPI toolkit runtime - -The runtime component for use in code generation or as untyped usage. diff --git a/vendor/github.com/go-openapi/runtime/bytestream.go b/vendor/github.com/go-openapi/runtime/bytestream.go deleted file mode 100644 index f8fb482232..0000000000 --- a/vendor/github.com/go-openapi/runtime/bytestream.go +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "bytes" - "encoding" - "errors" - "fmt" - "io" - "reflect" - - "github.com/go-openapi/swag" -) - -func defaultCloser() error { return nil } - -type byteStreamOpt func(opts *byteStreamOpts) - -// ClosesStream when the bytestream consumer or producer is finished -func ClosesStream(opts *byteStreamOpts) { - opts.Close = true -} - -type byteStreamOpts struct { - Close bool -} - -// ByteStreamConsumer creates a consumer for byte streams. -// -// The consumer consumes from a provided reader into the data passed by reference. -// -// Supported output underlying types and interfaces, prioritized in this order: -// - io.ReaderFrom (for maximum control) -// - io.Writer (performs io.Copy) -// - encoding.BinaryUnmarshaler -// - *string -// - *[]byte -func ByteStreamConsumer(opts ...byteStreamOpt) Consumer { - var vals byteStreamOpts - for _, opt := range opts { - opt(&vals) - } - - return ConsumerFunc(func(reader io.Reader, data interface{}) error { - if reader == nil { - return errors.New("ByteStreamConsumer requires a reader") // early exit - } - if data == nil { - return errors.New("nil destination for ByteStreamConsumer") - } - - closer := defaultCloser - if vals.Close { - if cl, isReaderCloser := reader.(io.Closer); isReaderCloser { - closer = cl.Close - } - } - defer func() { - _ = closer() - }() - - if readerFrom, isReaderFrom := data.(io.ReaderFrom); isReaderFrom { - _, err := readerFrom.ReadFrom(reader) - return err - } - - if writer, isDataWriter := data.(io.Writer); isDataWriter { - _, err := io.Copy(writer, reader) - return err - } - - // buffers input before writing to data - var buf bytes.Buffer - _, err := buf.ReadFrom(reader) - if err != nil { - return err - } - b := buf.Bytes() - - switch destinationPointer := data.(type) { - case encoding.BinaryUnmarshaler: - return destinationPointer.UnmarshalBinary(b) - case *any: - switch (*destinationPointer).(type) { - case string: - *destinationPointer = string(b) - - return nil - - case []byte: - *destinationPointer = b - - return nil - } - default: - // check for the underlying type to be pointer to []byte or string, - if ptr := reflect.TypeOf(data); ptr.Kind() != reflect.Ptr { - return errors.New("destination must be a pointer") - } - - v := reflect.Indirect(reflect.ValueOf(data)) - t := v.Type() - - switch { - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Uint8: - v.SetBytes(b) - return nil - - case t.Kind() == reflect.String: - v.SetString(string(b)) - return nil - } - } - - return fmt.Errorf("%v (%T) is not supported by the ByteStreamConsumer, %s", - data, data, "can be resolved by supporting Writer/BinaryUnmarshaler interface") - }) -} - -// ByteStreamProducer creates a producer for byte streams. -// -// The producer takes input data then writes to an output writer (essentially as a pipe). -// -// Supported input underlying types and interfaces, prioritized in this order: -// - io.WriterTo (for maximum control) -// - io.Reader (performs io.Copy). A ReadCloser is closed before exiting. -// - encoding.BinaryMarshaler -// - error (writes as a string) -// - []byte -// - string -// - struct, other slices: writes as JSON -func ByteStreamProducer(opts ...byteStreamOpt) Producer { - var vals byteStreamOpts - for _, opt := range opts { - opt(&vals) - } - - return ProducerFunc(func(writer io.Writer, data interface{}) error { - if writer == nil { - return errors.New("ByteStreamProducer requires a writer") // early exit - } - if data == nil { - return errors.New("nil data for ByteStreamProducer") - } - - closer := defaultCloser - if vals.Close { - if cl, isWriterCloser := writer.(io.Closer); isWriterCloser { - closer = cl.Close - } - } - defer func() { - _ = closer() - }() - - if rc, isDataCloser := data.(io.ReadCloser); isDataCloser { - defer rc.Close() - } - - switch origin := data.(type) { - case io.WriterTo: - _, err := origin.WriteTo(writer) - return err - - case io.Reader: - _, err := io.Copy(writer, origin) - return err - - case encoding.BinaryMarshaler: - bytes, err := origin.MarshalBinary() - if err != nil { - return err - } - - _, err = writer.Write(bytes) - return err - - case error: - _, err := writer.Write([]byte(origin.Error())) - return err - - default: - v := reflect.Indirect(reflect.ValueOf(data)) - t := v.Type() - - switch { - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Uint8: - _, err := writer.Write(v.Bytes()) - return err - - case t.Kind() == reflect.String: - _, err := writer.Write([]byte(v.String())) - return err - - case t.Kind() == reflect.Struct || t.Kind() == reflect.Slice: - b, err := swag.WriteJSON(data) - if err != nil { - return err - } - - _, err = writer.Write(b) - return err - } - } - - return fmt.Errorf("%v (%T) is not supported by the ByteStreamProducer, %s", - data, data, "can be resolved by supporting Reader/BinaryMarshaler interface") - }) -} diff --git a/vendor/github.com/go-openapi/runtime/client_auth_info.go b/vendor/github.com/go-openapi/runtime/client_auth_info.go deleted file mode 100644 index c6c97d9a7c..0000000000 --- a/vendor/github.com/go-openapi/runtime/client_auth_info.go +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import "github.com/go-openapi/strfmt" - -// A ClientAuthInfoWriterFunc converts a function to a request writer interface -type ClientAuthInfoWriterFunc func(ClientRequest, strfmt.Registry) error - -// AuthenticateRequest adds authentication data to the request -func (fn ClientAuthInfoWriterFunc) AuthenticateRequest(req ClientRequest, reg strfmt.Registry) error { - return fn(req, reg) -} - -// A ClientAuthInfoWriter implementor knows how to write authentication info to a request -type ClientAuthInfoWriter interface { - AuthenticateRequest(ClientRequest, strfmt.Registry) error -} diff --git a/vendor/github.com/go-openapi/runtime/client_operation.go b/vendor/github.com/go-openapi/runtime/client_operation.go deleted file mode 100644 index 5a5d63563a..0000000000 --- a/vendor/github.com/go-openapi/runtime/client_operation.go +++ /dev/null @@ -1,41 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "context" - "net/http" -) - -// ClientOperation represents the context for a swagger operation to be submitted to the transport -type ClientOperation struct { - ID string - Method string - PathPattern string - ProducesMediaTypes []string - ConsumesMediaTypes []string - Schemes []string - AuthInfo ClientAuthInfoWriter - Params ClientRequestWriter - Reader ClientResponseReader - Context context.Context //nolint:containedctx // we precisely want this type to contain the request context - Client *http.Client -} - -// A ClientTransport implementor knows how to submit Request objects to some destination -type ClientTransport interface { - // Submit(string, RequestWriter, ResponseReader, AuthInfoWriter) (interface{}, error) - Submit(*ClientOperation) (interface{}, error) -} diff --git a/vendor/github.com/go-openapi/runtime/client_request.go b/vendor/github.com/go-openapi/runtime/client_request.go deleted file mode 100644 index 4ebb2deabe..0000000000 --- a/vendor/github.com/go-openapi/runtime/client_request.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "io" - "net/http" - "net/url" - "time" - - "github.com/go-openapi/strfmt" -) - -// ClientRequestWriterFunc converts a function to a request writer interface -type ClientRequestWriterFunc func(ClientRequest, strfmt.Registry) error - -// WriteToRequest adds data to the request -func (fn ClientRequestWriterFunc) WriteToRequest(req ClientRequest, reg strfmt.Registry) error { - return fn(req, reg) -} - -// ClientRequestWriter is an interface for things that know how to write to a request -type ClientRequestWriter interface { - WriteToRequest(ClientRequest, strfmt.Registry) error -} - -// ClientRequest is an interface for things that know how to -// add information to a swagger client request. -type ClientRequest interface { //nolint:interfacebloat // a swagger-capable request is quite rich, hence the many getter/setters - SetHeaderParam(string, ...string) error - - GetHeaderParams() http.Header - - SetQueryParam(string, ...string) error - - SetFormParam(string, ...string) error - - SetPathParam(string, string) error - - GetQueryParams() url.Values - - SetFileParam(string, ...NamedReadCloser) error - - SetBodyParam(interface{}) error - - SetTimeout(time.Duration) error - - GetMethod() string - - GetPath() string - - GetBody() []byte - - GetBodyParam() interface{} - - GetFileParam() map[string][]NamedReadCloser -} - -// NamedReadCloser represents a named ReadCloser interface -type NamedReadCloser interface { - io.ReadCloser - Name() string -} - -// NamedReader creates a NamedReadCloser for use as file upload -func NamedReader(name string, rdr io.Reader) NamedReadCloser { - rc, ok := rdr.(io.ReadCloser) - if !ok { - rc = io.NopCloser(rdr) - } - return &namedReadCloser{ - name: name, - cr: rc, - } -} - -type namedReadCloser struct { - name string - cr io.ReadCloser -} - -func (n *namedReadCloser) Close() error { - return n.cr.Close() -} -func (n *namedReadCloser) Read(p []byte) (int, error) { - return n.cr.Read(p) -} -func (n *namedReadCloser) Name() string { - return n.name -} - -type TestClientRequest struct { - Headers http.Header - Body interface{} -} - -func (t *TestClientRequest) SetHeaderParam(name string, values ...string) error { - if t.Headers == nil { - t.Headers = make(http.Header) - } - t.Headers.Set(name, values[0]) - return nil -} - -func (t *TestClientRequest) SetQueryParam(_ string, _ ...string) error { return nil } - -func (t *TestClientRequest) SetFormParam(_ string, _ ...string) error { return nil } - -func (t *TestClientRequest) SetPathParam(_ string, _ string) error { return nil } - -func (t *TestClientRequest) SetFileParam(_ string, _ ...NamedReadCloser) error { return nil } - -func (t *TestClientRequest) SetBodyParam(body interface{}) error { - t.Body = body - return nil -} - -func (t *TestClientRequest) SetTimeout(time.Duration) error { - return nil -} - -func (t *TestClientRequest) GetQueryParams() url.Values { return nil } - -func (t *TestClientRequest) GetMethod() string { return "" } - -func (t *TestClientRequest) GetPath() string { return "" } - -func (t *TestClientRequest) GetBody() []byte { return nil } - -func (t *TestClientRequest) GetBodyParam() interface{} { - return t.Body -} - -func (t *TestClientRequest) GetFileParam() map[string][]NamedReadCloser { - return nil -} - -func (t *TestClientRequest) GetHeaderParams() http.Header { - return t.Headers -} diff --git a/vendor/github.com/go-openapi/runtime/client_response.go b/vendor/github.com/go-openapi/runtime/client_response.go deleted file mode 100644 index 0d1691149d..0000000000 --- a/vendor/github.com/go-openapi/runtime/client_response.go +++ /dev/null @@ -1,110 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "encoding/json" - "fmt" - "io" -) - -// A ClientResponse represents a client response -// This bridges between responses obtained from different transports -type ClientResponse interface { - Code() int - Message() string - GetHeader(string) string - GetHeaders(string) []string - Body() io.ReadCloser -} - -// A ClientResponseReaderFunc turns a function into a ClientResponseReader interface implementation -type ClientResponseReaderFunc func(ClientResponse, Consumer) (interface{}, error) - -// ReadResponse reads the response -func (read ClientResponseReaderFunc) ReadResponse(resp ClientResponse, consumer Consumer) (interface{}, error) { - return read(resp, consumer) -} - -// A ClientResponseReader is an interface for things want to read a response. -// An application of this is to create structs from response values -type ClientResponseReader interface { - ReadResponse(ClientResponse, Consumer) (interface{}, error) -} - -// NewAPIError creates a new API error -func NewAPIError(opName string, payload interface{}, code int) *APIError { - return &APIError{ - OperationName: opName, - Response: payload, - Code: code, - } -} - -// APIError wraps an error model and captures the status code -type APIError struct { - OperationName string - Response interface{} - Code int -} - -func (o *APIError) Error() string { - var resp []byte - if err, ok := o.Response.(error); ok { - resp = []byte("'" + err.Error() + "'") - } else { - resp, _ = json.Marshal(o.Response) - } - return fmt.Sprintf("%s (status %d): %s", o.OperationName, o.Code, resp) -} - -func (o *APIError) String() string { - return o.Error() -} - -// IsSuccess returns true when this elapse o k response returns a 2xx status code -func (o *APIError) IsSuccess() bool { - return o.Code/100 == 2 -} - -// IsRedirect returns true when this elapse o k response returns a 3xx status code -func (o *APIError) IsRedirect() bool { - return o.Code/100 == 3 -} - -// IsClientError returns true when this elapse o k response returns a 4xx status code -func (o *APIError) IsClientError() bool { - return o.Code/100 == 4 -} - -// IsServerError returns true when this elapse o k response returns a 5xx status code -func (o *APIError) IsServerError() bool { - return o.Code/100 == 5 -} - -// IsCode returns true when this elapse o k response returns a 4xx status code -func (o *APIError) IsCode(code int) bool { - return o.Code == code -} - -// A ClientResponseStatus is a common interface implemented by all responses on the generated code -// You can use this to treat any client response based on status code -type ClientResponseStatus interface { - IsSuccess() bool - IsRedirect() bool - IsClientError() bool - IsServerError() bool - IsCode(int) bool -} diff --git a/vendor/github.com/go-openapi/runtime/constants.go b/vendor/github.com/go-openapi/runtime/constants.go deleted file mode 100644 index 515969242c..0000000000 --- a/vendor/github.com/go-openapi/runtime/constants.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -const ( - // HeaderContentType represents a http content-type header, it's value is supposed to be a mime type - HeaderContentType = "Content-Type" - - // HeaderTransferEncoding represents a http transfer-encoding header. - HeaderTransferEncoding = "Transfer-Encoding" - - // HeaderAccept the Accept header - HeaderAccept = "Accept" - // HeaderAuthorization the Authorization header - HeaderAuthorization = "Authorization" - - charsetKey = "charset" - - // DefaultMime the default fallback mime type - DefaultMime = "application/octet-stream" - // JSONMime the json mime type - JSONMime = "application/json" - // YAMLMime the yaml mime type - YAMLMime = "application/x-yaml" - // XMLMime the xml mime type - XMLMime = "application/xml" - // TextMime the text mime type - TextMime = "text/plain" - // HTMLMime the html mime type - HTMLMime = "text/html" - // CSVMime the csv mime type - CSVMime = "text/csv" - // MultipartFormMime the multipart form mime type - MultipartFormMime = "multipart/form-data" - // URLencodedFormMime the url encoded form mime type - URLencodedFormMime = "application/x-www-form-urlencoded" -) diff --git a/vendor/github.com/go-openapi/runtime/csv.go b/vendor/github.com/go-openapi/runtime/csv.go deleted file mode 100644 index c9597bcd6e..0000000000 --- a/vendor/github.com/go-openapi/runtime/csv.go +++ /dev/null @@ -1,350 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "bytes" - "context" - "encoding" - "encoding/csv" - "errors" - "fmt" - "io" - "reflect" - - "golang.org/x/sync/errgroup" -) - -// CSVConsumer creates a new CSV consumer. -// -// The consumer consumes CSV records from a provided reader into the data passed by reference. -// -// CSVOpts options may be specified to alter the default CSV behavior on the reader and the writer side (e.g. separator, skip header, ...). -// The defaults are those of the standard library's csv.Reader and csv.Writer. -// -// Supported output underlying types and interfaces, prioritized in this order: -// - *csv.Writer -// - CSVWriter (writer options are ignored) -// - io.Writer (as raw bytes) -// - io.ReaderFrom (as raw bytes) -// - encoding.BinaryUnmarshaler (as raw bytes) -// - *[][]string (as a collection of records) -// - *[]byte (as raw bytes) -// - *string (a raw bytes) -// -// The consumer prioritizes situations where buffering the input is not required. -func CSVConsumer(opts ...CSVOpt) Consumer { - o := csvOptsWithDefaults(opts) - - return ConsumerFunc(func(reader io.Reader, data interface{}) error { - if reader == nil { - return errors.New("CSVConsumer requires a reader") - } - if data == nil { - return errors.New("nil destination for CSVConsumer") - } - - csvReader := csv.NewReader(reader) - o.applyToReader(csvReader) - closer := defaultCloser - if o.closeStream { - if cl, isReaderCloser := reader.(io.Closer); isReaderCloser { - closer = cl.Close - } - } - defer func() { - _ = closer() - }() - - switch destination := data.(type) { - case *csv.Writer: - csvWriter := destination - o.applyToWriter(csvWriter) - - return pipeCSV(csvWriter, csvReader, o) - - case CSVWriter: - csvWriter := destination - // no writer options available - - return pipeCSV(csvWriter, csvReader, o) - - case io.Writer: - csvWriter := csv.NewWriter(destination) - o.applyToWriter(csvWriter) - - return pipeCSV(csvWriter, csvReader, o) - - case io.ReaderFrom: - var buf bytes.Buffer - csvWriter := csv.NewWriter(&buf) - o.applyToWriter(csvWriter) - if err := bufferedCSV(csvWriter, csvReader, o); err != nil { - return err - } - _, err := destination.ReadFrom(&buf) - - return err - - case encoding.BinaryUnmarshaler: - var buf bytes.Buffer - csvWriter := csv.NewWriter(&buf) - o.applyToWriter(csvWriter) - if err := bufferedCSV(csvWriter, csvReader, o); err != nil { - return err - } - - return destination.UnmarshalBinary(buf.Bytes()) - - default: - // support *[][]string, *[]byte, *string - if ptr := reflect.TypeOf(data); ptr.Kind() != reflect.Ptr { - return errors.New("destination must be a pointer") - } - - v := reflect.Indirect(reflect.ValueOf(data)) - t := v.Type() - - switch { - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Slice && t.Elem().Elem().Kind() == reflect.String: - csvWriter := &csvRecordsWriter{} - // writer options are ignored - if err := pipeCSV(csvWriter, csvReader, o); err != nil { - return err - } - - v.Grow(len(csvWriter.records)) - v.SetCap(len(csvWriter.records)) // in case Grow was unnessary, trim down the capacity - v.SetLen(len(csvWriter.records)) - reflect.Copy(v, reflect.ValueOf(csvWriter.records)) - - return nil - - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Uint8: - var buf bytes.Buffer - csvWriter := csv.NewWriter(&buf) - o.applyToWriter(csvWriter) - if err := bufferedCSV(csvWriter, csvReader, o); err != nil { - return err - } - v.SetBytes(buf.Bytes()) - - return nil - - case t.Kind() == reflect.String: - var buf bytes.Buffer - csvWriter := csv.NewWriter(&buf) - o.applyToWriter(csvWriter) - if err := bufferedCSV(csvWriter, csvReader, o); err != nil { - return err - } - v.SetString(buf.String()) - - return nil - - default: - return fmt.Errorf("%v (%T) is not supported by the CSVConsumer, %s", - data, data, "can be resolved by supporting CSVWriter/Writer/BinaryUnmarshaler interface", - ) - } - } - }) -} - -// CSVProducer creates a new CSV producer. -// -// The producer takes input data then writes as CSV to an output writer (essentially as a pipe). -// -// Supported input underlying types and interfaces, prioritized in this order: -// - *csv.Reader -// - CSVReader (reader options are ignored) -// - io.Reader -// - io.WriterTo -// - encoding.BinaryMarshaler -// - [][]string -// - []byte -// - string -// -// The producer prioritizes situations where buffering the input is not required. -func CSVProducer(opts ...CSVOpt) Producer { - o := csvOptsWithDefaults(opts) - - return ProducerFunc(func(writer io.Writer, data interface{}) error { - if writer == nil { - return errors.New("CSVProducer requires a writer") - } - if data == nil { - return errors.New("nil data for CSVProducer") - } - - csvWriter := csv.NewWriter(writer) - o.applyToWriter(csvWriter) - closer := defaultCloser - if o.closeStream { - if cl, isWriterCloser := writer.(io.Closer); isWriterCloser { - closer = cl.Close - } - } - defer func() { - _ = closer() - }() - - if rc, isDataCloser := data.(io.ReadCloser); isDataCloser { - defer rc.Close() - } - - switch origin := data.(type) { - case *csv.Reader: - csvReader := origin - o.applyToReader(csvReader) - - return pipeCSV(csvWriter, csvReader, o) - - case CSVReader: - csvReader := origin - // no reader options available - - return pipeCSV(csvWriter, csvReader, o) - - case io.Reader: - csvReader := csv.NewReader(origin) - o.applyToReader(csvReader) - - return pipeCSV(csvWriter, csvReader, o) - - case io.WriterTo: - // async piping of the writes performed by WriteTo - r, w := io.Pipe() - csvReader := csv.NewReader(r) - o.applyToReader(csvReader) - - pipe, _ := errgroup.WithContext(context.Background()) - pipe.Go(func() error { - _, err := origin.WriteTo(w) - _ = w.Close() - return err - }) - - pipe.Go(func() error { - defer func() { - _ = r.Close() - }() - - return pipeCSV(csvWriter, csvReader, o) - }) - - return pipe.Wait() - - case encoding.BinaryMarshaler: - buf, err := origin.MarshalBinary() - if err != nil { - return err - } - rdr := bytes.NewBuffer(buf) - csvReader := csv.NewReader(rdr) - - return bufferedCSV(csvWriter, csvReader, o) - - default: - // support [][]string, []byte, string (or pointers to those) - v := reflect.Indirect(reflect.ValueOf(data)) - t := v.Type() - - switch { - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Slice && t.Elem().Elem().Kind() == reflect.String: - csvReader := &csvRecordsWriter{ - records: make([][]string, v.Len()), - } - reflect.Copy(reflect.ValueOf(csvReader.records), v) - - return pipeCSV(csvWriter, csvReader, o) - - case t.Kind() == reflect.Slice && t.Elem().Kind() == reflect.Uint8: - buf := bytes.NewBuffer(v.Bytes()) - csvReader := csv.NewReader(buf) - o.applyToReader(csvReader) - - return bufferedCSV(csvWriter, csvReader, o) - - case t.Kind() == reflect.String: - buf := bytes.NewBufferString(v.String()) - csvReader := csv.NewReader(buf) - o.applyToReader(csvReader) - - return bufferedCSV(csvWriter, csvReader, o) - - default: - return fmt.Errorf("%v (%T) is not supported by the CSVProducer, %s", - data, data, "can be resolved by supporting CSVReader/Reader/BinaryMarshaler interface", - ) - } - } - }) -} - -// pipeCSV copies CSV records from a CSV reader to a CSV writer -func pipeCSV(csvWriter CSVWriter, csvReader CSVReader, opts csvOpts) error { - for ; opts.skippedLines > 0; opts.skippedLines-- { - _, err := csvReader.Read() - if err != nil { - if errors.Is(err, io.EOF) { - return nil - } - - return err - } - } - - for { - record, err := csvReader.Read() - if err != nil { - if errors.Is(err, io.EOF) { - break - } - - return err - } - - if err := csvWriter.Write(record); err != nil { - return err - } - } - - csvWriter.Flush() - - return csvWriter.Error() -} - -// bufferedCSV copies CSV records from a CSV reader to a CSV writer, -// by first reading all records then writing them at once. -func bufferedCSV(csvWriter *csv.Writer, csvReader *csv.Reader, opts csvOpts) error { - for ; opts.skippedLines > 0; opts.skippedLines-- { - _, err := csvReader.Read() - if err != nil { - if errors.Is(err, io.EOF) { - return nil - } - - return err - } - } - - records, err := csvReader.ReadAll() - if err != nil { - return err - } - - return csvWriter.WriteAll(records) -} diff --git a/vendor/github.com/go-openapi/runtime/csv_options.go b/vendor/github.com/go-openapi/runtime/csv_options.go deleted file mode 100644 index c16464c578..0000000000 --- a/vendor/github.com/go-openapi/runtime/csv_options.go +++ /dev/null @@ -1,121 +0,0 @@ -package runtime - -import ( - "encoding/csv" - "io" -) - -// CSVOpts alter the behavior of the CSV consumer or producer. -type CSVOpt func(*csvOpts) - -type csvOpts struct { - csvReader csv.Reader - csvWriter csv.Writer - skippedLines int - closeStream bool -} - -// WithCSVReaderOpts specifies the options to csv.Reader -// when reading CSV. -func WithCSVReaderOpts(reader csv.Reader) CSVOpt { - return func(o *csvOpts) { - o.csvReader = reader - } -} - -// WithCSVWriterOpts specifies the options to csv.Writer -// when writing CSV. -func WithCSVWriterOpts(writer csv.Writer) CSVOpt { - return func(o *csvOpts) { - o.csvWriter = writer - } -} - -// WithCSVSkipLines will skip header lines. -func WithCSVSkipLines(skipped int) CSVOpt { - return func(o *csvOpts) { - o.skippedLines = skipped - } -} - -func WithCSVClosesStream() CSVOpt { - return func(o *csvOpts) { - o.closeStream = true - } -} - -func (o csvOpts) applyToReader(in *csv.Reader) { - if o.csvReader.Comma != 0 { - in.Comma = o.csvReader.Comma - } - if o.csvReader.Comment != 0 { - in.Comment = o.csvReader.Comment - } - if o.csvReader.FieldsPerRecord != 0 { - in.FieldsPerRecord = o.csvReader.FieldsPerRecord - } - - in.LazyQuotes = o.csvReader.LazyQuotes - in.TrimLeadingSpace = o.csvReader.TrimLeadingSpace - in.ReuseRecord = o.csvReader.ReuseRecord -} - -func (o csvOpts) applyToWriter(in *csv.Writer) { - if o.csvWriter.Comma != 0 { - in.Comma = o.csvWriter.Comma - } - in.UseCRLF = o.csvWriter.UseCRLF -} - -func csvOptsWithDefaults(opts []CSVOpt) csvOpts { - var o csvOpts - for _, apply := range opts { - apply(&o) - } - - return o -} - -type CSVWriter interface { - Write([]string) error - Flush() - Error() error -} - -type CSVReader interface { - Read() ([]string, error) -} - -var ( - _ CSVWriter = &csvRecordsWriter{} - _ CSVReader = &csvRecordsWriter{} -) - -// csvRecordsWriter is an internal container to move CSV records back and forth -type csvRecordsWriter struct { - i int - records [][]string -} - -func (w *csvRecordsWriter) Write(record []string) error { - w.records = append(w.records, record) - - return nil -} - -func (w *csvRecordsWriter) Read() ([]string, error) { - if w.i >= len(w.records) { - return nil, io.EOF - } - defer func() { - w.i++ - }() - - return w.records[w.i], nil -} - -func (w *csvRecordsWriter) Flush() {} - -func (w *csvRecordsWriter) Error() error { - return nil -} diff --git a/vendor/github.com/go-openapi/runtime/discard.go b/vendor/github.com/go-openapi/runtime/discard.go deleted file mode 100644 index 0d390cfd64..0000000000 --- a/vendor/github.com/go-openapi/runtime/discard.go +++ /dev/null @@ -1,9 +0,0 @@ -package runtime - -import "io" - -// DiscardConsumer does absolutely nothing, it's a black hole. -var DiscardConsumer = ConsumerFunc(func(_ io.Reader, _ interface{}) error { return nil }) - -// DiscardProducer does absolutely nothing, it's a black hole. -var DiscardProducer = ProducerFunc(func(_ io.Writer, _ interface{}) error { return nil }) diff --git a/vendor/github.com/go-openapi/runtime/file.go b/vendor/github.com/go-openapi/runtime/file.go deleted file mode 100644 index 397d8a4593..0000000000 --- a/vendor/github.com/go-openapi/runtime/file.go +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import "github.com/go-openapi/swag" - -type File = swag.File diff --git a/vendor/github.com/go-openapi/runtime/headers.go b/vendor/github.com/go-openapi/runtime/headers.go deleted file mode 100644 index 4d111db4fe..0000000000 --- a/vendor/github.com/go-openapi/runtime/headers.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "mime" - "net/http" - - "github.com/go-openapi/errors" -) - -// ContentType parses a content type header -func ContentType(headers http.Header) (string, string, error) { - ct := headers.Get(HeaderContentType) - orig := ct - if ct == "" { - ct = DefaultMime - } - if ct == "" { - return "", "", nil - } - - mt, opts, err := mime.ParseMediaType(ct) - if err != nil { - return "", "", errors.NewParseError(HeaderContentType, "header", orig, err) - } - - if cs, ok := opts[charsetKey]; ok { - return mt, cs, nil - } - - return mt, "", nil -} diff --git a/vendor/github.com/go-openapi/runtime/interfaces.go b/vendor/github.com/go-openapi/runtime/interfaces.go deleted file mode 100644 index e334128683..0000000000 --- a/vendor/github.com/go-openapi/runtime/interfaces.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "context" - "io" - "net/http" - - "github.com/go-openapi/strfmt" -) - -// OperationHandlerFunc an adapter for a function to the OperationHandler interface -type OperationHandlerFunc func(interface{}) (interface{}, error) - -// Handle implements the operation handler interface -func (s OperationHandlerFunc) Handle(data interface{}) (interface{}, error) { - return s(data) -} - -// OperationHandler a handler for a swagger operation -type OperationHandler interface { - Handle(interface{}) (interface{}, error) -} - -// ConsumerFunc represents a function that can be used as a consumer -type ConsumerFunc func(io.Reader, interface{}) error - -// Consume consumes the reader into the data parameter -func (fn ConsumerFunc) Consume(reader io.Reader, data interface{}) error { - return fn(reader, data) -} - -// Consumer implementations know how to bind the values on the provided interface to -// data provided by the request body -type Consumer interface { - // Consume performs the binding of request values - Consume(io.Reader, interface{}) error -} - -// ProducerFunc represents a function that can be used as a producer -type ProducerFunc func(io.Writer, interface{}) error - -// Produce produces the response for the provided data -func (f ProducerFunc) Produce(writer io.Writer, data interface{}) error { - return f(writer, data) -} - -// Producer implementations know how to turn the provided interface into a valid -// HTTP response -type Producer interface { - // Produce writes to the http response - Produce(io.Writer, interface{}) error -} - -// AuthenticatorFunc turns a function into an authenticator -type AuthenticatorFunc func(interface{}) (bool, interface{}, error) - -// Authenticate authenticates the request with the provided data -func (f AuthenticatorFunc) Authenticate(params interface{}) (bool, interface{}, error) { - return f(params) -} - -// Authenticator represents an authentication strategy -// implementations of Authenticator know how to authenticate the -// request data and translate that into a valid principal object or an error -type Authenticator interface { - Authenticate(interface{}) (bool, interface{}, error) -} - -// AuthorizerFunc turns a function into an authorizer -type AuthorizerFunc func(*http.Request, interface{}) error - -// Authorize authorizes the processing of the request for the principal -func (f AuthorizerFunc) Authorize(r *http.Request, principal interface{}) error { - return f(r, principal) -} - -// Authorizer represents an authorization strategy -// implementations of Authorizer know how to authorize the principal object -// using the request data and returns error if unauthorized -type Authorizer interface { - Authorize(*http.Request, interface{}) error -} - -// Validatable types implementing this interface allow customizing their validation -// this will be used instead of the reflective validation based on the spec document. -// the implementations are assumed to have been generated by the swagger tool so they should -// contain all the validations obtained from the spec -type Validatable interface { - Validate(strfmt.Registry) error -} - -// ContextValidatable types implementing this interface allow customizing their validation -// this will be used instead of the reflective validation based on the spec document. -// the implementations are assumed to have been generated by the swagger tool so they should -// contain all the context validations obtained from the spec -type ContextValidatable interface { - ContextValidate(context.Context, strfmt.Registry) error -} diff --git a/vendor/github.com/go-openapi/runtime/json.go b/vendor/github.com/go-openapi/runtime/json.go deleted file mode 100644 index 5a690559cc..0000000000 --- a/vendor/github.com/go-openapi/runtime/json.go +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "encoding/json" - "io" -) - -// JSONConsumer creates a new JSON consumer -func JSONConsumer() Consumer { - return ConsumerFunc(func(reader io.Reader, data interface{}) error { - dec := json.NewDecoder(reader) - dec.UseNumber() // preserve number formats - return dec.Decode(data) - }) -} - -// JSONProducer creates a new JSON producer -func JSONProducer() Producer { - return ProducerFunc(func(writer io.Writer, data interface{}) error { - enc := json.NewEncoder(writer) - enc.SetEscapeHTML(false) - return enc.Encode(data) - }) -} diff --git a/vendor/github.com/go-openapi/runtime/request.go b/vendor/github.com/go-openapi/runtime/request.go deleted file mode 100644 index 9e3e1ecb14..0000000000 --- a/vendor/github.com/go-openapi/runtime/request.go +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "bufio" - "context" - "errors" - "io" - "net/http" - "strings" - - "github.com/go-openapi/swag" -) - -// CanHaveBody returns true if this method can have a body -func CanHaveBody(method string) bool { - mn := strings.ToUpper(method) - return mn == "POST" || mn == "PUT" || mn == "PATCH" || mn == "DELETE" -} - -// IsSafe returns true if this is a request with a safe method -func IsSafe(r *http.Request) bool { - mn := strings.ToUpper(r.Method) - return mn == "GET" || mn == "HEAD" -} - -// AllowsBody returns true if the request allows for a body -func AllowsBody(r *http.Request) bool { - mn := strings.ToUpper(r.Method) - return mn != "HEAD" -} - -// HasBody returns true if this method needs a content-type -func HasBody(r *http.Request) bool { - // happy case: we have a content length set - if r.ContentLength > 0 { - return true - } - - if r.Header.Get("content-length") != "" { - // in this case, no Transfer-Encoding should be present - // we have a header set but it was explicitly set to 0, so we assume no body - return false - } - - rdr := newPeekingReader(r.Body) - r.Body = rdr - return rdr.HasContent() -} - -func newPeekingReader(r io.ReadCloser) *peekingReader { - if r == nil { - return nil - } - return &peekingReader{ - underlying: bufio.NewReader(r), - orig: r, - } -} - -type peekingReader struct { - underlying interface { - Buffered() int - Peek(int) ([]byte, error) - Read([]byte) (int, error) - } - orig io.ReadCloser -} - -func (p *peekingReader) HasContent() bool { - if p == nil { - return false - } - if p.underlying.Buffered() > 0 { - return true - } - b, err := p.underlying.Peek(1) - if err != nil { - return false - } - return len(b) > 0 -} - -func (p *peekingReader) Read(d []byte) (int, error) { - if p == nil { - return 0, io.EOF - } - if p.underlying == nil { - return 0, io.ErrUnexpectedEOF - } - return p.underlying.Read(d) -} - -func (p *peekingReader) Close() error { - if p.underlying == nil { - return errors.New("reader already closed") - } - p.underlying = nil - if p.orig != nil { - return p.orig.Close() - } - return nil -} - -// JSONRequest creates a new http request with json headers set. -// -// It uses context.Background. -func JSONRequest(method, urlStr string, body io.Reader) (*http.Request, error) { - req, err := http.NewRequestWithContext(context.Background(), method, urlStr, body) - if err != nil { - return nil, err - } - req.Header.Add(HeaderContentType, JSONMime) - req.Header.Add(HeaderAccept, JSONMime) - return req, nil -} - -// Gettable for things with a method GetOK(string) (data string, hasKey bool, hasValue bool) -type Gettable interface { - GetOK(string) ([]string, bool, bool) -} - -// ReadSingleValue reads a single value from the source -func ReadSingleValue(values Gettable, name string) string { - vv, _, hv := values.GetOK(name) - if hv { - return vv[len(vv)-1] - } - return "" -} - -// ReadCollectionValue reads a collection value from a string data source -func ReadCollectionValue(values Gettable, name, collectionFormat string) []string { - v := ReadSingleValue(values, name) - return swag.SplitByFormat(v, collectionFormat) -} diff --git a/vendor/github.com/go-openapi/runtime/statuses.go b/vendor/github.com/go-openapi/runtime/statuses.go deleted file mode 100644 index 3b011a0bff..0000000000 --- a/vendor/github.com/go-openapi/runtime/statuses.go +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -// Statuses lists the most common HTTP status codes to default message -// taken from https://httpstatuses.com/ -var Statuses = map[int]string{ - 100: "Continue", - 101: "Switching Protocols", - 102: "Processing", - 103: "Checkpoint", - 122: "URI too long", - 200: "OK", - 201: "Created", - 202: "Accepted", - 203: "Request Processed", - 204: "No Content", - 205: "Reset Content", - 206: "Partial Content", - 207: "Multi-Status", - 208: "Already Reported", - 226: "IM Used", - 300: "Multiple Choices", - 301: "Moved Permanently", - 302: "Found", - 303: "See Other", - 304: "Not Modified", - 305: "Use Proxy", - 306: "Switch Proxy", - 307: "Temporary Redirect", - 308: "Permanent Redirect", - 400: "Bad Request", - 401: "Unauthorized", - 402: "Payment Required", - 403: "Forbidden", - 404: "Not Found", - 405: "Method Not Allowed", - 406: "Not Acceptable", - 407: "Proxy Authentication Required", - 408: "Request Timeout", - 409: "Conflict", - 410: "Gone", - 411: "Length Required", - 412: "Precondition Failed", - 413: "Request Entity Too Large", - 414: "Request-URI Too Long", - 415: "Unsupported Media Type", - 416: "Request Range Not Satisfiable", - 417: "Expectation Failed", - 418: "I'm a teapot", - 420: "Enhance Your Calm", - 422: "Unprocessable Entity", - 423: "Locked", - 424: "Failed Dependency", - 426: "Upgrade Required", - 428: "Precondition Required", - 429: "Too Many Requests", - 431: "Request Header Fields Too Large", - 444: "No Response", - 449: "Retry With", - 450: "Blocked by Windows Parental Controls", - 451: "Wrong Exchange Server", - 499: "Client Closed Request", - 500: "Internal Server Error", - 501: "Not Implemented", - 502: "Bad Gateway", - 503: "Service Unavailable", - 504: "Gateway Timeout", - 505: "HTTP Version Not Supported", - 506: "Variant Also Negotiates", - 507: "Insufficient Storage", - 508: "Loop Detected", - 509: "Bandwidth Limit Exceeded", - 510: "Not Extended", - 511: "Network Authentication Required", - 598: "Network read timeout error", - 599: "Network connect timeout error", -} diff --git a/vendor/github.com/go-openapi/runtime/text.go b/vendor/github.com/go-openapi/runtime/text.go deleted file mode 100644 index f33320b7dd..0000000000 --- a/vendor/github.com/go-openapi/runtime/text.go +++ /dev/null @@ -1,116 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "bytes" - "encoding" - "errors" - "fmt" - "io" - "reflect" - - "github.com/go-openapi/swag" -) - -// TextConsumer creates a new text consumer -func TextConsumer() Consumer { - return ConsumerFunc(func(reader io.Reader, data interface{}) error { - if reader == nil { - return errors.New("TextConsumer requires a reader") // early exit - } - - buf := new(bytes.Buffer) - _, err := buf.ReadFrom(reader) - if err != nil { - return err - } - b := buf.Bytes() - - // If the buffer is empty, no need to unmarshal it, which causes a panic. - if len(b) == 0 { - return nil - } - - if tu, ok := data.(encoding.TextUnmarshaler); ok { - err := tu.UnmarshalText(b) - if err != nil { - return fmt.Errorf("text consumer: %v", err) - } - - return nil - } - - t := reflect.TypeOf(data) - if data != nil && t.Kind() == reflect.Ptr { - v := reflect.Indirect(reflect.ValueOf(data)) - if t.Elem().Kind() == reflect.String { - v.SetString(string(b)) - return nil - } - } - - return fmt.Errorf("%v (%T) is not supported by the TextConsumer, %s", - data, data, "can be resolved by supporting TextUnmarshaler interface") - }) -} - -// TextProducer creates a new text producer -func TextProducer() Producer { - return ProducerFunc(func(writer io.Writer, data interface{}) error { - if writer == nil { - return errors.New("TextProducer requires a writer") // early exit - } - - if data == nil { - return errors.New("no data given to produce text from") - } - - if tm, ok := data.(encoding.TextMarshaler); ok { - txt, err := tm.MarshalText() - if err != nil { - return fmt.Errorf("text producer: %v", err) - } - _, err = writer.Write(txt) - return err - } - - if str, ok := data.(error); ok { - _, err := writer.Write([]byte(str.Error())) - return err - } - - if str, ok := data.(fmt.Stringer); ok { - _, err := writer.Write([]byte(str.String())) - return err - } - - v := reflect.Indirect(reflect.ValueOf(data)) - if t := v.Type(); t.Kind() == reflect.Struct || t.Kind() == reflect.Slice { - b, err := swag.WriteJSON(data) - if err != nil { - return err - } - _, err = writer.Write(b) - return err - } - if v.Kind() != reflect.String { - return fmt.Errorf("%T is not a supported type by the TextProducer", data) - } - - _, err := writer.Write([]byte(v.String())) - return err - }) -} diff --git a/vendor/github.com/go-openapi/runtime/values.go b/vendor/github.com/go-openapi/runtime/values.go deleted file mode 100644 index 11f5732af4..0000000000 --- a/vendor/github.com/go-openapi/runtime/values.go +++ /dev/null @@ -1,19 +0,0 @@ -package runtime - -// Values typically represent parameters on a http request. -type Values map[string][]string - -// GetOK returns the values collection for the given key. -// When the key is present in the map it will return true for hasKey. -// When the value is not empty it will return true for hasValue. -func (v Values) GetOK(key string) (value []string, hasKey bool, hasValue bool) { - value, hasKey = v[key] - if !hasKey { - return - } - if len(value) == 0 { - return - } - hasValue = true - return -} diff --git a/vendor/github.com/go-openapi/runtime/xml.go b/vendor/github.com/go-openapi/runtime/xml.go deleted file mode 100644 index 821c7393df..0000000000 --- a/vendor/github.com/go-openapi/runtime/xml.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "encoding/xml" - "io" -) - -// XMLConsumer creates a new XML consumer -func XMLConsumer() Consumer { - return ConsumerFunc(func(reader io.Reader, data interface{}) error { - dec := xml.NewDecoder(reader) - return dec.Decode(data) - }) -} - -// XMLProducer creates a new XML producer -func XMLProducer() Producer { - return ProducerFunc(func(writer io.Writer, data interface{}) error { - enc := xml.NewEncoder(writer) - return enc.Encode(data) - }) -} diff --git a/vendor/github.com/go-openapi/spec/.editorconfig b/vendor/github.com/go-openapi/spec/.editorconfig deleted file mode 100644 index 3152da69a5..0000000000 --- a/vendor/github.com/go-openapi/spec/.editorconfig +++ /dev/null @@ -1,26 +0,0 @@ -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true - -# Set default charset -[*.{js,py,go,scala,rb,java,html,css,less,sass,md}] -charset = utf-8 - -# Tab indentation (no size specified) -[*.go] -indent_style = tab - -[*.md] -trim_trailing_whitespace = false - -# Matches the exact files either package.json or .travis.yml -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 diff --git a/vendor/github.com/go-openapi/spec/.gitignore b/vendor/github.com/go-openapi/spec/.gitignore deleted file mode 100644 index f47cb2045f..0000000000 --- a/vendor/github.com/go-openapi/spec/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.out diff --git a/vendor/github.com/go-openapi/spec/.golangci.yml b/vendor/github.com/go-openapi/spec/.golangci.yml deleted file mode 100644 index 22f8d21cca..0000000000 --- a/vendor/github.com/go-openapi/spec/.golangci.yml +++ /dev/null @@ -1,61 +0,0 @@ -linters-settings: - govet: - check-shadowing: true - golint: - min-confidence: 0 - gocyclo: - min-complexity: 45 - maligned: - suggest-new: true - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - maligned - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - gomnd - - exhaustivestruct - - goerr113 - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - ifshort - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - - deadcode - - interfacer - - scopelint - - varcheck - - structcheck - - golint - - nosnakecase diff --git a/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/spec/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/spec/LICENSE b/vendor/github.com/go-openapi/spec/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/spec/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/spec/README.md b/vendor/github.com/go-openapi/spec/README.md deleted file mode 100644 index 7fd2810c69..0000000000 --- a/vendor/github.com/go-openapi/spec/README.md +++ /dev/null @@ -1,54 +0,0 @@ -# OpenAPI v2 object model [![Build Status](https://github.com/go-openapi/spec/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/spec/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/spec/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/spec) - -[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/spec/master/LICENSE) -[![Go Reference](https://pkg.go.dev/badge/github.com/go-openapi/spec.svg)](https://pkg.go.dev/github.com/go-openapi/spec) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/spec)](https://goreportcard.com/report/github.com/go-openapi/spec) - -The object model for OpenAPI specification documents. - -### FAQ - -* What does this do? - -> 1. This package knows how to marshal and unmarshal Swagger API specifications into a golang object model -> 2. It knows how to resolve $ref and expand them to make a single root document - -* How does it play with the rest of the go-openapi packages ? - -> 1. This package is at the core of the go-openapi suite of packages and [code generator](https://github.com/go-swagger/go-swagger) -> 2. There is a [spec loading package](https://github.com/go-openapi/loads) to fetch specs as JSON or YAML from local or remote locations -> 3. There is a [spec validation package](https://github.com/go-openapi/validate) built on top of it -> 4. There is a [spec analysis package](https://github.com/go-openapi/analysis) built on top of it, to analyze, flatten, fix and merge spec documents - -* Does this library support OpenAPI 3? - -> No. -> This package currently only supports OpenAPI 2.0 (aka Swagger 2.0). -> There is no plan to make it evolve toward supporting OpenAPI 3.x. -> This [discussion thread](https://github.com/go-openapi/spec/issues/21) relates the full story. -> -> An early attempt to support Swagger 3 may be found at: https://github.com/go-openapi/spec3 - -* Does the unmarshaling support YAML? - -> Not directly. The exposed types know only how to unmarshal from JSON. -> -> In order to load a YAML document as a Swagger spec, you need to use the loaders provided by -> github.com/go-openapi/loads -> -> Take a look at the example there: https://pkg.go.dev/github.com/go-openapi/loads#example-Spec -> -> See also https://github.com/go-openapi/spec/issues/164 - -* How can I validate a spec? - -> Validation is provided by [the validate package](http://github.com/go-openapi/validate) - -* Why do we have an `ID` field for `Schema` which is not part of the swagger spec? - -> We found jsonschema compatibility more important: since `id` in jsonschema influences -> how `$ref` are resolved. -> This `id` does not conflict with any property named `id`. -> -> See also https://github.com/go-openapi/spec/issues/23 diff --git a/vendor/github.com/go-openapi/spec/cache.go b/vendor/github.com/go-openapi/spec/cache.go deleted file mode 100644 index 122993b44b..0000000000 --- a/vendor/github.com/go-openapi/spec/cache.go +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "sync" -) - -// ResolutionCache a cache for resolving urls -type ResolutionCache interface { - Get(string) (interface{}, bool) - Set(string, interface{}) -} - -type simpleCache struct { - lock sync.RWMutex - store map[string]interface{} -} - -func (s *simpleCache) ShallowClone() ResolutionCache { - store := make(map[string]interface{}, len(s.store)) - s.lock.RLock() - for k, v := range s.store { - store[k] = v - } - s.lock.RUnlock() - - return &simpleCache{ - store: store, - } -} - -// Get retrieves a cached URI -func (s *simpleCache) Get(uri string) (interface{}, bool) { - s.lock.RLock() - v, ok := s.store[uri] - - s.lock.RUnlock() - return v, ok -} - -// Set caches a URI -func (s *simpleCache) Set(uri string, data interface{}) { - s.lock.Lock() - s.store[uri] = data - s.lock.Unlock() -} - -var ( - // resCache is a package level cache for $ref resolution and expansion. - // It is initialized lazily by methods that have the need for it: no - // memory is allocated unless some expander methods are called. - // - // It is initialized with JSON schema and swagger schema, - // which do not mutate during normal operations. - // - // All subsequent utilizations of this cache are produced from a shallow - // clone of this initial version. - resCache *simpleCache - onceCache sync.Once - - _ ResolutionCache = &simpleCache{} -) - -// initResolutionCache initializes the URI resolution cache. To be wrapped in a sync.Once.Do call. -func initResolutionCache() { - resCache = defaultResolutionCache() -} - -func defaultResolutionCache() *simpleCache { - return &simpleCache{store: map[string]interface{}{ - "http://swagger.io/v2/schema.json": MustLoadSwagger20Schema(), - "http://json-schema.org/draft-04/schema": MustLoadJSONSchemaDraft04(), - }} -} - -func cacheOrDefault(cache ResolutionCache) ResolutionCache { - onceCache.Do(initResolutionCache) - - if cache != nil { - return cache - } - - // get a shallow clone of the base cache with swagger and json schema - return resCache.ShallowClone() -} diff --git a/vendor/github.com/go-openapi/spec/contact_info.go b/vendor/github.com/go-openapi/spec/contact_info.go deleted file mode 100644 index 2f7bb219b5..0000000000 --- a/vendor/github.com/go-openapi/spec/contact_info.go +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/swag" -) - -// ContactInfo contact information for the exposed API. -// -// For more information: http://goo.gl/8us55a#contactObject -type ContactInfo struct { - ContactInfoProps - VendorExtensible -} - -// ContactInfoProps hold the properties of a ContactInfo object -type ContactInfoProps struct { - Name string `json:"name,omitempty"` - URL string `json:"url,omitempty"` - Email string `json:"email,omitempty"` -} - -// UnmarshalJSON hydrates ContactInfo from json -func (c *ContactInfo) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &c.ContactInfoProps); err != nil { - return err - } - return json.Unmarshal(data, &c.VendorExtensible) -} - -// MarshalJSON produces ContactInfo as json -func (c ContactInfo) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(c.ContactInfoProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(c.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} diff --git a/vendor/github.com/go-openapi/spec/debug.go b/vendor/github.com/go-openapi/spec/debug.go deleted file mode 100644 index fc889f6d0b..0000000000 --- a/vendor/github.com/go-openapi/spec/debug.go +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "fmt" - "log" - "os" - "path" - "runtime" -) - -// Debug is true when the SWAGGER_DEBUG env var is not empty. -// -// It enables a more verbose logging of this package. -var Debug = os.Getenv("SWAGGER_DEBUG") != "" - -var ( - // specLogger is a debug logger for this package - specLogger *log.Logger -) - -func init() { - debugOptions() -} - -func debugOptions() { - specLogger = log.New(os.Stdout, "spec:", log.LstdFlags) -} - -func debugLog(msg string, args ...interface{}) { - // A private, trivial trace logger, based on go-openapi/spec/expander.go:debugLog() - if Debug { - _, file1, pos1, _ := runtime.Caller(1) - specLogger.Printf("%s:%d: %s", path.Base(file1), pos1, fmt.Sprintf(msg, args...)) - } -} diff --git a/vendor/github.com/go-openapi/spec/embed.go b/vendor/github.com/go-openapi/spec/embed.go deleted file mode 100644 index 1f4284750a..0000000000 --- a/vendor/github.com/go-openapi/spec/embed.go +++ /dev/null @@ -1,17 +0,0 @@ -package spec - -import ( - "embed" - "path" -) - -//go:embed schemas/*.json schemas/*/*.json -var assets embed.FS - -func jsonschemaDraft04JSONBytes() ([]byte, error) { - return assets.ReadFile(path.Join("schemas", "jsonschema-draft-04.json")) -} - -func v2SchemaJSONBytes() ([]byte, error) { - return assets.ReadFile(path.Join("schemas", "v2", "schema.json")) -} diff --git a/vendor/github.com/go-openapi/spec/errors.go b/vendor/github.com/go-openapi/spec/errors.go deleted file mode 100644 index 6992c7ba73..0000000000 --- a/vendor/github.com/go-openapi/spec/errors.go +++ /dev/null @@ -1,19 +0,0 @@ -package spec - -import "errors" - -// Error codes -var ( - // ErrUnknownTypeForReference indicates that a resolved reference was found in an unsupported container type - ErrUnknownTypeForReference = errors.New("unknown type for the resolved reference") - - // ErrResolveRefNeedsAPointer indicates that a $ref target must be a valid JSON pointer - ErrResolveRefNeedsAPointer = errors.New("resolve ref: target needs to be a pointer") - - // ErrDerefUnsupportedType indicates that a resolved reference was found in an unsupported container type. - // At the moment, $ref are supported only inside: schemas, parameters, responses, path items - ErrDerefUnsupportedType = errors.New("deref: unsupported type") - - // ErrExpandUnsupportedType indicates that $ref expansion is attempted on some invalid type - ErrExpandUnsupportedType = errors.New("expand: unsupported type. Input should be of type *Parameter or *Response") -) diff --git a/vendor/github.com/go-openapi/spec/expander.go b/vendor/github.com/go-openapi/spec/expander.go deleted file mode 100644 index b81a5699a0..0000000000 --- a/vendor/github.com/go-openapi/spec/expander.go +++ /dev/null @@ -1,607 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "fmt" -) - -// ExpandOptions provides options for the spec expander. -// -// RelativeBase is the path to the root document. This can be a remote URL or a path to a local file. -// -// If left empty, the root document is assumed to be located in the current working directory: -// all relative $ref's will be resolved from there. -// -// PathLoader injects a document loading method. By default, this resolves to the function provided by the SpecLoader package variable. -type ExpandOptions struct { - RelativeBase string // the path to the root document to expand. This is a file, not a directory - SkipSchemas bool // do not expand schemas, just paths, parameters and responses - ContinueOnError bool // continue expanding even after and error is found - PathLoader func(string) (json.RawMessage, error) `json:"-"` // the document loading method that takes a path as input and yields a json document - AbsoluteCircularRef bool // circular $ref remaining after expansion remain absolute URLs -} - -func optionsOrDefault(opts *ExpandOptions) *ExpandOptions { - if opts != nil { - clone := *opts // shallow clone to avoid internal changes to be propagated to the caller - if clone.RelativeBase != "" { - clone.RelativeBase = normalizeBase(clone.RelativeBase) - } - // if the relative base is empty, let the schema loader choose a pseudo root document - return &clone - } - return &ExpandOptions{} -} - -// ExpandSpec expands the references in a swagger spec -func ExpandSpec(spec *Swagger, options *ExpandOptions) error { - options = optionsOrDefault(options) - resolver := defaultSchemaLoader(spec, options, nil, nil) - - specBasePath := options.RelativeBase - - if !options.SkipSchemas { - for key, definition := range spec.Definitions { - parentRefs := make([]string, 0, 10) - parentRefs = append(parentRefs, "#/definitions/"+key) - - def, err := expandSchema(definition, parentRefs, resolver, specBasePath) - if resolver.shouldStopOnError(err) { - return err - } - if def != nil { - spec.Definitions[key] = *def - } - } - } - - for key := range spec.Parameters { - parameter := spec.Parameters[key] - if err := expandParameterOrResponse(¶meter, resolver, specBasePath); resolver.shouldStopOnError(err) { - return err - } - spec.Parameters[key] = parameter - } - - for key := range spec.Responses { - response := spec.Responses[key] - if err := expandParameterOrResponse(&response, resolver, specBasePath); resolver.shouldStopOnError(err) { - return err - } - spec.Responses[key] = response - } - - if spec.Paths != nil { - for key := range spec.Paths.Paths { - pth := spec.Paths.Paths[key] - if err := expandPathItem(&pth, resolver, specBasePath); resolver.shouldStopOnError(err) { - return err - } - spec.Paths.Paths[key] = pth - } - } - - return nil -} - -const rootBase = ".root" - -// baseForRoot loads in the cache the root document and produces a fake ".root" base path entry -// for further $ref resolution -func baseForRoot(root interface{}, cache ResolutionCache) string { - // cache the root document to resolve $ref's - normalizedBase := normalizeBase(rootBase) - - if root == nil { - // ensure that we never leave a nil root: always cache the root base pseudo-document - cachedRoot, found := cache.Get(normalizedBase) - if found && cachedRoot != nil { - // the cache is already preloaded with a root - return normalizedBase - } - - root = map[string]interface{}{} - } - - cache.Set(normalizedBase, root) - - return normalizedBase -} - -// ExpandSchema expands the refs in the schema object with reference to the root object. -// -// go-openapi/validate uses this function. -// -// Notice that it is impossible to reference a json schema in a different document other than root -// (use ExpandSchemaWithBasePath to resolve external references). -// -// Setting the cache is optional and this parameter may safely be left to nil. -func ExpandSchema(schema *Schema, root interface{}, cache ResolutionCache) error { - cache = cacheOrDefault(cache) - if root == nil { - root = schema - } - - opts := &ExpandOptions{ - // when a root is specified, cache the root as an in-memory document for $ref retrieval - RelativeBase: baseForRoot(root, cache), - SkipSchemas: false, - ContinueOnError: false, - } - - return ExpandSchemaWithBasePath(schema, cache, opts) -} - -// ExpandSchemaWithBasePath expands the refs in the schema object, base path configured through expand options. -// -// Setting the cache is optional and this parameter may safely be left to nil. -func ExpandSchemaWithBasePath(schema *Schema, cache ResolutionCache, opts *ExpandOptions) error { - if schema == nil { - return nil - } - - cache = cacheOrDefault(cache) - - opts = optionsOrDefault(opts) - - resolver := defaultSchemaLoader(nil, opts, cache, nil) - - parentRefs := make([]string, 0, 10) - s, err := expandSchema(*schema, parentRefs, resolver, opts.RelativeBase) - if err != nil { - return err - } - if s != nil { - // guard for when continuing on error - *schema = *s - } - - return nil -} - -func expandItems(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) { - if target.Items == nil { - return &target, nil - } - - // array - if target.Items.Schema != nil { - t, err := expandSchema(*target.Items.Schema, parentRefs, resolver, basePath) - if err != nil { - return nil, err - } - *target.Items.Schema = *t - } - - // tuple - for i := range target.Items.Schemas { - t, err := expandSchema(target.Items.Schemas[i], parentRefs, resolver, basePath) - if err != nil { - return nil, err - } - target.Items.Schemas[i] = *t - } - - return &target, nil -} - -func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) { - if target.Ref.String() == "" && target.Ref.IsRoot() { - newRef := normalizeRef(&target.Ref, basePath) - target.Ref = *newRef - return &target, nil - } - - // change the base path of resolution when an ID is encountered - // otherwise the basePath should inherit the parent's - if target.ID != "" { - basePath, _ = resolver.setSchemaID(target, target.ID, basePath) - } - - if target.Ref.String() != "" { - if !resolver.options.SkipSchemas { - return expandSchemaRef(target, parentRefs, resolver, basePath) - } - - // when "expand" with SkipSchema, we just rebase the existing $ref without replacing - // the full schema. - rebasedRef, err := NewRef(normalizeURI(target.Ref.String(), basePath)) - if err != nil { - return nil, err - } - target.Ref = denormalizeRef(&rebasedRef, resolver.context.basePath, resolver.context.rootID) - - return &target, nil - } - - for k := range target.Definitions { - tt, err := expandSchema(target.Definitions[k], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if tt != nil { - target.Definitions[k] = *tt - } - } - - t, err := expandItems(target, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target = *t - } - - for i := range target.AllOf { - t, err := expandSchema(target.AllOf[i], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target.AllOf[i] = *t - } - } - - for i := range target.AnyOf { - t, err := expandSchema(target.AnyOf[i], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target.AnyOf[i] = *t - } - } - - for i := range target.OneOf { - t, err := expandSchema(target.OneOf[i], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target.OneOf[i] = *t - } - } - - if target.Not != nil { - t, err := expandSchema(*target.Not, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - *target.Not = *t - } - } - - for k := range target.Properties { - t, err := expandSchema(target.Properties[k], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target.Properties[k] = *t - } - } - - if target.AdditionalProperties != nil && target.AdditionalProperties.Schema != nil { - t, err := expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - *target.AdditionalProperties.Schema = *t - } - } - - for k := range target.PatternProperties { - t, err := expandSchema(target.PatternProperties[k], parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - target.PatternProperties[k] = *t - } - } - - for k := range target.Dependencies { - if target.Dependencies[k].Schema != nil { - t, err := expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - *target.Dependencies[k].Schema = *t - } - } - } - - if target.AdditionalItems != nil && target.AdditionalItems.Schema != nil { - t, err := expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return &target, err - } - if t != nil { - *target.AdditionalItems.Schema = *t - } - } - return &target, nil -} - -func expandSchemaRef(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) { - // if a Ref is found, all sibling fields are skipped - // Ref also changes the resolution scope of children expandSchema - - // here the resolution scope is changed because a $ref was encountered - normalizedRef := normalizeRef(&target.Ref, basePath) - normalizedBasePath := normalizedRef.RemoteURI() - - if resolver.isCircular(normalizedRef, basePath, parentRefs...) { - // this means there is a cycle in the recursion tree: return the Ref - // - circular refs cannot be expanded. We leave them as ref. - // - denormalization means that a new local file ref is set relative to the original basePath - debugLog("short circuit circular ref: basePath: %s, normalizedPath: %s, normalized ref: %s", - basePath, normalizedBasePath, normalizedRef.String()) - if !resolver.options.AbsoluteCircularRef { - target.Ref = denormalizeRef(normalizedRef, resolver.context.basePath, resolver.context.rootID) - } else { - target.Ref = *normalizedRef - } - return &target, nil - } - - var t *Schema - err := resolver.Resolve(&target.Ref, &t, basePath) - if resolver.shouldStopOnError(err) { - return nil, err - } - - if t == nil { - // guard for when continuing on error - return &target, nil - } - - parentRefs = append(parentRefs, normalizedRef.String()) - transitiveResolver := resolver.transitiveResolver(basePath, target.Ref) - - basePath = resolver.updateBasePath(transitiveResolver, normalizedBasePath) - - return expandSchema(*t, parentRefs, transitiveResolver, basePath) -} - -func expandPathItem(pathItem *PathItem, resolver *schemaLoader, basePath string) error { - if pathItem == nil { - return nil - } - - parentRefs := make([]string, 0, 10) - if err := resolver.deref(pathItem, parentRefs, basePath); resolver.shouldStopOnError(err) { - return err - } - - if pathItem.Ref.String() != "" { - transitiveResolver := resolver.transitiveResolver(basePath, pathItem.Ref) - basePath = transitiveResolver.updateBasePath(resolver, basePath) - resolver = transitiveResolver - } - - pathItem.Ref = Ref{} - for i := range pathItem.Parameters { - if err := expandParameterOrResponse(&(pathItem.Parameters[i]), resolver, basePath); resolver.shouldStopOnError(err) { - return err - } - } - - ops := []*Operation{ - pathItem.Get, - pathItem.Head, - pathItem.Options, - pathItem.Put, - pathItem.Post, - pathItem.Patch, - pathItem.Delete, - } - for _, op := range ops { - if err := expandOperation(op, resolver, basePath); resolver.shouldStopOnError(err) { - return err - } - } - - return nil -} - -func expandOperation(op *Operation, resolver *schemaLoader, basePath string) error { - if op == nil { - return nil - } - - for i := range op.Parameters { - param := op.Parameters[i] - if err := expandParameterOrResponse(¶m, resolver, basePath); resolver.shouldStopOnError(err) { - return err - } - op.Parameters[i] = param - } - - if op.Responses == nil { - return nil - } - - responses := op.Responses - if err := expandParameterOrResponse(responses.Default, resolver, basePath); resolver.shouldStopOnError(err) { - return err - } - - for code := range responses.StatusCodeResponses { - response := responses.StatusCodeResponses[code] - if err := expandParameterOrResponse(&response, resolver, basePath); resolver.shouldStopOnError(err) { - return err - } - responses.StatusCodeResponses[code] = response - } - - return nil -} - -// ExpandResponseWithRoot expands a response based on a root document, not a fetchable document -// -// Notice that it is impossible to reference a json schema in a different document other than root -// (use ExpandResponse to resolve external references). -// -// Setting the cache is optional and this parameter may safely be left to nil. -func ExpandResponseWithRoot(response *Response, root interface{}, cache ResolutionCache) error { - cache = cacheOrDefault(cache) - opts := &ExpandOptions{ - RelativeBase: baseForRoot(root, cache), - } - resolver := defaultSchemaLoader(root, opts, cache, nil) - - return expandParameterOrResponse(response, resolver, opts.RelativeBase) -} - -// ExpandResponse expands a response based on a basepath -// -// All refs inside response will be resolved relative to basePath -func ExpandResponse(response *Response, basePath string) error { - opts := optionsOrDefault(&ExpandOptions{ - RelativeBase: basePath, - }) - resolver := defaultSchemaLoader(nil, opts, nil, nil) - - return expandParameterOrResponse(response, resolver, opts.RelativeBase) -} - -// ExpandParameterWithRoot expands a parameter based on a root document, not a fetchable document. -// -// Notice that it is impossible to reference a json schema in a different document other than root -// (use ExpandParameter to resolve external references). -func ExpandParameterWithRoot(parameter *Parameter, root interface{}, cache ResolutionCache) error { - cache = cacheOrDefault(cache) - - opts := &ExpandOptions{ - RelativeBase: baseForRoot(root, cache), - } - resolver := defaultSchemaLoader(root, opts, cache, nil) - - return expandParameterOrResponse(parameter, resolver, opts.RelativeBase) -} - -// ExpandParameter expands a parameter based on a basepath. -// This is the exported version of expandParameter -// all refs inside parameter will be resolved relative to basePath -func ExpandParameter(parameter *Parameter, basePath string) error { - opts := optionsOrDefault(&ExpandOptions{ - RelativeBase: basePath, - }) - resolver := defaultSchemaLoader(nil, opts, nil, nil) - - return expandParameterOrResponse(parameter, resolver, opts.RelativeBase) -} - -func getRefAndSchema(input interface{}) (*Ref, *Schema, error) { - var ( - ref *Ref - sch *Schema - ) - - switch refable := input.(type) { - case *Parameter: - if refable == nil { - return nil, nil, nil - } - ref = &refable.Ref - sch = refable.Schema - case *Response: - if refable == nil { - return nil, nil, nil - } - ref = &refable.Ref - sch = refable.Schema - default: - return nil, nil, fmt.Errorf("unsupported type: %T: %w", input, ErrExpandUnsupportedType) - } - - return ref, sch, nil -} - -func expandParameterOrResponse(input interface{}, resolver *schemaLoader, basePath string) error { - ref, sch, err := getRefAndSchema(input) - if err != nil { - return err - } - - if ref == nil && sch == nil { // nothing to do - return nil - } - - parentRefs := make([]string, 0, 10) - if ref != nil { - // dereference this $ref - if err = resolver.deref(input, parentRefs, basePath); resolver.shouldStopOnError(err) { - return err - } - - ref, sch, _ = getRefAndSchema(input) - } - - if ref.String() != "" { - transitiveResolver := resolver.transitiveResolver(basePath, *ref) - basePath = resolver.updateBasePath(transitiveResolver, basePath) - resolver = transitiveResolver - } - - if sch == nil { - // nothing to be expanded - if ref != nil { - *ref = Ref{} - } - - return nil - } - - if sch.Ref.String() != "" { - rebasedRef, ern := NewRef(normalizeURI(sch.Ref.String(), basePath)) - if ern != nil { - return ern - } - - if resolver.isCircular(&rebasedRef, basePath, parentRefs...) { - // this is a circular $ref: stop expansion - if !resolver.options.AbsoluteCircularRef { - sch.Ref = denormalizeRef(&rebasedRef, resolver.context.basePath, resolver.context.rootID) - } else { - sch.Ref = rebasedRef - } - } - } - - // $ref expansion or rebasing is performed by expandSchema below - if ref != nil { - *ref = Ref{} - } - - // expand schema - // yes, we do it even if options.SkipSchema is true: we have to go down that rabbit hole and rebase nested $ref) - s, err := expandSchema(*sch, parentRefs, resolver, basePath) - if resolver.shouldStopOnError(err) { - return err - } - - if s != nil { // guard for when continuing on error - *sch = *s - } - - return nil -} diff --git a/vendor/github.com/go-openapi/spec/external_docs.go b/vendor/github.com/go-openapi/spec/external_docs.go deleted file mode 100644 index 88add91b2b..0000000000 --- a/vendor/github.com/go-openapi/spec/external_docs.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -// ExternalDocumentation allows referencing an external resource for -// extended documentation. -// -// For more information: http://goo.gl/8us55a#externalDocumentationObject -type ExternalDocumentation struct { - Description string `json:"description,omitempty"` - URL string `json:"url,omitempty"` -} diff --git a/vendor/github.com/go-openapi/spec/header.go b/vendor/github.com/go-openapi/spec/header.go deleted file mode 100644 index 9dfd17b185..0000000000 --- a/vendor/github.com/go-openapi/spec/header.go +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -const ( - jsonArray = "array" -) - -// HeaderProps describes a response header -type HeaderProps struct { - Description string `json:"description,omitempty"` -} - -// Header describes a header for a response of the API -// -// For more information: http://goo.gl/8us55a#headerObject -type Header struct { - CommonValidations - SimpleSchema - VendorExtensible - HeaderProps -} - -// ResponseHeader creates a new header instance for use in a response -func ResponseHeader() *Header { - return new(Header) -} - -// WithDescription sets the description on this response, allows for chaining -func (h *Header) WithDescription(description string) *Header { - h.Description = description - return h -} - -// Typed a fluent builder method for the type of parameter -func (h *Header) Typed(tpe, format string) *Header { - h.Type = tpe - h.Format = format - return h -} - -// CollectionOf a fluent builder method for an array item -func (h *Header) CollectionOf(items *Items, format string) *Header { - h.Type = jsonArray - h.Items = items - h.CollectionFormat = format - return h -} - -// WithDefault sets the default value on this item -func (h *Header) WithDefault(defaultValue interface{}) *Header { - h.Default = defaultValue - return h -} - -// WithMaxLength sets a max length value -func (h *Header) WithMaxLength(max int64) *Header { - h.MaxLength = &max - return h -} - -// WithMinLength sets a min length value -func (h *Header) WithMinLength(min int64) *Header { - h.MinLength = &min - return h -} - -// WithPattern sets a pattern value -func (h *Header) WithPattern(pattern string) *Header { - h.Pattern = pattern - return h -} - -// WithMultipleOf sets a multiple of value -func (h *Header) WithMultipleOf(number float64) *Header { - h.MultipleOf = &number - return h -} - -// WithMaximum sets a maximum number value -func (h *Header) WithMaximum(max float64, exclusive bool) *Header { - h.Maximum = &max - h.ExclusiveMaximum = exclusive - return h -} - -// WithMinimum sets a minimum number value -func (h *Header) WithMinimum(min float64, exclusive bool) *Header { - h.Minimum = &min - h.ExclusiveMinimum = exclusive - return h -} - -// WithEnum sets a the enum values (replace) -func (h *Header) WithEnum(values ...interface{}) *Header { - h.Enum = append([]interface{}{}, values...) - return h -} - -// WithMaxItems sets the max items -func (h *Header) WithMaxItems(size int64) *Header { - h.MaxItems = &size - return h -} - -// WithMinItems sets the min items -func (h *Header) WithMinItems(size int64) *Header { - h.MinItems = &size - return h -} - -// UniqueValues dictates that this array can only have unique items -func (h *Header) UniqueValues() *Header { - h.UniqueItems = true - return h -} - -// AllowDuplicates this array can have duplicates -func (h *Header) AllowDuplicates() *Header { - h.UniqueItems = false - return h -} - -// WithValidations is a fluent method to set header validations -func (h *Header) WithValidations(val CommonValidations) *Header { - h.SetValidations(SchemaValidations{CommonValidations: val}) - return h -} - -// MarshalJSON marshal this to JSON -func (h Header) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(h.CommonValidations) - if err != nil { - return nil, err - } - b2, err := json.Marshal(h.SimpleSchema) - if err != nil { - return nil, err - } - b3, err := json.Marshal(h.HeaderProps) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2, b3), nil -} - -// UnmarshalJSON unmarshals this header from JSON -func (h *Header) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &h.CommonValidations); err != nil { - return err - } - if err := json.Unmarshal(data, &h.SimpleSchema); err != nil { - return err - } - if err := json.Unmarshal(data, &h.VendorExtensible); err != nil { - return err - } - return json.Unmarshal(data, &h.HeaderProps) -} - -// JSONLookup look up a value by the json property name -func (h Header) JSONLookup(token string) (interface{}, error) { - if ex, ok := h.Extensions[token]; ok { - return &ex, nil - } - - r, _, err := jsonpointer.GetForToken(h.CommonValidations, token) - if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { - return nil, err - } - if r != nil { - return r, nil - } - r, _, err = jsonpointer.GetForToken(h.SimpleSchema, token) - if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { - return nil, err - } - if r != nil { - return r, nil - } - r, _, err = jsonpointer.GetForToken(h.HeaderProps, token) - return r, err -} diff --git a/vendor/github.com/go-openapi/spec/info.go b/vendor/github.com/go-openapi/spec/info.go deleted file mode 100644 index 582f0fd4c4..0000000000 --- a/vendor/github.com/go-openapi/spec/info.go +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "strconv" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// Extensions vendor specific extensions -type Extensions map[string]interface{} - -// Add adds a value to these extensions -func (e Extensions) Add(key string, value interface{}) { - realKey := strings.ToLower(key) - e[realKey] = value -} - -// GetString gets a string value from the extensions -func (e Extensions) GetString(key string) (string, bool) { - if v, ok := e[strings.ToLower(key)]; ok { - str, ok := v.(string) - return str, ok - } - return "", false -} - -// GetInt gets a int value from the extensions -func (e Extensions) GetInt(key string) (int, bool) { - realKey := strings.ToLower(key) - - if v, ok := e.GetString(realKey); ok { - if r, err := strconv.Atoi(v); err == nil { - return r, true - } - } - - if v, ok := e[realKey]; ok { - if r, rOk := v.(float64); rOk { - return int(r), true - } - } - return -1, false -} - -// GetBool gets a string value from the extensions -func (e Extensions) GetBool(key string) (bool, bool) { - if v, ok := e[strings.ToLower(key)]; ok { - str, ok := v.(bool) - return str, ok - } - return false, false -} - -// GetStringSlice gets a string value from the extensions -func (e Extensions) GetStringSlice(key string) ([]string, bool) { - if v, ok := e[strings.ToLower(key)]; ok { - arr, isSlice := v.([]interface{}) - if !isSlice { - return nil, false - } - var strs []string - for _, iface := range arr { - str, isString := iface.(string) - if !isString { - return nil, false - } - strs = append(strs, str) - } - return strs, ok - } - return nil, false -} - -// VendorExtensible composition block. -type VendorExtensible struct { - Extensions Extensions -} - -// AddExtension adds an extension to this extensible object -func (v *VendorExtensible) AddExtension(key string, value interface{}) { - if value == nil { - return - } - if v.Extensions == nil { - v.Extensions = make(map[string]interface{}) - } - v.Extensions.Add(key, value) -} - -// MarshalJSON marshals the extensions to json -func (v VendorExtensible) MarshalJSON() ([]byte, error) { - toser := make(map[string]interface{}) - for k, v := range v.Extensions { - lk := strings.ToLower(k) - if strings.HasPrefix(lk, "x-") { - toser[k] = v - } - } - return json.Marshal(toser) -} - -// UnmarshalJSON for this extensible object -func (v *VendorExtensible) UnmarshalJSON(data []byte) error { - var d map[string]interface{} - if err := json.Unmarshal(data, &d); err != nil { - return err - } - for k, vv := range d { - lk := strings.ToLower(k) - if strings.HasPrefix(lk, "x-") { - if v.Extensions == nil { - v.Extensions = map[string]interface{}{} - } - v.Extensions[k] = vv - } - } - return nil -} - -// InfoProps the properties for an info definition -type InfoProps struct { - Description string `json:"description,omitempty"` - Title string `json:"title,omitempty"` - TermsOfService string `json:"termsOfService,omitempty"` - Contact *ContactInfo `json:"contact,omitempty"` - License *License `json:"license,omitempty"` - Version string `json:"version,omitempty"` -} - -// Info object provides metadata about the API. -// The metadata can be used by the clients if needed, and can be presented in the Swagger-UI for convenience. -// -// For more information: http://goo.gl/8us55a#infoObject -type Info struct { - VendorExtensible - InfoProps -} - -// JSONLookup look up a value by the json property name -func (i Info) JSONLookup(token string) (interface{}, error) { - if ex, ok := i.Extensions[token]; ok { - return &ex, nil - } - r, _, err := jsonpointer.GetForToken(i.InfoProps, token) - return r, err -} - -// MarshalJSON marshal this to JSON -func (i Info) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(i.InfoProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(i.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} - -// UnmarshalJSON marshal this from JSON -func (i *Info) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &i.InfoProps); err != nil { - return err - } - return json.Unmarshal(data, &i.VendorExtensible) -} diff --git a/vendor/github.com/go-openapi/spec/items.go b/vendor/github.com/go-openapi/spec/items.go deleted file mode 100644 index e2afb2133b..0000000000 --- a/vendor/github.com/go-openapi/spec/items.go +++ /dev/null @@ -1,234 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -const ( - jsonRef = "$ref" -) - -// SimpleSchema describe swagger simple schemas for parameters and headers -type SimpleSchema struct { - Type string `json:"type,omitempty"` - Nullable bool `json:"nullable,omitempty"` - Format string `json:"format,omitempty"` - Items *Items `json:"items,omitempty"` - CollectionFormat string `json:"collectionFormat,omitempty"` - Default interface{} `json:"default,omitempty"` - Example interface{} `json:"example,omitempty"` -} - -// TypeName return the type (or format) of a simple schema -func (s *SimpleSchema) TypeName() string { - if s.Format != "" { - return s.Format - } - return s.Type -} - -// ItemsTypeName yields the type of items in a simple schema array -func (s *SimpleSchema) ItemsTypeName() string { - if s.Items == nil { - return "" - } - return s.Items.TypeName() -} - -// Items a limited subset of JSON-Schema's items object. -// It is used by parameter definitions that are not located in "body". -// -// For more information: http://goo.gl/8us55a#items-object -type Items struct { - Refable - CommonValidations - SimpleSchema - VendorExtensible -} - -// NewItems creates a new instance of items -func NewItems() *Items { - return &Items{} -} - -// Typed a fluent builder method for the type of item -func (i *Items) Typed(tpe, format string) *Items { - i.Type = tpe - i.Format = format - return i -} - -// AsNullable flags this schema as nullable. -func (i *Items) AsNullable() *Items { - i.Nullable = true - return i -} - -// CollectionOf a fluent builder method for an array item -func (i *Items) CollectionOf(items *Items, format string) *Items { - i.Type = jsonArray - i.Items = items - i.CollectionFormat = format - return i -} - -// WithDefault sets the default value on this item -func (i *Items) WithDefault(defaultValue interface{}) *Items { - i.Default = defaultValue - return i -} - -// WithMaxLength sets a max length value -func (i *Items) WithMaxLength(max int64) *Items { - i.MaxLength = &max - return i -} - -// WithMinLength sets a min length value -func (i *Items) WithMinLength(min int64) *Items { - i.MinLength = &min - return i -} - -// WithPattern sets a pattern value -func (i *Items) WithPattern(pattern string) *Items { - i.Pattern = pattern - return i -} - -// WithMultipleOf sets a multiple of value -func (i *Items) WithMultipleOf(number float64) *Items { - i.MultipleOf = &number - return i -} - -// WithMaximum sets a maximum number value -func (i *Items) WithMaximum(max float64, exclusive bool) *Items { - i.Maximum = &max - i.ExclusiveMaximum = exclusive - return i -} - -// WithMinimum sets a minimum number value -func (i *Items) WithMinimum(min float64, exclusive bool) *Items { - i.Minimum = &min - i.ExclusiveMinimum = exclusive - return i -} - -// WithEnum sets a the enum values (replace) -func (i *Items) WithEnum(values ...interface{}) *Items { - i.Enum = append([]interface{}{}, values...) - return i -} - -// WithMaxItems sets the max items -func (i *Items) WithMaxItems(size int64) *Items { - i.MaxItems = &size - return i -} - -// WithMinItems sets the min items -func (i *Items) WithMinItems(size int64) *Items { - i.MinItems = &size - return i -} - -// UniqueValues dictates that this array can only have unique items -func (i *Items) UniqueValues() *Items { - i.UniqueItems = true - return i -} - -// AllowDuplicates this array can have duplicates -func (i *Items) AllowDuplicates() *Items { - i.UniqueItems = false - return i -} - -// WithValidations is a fluent method to set Items validations -func (i *Items) WithValidations(val CommonValidations) *Items { - i.SetValidations(SchemaValidations{CommonValidations: val}) - return i -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (i *Items) UnmarshalJSON(data []byte) error { - var validations CommonValidations - if err := json.Unmarshal(data, &validations); err != nil { - return err - } - var ref Refable - if err := json.Unmarshal(data, &ref); err != nil { - return err - } - var simpleSchema SimpleSchema - if err := json.Unmarshal(data, &simpleSchema); err != nil { - return err - } - var vendorExtensible VendorExtensible - if err := json.Unmarshal(data, &vendorExtensible); err != nil { - return err - } - i.Refable = ref - i.CommonValidations = validations - i.SimpleSchema = simpleSchema - i.VendorExtensible = vendorExtensible - return nil -} - -// MarshalJSON converts this items object to JSON -func (i Items) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(i.CommonValidations) - if err != nil { - return nil, err - } - b2, err := json.Marshal(i.SimpleSchema) - if err != nil { - return nil, err - } - b3, err := json.Marshal(i.Refable) - if err != nil { - return nil, err - } - b4, err := json.Marshal(i.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b4, b3, b1, b2), nil -} - -// JSONLookup look up a value by the json property name -func (i Items) JSONLookup(token string) (interface{}, error) { - if token == jsonRef { - return &i.Ref, nil - } - - r, _, err := jsonpointer.GetForToken(i.CommonValidations, token) - if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { - return nil, err - } - if r != nil { - return r, nil - } - r, _, err = jsonpointer.GetForToken(i.SimpleSchema, token) - return r, err -} diff --git a/vendor/github.com/go-openapi/spec/license.go b/vendor/github.com/go-openapi/spec/license.go deleted file mode 100644 index b42f80368e..0000000000 --- a/vendor/github.com/go-openapi/spec/license.go +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/swag" -) - -// License information for the exposed API. -// -// For more information: http://goo.gl/8us55a#licenseObject -type License struct { - LicenseProps - VendorExtensible -} - -// LicenseProps holds the properties of a License object -type LicenseProps struct { - Name string `json:"name,omitempty"` - URL string `json:"url,omitempty"` -} - -// UnmarshalJSON hydrates License from json -func (l *License) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &l.LicenseProps); err != nil { - return err - } - return json.Unmarshal(data, &l.VendorExtensible) -} - -// MarshalJSON produces License as json -func (l License) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(l.LicenseProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(l.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} diff --git a/vendor/github.com/go-openapi/spec/normalizer.go b/vendor/github.com/go-openapi/spec/normalizer.go deleted file mode 100644 index e8b6009945..0000000000 --- a/vendor/github.com/go-openapi/spec/normalizer.go +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "net/url" - "path" - "strings" -) - -const fileScheme = "file" - -// normalizeURI ensures that all $ref paths used internally by the expander are canonicalized. -// -// NOTE(windows): there is a tolerance over the strict URI format on windows. -// -// The normalizer accepts relative file URLs like 'Path\File.JSON' as well as absolute file URLs like -// 'C:\Path\file.Yaml'. -// -// Both are canonicalized with a "file://" scheme, slashes and a lower-cased path: -// 'file:///c:/path/file.yaml' -// -// URLs can be specified with a file scheme, like in 'file:///folder/file.json' or -// 'file:///c:\folder\File.json'. -// -// URLs like file://C:\folder are considered invalid (i.e. there is no host 'c:\folder') and a "repair" -// is attempted. -// -// The base path argument is assumed to be canonicalized (e.g. using normalizeBase()). -func normalizeURI(refPath, base string) string { - refURL, err := parseURL(refPath) - if err != nil { - specLogger.Printf("warning: invalid URI in $ref %q: %v", refPath, err) - refURL, refPath = repairURI(refPath) - } - - fixWindowsURI(refURL, refPath) // noop on non-windows OS - - refURL.Path = path.Clean(refURL.Path) - if refURL.Path == "." { - refURL.Path = "" - } - - r := MustCreateRef(refURL.String()) - if r.IsCanonical() { - return refURL.String() - } - - baseURL, _ := parseURL(base) - if path.IsAbs(refURL.Path) { - baseURL.Path = refURL.Path - } else if refURL.Path != "" { - baseURL.Path = path.Join(path.Dir(baseURL.Path), refURL.Path) - } - // copying fragment from ref to base - baseURL.Fragment = refURL.Fragment - - return baseURL.String() -} - -// denormalizeRef returns the simplest notation for a normalized $ref, given the path of the original root document. -// -// When calling this, we assume that: -// * $ref is a canonical URI -// * originalRelativeBase is a canonical URI -// -// denormalizeRef is currently used when we rewrite a $ref after a circular $ref has been detected. -// In this case, expansion stops and normally renders the internal canonical $ref. -// -// This internal $ref is eventually rebased to the original RelativeBase used for the expansion. -// -// There is a special case for schemas that are anchored with an "id": -// in that case, the rebasing is performed // against the id only if this is an anchor for the initial root document. -// All other intermediate "id"'s found along the way are ignored for the purpose of rebasing. -func denormalizeRef(ref *Ref, originalRelativeBase, id string) Ref { - debugLog("denormalizeRef called:\n$ref: %q\noriginal: %s\nroot ID:%s", ref.String(), originalRelativeBase, id) - - if ref.String() == "" || ref.IsRoot() || ref.HasFragmentOnly { - // short circuit: $ref to current doc - return *ref - } - - if id != "" { - idBaseURL, err := parseURL(id) - if err == nil { // if the schema id is not usable as a URI, ignore it - if ref, ok := rebase(ref, idBaseURL, true); ok { // rebase, but keep references to root unchaged (do not want $ref: "") - // $ref relative to the ID of the schema in the root document - return ref - } - } - } - - originalRelativeBaseURL, _ := parseURL(originalRelativeBase) - - r, _ := rebase(ref, originalRelativeBaseURL, false) - - return r -} - -func rebase(ref *Ref, v *url.URL, notEqual bool) (Ref, bool) { - var newBase url.URL - - u := ref.GetURL() - - if u.Scheme != v.Scheme || u.Host != v.Host { - return *ref, false - } - - docPath := v.Path - v.Path = path.Dir(v.Path) - - if v.Path == "." { - v.Path = "" - } else if !strings.HasSuffix(v.Path, "/") { - v.Path += "/" - } - - newBase.Fragment = u.Fragment - - if strings.HasPrefix(u.Path, docPath) { - newBase.Path = strings.TrimPrefix(u.Path, docPath) - } else { - newBase.Path = strings.TrimPrefix(u.Path, v.Path) - } - - if notEqual && newBase.Path == "" && newBase.Fragment == "" { - // do not want rebasing to end up in an empty $ref - return *ref, false - } - - if path.IsAbs(newBase.Path) { - // whenever we end up with an absolute path, specify the scheme and host - newBase.Scheme = v.Scheme - newBase.Host = v.Host - } - - return MustCreateRef(newBase.String()), true -} - -// normalizeRef canonicalize a Ref, using a canonical relativeBase as its absolute anchor -func normalizeRef(ref *Ref, relativeBase string) *Ref { - r := MustCreateRef(normalizeURI(ref.String(), relativeBase)) - return &r -} - -// normalizeBase performs a normalization of the input base path. -// -// This always yields a canonical URI (absolute), usable for the document cache. -// -// It ensures that all further internal work on basePath may safely assume -// a non-empty, cross-platform, canonical URI (i.e. absolute). -// -// This normalization tolerates windows paths (e.g. C:\x\y\File.dat) and transform this -// in a file:// URL with lower cased drive letter and path. -// -// See also: https://en.wikipedia.org/wiki/File_URI_scheme -func normalizeBase(in string) string { - u, err := parseURL(in) - if err != nil { - specLogger.Printf("warning: invalid URI in RelativeBase %q: %v", in, err) - u, in = repairURI(in) - } - - u.Fragment = "" // any fragment in the base is irrelevant - - fixWindowsURI(u, in) // noop on non-windows OS - - u.Path = path.Clean(u.Path) - if u.Path == "." { // empty after Clean() - u.Path = "" - } - - if u.Scheme != "" { - if path.IsAbs(u.Path) || u.Scheme != fileScheme { - // this is absolute or explicitly not a local file: we're good - return u.String() - } - } - - // no scheme or file scheme with relative path: assume file and make it absolute - // enforce scheme file://... with absolute path. - // - // If the input path is relative, we anchor the path to the current working directory. - // NOTE: we may end up with a host component. Leave it unchanged: e.g. file://host/folder/file.json - - u.Scheme = fileScheme - u.Path = absPath(u.Path) // platform-dependent - u.RawQuery = "" // any query component is irrelevant for a base - return u.String() -} diff --git a/vendor/github.com/go-openapi/spec/normalizer_nonwindows.go b/vendor/github.com/go-openapi/spec/normalizer_nonwindows.go deleted file mode 100644 index f19f1a8fb6..0000000000 --- a/vendor/github.com/go-openapi/spec/normalizer_nonwindows.go +++ /dev/null @@ -1,44 +0,0 @@ -//go:build !windows -// +build !windows - -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "net/url" - "path/filepath" -) - -// absPath makes a file path absolute and compatible with a URI path component. -// -// The parameter must be a path, not an URI. -func absPath(in string) string { - anchored, err := filepath.Abs(in) - if err != nil { - specLogger.Printf("warning: could not resolve current working directory: %v", err) - return in - } - return anchored -} - -func repairURI(in string) (*url.URL, string) { - u, _ := parseURL("") - debugLog("repaired URI: original: %q, repaired: %q", in, "") - return u, "" -} - -func fixWindowsURI(_ *url.URL, _ string) { -} diff --git a/vendor/github.com/go-openapi/spec/normalizer_windows.go b/vendor/github.com/go-openapi/spec/normalizer_windows.go deleted file mode 100644 index a66c532dbc..0000000000 --- a/vendor/github.com/go-openapi/spec/normalizer_windows.go +++ /dev/null @@ -1,154 +0,0 @@ -// -build windows - -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "net/url" - "os" - "path" - "path/filepath" - "strings" -) - -// absPath makes a file path absolute and compatible with a URI path component -// -// The parameter must be a path, not an URI. -func absPath(in string) string { - // NOTE(windows): filepath.Abs exhibits a special behavior on windows for empty paths. - // See https://github.com/golang/go/issues/24441 - if in == "" { - in = "." - } - - anchored, err := filepath.Abs(in) - if err != nil { - specLogger.Printf("warning: could not resolve current working directory: %v", err) - return in - } - - pth := strings.ReplaceAll(strings.ToLower(anchored), `\`, `/`) - if !strings.HasPrefix(pth, "/") { - pth = "/" + pth - } - - return path.Clean(pth) -} - -// repairURI tolerates invalid file URIs with common typos -// such as 'file://E:\folder\file', that break the regular URL parser. -// -// Adopting the same defaults as for unixes (e.g. return an empty path) would -// result into a counter-intuitive result for that case (e.g. E:\folder\file is -// eventually resolved as the current directory). The repair will detect the missing "/". -// -// Note that this only works for the file scheme. -func repairURI(in string) (*url.URL, string) { - const prefix = fileScheme + "://" - if !strings.HasPrefix(in, prefix) { - // giving up: resolve to empty path - u, _ := parseURL("") - - return u, "" - } - - // attempt the repair, stripping the scheme should be sufficient - u, _ := parseURL(strings.TrimPrefix(in, prefix)) - debugLog("repaired URI: original: %q, repaired: %q", in, u.String()) - - return u, u.String() -} - -// fixWindowsURI tolerates an absolute file path on windows such as C:\Base\File.yaml or \\host\share\Base\File.yaml -// and makes it a canonical URI: file:///c:/base/file.yaml -// -// Catch 22 notes for Windows: -// -// * There may be a drive letter on windows (it is lower-cased) -// * There may be a share UNC, e.g. \\server\folder\data.xml -// * Paths are case insensitive -// * Paths may already contain slashes -// * Paths must be slashed -// -// NOTE: there is no escaping. "/" may be valid separators just like "\". -// We don't use ToSlash() (which escapes everything) because windows now also -// tolerates the use of "/". Hence, both C:\File.yaml and C:/File.yaml will work. -func fixWindowsURI(u *url.URL, in string) { - drive := filepath.VolumeName(in) - - if len(drive) > 0 { - if len(u.Scheme) == 1 && strings.EqualFold(u.Scheme, drive[:1]) { // a path with a drive letter - u.Scheme = fileScheme - u.Host = "" - u.Path = strings.Join([]string{drive, u.Opaque, u.Path}, `/`) // reconstruct the full path component (no fragment, no query) - } else if u.Host == "" && strings.HasPrefix(u.Path, drive) { // a path with a \\host volume - // NOTE: the special host@port syntax for UNC is not supported (yet) - u.Scheme = fileScheme - - // this is a modified version of filepath.Dir() to apply on the VolumeName itself - i := len(drive) - 1 - for i >= 0 && !os.IsPathSeparator(drive[i]) { - i-- - } - host := drive[:i] // \\host\share => host - - u.Path = strings.TrimPrefix(u.Path, host) - u.Host = strings.TrimPrefix(host, `\\`) - } - - u.Opaque = "" - u.Path = strings.ReplaceAll(strings.ToLower(u.Path), `\`, `/`) - - // ensure we form an absolute path - if !strings.HasPrefix(u.Path, "/") { - u.Path = "/" + u.Path - } - - u.Path = path.Clean(u.Path) - - return - } - - if u.Scheme == fileScheme { - // Handle dodgy cases for file://{...} URIs on windows. - // A canonical URI should always be followed by an absolute path. - // - // Examples: - // * file:///folder/file => valid, unchanged - // * file:///c:\folder\file => slashed - // * file:///./folder/file => valid, cleaned to remove the dot - // * file:///.\folder\file => remapped to cwd - // * file:///. => dodgy, remapped to / (consistent with the behavior on unix) - // * file:///.. => dodgy, remapped to / (consistent with the behavior on unix) - if (!path.IsAbs(u.Path) && !filepath.IsAbs(u.Path)) || (strings.HasPrefix(u.Path, `/.`) && strings.Contains(u.Path, `\`)) { - // ensure we form an absolute path - u.Path, _ = filepath.Abs(strings.TrimLeft(u.Path, `/`)) - if !strings.HasPrefix(u.Path, "/") { - u.Path = "/" + u.Path - } - } - u.Path = strings.ToLower(u.Path) - } - - // NOTE: lower case normalization does not propagate to inner resources, - // generated when rebasing: when joining a relative URI with a file to an absolute base, - // only the base is currently lower-cased. - // - // For now, we assume this is good enough for most use cases - // and try not to generate too many differences - // between the output produced on different platforms. - u.Path = path.Clean(strings.ReplaceAll(u.Path, `\`, `/`)) -} diff --git a/vendor/github.com/go-openapi/spec/operation.go b/vendor/github.com/go-openapi/spec/operation.go deleted file mode 100644 index a69cca8814..0000000000 --- a/vendor/github.com/go-openapi/spec/operation.go +++ /dev/null @@ -1,400 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "sort" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -func init() { - gob.Register(map[string]interface{}{}) - gob.Register([]interface{}{}) -} - -// OperationProps describes an operation -// -// NOTES: -// - schemes, when present must be from [http, https, ws, wss]: see validate -// - Security is handled as a special case: see MarshalJSON function -type OperationProps struct { - Description string `json:"description,omitempty"` - Consumes []string `json:"consumes,omitempty"` - Produces []string `json:"produces,omitempty"` - Schemes []string `json:"schemes,omitempty"` - Tags []string `json:"tags,omitempty"` - Summary string `json:"summary,omitempty"` - ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` - ID string `json:"operationId,omitempty"` - Deprecated bool `json:"deprecated,omitempty"` - Security []map[string][]string `json:"security,omitempty"` - Parameters []Parameter `json:"parameters,omitempty"` - Responses *Responses `json:"responses,omitempty"` -} - -// MarshalJSON takes care of serializing operation properties to JSON -// -// We use a custom marhaller here to handle a special cases related to -// the Security field. We need to preserve zero length slice -// while omitting the field when the value is nil/unset. -func (op OperationProps) MarshalJSON() ([]byte, error) { - type Alias OperationProps - if op.Security == nil { - return json.Marshal(&struct { - Security []map[string][]string `json:"security,omitempty"` - *Alias - }{ - Security: op.Security, - Alias: (*Alias)(&op), - }) - } - return json.Marshal(&struct { - Security []map[string][]string `json:"security"` - *Alias - }{ - Security: op.Security, - Alias: (*Alias)(&op), - }) -} - -// Operation describes a single API operation on a path. -// -// For more information: http://goo.gl/8us55a#operationObject -type Operation struct { - VendorExtensible - OperationProps -} - -// SuccessResponse gets a success response model -func (o *Operation) SuccessResponse() (*Response, int, bool) { - if o.Responses == nil { - return nil, 0, false - } - - responseCodes := make([]int, 0, len(o.Responses.StatusCodeResponses)) - for k := range o.Responses.StatusCodeResponses { - if k >= 200 && k < 300 { - responseCodes = append(responseCodes, k) - } - } - if len(responseCodes) > 0 { - sort.Ints(responseCodes) - v := o.Responses.StatusCodeResponses[responseCodes[0]] - return &v, responseCodes[0], true - } - - return o.Responses.Default, 0, false -} - -// JSONLookup look up a value by the json property name -func (o Operation) JSONLookup(token string) (interface{}, error) { - if ex, ok := o.Extensions[token]; ok { - return &ex, nil - } - r, _, err := jsonpointer.GetForToken(o.OperationProps, token) - return r, err -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (o *Operation) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &o.OperationProps); err != nil { - return err - } - return json.Unmarshal(data, &o.VendorExtensible) -} - -// MarshalJSON converts this items object to JSON -func (o Operation) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(o.OperationProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(o.VendorExtensible) - if err != nil { - return nil, err - } - concated := swag.ConcatJSON(b1, b2) - return concated, nil -} - -// NewOperation creates a new operation instance. -// It expects an ID as parameter but not passing an ID is also valid. -func NewOperation(id string) *Operation { - op := new(Operation) - op.ID = id - return op -} - -// WithID sets the ID property on this operation, allows for chaining. -func (o *Operation) WithID(id string) *Operation { - o.ID = id - return o -} - -// WithDescription sets the description on this operation, allows for chaining -func (o *Operation) WithDescription(description string) *Operation { - o.Description = description - return o -} - -// WithSummary sets the summary on this operation, allows for chaining -func (o *Operation) WithSummary(summary string) *Operation { - o.Summary = summary - return o -} - -// WithExternalDocs sets/removes the external docs for/from this operation. -// When you pass empty strings as params the external documents will be removed. -// When you pass non-empty string as one value then those values will be used on the external docs object. -// So when you pass a non-empty description, you should also pass the url and vice versa. -func (o *Operation) WithExternalDocs(description, url string) *Operation { - if description == "" && url == "" { - o.ExternalDocs = nil - return o - } - - if o.ExternalDocs == nil { - o.ExternalDocs = &ExternalDocumentation{} - } - o.ExternalDocs.Description = description - o.ExternalDocs.URL = url - return o -} - -// Deprecate marks the operation as deprecated -func (o *Operation) Deprecate() *Operation { - o.Deprecated = true - return o -} - -// Undeprecate marks the operation as not deprected -func (o *Operation) Undeprecate() *Operation { - o.Deprecated = false - return o -} - -// WithConsumes adds media types for incoming body values -func (o *Operation) WithConsumes(mediaTypes ...string) *Operation { - o.Consumes = append(o.Consumes, mediaTypes...) - return o -} - -// WithProduces adds media types for outgoing body values -func (o *Operation) WithProduces(mediaTypes ...string) *Operation { - o.Produces = append(o.Produces, mediaTypes...) - return o -} - -// WithTags adds tags for this operation -func (o *Operation) WithTags(tags ...string) *Operation { - o.Tags = append(o.Tags, tags...) - return o -} - -// AddParam adds a parameter to this operation, when a parameter for that location -// and with that name already exists it will be replaced -func (o *Operation) AddParam(param *Parameter) *Operation { - if param == nil { - return o - } - - for i, p := range o.Parameters { - if p.Name == param.Name && p.In == param.In { - params := make([]Parameter, 0, len(o.Parameters)+1) - params = append(params, o.Parameters[:i]...) - params = append(params, *param) - params = append(params, o.Parameters[i+1:]...) - o.Parameters = params - - return o - } - } - - o.Parameters = append(o.Parameters, *param) - return o -} - -// RemoveParam removes a parameter from the operation -func (o *Operation) RemoveParam(name, in string) *Operation { - for i, p := range o.Parameters { - if p.Name == name && p.In == in { - o.Parameters = append(o.Parameters[:i], o.Parameters[i+1:]...) - return o - } - } - return o -} - -// SecuredWith adds a security scope to this operation. -func (o *Operation) SecuredWith(name string, scopes ...string) *Operation { - o.Security = append(o.Security, map[string][]string{name: scopes}) - return o -} - -// WithDefaultResponse adds a default response to the operation. -// Passing a nil value will remove the response -func (o *Operation) WithDefaultResponse(response *Response) *Operation { - return o.RespondsWith(0, response) -} - -// RespondsWith adds a status code response to the operation. -// When the code is 0 the value of the response will be used as default response value. -// When the value of the response is nil it will be removed from the operation -func (o *Operation) RespondsWith(code int, response *Response) *Operation { - if o.Responses == nil { - o.Responses = new(Responses) - } - if code == 0 { - o.Responses.Default = response - return o - } - if response == nil { - delete(o.Responses.StatusCodeResponses, code) - return o - } - if o.Responses.StatusCodeResponses == nil { - o.Responses.StatusCodeResponses = make(map[int]Response) - } - o.Responses.StatusCodeResponses[code] = *response - return o -} - -type opsAlias OperationProps - -type gobAlias struct { - Security []map[string]struct { - List []string - Pad bool - } - Alias *opsAlias - SecurityIsEmpty bool -} - -// GobEncode provides a safe gob encoder for Operation, including empty security requirements -func (o Operation) GobEncode() ([]byte, error) { - raw := struct { - Ext VendorExtensible - Props OperationProps - }{ - Ext: o.VendorExtensible, - Props: o.OperationProps, - } - var b bytes.Buffer - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err -} - -// GobDecode provides a safe gob decoder for Operation, including empty security requirements -func (o *Operation) GobDecode(b []byte) error { - var raw struct { - Ext VendorExtensible - Props OperationProps - } - - buf := bytes.NewBuffer(b) - err := gob.NewDecoder(buf).Decode(&raw) - if err != nil { - return err - } - o.VendorExtensible = raw.Ext - o.OperationProps = raw.Props - return nil -} - -// GobEncode provides a safe gob encoder for Operation, including empty security requirements -func (op OperationProps) GobEncode() ([]byte, error) { - raw := gobAlias{ - Alias: (*opsAlias)(&op), - } - - var b bytes.Buffer - if op.Security == nil { - // nil security requirement - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err - } - - if len(op.Security) == 0 { - // empty, but non-nil security requirement - raw.SecurityIsEmpty = true - raw.Alias.Security = nil - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err - } - - raw.Security = make([]map[string]struct { - List []string - Pad bool - }, 0, len(op.Security)) - for _, req := range op.Security { - v := make(map[string]struct { - List []string - Pad bool - }, len(req)) - for k, val := range req { - v[k] = struct { - List []string - Pad bool - }{ - List: val, - } - } - raw.Security = append(raw.Security, v) - } - - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err -} - -// GobDecode provides a safe gob decoder for Operation, including empty security requirements -func (op *OperationProps) GobDecode(b []byte) error { - var raw gobAlias - - buf := bytes.NewBuffer(b) - err := gob.NewDecoder(buf).Decode(&raw) - if err != nil { - return err - } - if raw.Alias == nil { - return nil - } - - switch { - case raw.SecurityIsEmpty: - // empty, but non-nil security requirement - raw.Alias.Security = []map[string][]string{} - case len(raw.Alias.Security) == 0: - // nil security requirement - raw.Alias.Security = nil - default: - raw.Alias.Security = make([]map[string][]string, 0, len(raw.Security)) - for _, req := range raw.Security { - v := make(map[string][]string, len(req)) - for k, val := range req { - v[k] = make([]string, 0, len(val.List)) - v[k] = append(v[k], val.List...) - } - raw.Alias.Security = append(raw.Alias.Security, v) - } - } - - *op = *(*OperationProps)(raw.Alias) - return nil -} diff --git a/vendor/github.com/go-openapi/spec/parameter.go b/vendor/github.com/go-openapi/spec/parameter.go deleted file mode 100644 index bd4f1cdb07..0000000000 --- a/vendor/github.com/go-openapi/spec/parameter.go +++ /dev/null @@ -1,326 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// QueryParam creates a query parameter -func QueryParam(name string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "query"}} -} - -// HeaderParam creates a header parameter, this is always required by default -func HeaderParam(name string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "header", Required: true}} -} - -// PathParam creates a path parameter, this is always required -func PathParam(name string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "path", Required: true}} -} - -// BodyParam creates a body parameter -func BodyParam(name string, schema *Schema) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "body", Schema: schema}} -} - -// FormDataParam creates a body parameter -func FormDataParam(name string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}} -} - -// FileParam creates a body parameter -func FileParam(name string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name, In: "formData"}, - SimpleSchema: SimpleSchema{Type: "file"}} -} - -// SimpleArrayParam creates a param for a simple array (string, int, date etc) -func SimpleArrayParam(name, tpe, fmt string) *Parameter { - return &Parameter{ParamProps: ParamProps{Name: name}, - SimpleSchema: SimpleSchema{Type: jsonArray, CollectionFormat: "csv", - Items: &Items{SimpleSchema: SimpleSchema{Type: tpe, Format: fmt}}}} -} - -// ParamRef creates a parameter that's a json reference -func ParamRef(uri string) *Parameter { - p := new(Parameter) - p.Ref = MustCreateRef(uri) - return p -} - -// ParamProps describes the specific attributes of an operation parameter -// -// NOTE: -// - Schema is defined when "in" == "body": see validate -// - AllowEmptyValue is allowed where "in" == "query" || "formData" -type ParamProps struct { - Description string `json:"description,omitempty"` - Name string `json:"name,omitempty"` - In string `json:"in,omitempty"` - Required bool `json:"required,omitempty"` - Schema *Schema `json:"schema,omitempty"` - AllowEmptyValue bool `json:"allowEmptyValue,omitempty"` -} - -// Parameter a unique parameter is defined by a combination of a [name](#parameterName) and [location](#parameterIn). -// -// There are five possible parameter types. -// - Path - Used together with [Path Templating](#pathTemplating), where the parameter value is actually part -// of the operation's URL. This does not include the host or base path of the API. For example, in `/items/{itemId}`, -// the path parameter is `itemId`. -// - Query - Parameters that are appended to the URL. For example, in `/items?id=###`, the query parameter is `id`. -// - Header - Custom headers that are expected as part of the request. -// - Body - The payload that's appended to the HTTP request. Since there can only be one payload, there can only be -// _one_ body parameter. The name of the body parameter has no effect on the parameter itself and is used for -// documentation purposes only. Since Form parameters are also in the payload, body and form parameters cannot exist -// together for the same operation. -// - Form - Used to describe the payload of an HTTP request when either `application/x-www-form-urlencoded` or -// `multipart/form-data` are used as the content type of the request (in Swagger's definition, -// the [`consumes`](#operationConsumes) property of an operation). This is the only parameter type that can be used -// to send files, thus supporting the `file` type. Since form parameters are sent in the payload, they cannot be -// declared together with a body parameter for the same operation. Form parameters have a different format based on -// the content-type used (for further details, consult http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4). -// - `application/x-www-form-urlencoded` - Similar to the format of Query parameters but as a payload. -// For example, `foo=1&bar=swagger` - both `foo` and `bar` are form parameters. This is normally used for simple -// parameters that are being transferred. -// - `multipart/form-data` - each parameter takes a section in the payload with an internal header. -// For example, for the header `Content-Disposition: form-data; name="submit-name"` the name of the parameter is -// `submit-name`. This type of form parameters is more commonly used for file transfers. -// -// For more information: http://goo.gl/8us55a#parameterObject -type Parameter struct { - Refable - CommonValidations - SimpleSchema - VendorExtensible - ParamProps -} - -// JSONLookup look up a value by the json property name -func (p Parameter) JSONLookup(token string) (interface{}, error) { - if ex, ok := p.Extensions[token]; ok { - return &ex, nil - } - if token == jsonRef { - return &p.Ref, nil - } - - r, _, err := jsonpointer.GetForToken(p.CommonValidations, token) - if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { - return nil, err - } - if r != nil { - return r, nil - } - r, _, err = jsonpointer.GetForToken(p.SimpleSchema, token) - if err != nil && !strings.HasPrefix(err.Error(), "object has no field") { - return nil, err - } - if r != nil { - return r, nil - } - r, _, err = jsonpointer.GetForToken(p.ParamProps, token) - return r, err -} - -// WithDescription a fluent builder method for the description of the parameter -func (p *Parameter) WithDescription(description string) *Parameter { - p.Description = description - return p -} - -// Named a fluent builder method to override the name of the parameter -func (p *Parameter) Named(name string) *Parameter { - p.Name = name - return p -} - -// WithLocation a fluent builder method to override the location of the parameter -func (p *Parameter) WithLocation(in string) *Parameter { - p.In = in - return p -} - -// Typed a fluent builder method for the type of the parameter value -func (p *Parameter) Typed(tpe, format string) *Parameter { - p.Type = tpe - p.Format = format - return p -} - -// CollectionOf a fluent builder method for an array parameter -func (p *Parameter) CollectionOf(items *Items, format string) *Parameter { - p.Type = jsonArray - p.Items = items - p.CollectionFormat = format - return p -} - -// WithDefault sets the default value on this parameter -func (p *Parameter) WithDefault(defaultValue interface{}) *Parameter { - p.AsOptional() // with default implies optional - p.Default = defaultValue - return p -} - -// AllowsEmptyValues flags this parameter as being ok with empty values -func (p *Parameter) AllowsEmptyValues() *Parameter { - p.AllowEmptyValue = true - return p -} - -// NoEmptyValues flags this parameter as not liking empty values -func (p *Parameter) NoEmptyValues() *Parameter { - p.AllowEmptyValue = false - return p -} - -// AsOptional flags this parameter as optional -func (p *Parameter) AsOptional() *Parameter { - p.Required = false - return p -} - -// AsRequired flags this parameter as required -func (p *Parameter) AsRequired() *Parameter { - if p.Default != nil { // with a default required makes no sense - return p - } - p.Required = true - return p -} - -// WithMaxLength sets a max length value -func (p *Parameter) WithMaxLength(max int64) *Parameter { - p.MaxLength = &max - return p -} - -// WithMinLength sets a min length value -func (p *Parameter) WithMinLength(min int64) *Parameter { - p.MinLength = &min - return p -} - -// WithPattern sets a pattern value -func (p *Parameter) WithPattern(pattern string) *Parameter { - p.Pattern = pattern - return p -} - -// WithMultipleOf sets a multiple of value -func (p *Parameter) WithMultipleOf(number float64) *Parameter { - p.MultipleOf = &number - return p -} - -// WithMaximum sets a maximum number value -func (p *Parameter) WithMaximum(max float64, exclusive bool) *Parameter { - p.Maximum = &max - p.ExclusiveMaximum = exclusive - return p -} - -// WithMinimum sets a minimum number value -func (p *Parameter) WithMinimum(min float64, exclusive bool) *Parameter { - p.Minimum = &min - p.ExclusiveMinimum = exclusive - return p -} - -// WithEnum sets a the enum values (replace) -func (p *Parameter) WithEnum(values ...interface{}) *Parameter { - p.Enum = append([]interface{}{}, values...) - return p -} - -// WithMaxItems sets the max items -func (p *Parameter) WithMaxItems(size int64) *Parameter { - p.MaxItems = &size - return p -} - -// WithMinItems sets the min items -func (p *Parameter) WithMinItems(size int64) *Parameter { - p.MinItems = &size - return p -} - -// UniqueValues dictates that this array can only have unique items -func (p *Parameter) UniqueValues() *Parameter { - p.UniqueItems = true - return p -} - -// AllowDuplicates this array can have duplicates -func (p *Parameter) AllowDuplicates() *Parameter { - p.UniqueItems = false - return p -} - -// WithValidations is a fluent method to set parameter validations -func (p *Parameter) WithValidations(val CommonValidations) *Parameter { - p.SetValidations(SchemaValidations{CommonValidations: val}) - return p -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (p *Parameter) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &p.CommonValidations); err != nil { - return err - } - if err := json.Unmarshal(data, &p.Refable); err != nil { - return err - } - if err := json.Unmarshal(data, &p.SimpleSchema); err != nil { - return err - } - if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { - return err - } - return json.Unmarshal(data, &p.ParamProps) -} - -// MarshalJSON converts this items object to JSON -func (p Parameter) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(p.CommonValidations) - if err != nil { - return nil, err - } - b2, err := json.Marshal(p.SimpleSchema) - if err != nil { - return nil, err - } - b3, err := json.Marshal(p.Refable) - if err != nil { - return nil, err - } - b4, err := json.Marshal(p.VendorExtensible) - if err != nil { - return nil, err - } - b5, err := json.Marshal(p.ParamProps) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b3, b1, b2, b4, b5), nil -} diff --git a/vendor/github.com/go-openapi/spec/path_item.go b/vendor/github.com/go-openapi/spec/path_item.go deleted file mode 100644 index 68fc8e9014..0000000000 --- a/vendor/github.com/go-openapi/spec/path_item.go +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// PathItemProps the path item specific properties -type PathItemProps struct { - Get *Operation `json:"get,omitempty"` - Put *Operation `json:"put,omitempty"` - Post *Operation `json:"post,omitempty"` - Delete *Operation `json:"delete,omitempty"` - Options *Operation `json:"options,omitempty"` - Head *Operation `json:"head,omitempty"` - Patch *Operation `json:"patch,omitempty"` - Parameters []Parameter `json:"parameters,omitempty"` -} - -// PathItem describes the operations available on a single path. -// A Path Item may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). -// The path itself is still exposed to the documentation viewer but they will -// not know which operations and parameters are available. -// -// For more information: http://goo.gl/8us55a#pathItemObject -type PathItem struct { - Refable - VendorExtensible - PathItemProps -} - -// JSONLookup look up a value by the json property name -func (p PathItem) JSONLookup(token string) (interface{}, error) { - if ex, ok := p.Extensions[token]; ok { - return &ex, nil - } - if token == jsonRef { - return &p.Ref, nil - } - r, _, err := jsonpointer.GetForToken(p.PathItemProps, token) - return r, err -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (p *PathItem) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &p.Refable); err != nil { - return err - } - if err := json.Unmarshal(data, &p.VendorExtensible); err != nil { - return err - } - return json.Unmarshal(data, &p.PathItemProps) -} - -// MarshalJSON converts this items object to JSON -func (p PathItem) MarshalJSON() ([]byte, error) { - b3, err := json.Marshal(p.Refable) - if err != nil { - return nil, err - } - b4, err := json.Marshal(p.VendorExtensible) - if err != nil { - return nil, err - } - b5, err := json.Marshal(p.PathItemProps) - if err != nil { - return nil, err - } - concated := swag.ConcatJSON(b3, b4, b5) - return concated, nil -} diff --git a/vendor/github.com/go-openapi/spec/paths.go b/vendor/github.com/go-openapi/spec/paths.go deleted file mode 100644 index 9dc82a2901..0000000000 --- a/vendor/github.com/go-openapi/spec/paths.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "fmt" - "strings" - - "github.com/go-openapi/swag" -) - -// Paths holds the relative paths to the individual endpoints. -// The path is appended to the [`basePath`](http://goo.gl/8us55a#swaggerBasePath) in order -// to construct the full URL. -// The Paths may be empty, due to [ACL constraints](http://goo.gl/8us55a#securityFiltering). -// -// For more information: http://goo.gl/8us55a#pathsObject -type Paths struct { - VendorExtensible - Paths map[string]PathItem `json:"-"` // custom serializer to flatten this, each entry must start with "/" -} - -// JSONLookup look up a value by the json property name -func (p Paths) JSONLookup(token string) (interface{}, error) { - if pi, ok := p.Paths[token]; ok { - return &pi, nil - } - if ex, ok := p.Extensions[token]; ok { - return &ex, nil - } - return nil, fmt.Errorf("object has no field %q", token) -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (p *Paths) UnmarshalJSON(data []byte) error { - var res map[string]json.RawMessage - if err := json.Unmarshal(data, &res); err != nil { - return err - } - for k, v := range res { - if strings.HasPrefix(strings.ToLower(k), "x-") { - if p.Extensions == nil { - p.Extensions = make(map[string]interface{}) - } - var d interface{} - if err := json.Unmarshal(v, &d); err != nil { - return err - } - p.Extensions[k] = d - } - if strings.HasPrefix(k, "/") { - if p.Paths == nil { - p.Paths = make(map[string]PathItem) - } - var pi PathItem - if err := json.Unmarshal(v, &pi); err != nil { - return err - } - p.Paths[k] = pi - } - } - return nil -} - -// MarshalJSON converts this items object to JSON -func (p Paths) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(p.VendorExtensible) - if err != nil { - return nil, err - } - - pths := make(map[string]PathItem) - for k, v := range p.Paths { - if strings.HasPrefix(k, "/") { - pths[k] = v - } - } - b2, err := json.Marshal(pths) - if err != nil { - return nil, err - } - concated := swag.ConcatJSON(b1, b2) - return concated, nil -} diff --git a/vendor/github.com/go-openapi/spec/properties.go b/vendor/github.com/go-openapi/spec/properties.go deleted file mode 100644 index 91d2435f01..0000000000 --- a/vendor/github.com/go-openapi/spec/properties.go +++ /dev/null @@ -1,91 +0,0 @@ -package spec - -import ( - "bytes" - "encoding/json" - "reflect" - "sort" -) - -// OrderSchemaItem holds a named schema (e.g. from a property of an object) -type OrderSchemaItem struct { - Name string - Schema -} - -// OrderSchemaItems is a sortable slice of named schemas. -// The ordering is defined by the x-order schema extension. -type OrderSchemaItems []OrderSchemaItem - -// MarshalJSON produces a json object with keys defined by the name schemas -// of the OrderSchemaItems slice, keeping the original order of the slice. -func (items OrderSchemaItems) MarshalJSON() ([]byte, error) { - buf := bytes.NewBuffer(nil) - buf.WriteString("{") - for i := range items { - if i > 0 { - buf.WriteString(",") - } - buf.WriteString("\"") - buf.WriteString(items[i].Name) - buf.WriteString("\":") - bs, err := json.Marshal(&items[i].Schema) - if err != nil { - return nil, err - } - buf.Write(bs) - } - buf.WriteString("}") - return buf.Bytes(), nil -} - -func (items OrderSchemaItems) Len() int { return len(items) } -func (items OrderSchemaItems) Swap(i, j int) { items[i], items[j] = items[j], items[i] } -func (items OrderSchemaItems) Less(i, j int) (ret bool) { - ii, oki := items[i].Extensions.GetInt("x-order") - ij, okj := items[j].Extensions.GetInt("x-order") - if oki { - if okj { - defer func() { - if err := recover(); err != nil { - defer func() { - if err = recover(); err != nil { - ret = items[i].Name < items[j].Name - } - }() - ret = reflect.ValueOf(ii).String() < reflect.ValueOf(ij).String() - } - }() - return ii < ij - } - return true - } else if okj { - return false - } - return items[i].Name < items[j].Name -} - -// SchemaProperties is a map representing the properties of a Schema object. -// It knows how to transform its keys into an ordered slice. -type SchemaProperties map[string]Schema - -// ToOrderedSchemaItems transforms the map of properties into a sortable slice -func (properties SchemaProperties) ToOrderedSchemaItems() OrderSchemaItems { - items := make(OrderSchemaItems, 0, len(properties)) - for k, v := range properties { - items = append(items, OrderSchemaItem{ - Name: k, - Schema: v, - }) - } - sort.Sort(items) - return items -} - -// MarshalJSON produces properties as json, keeping their order. -func (properties SchemaProperties) MarshalJSON() ([]byte, error) { - if properties == nil { - return []byte("null"), nil - } - return json.Marshal(properties.ToOrderedSchemaItems()) -} diff --git a/vendor/github.com/go-openapi/spec/ref.go b/vendor/github.com/go-openapi/spec/ref.go deleted file mode 100644 index b0ef9bd9c9..0000000000 --- a/vendor/github.com/go-openapi/spec/ref.go +++ /dev/null @@ -1,193 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "net/http" - "os" - "path/filepath" - - "github.com/go-openapi/jsonreference" -) - -// Refable is a struct for things that accept a $ref property -type Refable struct { - Ref Ref -} - -// MarshalJSON marshals the ref to json -func (r Refable) MarshalJSON() ([]byte, error) { - return r.Ref.MarshalJSON() -} - -// UnmarshalJSON unmarshalss the ref from json -func (r *Refable) UnmarshalJSON(d []byte) error { - return json.Unmarshal(d, &r.Ref) -} - -// Ref represents a json reference that is potentially resolved -type Ref struct { - jsonreference.Ref -} - -// RemoteURI gets the remote uri part of the ref -func (r *Ref) RemoteURI() string { - if r.String() == "" { - return "" - } - - u := *r.GetURL() - u.Fragment = "" - return u.String() -} - -// IsValidURI returns true when the url the ref points to can be found -func (r *Ref) IsValidURI(basepaths ...string) bool { - if r.String() == "" { - return true - } - - v := r.RemoteURI() - if v == "" { - return true - } - - if r.HasFullURL { - //nolint:noctx,gosec - rr, err := http.Get(v) - if err != nil { - return false - } - defer rr.Body.Close() - - return rr.StatusCode/100 == 2 - } - - if !(r.HasFileScheme || r.HasFullFilePath || r.HasURLPathOnly) { - return false - } - - // check for local file - pth := v - if r.HasURLPathOnly { - base := "." - if len(basepaths) > 0 { - base = filepath.Dir(filepath.Join(basepaths...)) - } - p, e := filepath.Abs(filepath.ToSlash(filepath.Join(base, pth))) - if e != nil { - return false - } - pth = p - } - - fi, err := os.Stat(filepath.ToSlash(pth)) - if err != nil { - return false - } - - return !fi.IsDir() -} - -// Inherits creates a new reference from a parent and a child -// If the child cannot inherit from the parent, an error is returned -func (r *Ref) Inherits(child Ref) (*Ref, error) { - ref, err := r.Ref.Inherits(child.Ref) - if err != nil { - return nil, err - } - return &Ref{Ref: *ref}, nil -} - -// NewRef creates a new instance of a ref object -// returns an error when the reference uri is an invalid uri -func NewRef(refURI string) (Ref, error) { - ref, err := jsonreference.New(refURI) - if err != nil { - return Ref{}, err - } - return Ref{Ref: ref}, nil -} - -// MustCreateRef creates a ref object but panics when refURI is invalid. -// Use the NewRef method for a version that returns an error. -func MustCreateRef(refURI string) Ref { - return Ref{Ref: jsonreference.MustCreateRef(refURI)} -} - -// MarshalJSON marshals this ref into a JSON object -func (r Ref) MarshalJSON() ([]byte, error) { - str := r.String() - if str == "" { - if r.IsRoot() { - return []byte(`{"$ref":""}`), nil - } - return []byte("{}"), nil - } - v := map[string]interface{}{"$ref": str} - return json.Marshal(v) -} - -// UnmarshalJSON unmarshals this ref from a JSON object -func (r *Ref) UnmarshalJSON(d []byte) error { - var v map[string]interface{} - if err := json.Unmarshal(d, &v); err != nil { - return err - } - return r.fromMap(v) -} - -// GobEncode provides a safe gob encoder for Ref -func (r Ref) GobEncode() ([]byte, error) { - var b bytes.Buffer - raw, err := r.MarshalJSON() - if err != nil { - return nil, err - } - err = gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err -} - -// GobDecode provides a safe gob decoder for Ref -func (r *Ref) GobDecode(b []byte) error { - var raw []byte - buf := bytes.NewBuffer(b) - err := gob.NewDecoder(buf).Decode(&raw) - if err != nil { - return err - } - return json.Unmarshal(raw, r) -} - -func (r *Ref) fromMap(v map[string]interface{}) error { - if v == nil { - return nil - } - - if vv, ok := v["$ref"]; ok { - if str, ok := vv.(string); ok { - ref, err := jsonreference.New(str) - if err != nil { - return err - } - *r = Ref{Ref: ref} - } - } - - return nil -} diff --git a/vendor/github.com/go-openapi/spec/resolver.go b/vendor/github.com/go-openapi/spec/resolver.go deleted file mode 100644 index 47d1ee13fc..0000000000 --- a/vendor/github.com/go-openapi/spec/resolver.go +++ /dev/null @@ -1,127 +0,0 @@ -package spec - -import ( - "fmt" - - "github.com/go-openapi/swag" -) - -func resolveAnyWithBase(root interface{}, ref *Ref, result interface{}, options *ExpandOptions) error { - options = optionsOrDefault(options) - resolver := defaultSchemaLoader(root, options, nil, nil) - - if err := resolver.Resolve(ref, result, options.RelativeBase); err != nil { - return err - } - - return nil -} - -// ResolveRefWithBase resolves a reference against a context root with preservation of base path -func ResolveRefWithBase(root interface{}, ref *Ref, options *ExpandOptions) (*Schema, error) { - result := new(Schema) - - if err := resolveAnyWithBase(root, ref, result, options); err != nil { - return nil, err - } - - return result, nil -} - -// ResolveRef resolves a reference for a schema against a context root -// ref is guaranteed to be in root (no need to go to external files) -// -// ResolveRef is ONLY called from the code generation module -func ResolveRef(root interface{}, ref *Ref) (*Schema, error) { - res, _, err := ref.GetPointer().Get(root) - if err != nil { - return nil, err - } - - switch sch := res.(type) { - case Schema: - return &sch, nil - case *Schema: - return sch, nil - case map[string]interface{}: - newSch := new(Schema) - if err = swag.DynamicJSONToStruct(sch, newSch); err != nil { - return nil, err - } - return newSch, nil - default: - return nil, fmt.Errorf("type: %T: %w", sch, ErrUnknownTypeForReference) - } -} - -// ResolveParameterWithBase resolves a parameter reference against a context root and base path -func ResolveParameterWithBase(root interface{}, ref Ref, options *ExpandOptions) (*Parameter, error) { - result := new(Parameter) - - if err := resolveAnyWithBase(root, &ref, result, options); err != nil { - return nil, err - } - - return result, nil -} - -// ResolveParameter resolves a parameter reference against a context root -func ResolveParameter(root interface{}, ref Ref) (*Parameter, error) { - return ResolveParameterWithBase(root, ref, nil) -} - -// ResolveResponseWithBase resolves response a reference against a context root and base path -func ResolveResponseWithBase(root interface{}, ref Ref, options *ExpandOptions) (*Response, error) { - result := new(Response) - - err := resolveAnyWithBase(root, &ref, result, options) - if err != nil { - return nil, err - } - - return result, nil -} - -// ResolveResponse resolves response a reference against a context root -func ResolveResponse(root interface{}, ref Ref) (*Response, error) { - return ResolveResponseWithBase(root, ref, nil) -} - -// ResolvePathItemWithBase resolves response a path item against a context root and base path -func ResolvePathItemWithBase(root interface{}, ref Ref, options *ExpandOptions) (*PathItem, error) { - result := new(PathItem) - - if err := resolveAnyWithBase(root, &ref, result, options); err != nil { - return nil, err - } - - return result, nil -} - -// ResolvePathItem resolves response a path item against a context root and base path -// -// Deprecated: use ResolvePathItemWithBase instead -func ResolvePathItem(root interface{}, ref Ref, options *ExpandOptions) (*PathItem, error) { - return ResolvePathItemWithBase(root, ref, options) -} - -// ResolveItemsWithBase resolves parameter items reference against a context root and base path. -// -// NOTE: stricly speaking, this construct is not supported by Swagger 2.0. -// Similarly, $ref are forbidden in response headers. -func ResolveItemsWithBase(root interface{}, ref Ref, options *ExpandOptions) (*Items, error) { - result := new(Items) - - if err := resolveAnyWithBase(root, &ref, result, options); err != nil { - return nil, err - } - - return result, nil -} - -// ResolveItems resolves parameter items reference against a context root and base path. -// -// Deprecated: use ResolveItemsWithBase instead -func ResolveItems(root interface{}, ref Ref, options *ExpandOptions) (*Items, error) { - return ResolveItemsWithBase(root, ref, options) -} diff --git a/vendor/github.com/go-openapi/spec/response.go b/vendor/github.com/go-openapi/spec/response.go deleted file mode 100644 index 0340b60d84..0000000000 --- a/vendor/github.com/go-openapi/spec/response.go +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// ResponseProps properties specific to a response -type ResponseProps struct { - Description string `json:"description"` - Schema *Schema `json:"schema,omitempty"` - Headers map[string]Header `json:"headers,omitempty"` - Examples map[string]interface{} `json:"examples,omitempty"` -} - -// Response describes a single response from an API Operation. -// -// For more information: http://goo.gl/8us55a#responseObject -type Response struct { - Refable - ResponseProps - VendorExtensible -} - -// JSONLookup look up a value by the json property name -func (r Response) JSONLookup(token string) (interface{}, error) { - if ex, ok := r.Extensions[token]; ok { - return &ex, nil - } - if token == "$ref" { - return &r.Ref, nil - } - ptr, _, err := jsonpointer.GetForToken(r.ResponseProps, token) - return ptr, err -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (r *Response) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &r.ResponseProps); err != nil { - return err - } - if err := json.Unmarshal(data, &r.Refable); err != nil { - return err - } - return json.Unmarshal(data, &r.VendorExtensible) -} - -// MarshalJSON converts this items object to JSON -func (r Response) MarshalJSON() ([]byte, error) { - var ( - b1 []byte - err error - ) - - if r.Ref.String() == "" { - // when there is no $ref, empty description is rendered as an empty string - b1, err = json.Marshal(r.ResponseProps) - } else { - // when there is $ref inside the schema, description should be omitempty-ied - b1, err = json.Marshal(struct { - Description string `json:"description,omitempty"` - Schema *Schema `json:"schema,omitempty"` - Headers map[string]Header `json:"headers,omitempty"` - Examples map[string]interface{} `json:"examples,omitempty"` - }{ - Description: r.ResponseProps.Description, - Schema: r.ResponseProps.Schema, - Examples: r.ResponseProps.Examples, - }) - } - if err != nil { - return nil, err - } - - b2, err := json.Marshal(r.Refable) - if err != nil { - return nil, err - } - b3, err := json.Marshal(r.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2, b3), nil -} - -// NewResponse creates a new response instance -func NewResponse() *Response { - return new(Response) -} - -// ResponseRef creates a response as a json reference -func ResponseRef(url string) *Response { - resp := NewResponse() - resp.Ref = MustCreateRef(url) - return resp -} - -// WithDescription sets the description on this response, allows for chaining -func (r *Response) WithDescription(description string) *Response { - r.Description = description - return r -} - -// WithSchema sets the schema on this response, allows for chaining. -// Passing a nil argument removes the schema from this response -func (r *Response) WithSchema(schema *Schema) *Response { - r.Schema = schema - return r -} - -// AddHeader adds a header to this response -func (r *Response) AddHeader(name string, header *Header) *Response { - if header == nil { - return r.RemoveHeader(name) - } - if r.Headers == nil { - r.Headers = make(map[string]Header) - } - r.Headers[name] = *header - return r -} - -// RemoveHeader removes a header from this response -func (r *Response) RemoveHeader(name string) *Response { - delete(r.Headers, name) - return r -} - -// AddExample adds an example to this response -func (r *Response) AddExample(mediaType string, example interface{}) *Response { - if r.Examples == nil { - r.Examples = make(map[string]interface{}) - } - r.Examples[mediaType] = example - return r -} diff --git a/vendor/github.com/go-openapi/spec/responses.go b/vendor/github.com/go-openapi/spec/responses.go deleted file mode 100644 index 16c3076fe8..0000000000 --- a/vendor/github.com/go-openapi/spec/responses.go +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "fmt" - "reflect" - "strconv" - "strings" - - "github.com/go-openapi/swag" -) - -// Responses is a container for the expected responses of an operation. -// The container maps a HTTP response code to the expected response. -// It is not expected from the documentation to necessarily cover all possible HTTP response codes, -// since they may not be known in advance. However, it is expected from the documentation to cover -// a successful operation response and any known errors. -// -// The `default` can be used a default response object for all HTTP codes that are not covered -// individually by the specification. -// -// The `Responses Object` MUST contain at least one response code, and it SHOULD be the response -// for a successful operation call. -// -// For more information: http://goo.gl/8us55a#responsesObject -type Responses struct { - VendorExtensible - ResponsesProps -} - -// JSONLookup implements an interface to customize json pointer lookup -func (r Responses) JSONLookup(token string) (interface{}, error) { - if token == "default" { - return r.Default, nil - } - if ex, ok := r.Extensions[token]; ok { - return &ex, nil - } - if i, err := strconv.Atoi(token); err == nil { - if scr, ok := r.StatusCodeResponses[i]; ok { - return scr, nil - } - } - return nil, fmt.Errorf("object has no field %q", token) -} - -// UnmarshalJSON hydrates this items instance with the data from JSON -func (r *Responses) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &r.ResponsesProps); err != nil { - return err - } - - if err := json.Unmarshal(data, &r.VendorExtensible); err != nil { - return err - } - if reflect.DeepEqual(ResponsesProps{}, r.ResponsesProps) { - r.ResponsesProps = ResponsesProps{} - } - return nil -} - -// MarshalJSON converts this items object to JSON -func (r Responses) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(r.ResponsesProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(r.VendorExtensible) - if err != nil { - return nil, err - } - concated := swag.ConcatJSON(b1, b2) - return concated, nil -} - -// ResponsesProps describes all responses for an operation. -// It tells what is the default response and maps all responses with a -// HTTP status code. -type ResponsesProps struct { - Default *Response - StatusCodeResponses map[int]Response -} - -// MarshalJSON marshals responses as JSON -func (r ResponsesProps) MarshalJSON() ([]byte, error) { - toser := map[string]Response{} - if r.Default != nil { - toser["default"] = *r.Default - } - for k, v := range r.StatusCodeResponses { - toser[strconv.Itoa(k)] = v - } - return json.Marshal(toser) -} - -// UnmarshalJSON unmarshals responses from JSON -func (r *ResponsesProps) UnmarshalJSON(data []byte) error { - var res map[string]json.RawMessage - if err := json.Unmarshal(data, &res); err != nil { - return err - } - - if v, ok := res["default"]; ok { - var defaultRes Response - if err := json.Unmarshal(v, &defaultRes); err != nil { - return err - } - r.Default = &defaultRes - delete(res, "default") - } - for k, v := range res { - if !strings.HasPrefix(k, "x-") { - var statusCodeResp Response - if err := json.Unmarshal(v, &statusCodeResp); err != nil { - return err - } - if nk, err := strconv.Atoi(k); err == nil { - if r.StatusCodeResponses == nil { - r.StatusCodeResponses = map[int]Response{} - } - r.StatusCodeResponses[nk] = statusCodeResp - } - } - } - return nil -} diff --git a/vendor/github.com/go-openapi/spec/schema.go b/vendor/github.com/go-openapi/spec/schema.go deleted file mode 100644 index 4e9be8576b..0000000000 --- a/vendor/github.com/go-openapi/spec/schema.go +++ /dev/null @@ -1,645 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "fmt" - "strings" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// BooleanProperty creates a boolean property -func BooleanProperty() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"boolean"}}} -} - -// BoolProperty creates a boolean property -func BoolProperty() *Schema { return BooleanProperty() } - -// StringProperty creates a string property -func StringProperty() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} -} - -// CharProperty creates a string property -func CharProperty() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}}} -} - -// Float64Property creates a float64/double property -func Float64Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "double"}} -} - -// Float32Property creates a float32/float property -func Float32Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"number"}, Format: "float"}} -} - -// Int8Property creates an int8 property -func Int8Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int8"}} -} - -// Int16Property creates an int16 property -func Int16Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int16"}} -} - -// Int32Property creates an int32 property -func Int32Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int32"}} -} - -// Int64Property creates an int64 property -func Int64Property() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"integer"}, Format: "int64"}} -} - -// StrFmtProperty creates a property for the named string format -func StrFmtProperty(format string) *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: format}} -} - -// DateProperty creates a date property -func DateProperty() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date"}} -} - -// DateTimeProperty creates a date time property -func DateTimeProperty() *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"string"}, Format: "date-time"}} -} - -// MapProperty creates a map property -func MapProperty(property *Schema) *Schema { - return &Schema{SchemaProps: SchemaProps{Type: []string{"object"}, - AdditionalProperties: &SchemaOrBool{Allows: true, Schema: property}}} -} - -// RefProperty creates a ref property -func RefProperty(name string) *Schema { - return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} -} - -// RefSchema creates a ref property -func RefSchema(name string) *Schema { - return &Schema{SchemaProps: SchemaProps{Ref: MustCreateRef(name)}} -} - -// ArrayProperty creates an array property -func ArrayProperty(items *Schema) *Schema { - if items == nil { - return &Schema{SchemaProps: SchemaProps{Type: []string{"array"}}} - } - return &Schema{SchemaProps: SchemaProps{Items: &SchemaOrArray{Schema: items}, Type: []string{"array"}}} -} - -// ComposedSchema creates a schema with allOf -func ComposedSchema(schemas ...Schema) *Schema { - s := new(Schema) - s.AllOf = schemas - return s -} - -// SchemaURL represents a schema url -type SchemaURL string - -// MarshalJSON marshal this to JSON -func (r SchemaURL) MarshalJSON() ([]byte, error) { - if r == "" { - return []byte("{}"), nil - } - v := map[string]interface{}{"$schema": string(r)} - return json.Marshal(v) -} - -// UnmarshalJSON unmarshal this from JSON -func (r *SchemaURL) UnmarshalJSON(data []byte) error { - var v map[string]interface{} - if err := json.Unmarshal(data, &v); err != nil { - return err - } - return r.fromMap(v) -} - -func (r *SchemaURL) fromMap(v map[string]interface{}) error { - if v == nil { - return nil - } - if vv, ok := v["$schema"]; ok { - if str, ok := vv.(string); ok { - u, err := parseURL(str) - if err != nil { - return err - } - - *r = SchemaURL(u.String()) - } - } - return nil -} - -// SchemaProps describes a JSON schema (draft 4) -type SchemaProps struct { - ID string `json:"id,omitempty"` - Ref Ref `json:"-"` - Schema SchemaURL `json:"-"` - Description string `json:"description,omitempty"` - Type StringOrArray `json:"type,omitempty"` - Nullable bool `json:"nullable,omitempty"` - Format string `json:"format,omitempty"` - Title string `json:"title,omitempty"` - Default interface{} `json:"default,omitempty"` - Maximum *float64 `json:"maximum,omitempty"` - ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` - Minimum *float64 `json:"minimum,omitempty"` - ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` - MaxLength *int64 `json:"maxLength,omitempty"` - MinLength *int64 `json:"minLength,omitempty"` - Pattern string `json:"pattern,omitempty"` - MaxItems *int64 `json:"maxItems,omitempty"` - MinItems *int64 `json:"minItems,omitempty"` - UniqueItems bool `json:"uniqueItems,omitempty"` - MultipleOf *float64 `json:"multipleOf,omitempty"` - Enum []interface{} `json:"enum,omitempty"` - MaxProperties *int64 `json:"maxProperties,omitempty"` - MinProperties *int64 `json:"minProperties,omitempty"` - Required []string `json:"required,omitempty"` - Items *SchemaOrArray `json:"items,omitempty"` - AllOf []Schema `json:"allOf,omitempty"` - OneOf []Schema `json:"oneOf,omitempty"` - AnyOf []Schema `json:"anyOf,omitempty"` - Not *Schema `json:"not,omitempty"` - Properties SchemaProperties `json:"properties,omitempty"` - AdditionalProperties *SchemaOrBool `json:"additionalProperties,omitempty"` - PatternProperties SchemaProperties `json:"patternProperties,omitempty"` - Dependencies Dependencies `json:"dependencies,omitempty"` - AdditionalItems *SchemaOrBool `json:"additionalItems,omitempty"` - Definitions Definitions `json:"definitions,omitempty"` -} - -// SwaggerSchemaProps are additional properties supported by swagger schemas, but not JSON-schema (draft 4) -type SwaggerSchemaProps struct { - Discriminator string `json:"discriminator,omitempty"` - ReadOnly bool `json:"readOnly,omitempty"` - XML *XMLObject `json:"xml,omitempty"` - ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` - Example interface{} `json:"example,omitempty"` -} - -// Schema the schema object allows the definition of input and output data types. -// These types can be objects, but also primitives and arrays. -// This object is based on the [JSON Schema Specification Draft 4](http://json-schema.org/) -// and uses a predefined subset of it. -// On top of this subset, there are extensions provided by this specification to allow for more complete documentation. -// -// For more information: http://goo.gl/8us55a#schemaObject -type Schema struct { - VendorExtensible - SchemaProps - SwaggerSchemaProps - ExtraProps map[string]interface{} `json:"-"` -} - -// JSONLookup implements an interface to customize json pointer lookup -func (s Schema) JSONLookup(token string) (interface{}, error) { - if ex, ok := s.Extensions[token]; ok { - return &ex, nil - } - - if ex, ok := s.ExtraProps[token]; ok { - return &ex, nil - } - - r, _, err := jsonpointer.GetForToken(s.SchemaProps, token) - if r != nil || (err != nil && !strings.HasPrefix(err.Error(), "object has no field")) { - return r, err - } - r, _, err = jsonpointer.GetForToken(s.SwaggerSchemaProps, token) - return r, err -} - -// WithID sets the id for this schema, allows for chaining -func (s *Schema) WithID(id string) *Schema { - s.ID = id - return s -} - -// WithTitle sets the title for this schema, allows for chaining -func (s *Schema) WithTitle(title string) *Schema { - s.Title = title - return s -} - -// WithDescription sets the description for this schema, allows for chaining -func (s *Schema) WithDescription(description string) *Schema { - s.Description = description - return s -} - -// WithProperties sets the properties for this schema -func (s *Schema) WithProperties(schemas map[string]Schema) *Schema { - s.Properties = schemas - return s -} - -// SetProperty sets a property on this schema -func (s *Schema) SetProperty(name string, schema Schema) *Schema { - if s.Properties == nil { - s.Properties = make(map[string]Schema) - } - s.Properties[name] = schema - return s -} - -// WithAllOf sets the all of property -func (s *Schema) WithAllOf(schemas ...Schema) *Schema { - s.AllOf = schemas - return s -} - -// WithMaxProperties sets the max number of properties an object can have -func (s *Schema) WithMaxProperties(max int64) *Schema { - s.MaxProperties = &max - return s -} - -// WithMinProperties sets the min number of properties an object must have -func (s *Schema) WithMinProperties(min int64) *Schema { - s.MinProperties = &min - return s -} - -// Typed sets the type of this schema for a single value item -func (s *Schema) Typed(tpe, format string) *Schema { - s.Type = []string{tpe} - s.Format = format - return s -} - -// AddType adds a type with potential format to the types for this schema -func (s *Schema) AddType(tpe, format string) *Schema { - s.Type = append(s.Type, tpe) - if format != "" { - s.Format = format - } - return s -} - -// AsNullable flags this schema as nullable. -func (s *Schema) AsNullable() *Schema { - s.Nullable = true - return s -} - -// CollectionOf a fluent builder method for an array parameter -func (s *Schema) CollectionOf(items Schema) *Schema { - s.Type = []string{jsonArray} - s.Items = &SchemaOrArray{Schema: &items} - return s -} - -// WithDefault sets the default value on this parameter -func (s *Schema) WithDefault(defaultValue interface{}) *Schema { - s.Default = defaultValue - return s -} - -// WithRequired flags this parameter as required -func (s *Schema) WithRequired(items ...string) *Schema { - s.Required = items - return s -} - -// AddRequired adds field names to the required properties array -func (s *Schema) AddRequired(items ...string) *Schema { - s.Required = append(s.Required, items...) - return s -} - -// WithMaxLength sets a max length value -func (s *Schema) WithMaxLength(max int64) *Schema { - s.MaxLength = &max - return s -} - -// WithMinLength sets a min length value -func (s *Schema) WithMinLength(min int64) *Schema { - s.MinLength = &min - return s -} - -// WithPattern sets a pattern value -func (s *Schema) WithPattern(pattern string) *Schema { - s.Pattern = pattern - return s -} - -// WithMultipleOf sets a multiple of value -func (s *Schema) WithMultipleOf(number float64) *Schema { - s.MultipleOf = &number - return s -} - -// WithMaximum sets a maximum number value -func (s *Schema) WithMaximum(max float64, exclusive bool) *Schema { - s.Maximum = &max - s.ExclusiveMaximum = exclusive - return s -} - -// WithMinimum sets a minimum number value -func (s *Schema) WithMinimum(min float64, exclusive bool) *Schema { - s.Minimum = &min - s.ExclusiveMinimum = exclusive - return s -} - -// WithEnum sets a the enum values (replace) -func (s *Schema) WithEnum(values ...interface{}) *Schema { - s.Enum = append([]interface{}{}, values...) - return s -} - -// WithMaxItems sets the max items -func (s *Schema) WithMaxItems(size int64) *Schema { - s.MaxItems = &size - return s -} - -// WithMinItems sets the min items -func (s *Schema) WithMinItems(size int64) *Schema { - s.MinItems = &size - return s -} - -// UniqueValues dictates that this array can only have unique items -func (s *Schema) UniqueValues() *Schema { - s.UniqueItems = true - return s -} - -// AllowDuplicates this array can have duplicates -func (s *Schema) AllowDuplicates() *Schema { - s.UniqueItems = false - return s -} - -// AddToAllOf adds a schema to the allOf property -func (s *Schema) AddToAllOf(schemas ...Schema) *Schema { - s.AllOf = append(s.AllOf, schemas...) - return s -} - -// WithDiscriminator sets the name of the discriminator field -func (s *Schema) WithDiscriminator(discriminator string) *Schema { - s.Discriminator = discriminator - return s -} - -// AsReadOnly flags this schema as readonly -func (s *Schema) AsReadOnly() *Schema { - s.ReadOnly = true - return s -} - -// AsWritable flags this schema as writeable (not read-only) -func (s *Schema) AsWritable() *Schema { - s.ReadOnly = false - return s -} - -// WithExample sets the example for this schema -func (s *Schema) WithExample(example interface{}) *Schema { - s.Example = example - return s -} - -// WithExternalDocs sets/removes the external docs for/from this schema. -// When you pass empty strings as params the external documents will be removed. -// When you pass non-empty string as one value then those values will be used on the external docs object. -// So when you pass a non-empty description, you should also pass the url and vice versa. -func (s *Schema) WithExternalDocs(description, url string) *Schema { - if description == "" && url == "" { - s.ExternalDocs = nil - return s - } - - if s.ExternalDocs == nil { - s.ExternalDocs = &ExternalDocumentation{} - } - s.ExternalDocs.Description = description - s.ExternalDocs.URL = url - return s -} - -// WithXMLName sets the xml name for the object -func (s *Schema) WithXMLName(name string) *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Name = name - return s -} - -// WithXMLNamespace sets the xml namespace for the object -func (s *Schema) WithXMLNamespace(namespace string) *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Namespace = namespace - return s -} - -// WithXMLPrefix sets the xml prefix for the object -func (s *Schema) WithXMLPrefix(prefix string) *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Prefix = prefix - return s -} - -// AsXMLAttribute flags this object as xml attribute -func (s *Schema) AsXMLAttribute() *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Attribute = true - return s -} - -// AsXMLElement flags this object as an xml node -func (s *Schema) AsXMLElement() *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Attribute = false - return s -} - -// AsWrappedXML flags this object as wrapped, this is mostly useful for array types -func (s *Schema) AsWrappedXML() *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Wrapped = true - return s -} - -// AsUnwrappedXML flags this object as an xml node -func (s *Schema) AsUnwrappedXML() *Schema { - if s.XML == nil { - s.XML = new(XMLObject) - } - s.XML.Wrapped = false - return s -} - -// SetValidations defines all schema validations. -// -// NOTE: Required, ReadOnly, AllOf, AnyOf, OneOf and Not are not considered. -func (s *Schema) SetValidations(val SchemaValidations) { - s.Maximum = val.Maximum - s.ExclusiveMaximum = val.ExclusiveMaximum - s.Minimum = val.Minimum - s.ExclusiveMinimum = val.ExclusiveMinimum - s.MaxLength = val.MaxLength - s.MinLength = val.MinLength - s.Pattern = val.Pattern - s.MaxItems = val.MaxItems - s.MinItems = val.MinItems - s.UniqueItems = val.UniqueItems - s.MultipleOf = val.MultipleOf - s.Enum = val.Enum - s.MinProperties = val.MinProperties - s.MaxProperties = val.MaxProperties - s.PatternProperties = val.PatternProperties -} - -// WithValidations is a fluent method to set schema validations -func (s *Schema) WithValidations(val SchemaValidations) *Schema { - s.SetValidations(val) - return s -} - -// Validations returns a clone of the validations for this schema -func (s Schema) Validations() SchemaValidations { - return SchemaValidations{ - CommonValidations: CommonValidations{ - Maximum: s.Maximum, - ExclusiveMaximum: s.ExclusiveMaximum, - Minimum: s.Minimum, - ExclusiveMinimum: s.ExclusiveMinimum, - MaxLength: s.MaxLength, - MinLength: s.MinLength, - Pattern: s.Pattern, - MaxItems: s.MaxItems, - MinItems: s.MinItems, - UniqueItems: s.UniqueItems, - MultipleOf: s.MultipleOf, - Enum: s.Enum, - }, - MinProperties: s.MinProperties, - MaxProperties: s.MaxProperties, - PatternProperties: s.PatternProperties, - } -} - -// MarshalJSON marshal this to JSON -func (s Schema) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(s.SchemaProps) - if err != nil { - return nil, fmt.Errorf("schema props %v", err) - } - b2, err := json.Marshal(s.VendorExtensible) - if err != nil { - return nil, fmt.Errorf("vendor props %v", err) - } - b3, err := s.Ref.MarshalJSON() - if err != nil { - return nil, fmt.Errorf("ref prop %v", err) - } - b4, err := s.Schema.MarshalJSON() - if err != nil { - return nil, fmt.Errorf("schema prop %v", err) - } - b5, err := json.Marshal(s.SwaggerSchemaProps) - if err != nil { - return nil, fmt.Errorf("common validations %v", err) - } - var b6 []byte - if s.ExtraProps != nil { - jj, err := json.Marshal(s.ExtraProps) - if err != nil { - return nil, fmt.Errorf("extra props %v", err) - } - b6 = jj - } - return swag.ConcatJSON(b1, b2, b3, b4, b5, b6), nil -} - -// UnmarshalJSON marshal this from JSON -func (s *Schema) UnmarshalJSON(data []byte) error { - props := struct { - SchemaProps - SwaggerSchemaProps - }{} - if err := json.Unmarshal(data, &props); err != nil { - return err - } - - sch := Schema{ - SchemaProps: props.SchemaProps, - SwaggerSchemaProps: props.SwaggerSchemaProps, - } - - var d map[string]interface{} - if err := json.Unmarshal(data, &d); err != nil { - return err - } - - _ = sch.Ref.fromMap(d) - _ = sch.Schema.fromMap(d) - - delete(d, "$ref") - delete(d, "$schema") - for _, pn := range swag.DefaultJSONNameProvider.GetJSONNames(s) { - delete(d, pn) - } - - for k, vv := range d { - lk := strings.ToLower(k) - if strings.HasPrefix(lk, "x-") { - if sch.Extensions == nil { - sch.Extensions = map[string]interface{}{} - } - sch.Extensions[k] = vv - continue - } - if sch.ExtraProps == nil { - sch.ExtraProps = map[string]interface{}{} - } - sch.ExtraProps[k] = vv - } - - *s = sch - - return nil -} diff --git a/vendor/github.com/go-openapi/spec/schema_loader.go b/vendor/github.com/go-openapi/spec/schema_loader.go deleted file mode 100644 index 0059b99aed..0000000000 --- a/vendor/github.com/go-openapi/spec/schema_loader.go +++ /dev/null @@ -1,331 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - "fmt" - "log" - "net/url" - "reflect" - "strings" - - "github.com/go-openapi/swag" -) - -// PathLoader is a function to use when loading remote refs. -// -// This is a package level default. It may be overridden or bypassed by -// specifying the loader in ExpandOptions. -// -// NOTE: if you are using the go-openapi/loads package, it will override -// this value with its own default (a loader to retrieve YAML documents as -// well as JSON ones). -var PathLoader = func(pth string) (json.RawMessage, error) { - data, err := swag.LoadFromFileOrHTTP(pth) - if err != nil { - return nil, err - } - return json.RawMessage(data), nil -} - -// resolverContext allows to share a context during spec processing. -// At the moment, it just holds the index of circular references found. -type resolverContext struct { - // circulars holds all visited circular references, to shortcircuit $ref resolution. - // - // This structure is privately instantiated and needs not be locked against - // concurrent access, unless we chose to implement a parallel spec walking. - circulars map[string]bool - basePath string - loadDoc func(string) (json.RawMessage, error) - rootID string -} - -func newResolverContext(options *ExpandOptions) *resolverContext { - expandOptions := optionsOrDefault(options) - - // path loader may be overridden by options - var loader func(string) (json.RawMessage, error) - if expandOptions.PathLoader == nil { - loader = PathLoader - } else { - loader = expandOptions.PathLoader - } - - return &resolverContext{ - circulars: make(map[string]bool), - basePath: expandOptions.RelativeBase, // keep the root base path in context - loadDoc: loader, - } -} - -type schemaLoader struct { - root interface{} - options *ExpandOptions - cache ResolutionCache - context *resolverContext -} - -func (r *schemaLoader) transitiveResolver(basePath string, ref Ref) *schemaLoader { - if ref.IsRoot() || ref.HasFragmentOnly { - return r - } - - baseRef := MustCreateRef(basePath) - currentRef := normalizeRef(&ref, basePath) - if strings.HasPrefix(currentRef.String(), baseRef.String()) { - return r - } - - // set a new root against which to resolve - rootURL := currentRef.GetURL() - rootURL.Fragment = "" - root, _ := r.cache.Get(rootURL.String()) - - // shallow copy of resolver options to set a new RelativeBase when - // traversing multiple documents - newOptions := r.options - newOptions.RelativeBase = rootURL.String() - - return defaultSchemaLoader(root, newOptions, r.cache, r.context) -} - -func (r *schemaLoader) updateBasePath(transitive *schemaLoader, basePath string) string { - if transitive != r { - if transitive.options != nil && transitive.options.RelativeBase != "" { - return normalizeBase(transitive.options.RelativeBase) - } - } - - return basePath -} - -func (r *schemaLoader) resolveRef(ref *Ref, target interface{}, basePath string) error { - tgt := reflect.ValueOf(target) - if tgt.Kind() != reflect.Ptr { - return ErrResolveRefNeedsAPointer - } - - if ref.GetURL() == nil { - return nil - } - - var ( - res interface{} - data interface{} - err error - ) - - // Resolve against the root if it isn't nil, and if ref is pointing at the root, or has a fragment only which means - // it is pointing somewhere in the root. - root := r.root - if (ref.IsRoot() || ref.HasFragmentOnly) && root == nil && basePath != "" { - if baseRef, erb := NewRef(basePath); erb == nil { - root, _, _, _ = r.load(baseRef.GetURL()) - } - } - - if (ref.IsRoot() || ref.HasFragmentOnly) && root != nil { - data = root - } else { - baseRef := normalizeRef(ref, basePath) - data, _, _, err = r.load(baseRef.GetURL()) - if err != nil { - return err - } - } - - res = data - if ref.String() != "" { - res, _, err = ref.GetPointer().Get(data) - if err != nil { - return err - } - } - return swag.DynamicJSONToStruct(res, target) -} - -func (r *schemaLoader) load(refURL *url.URL) (interface{}, url.URL, bool, error) { - debugLog("loading schema from url: %s", refURL) - toFetch := *refURL - toFetch.Fragment = "" - - var err error - pth := toFetch.String() - normalized := normalizeBase(pth) - debugLog("loading doc from: %s", normalized) - - data, fromCache := r.cache.Get(normalized) - if fromCache { - return data, toFetch, fromCache, nil - } - - b, err := r.context.loadDoc(normalized) - if err != nil { - return nil, url.URL{}, false, err - } - - var doc interface{} - if err := json.Unmarshal(b, &doc); err != nil { - return nil, url.URL{}, false, err - } - r.cache.Set(normalized, doc) - - return doc, toFetch, fromCache, nil -} - -// isCircular detects cycles in sequences of $ref. -// -// It relies on a private context (which needs not be locked). -func (r *schemaLoader) isCircular(ref *Ref, basePath string, parentRefs ...string) (foundCycle bool) { - normalizedRef := normalizeURI(ref.String(), basePath) - if _, ok := r.context.circulars[normalizedRef]; ok { - // circular $ref has been already detected in another explored cycle - foundCycle = true - return - } - foundCycle = swag.ContainsStrings(parentRefs, normalizedRef) // normalized windows url's are lower cased - if foundCycle { - r.context.circulars[normalizedRef] = true - } - return -} - -// Resolve resolves a reference against basePath and stores the result in target. -// -// Resolve is not in charge of following references: it only resolves ref by following its URL. -// -// If the schema the ref is referring to holds nested refs, Resolve doesn't resolve them. -// -// If basePath is an empty string, ref is resolved against the root schema stored in the schemaLoader struct -func (r *schemaLoader) Resolve(ref *Ref, target interface{}, basePath string) error { - return r.resolveRef(ref, target, basePath) -} - -func (r *schemaLoader) deref(input interface{}, parentRefs []string, basePath string) error { - var ref *Ref - switch refable := input.(type) { - case *Schema: - ref = &refable.Ref - case *Parameter: - ref = &refable.Ref - case *Response: - ref = &refable.Ref - case *PathItem: - ref = &refable.Ref - default: - return fmt.Errorf("unsupported type: %T: %w", input, ErrDerefUnsupportedType) - } - - curRef := ref.String() - if curRef == "" { - return nil - } - - normalizedRef := normalizeRef(ref, basePath) - normalizedBasePath := normalizedRef.RemoteURI() - - if r.isCircular(normalizedRef, basePath, parentRefs...) { - return nil - } - - if err := r.resolveRef(ref, input, basePath); r.shouldStopOnError(err) { - return err - } - - if ref.String() == "" || ref.String() == curRef { - // done with rereferencing - return nil - } - - parentRefs = append(parentRefs, normalizedRef.String()) - return r.deref(input, parentRefs, normalizedBasePath) -} - -func (r *schemaLoader) shouldStopOnError(err error) bool { - if err != nil && !r.options.ContinueOnError { - return true - } - - if err != nil { - log.Println(err) - } - - return false -} - -func (r *schemaLoader) setSchemaID(target interface{}, id, basePath string) (string, string) { - debugLog("schema has ID: %s", id) - - // handling the case when id is a folder - // remember that basePath has to point to a file - var refPath string - if strings.HasSuffix(id, "/") { - // ensure this is detected as a file, not a folder - refPath = fmt.Sprintf("%s%s", id, "placeholder.json") - } else { - refPath = id - } - - // updates the current base path - // * important: ID can be a relative path - // * registers target to be fetchable from the new base proposed by this id - newBasePath := normalizeURI(refPath, basePath) - - // store found IDs for possible future reuse in $ref - r.cache.Set(newBasePath, target) - - // the root document has an ID: all $ref relative to that ID may - // be rebased relative to the root document - if basePath == r.context.basePath { - debugLog("root document is a schema with ID: %s (normalized as:%s)", id, newBasePath) - r.context.rootID = newBasePath - } - - return newBasePath, refPath -} - -func defaultSchemaLoader( - root interface{}, - expandOptions *ExpandOptions, - cache ResolutionCache, - context *resolverContext) *schemaLoader { - - if expandOptions == nil { - expandOptions = &ExpandOptions{} - } - - cache = cacheOrDefault(cache) - - if expandOptions.RelativeBase == "" { - // if no relative base is provided, assume the root document - // contains all $ref, or at least, that the relative documents - // may be resolved from the current working directory. - expandOptions.RelativeBase = baseForRoot(root, cache) - } - debugLog("effective expander options: %#v", expandOptions) - - if context == nil { - context = newResolverContext(expandOptions) - } - - return &schemaLoader{ - root: root, - options: expandOptions, - cache: cache, - context: context, - } -} diff --git a/vendor/github.com/go-openapi/spec/schemas/jsonschema-draft-04.json b/vendor/github.com/go-openapi/spec/schemas/jsonschema-draft-04.json deleted file mode 100644 index bcbb84743e..0000000000 --- a/vendor/github.com/go-openapi/spec/schemas/jsonschema-draft-04.json +++ /dev/null @@ -1,149 +0,0 @@ -{ - "id": "http://json-schema.org/draft-04/schema#", - "$schema": "http://json-schema.org/draft-04/schema#", - "description": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "positiveInteger": { - "type": "integer", - "minimum": 0 - }, - "positiveIntegerDefault0": { - "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] - }, - "simpleTypes": { - "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "minItems": 1, - "uniqueItems": true - } - }, - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "$schema": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": {}, - "multipleOf": { - "type": "number", - "minimum": 0, - "exclusiveMinimum": true - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "boolean", - "default": false - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "boolean", - "default": false - }, - "maxLength": { "$ref": "#/definitions/positiveInteger" }, - "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "items": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/schemaArray" } - ], - "default": {} - }, - "maxItems": { "$ref": "#/definitions/positiveInteger" }, - "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "maxProperties": { "$ref": "#/definitions/positiveInteger" }, - "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { - "anyOf": [ - { "type": "boolean" }, - { "$ref": "#" } - ], - "default": {} - }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [ - { "$ref": "#" }, - { "$ref": "#/definitions/stringArray" } - ] - } - }, - "enum": { - "type": "array", - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "dependencies": { - "exclusiveMaximum": [ "maximum" ], - "exclusiveMinimum": [ "minimum" ] - }, - "default": {} -} diff --git a/vendor/github.com/go-openapi/spec/schemas/v2/schema.json b/vendor/github.com/go-openapi/spec/schemas/v2/schema.json deleted file mode 100644 index ebe10ed32d..0000000000 --- a/vendor/github.com/go-openapi/spec/schemas/v2/schema.json +++ /dev/null @@ -1,1607 +0,0 @@ -{ - "title": "A JSON Schema for Swagger 2.0 API.", - "id": "http://swagger.io/v2/schema.json#", - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "swagger", - "info", - "paths" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "swagger": { - "type": "string", - "enum": [ - "2.0" - ], - "description": "The Swagger version of this document." - }, - "info": { - "$ref": "#/definitions/info" - }, - "host": { - "type": "string", - "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", - "description": "The host (name or ip) of the API. Example: 'swagger.io'" - }, - "basePath": { - "type": "string", - "pattern": "^/", - "description": "The base path to the API. Example: '/api'." - }, - "schemes": { - "$ref": "#/definitions/schemesList" - }, - "consumes": { - "description": "A list of MIME types accepted by the API.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "produces": { - "description": "A list of MIME types the API can produce.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "paths": { - "$ref": "#/definitions/paths" - }, - "definitions": { - "$ref": "#/definitions/definitions" - }, - "parameters": { - "$ref": "#/definitions/parameterDefinitions" - }, - "responses": { - "$ref": "#/definitions/responseDefinitions" - }, - "security": { - "$ref": "#/definitions/security" - }, - "securityDefinitions": { - "$ref": "#/definitions/securityDefinitions" - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/tag" - }, - "uniqueItems": true - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - } - }, - "definitions": { - "info": { - "type": "object", - "description": "General information about the API.", - "required": [ - "version", - "title" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "title": { - "type": "string", - "description": "A unique and precise title of the API." - }, - "version": { - "type": "string", - "description": "A semantic version number of the API." - }, - "description": { - "type": "string", - "description": "A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed." - }, - "termsOfService": { - "type": "string", - "description": "The terms of service for the API." - }, - "contact": { - "$ref": "#/definitions/contact" - }, - "license": { - "$ref": "#/definitions/license" - } - } - }, - "contact": { - "type": "object", - "description": "Contact information for the owners of the API.", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The identifying name of the contact person/organization." - }, - "url": { - "type": "string", - "description": "The URL pointing to the contact information.", - "format": "uri" - }, - "email": { - "type": "string", - "description": "The email address of the contact person/organization.", - "format": "email" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "license": { - "type": "object", - "required": [ - "name" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The name of the license type. It's encouraged to use an OSI compatible license." - }, - "url": { - "type": "string", - "description": "The URL pointing to the license.", - "format": "uri" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "paths": { - "type": "object", - "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - }, - "^/": { - "$ref": "#/definitions/pathItem" - } - }, - "additionalProperties": false - }, - "definitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "description": "One or more JSON objects describing the schemas being consumed and produced by the API." - }, - "parameterDefinitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/parameter" - }, - "description": "One or more JSON representations for parameters" - }, - "responseDefinitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/response" - }, - "description": "One or more JSON representations for responses" - }, - "externalDocs": { - "type": "object", - "additionalProperties": false, - "description": "information about external documentation", - "required": [ - "url" - ], - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "examples": { - "type": "object", - "additionalProperties": true - }, - "mimeType": { - "type": "string", - "description": "The MIME type of the HTTP message." - }, - "operation": { - "type": "object", - "required": [ - "responses" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - }, - "summary": { - "type": "string", - "description": "A brief summary of the operation." - }, - "description": { - "type": "string", - "description": "A longer description of the operation, GitHub Flavored Markdown is allowed." - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "operationId": { - "type": "string", - "description": "A unique identifier of the operation." - }, - "produces": { - "description": "A list of MIME types the API can produce.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "consumes": { - "description": "A list of MIME types the API can consume.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "parameters": { - "$ref": "#/definitions/parametersList" - }, - "responses": { - "$ref": "#/definitions/responses" - }, - "schemes": { - "$ref": "#/definitions/schemesList" - }, - "deprecated": { - "type": "boolean", - "default": false - }, - "security": { - "$ref": "#/definitions/security" - } - } - }, - "pathItem": { - "type": "object", - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "$ref": { - "type": "string" - }, - "get": { - "$ref": "#/definitions/operation" - }, - "put": { - "$ref": "#/definitions/operation" - }, - "post": { - "$ref": "#/definitions/operation" - }, - "delete": { - "$ref": "#/definitions/operation" - }, - "options": { - "$ref": "#/definitions/operation" - }, - "head": { - "$ref": "#/definitions/operation" - }, - "patch": { - "$ref": "#/definitions/operation" - }, - "parameters": { - "$ref": "#/definitions/parametersList" - } - } - }, - "responses": { - "type": "object", - "description": "Response objects names can either be any valid HTTP status code or 'default'.", - "minProperties": 1, - "additionalProperties": false, - "patternProperties": { - "^([0-9]{3})$|^(default)$": { - "$ref": "#/definitions/responseValue" - }, - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "not": { - "type": "object", - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - } - }, - "responseValue": { - "oneOf": [ - { - "$ref": "#/definitions/response" - }, - { - "$ref": "#/definitions/jsonReference" - } - ] - }, - "response": { - "type": "object", - "required": [ - "description" - ], - "properties": { - "description": { - "type": "string" - }, - "schema": { - "oneOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/fileSchema" - } - ] - }, - "headers": { - "$ref": "#/definitions/headers" - }, - "examples": { - "$ref": "#/definitions/examples" - } - }, - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "headers": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/header" - } - }, - "header": { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "vendorExtension": { - "description": "Any property starting with x- is valid.", - "additionalProperties": true, - "additionalItems": true - }, - "bodyParameter": { - "type": "object", - "required": [ - "name", - "in", - "schema" - ], - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "body" - ] - }, - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "schema": { - "$ref": "#/definitions/schema" - } - }, - "additionalProperties": false - }, - "headerParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "header" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "queryParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "query" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "allowEmptyValue": { - "type": "boolean", - "default": false, - "description": "allows sending a parameter by name only or with an empty value." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormatWithMulti" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "formDataParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "formData" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "allowEmptyValue": { - "type": "boolean", - "default": false, - "description": "allows sending a parameter by name only or with an empty value." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array", - "file" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormatWithMulti" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "pathParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "required": [ - "required" - ], - "properties": { - "required": { - "type": "boolean", - "enum": [ - true - ], - "description": "Determines whether or not this parameter is required or optional." - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "path" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "nonBodyParameter": { - "type": "object", - "required": [ - "name", - "in", - "type" - ], - "oneOf": [ - { - "$ref": "#/definitions/headerParameterSubSchema" - }, - { - "$ref": "#/definitions/formDataParameterSubSchema" - }, - { - "$ref": "#/definitions/queryParameterSubSchema" - }, - { - "$ref": "#/definitions/pathParameterSubSchema" - } - ] - }, - "parameter": { - "oneOf": [ - { - "$ref": "#/definitions/bodyParameter" - }, - { - "$ref": "#/definitions/nonBodyParameter" - } - ] - }, - "schema": { - "type": "object", - "description": "A deterministic version of a JSON Schema object.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "$ref": { - "type": "string" - }, - "format": { - "type": "string" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "multipleOf": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" - }, - "maximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" - }, - "exclusiveMaximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" - }, - "minimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" - }, - "exclusiveMinimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" - }, - "maxLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "pattern": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" - }, - "maxItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "uniqueItems": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" - }, - "maxProperties": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minProperties": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "required": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" - }, - "enum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" - }, - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "boolean" - } - ], - "default": {} - }, - "type": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/type" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - } - ], - "default": {} - }, - "allOf": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "default": {} - }, - "discriminator": { - "type": "string" - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "xml": { - "$ref": "#/definitions/xml" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "example": {} - }, - "additionalProperties": false - }, - "fileSchema": { - "type": "object", - "description": "A deterministic version of a JSON Schema object.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "required": [ - "type" - ], - "properties": { - "format": { - "type": "string" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "required": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" - }, - "type": { - "type": "string", - "enum": [ - "file" - ] - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "example": {} - }, - "additionalProperties": false - }, - "primitivesItems": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "security": { - "type": "array", - "items": { - "$ref": "#/definitions/securityRequirement" - }, - "uniqueItems": true - }, - "securityRequirement": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - }, - "xml": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "attribute": { - "type": "boolean", - "default": false - }, - "wrapped": { - "type": "boolean", - "default": false - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "tag": { - "type": "object", - "additionalProperties": false, - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "securityDefinitions": { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/definitions/basicAuthenticationSecurity" - }, - { - "$ref": "#/definitions/apiKeySecurity" - }, - { - "$ref": "#/definitions/oauth2ImplicitSecurity" - }, - { - "$ref": "#/definitions/oauth2PasswordSecurity" - }, - { - "$ref": "#/definitions/oauth2ApplicationSecurity" - }, - { - "$ref": "#/definitions/oauth2AccessCodeSecurity" - } - ] - } - }, - "basicAuthenticationSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "basic" - ] - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "apiKeySecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "name", - "in" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "apiKey" - ] - }, - "name": { - "type": "string" - }, - "in": { - "type": "string", - "enum": [ - "header", - "query" - ] - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2ImplicitSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "authorizationUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "implicit" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "authorizationUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2PasswordSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "password" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2ApplicationSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "application" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2AccessCodeSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "authorizationUrl", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "accessCode" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "authorizationUrl": { - "type": "string", - "format": "uri" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2Scopes": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "mediaTypeList": { - "type": "array", - "items": { - "$ref": "#/definitions/mimeType" - }, - "uniqueItems": true - }, - "parametersList": { - "type": "array", - "description": "The parameters needed to send a valid API call.", - "additionalItems": false, - "items": { - "oneOf": [ - { - "$ref": "#/definitions/parameter" - }, - { - "$ref": "#/definitions/jsonReference" - } - ] - }, - "uniqueItems": true - }, - "schemesList": { - "type": "array", - "description": "The transfer protocol of the API.", - "items": { - "type": "string", - "enum": [ - "http", - "https", - "ws", - "wss" - ] - }, - "uniqueItems": true - }, - "collectionFormat": { - "type": "string", - "enum": [ - "csv", - "ssv", - "tsv", - "pipes" - ], - "default": "csv" - }, - "collectionFormatWithMulti": { - "type": "string", - "enum": [ - "csv", - "ssv", - "tsv", - "pipes", - "multi" - ], - "default": "csv" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "multipleOf": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" - }, - "maximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" - }, - "exclusiveMaximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" - }, - "minimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" - }, - "exclusiveMinimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" - }, - "maxLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "pattern": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" - }, - "maxItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "uniqueItems": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" - }, - "enum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" - }, - "jsonReference": { - "type": "object", - "required": [ - "$ref" - ], - "additionalProperties": false, - "properties": { - "$ref": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/go-openapi/spec/security_scheme.go b/vendor/github.com/go-openapi/spec/security_scheme.go deleted file mode 100644 index 9d0bdae908..0000000000 --- a/vendor/github.com/go-openapi/spec/security_scheme.go +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -const ( - basic = "basic" - apiKey = "apiKey" - oauth2 = "oauth2" - implicit = "implicit" - password = "password" - application = "application" - accessCode = "accessCode" -) - -// BasicAuth creates a basic auth security scheme -func BasicAuth() *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: basic}} -} - -// APIKeyAuth creates an api key auth security scheme -func APIKeyAuth(fieldName, valueSource string) *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{Type: apiKey, Name: fieldName, In: valueSource}} -} - -// OAuth2Implicit creates an implicit flow oauth2 security scheme -func OAuth2Implicit(authorizationURL string) *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ - Type: oauth2, - Flow: implicit, - AuthorizationURL: authorizationURL, - }} -} - -// OAuth2Password creates a password flow oauth2 security scheme -func OAuth2Password(tokenURL string) *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ - Type: oauth2, - Flow: password, - TokenURL: tokenURL, - }} -} - -// OAuth2Application creates an application flow oauth2 security scheme -func OAuth2Application(tokenURL string) *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ - Type: oauth2, - Flow: application, - TokenURL: tokenURL, - }} -} - -// OAuth2AccessToken creates an access token flow oauth2 security scheme -func OAuth2AccessToken(authorizationURL, tokenURL string) *SecurityScheme { - return &SecurityScheme{SecuritySchemeProps: SecuritySchemeProps{ - Type: oauth2, - Flow: accessCode, - AuthorizationURL: authorizationURL, - TokenURL: tokenURL, - }} -} - -// SecuritySchemeProps describes a swagger security scheme in the securityDefinitions section -type SecuritySchemeProps struct { - Description string `json:"description,omitempty"` - Type string `json:"type"` - Name string `json:"name,omitempty"` // api key - In string `json:"in,omitempty"` // api key - Flow string `json:"flow,omitempty"` // oauth2 - AuthorizationURL string `json:"authorizationUrl"` // oauth2 - TokenURL string `json:"tokenUrl,omitempty"` // oauth2 - Scopes map[string]string `json:"scopes,omitempty"` // oauth2 -} - -// AddScope adds a scope to this security scheme -func (s *SecuritySchemeProps) AddScope(scope, description string) { - if s.Scopes == nil { - s.Scopes = make(map[string]string) - } - s.Scopes[scope] = description -} - -// SecurityScheme allows the definition of a security scheme that can be used by the operations. -// Supported schemes are basic authentication, an API key (either as a header or as a query parameter) -// and OAuth2's common flows (implicit, password, application and access code). -// -// For more information: http://goo.gl/8us55a#securitySchemeObject -type SecurityScheme struct { - VendorExtensible - SecuritySchemeProps -} - -// JSONLookup implements an interface to customize json pointer lookup -func (s SecurityScheme) JSONLookup(token string) (interface{}, error) { - if ex, ok := s.Extensions[token]; ok { - return &ex, nil - } - - r, _, err := jsonpointer.GetForToken(s.SecuritySchemeProps, token) - return r, err -} - -// MarshalJSON marshal this to JSON -func (s SecurityScheme) MarshalJSON() ([]byte, error) { - var ( - b1 []byte - err error - ) - - if s.Type == oauth2 && (s.Flow == "implicit" || s.Flow == "accessCode") { - // when oauth2 for implicit or accessCode flows, empty AuthorizationURL is added as empty string - b1, err = json.Marshal(s.SecuritySchemeProps) - } else { - // when not oauth2, empty AuthorizationURL should be omitted - b1, err = json.Marshal(struct { - Description string `json:"description,omitempty"` - Type string `json:"type"` - Name string `json:"name,omitempty"` // api key - In string `json:"in,omitempty"` // api key - Flow string `json:"flow,omitempty"` // oauth2 - AuthorizationURL string `json:"authorizationUrl,omitempty"` // oauth2 - TokenURL string `json:"tokenUrl,omitempty"` // oauth2 - Scopes map[string]string `json:"scopes,omitempty"` // oauth2 - }{ - Description: s.Description, - Type: s.Type, - Name: s.Name, - In: s.In, - Flow: s.Flow, - AuthorizationURL: s.AuthorizationURL, - TokenURL: s.TokenURL, - Scopes: s.Scopes, - }) - } - if err != nil { - return nil, err - } - - b2, err := json.Marshal(s.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} - -// UnmarshalJSON marshal this from JSON -func (s *SecurityScheme) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &s.SecuritySchemeProps); err != nil { - return err - } - return json.Unmarshal(data, &s.VendorExtensible) -} diff --git a/vendor/github.com/go-openapi/spec/spec.go b/vendor/github.com/go-openapi/spec/spec.go deleted file mode 100644 index 876aa12759..0000000000 --- a/vendor/github.com/go-openapi/spec/spec.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" -) - -//go:generate curl -L --progress -o ./schemas/v2/schema.json http://swagger.io/v2/schema.json -//go:generate curl -L --progress -o ./schemas/jsonschema-draft-04.json http://json-schema.org/draft-04/schema -//go:generate go-bindata -pkg=spec -prefix=./schemas -ignore=.*\.md ./schemas/... -//go:generate perl -pi -e s,Json,JSON,g bindata.go - -const ( - // SwaggerSchemaURL the url for the swagger 2.0 schema to validate specs - SwaggerSchemaURL = "http://swagger.io/v2/schema.json#" - // JSONSchemaURL the url for the json schema - JSONSchemaURL = "http://json-schema.org/draft-04/schema#" -) - -// MustLoadJSONSchemaDraft04 panics when Swagger20Schema returns an error -func MustLoadJSONSchemaDraft04() *Schema { - d, e := JSONSchemaDraft04() - if e != nil { - panic(e) - } - return d -} - -// JSONSchemaDraft04 loads the json schema document for json shema draft04 -func JSONSchemaDraft04() (*Schema, error) { - b, err := jsonschemaDraft04JSONBytes() - if err != nil { - return nil, err - } - - schema := new(Schema) - if err := json.Unmarshal(b, schema); err != nil { - return nil, err - } - return schema, nil -} - -// MustLoadSwagger20Schema panics when Swagger20Schema returns an error -func MustLoadSwagger20Schema() *Schema { - d, e := Swagger20Schema() - if e != nil { - panic(e) - } - return d -} - -// Swagger20Schema loads the swagger 2.0 schema from the embedded assets -func Swagger20Schema() (*Schema, error) { - - b, err := v2SchemaJSONBytes() - if err != nil { - return nil, err - } - - schema := new(Schema) - if err := json.Unmarshal(b, schema); err != nil { - return nil, err - } - return schema, nil -} diff --git a/vendor/github.com/go-openapi/spec/swagger.go b/vendor/github.com/go-openapi/spec/swagger.go deleted file mode 100644 index 1590fd1751..0000000000 --- a/vendor/github.com/go-openapi/spec/swagger.go +++ /dev/null @@ -1,448 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "bytes" - "encoding/gob" - "encoding/json" - "fmt" - "strconv" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// Swagger this is the root document object for the API specification. -// It combines what previously was the Resource Listing and API Declaration (version 1.2 and earlier) -// together into one document. -// -// For more information: http://goo.gl/8us55a#swagger-object- -type Swagger struct { - VendorExtensible - SwaggerProps -} - -// JSONLookup look up a value by the json property name -func (s Swagger) JSONLookup(token string) (interface{}, error) { - if ex, ok := s.Extensions[token]; ok { - return &ex, nil - } - r, _, err := jsonpointer.GetForToken(s.SwaggerProps, token) - return r, err -} - -// MarshalJSON marshals this swagger structure to json -func (s Swagger) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(s.SwaggerProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(s.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} - -// UnmarshalJSON unmarshals a swagger spec from json -func (s *Swagger) UnmarshalJSON(data []byte) error { - var sw Swagger - if err := json.Unmarshal(data, &sw.SwaggerProps); err != nil { - return err - } - if err := json.Unmarshal(data, &sw.VendorExtensible); err != nil { - return err - } - *s = sw - return nil -} - -// GobEncode provides a safe gob encoder for Swagger, including extensions -func (s Swagger) GobEncode() ([]byte, error) { - var b bytes.Buffer - raw := struct { - Props SwaggerProps - Ext VendorExtensible - }{ - Props: s.SwaggerProps, - Ext: s.VendorExtensible, - } - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err -} - -// GobDecode provides a safe gob decoder for Swagger, including extensions -func (s *Swagger) GobDecode(b []byte) error { - var raw struct { - Props SwaggerProps - Ext VendorExtensible - } - buf := bytes.NewBuffer(b) - err := gob.NewDecoder(buf).Decode(&raw) - if err != nil { - return err - } - s.SwaggerProps = raw.Props - s.VendorExtensible = raw.Ext - return nil -} - -// SwaggerProps captures the top-level properties of an Api specification -// -// NOTE: validation rules -// - the scheme, when present must be from [http, https, ws, wss] -// - BasePath must start with a leading "/" -// - Paths is required -type SwaggerProps struct { - ID string `json:"id,omitempty"` - Consumes []string `json:"consumes,omitempty"` - Produces []string `json:"produces,omitempty"` - Schemes []string `json:"schemes,omitempty"` - Swagger string `json:"swagger,omitempty"` - Info *Info `json:"info,omitempty"` - Host string `json:"host,omitempty"` - BasePath string `json:"basePath,omitempty"` - Paths *Paths `json:"paths"` - Definitions Definitions `json:"definitions,omitempty"` - Parameters map[string]Parameter `json:"parameters,omitempty"` - Responses map[string]Response `json:"responses,omitempty"` - SecurityDefinitions SecurityDefinitions `json:"securityDefinitions,omitempty"` - Security []map[string][]string `json:"security,omitempty"` - Tags []Tag `json:"tags,omitempty"` - ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` -} - -type swaggerPropsAlias SwaggerProps - -type gobSwaggerPropsAlias struct { - Security []map[string]struct { - List []string - Pad bool - } - Alias *swaggerPropsAlias - SecurityIsEmpty bool -} - -// GobEncode provides a safe gob encoder for SwaggerProps, including empty security requirements -func (o SwaggerProps) GobEncode() ([]byte, error) { - raw := gobSwaggerPropsAlias{ - Alias: (*swaggerPropsAlias)(&o), - } - - var b bytes.Buffer - if o.Security == nil { - // nil security requirement - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err - } - - if len(o.Security) == 0 { - // empty, but non-nil security requirement - raw.SecurityIsEmpty = true - raw.Alias.Security = nil - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err - } - - raw.Security = make([]map[string]struct { - List []string - Pad bool - }, 0, len(o.Security)) - for _, req := range o.Security { - v := make(map[string]struct { - List []string - Pad bool - }, len(req)) - for k, val := range req { - v[k] = struct { - List []string - Pad bool - }{ - List: val, - } - } - raw.Security = append(raw.Security, v) - } - - err := gob.NewEncoder(&b).Encode(raw) - return b.Bytes(), err -} - -// GobDecode provides a safe gob decoder for SwaggerProps, including empty security requirements -func (o *SwaggerProps) GobDecode(b []byte) error { - var raw gobSwaggerPropsAlias - - buf := bytes.NewBuffer(b) - err := gob.NewDecoder(buf).Decode(&raw) - if err != nil { - return err - } - if raw.Alias == nil { - return nil - } - - switch { - case raw.SecurityIsEmpty: - // empty, but non-nil security requirement - raw.Alias.Security = []map[string][]string{} - case len(raw.Alias.Security) == 0: - // nil security requirement - raw.Alias.Security = nil - default: - raw.Alias.Security = make([]map[string][]string, 0, len(raw.Security)) - for _, req := range raw.Security { - v := make(map[string][]string, len(req)) - for k, val := range req { - v[k] = make([]string, 0, len(val.List)) - v[k] = append(v[k], val.List...) - } - raw.Alias.Security = append(raw.Alias.Security, v) - } - } - - *o = *(*SwaggerProps)(raw.Alias) - return nil -} - -// Dependencies represent a dependencies property -type Dependencies map[string]SchemaOrStringArray - -// SchemaOrBool represents a schema or boolean value, is biased towards true for the boolean property -type SchemaOrBool struct { - Allows bool - Schema *Schema -} - -// JSONLookup implements an interface to customize json pointer lookup -func (s SchemaOrBool) JSONLookup(token string) (interface{}, error) { - if token == "allows" { - return s.Allows, nil - } - r, _, err := jsonpointer.GetForToken(s.Schema, token) - return r, err -} - -var jsTrue = []byte("true") -var jsFalse = []byte("false") - -// MarshalJSON convert this object to JSON -func (s SchemaOrBool) MarshalJSON() ([]byte, error) { - if s.Schema != nil { - return json.Marshal(s.Schema) - } - - if s.Schema == nil && !s.Allows { - return jsFalse, nil - } - return jsTrue, nil -} - -// UnmarshalJSON converts this bool or schema object from a JSON structure -func (s *SchemaOrBool) UnmarshalJSON(data []byte) error { - var nw SchemaOrBool - if len(data) > 0 { - if data[0] == '{' { - var sch Schema - if err := json.Unmarshal(data, &sch); err != nil { - return err - } - nw.Schema = &sch - } - nw.Allows = !bytes.Equal(data, []byte("false")) - } - *s = nw - return nil -} - -// SchemaOrStringArray represents a schema or a string array -type SchemaOrStringArray struct { - Schema *Schema - Property []string -} - -// JSONLookup implements an interface to customize json pointer lookup -func (s SchemaOrStringArray) JSONLookup(token string) (interface{}, error) { - r, _, err := jsonpointer.GetForToken(s.Schema, token) - return r, err -} - -// MarshalJSON converts this schema object or array into JSON structure -func (s SchemaOrStringArray) MarshalJSON() ([]byte, error) { - if len(s.Property) > 0 { - return json.Marshal(s.Property) - } - if s.Schema != nil { - return json.Marshal(s.Schema) - } - return []byte("null"), nil -} - -// UnmarshalJSON converts this schema object or array from a JSON structure -func (s *SchemaOrStringArray) UnmarshalJSON(data []byte) error { - var first byte - if len(data) > 1 { - first = data[0] - } - var nw SchemaOrStringArray - if first == '{' { - var sch Schema - if err := json.Unmarshal(data, &sch); err != nil { - return err - } - nw.Schema = &sch - } - if first == '[' { - if err := json.Unmarshal(data, &nw.Property); err != nil { - return err - } - } - *s = nw - return nil -} - -// Definitions contains the models explicitly defined in this spec -// An object to hold data types that can be consumed and produced by operations. -// These data types can be primitives, arrays or models. -// -// For more information: http://goo.gl/8us55a#definitionsObject -type Definitions map[string]Schema - -// SecurityDefinitions a declaration of the security schemes available to be used in the specification. -// This does not enforce the security schemes on the operations and only serves to provide -// the relevant details for each scheme. -// -// For more information: http://goo.gl/8us55a#securityDefinitionsObject -type SecurityDefinitions map[string]*SecurityScheme - -// StringOrArray represents a value that can either be a string -// or an array of strings. Mainly here for serialization purposes -type StringOrArray []string - -// Contains returns true when the value is contained in the slice -func (s StringOrArray) Contains(value string) bool { - for _, str := range s { - if str == value { - return true - } - } - return false -} - -// JSONLookup implements an interface to customize json pointer lookup -func (s SchemaOrArray) JSONLookup(token string) (interface{}, error) { - if _, err := strconv.Atoi(token); err == nil { - r, _, err := jsonpointer.GetForToken(s.Schemas, token) - return r, err - } - r, _, err := jsonpointer.GetForToken(s.Schema, token) - return r, err -} - -// UnmarshalJSON unmarshals this string or array object from a JSON array or JSON string -func (s *StringOrArray) UnmarshalJSON(data []byte) error { - var first byte - if len(data) > 1 { - first = data[0] - } - - if first == '[' { - var parsed []string - if err := json.Unmarshal(data, &parsed); err != nil { - return err - } - *s = StringOrArray(parsed) - return nil - } - - var single interface{} - if err := json.Unmarshal(data, &single); err != nil { - return err - } - if single == nil { - return nil - } - switch v := single.(type) { - case string: - *s = StringOrArray([]string{v}) - return nil - default: - return fmt.Errorf("only string or array is allowed, not %T", single) - } -} - -// MarshalJSON converts this string or array to a JSON array or JSON string -func (s StringOrArray) MarshalJSON() ([]byte, error) { - if len(s) == 1 { - return json.Marshal([]string(s)[0]) - } - return json.Marshal([]string(s)) -} - -// SchemaOrArray represents a value that can either be a Schema -// or an array of Schema. Mainly here for serialization purposes -type SchemaOrArray struct { - Schema *Schema - Schemas []Schema -} - -// Len returns the number of schemas in this property -func (s SchemaOrArray) Len() int { - if s.Schema != nil { - return 1 - } - return len(s.Schemas) -} - -// ContainsType returns true when one of the schemas is of the specified type -func (s *SchemaOrArray) ContainsType(name string) bool { - if s.Schema != nil { - return s.Schema.Type != nil && s.Schema.Type.Contains(name) - } - return false -} - -// MarshalJSON converts this schema object or array into JSON structure -func (s SchemaOrArray) MarshalJSON() ([]byte, error) { - if len(s.Schemas) > 0 { - return json.Marshal(s.Schemas) - } - return json.Marshal(s.Schema) -} - -// UnmarshalJSON converts this schema object or array from a JSON structure -func (s *SchemaOrArray) UnmarshalJSON(data []byte) error { - var nw SchemaOrArray - var first byte - if len(data) > 1 { - first = data[0] - } - if first == '{' { - var sch Schema - if err := json.Unmarshal(data, &sch); err != nil { - return err - } - nw.Schema = &sch - } - if first == '[' { - if err := json.Unmarshal(data, &nw.Schemas); err != nil { - return err - } - } - *s = nw - return nil -} - -// vim:set ft=go noet sts=2 sw=2 ts=2: diff --git a/vendor/github.com/go-openapi/spec/tag.go b/vendor/github.com/go-openapi/spec/tag.go deleted file mode 100644 index faa3d3de1e..0000000000 --- a/vendor/github.com/go-openapi/spec/tag.go +++ /dev/null @@ -1,75 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -import ( - "encoding/json" - - "github.com/go-openapi/jsonpointer" - "github.com/go-openapi/swag" -) - -// TagProps describe a tag entry in the top level tags section of a swagger spec -type TagProps struct { - Description string `json:"description,omitempty"` - Name string `json:"name,omitempty"` - ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"` -} - -// NewTag creates a new tag -func NewTag(name, description string, externalDocs *ExternalDocumentation) Tag { - return Tag{TagProps: TagProps{Description: description, Name: name, ExternalDocs: externalDocs}} -} - -// Tag allows adding meta data to a single tag that is used by the -// [Operation Object](http://goo.gl/8us55a#operationObject). -// It is not mandatory to have a Tag Object per tag used there. -// -// For more information: http://goo.gl/8us55a#tagObject -type Tag struct { - VendorExtensible - TagProps -} - -// JSONLookup implements an interface to customize json pointer lookup -func (t Tag) JSONLookup(token string) (interface{}, error) { - if ex, ok := t.Extensions[token]; ok { - return &ex, nil - } - - r, _, err := jsonpointer.GetForToken(t.TagProps, token) - return r, err -} - -// MarshalJSON marshal this to JSON -func (t Tag) MarshalJSON() ([]byte, error) { - b1, err := json.Marshal(t.TagProps) - if err != nil { - return nil, err - } - b2, err := json.Marshal(t.VendorExtensible) - if err != nil { - return nil, err - } - return swag.ConcatJSON(b1, b2), nil -} - -// UnmarshalJSON marshal this from JSON -func (t *Tag) UnmarshalJSON(data []byte) error { - if err := json.Unmarshal(data, &t.TagProps); err != nil { - return err - } - return json.Unmarshal(data, &t.VendorExtensible) -} diff --git a/vendor/github.com/go-openapi/spec/url_go19.go b/vendor/github.com/go-openapi/spec/url_go19.go deleted file mode 100644 index 5bdfe40bcc..0000000000 --- a/vendor/github.com/go-openapi/spec/url_go19.go +++ /dev/null @@ -1,11 +0,0 @@ -package spec - -import "net/url" - -func parseURL(s string) (*url.URL, error) { - u, err := url.Parse(s) - if err == nil { - u.OmitHost = false - } - return u, err -} diff --git a/vendor/github.com/go-openapi/spec/validations.go b/vendor/github.com/go-openapi/spec/validations.go deleted file mode 100644 index 6360a8ea77..0000000000 --- a/vendor/github.com/go-openapi/spec/validations.go +++ /dev/null @@ -1,215 +0,0 @@ -package spec - -// CommonValidations describe common JSON-schema validations -type CommonValidations struct { - Maximum *float64 `json:"maximum,omitempty"` - ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"` - Minimum *float64 `json:"minimum,omitempty"` - ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"` - MaxLength *int64 `json:"maxLength,omitempty"` - MinLength *int64 `json:"minLength,omitempty"` - Pattern string `json:"pattern,omitempty"` - MaxItems *int64 `json:"maxItems,omitempty"` - MinItems *int64 `json:"minItems,omitempty"` - UniqueItems bool `json:"uniqueItems,omitempty"` - MultipleOf *float64 `json:"multipleOf,omitempty"` - Enum []interface{} `json:"enum,omitempty"` -} - -// SetValidations defines all validations for a simple schema. -// -// NOTE: the input is the larger set of validations available for schemas. -// For simple schemas, MinProperties and MaxProperties are ignored. -func (v *CommonValidations) SetValidations(val SchemaValidations) { - v.Maximum = val.Maximum - v.ExclusiveMaximum = val.ExclusiveMaximum - v.Minimum = val.Minimum - v.ExclusiveMinimum = val.ExclusiveMinimum - v.MaxLength = val.MaxLength - v.MinLength = val.MinLength - v.Pattern = val.Pattern - v.MaxItems = val.MaxItems - v.MinItems = val.MinItems - v.UniqueItems = val.UniqueItems - v.MultipleOf = val.MultipleOf - v.Enum = val.Enum -} - -type clearedValidation struct { - Validation string - Value interface{} -} - -type clearedValidations []clearedValidation - -func (c clearedValidations) apply(cbs []func(string, interface{})) { - for _, cb := range cbs { - for _, cleared := range c { - cb(cleared.Validation, cleared.Value) - } - } -} - -// ClearNumberValidations clears all number validations. -// -// Some callbacks may be set by the caller to capture changed values. -func (v *CommonValidations) ClearNumberValidations(cbs ...func(string, interface{})) { - done := make(clearedValidations, 0, 5) - defer func() { - done.apply(cbs) - }() - - if v.Minimum != nil { - done = append(done, clearedValidation{Validation: "minimum", Value: v.Minimum}) - v.Minimum = nil - } - if v.Maximum != nil { - done = append(done, clearedValidation{Validation: "maximum", Value: v.Maximum}) - v.Maximum = nil - } - if v.ExclusiveMaximum { - done = append(done, clearedValidation{Validation: "exclusiveMaximum", Value: v.ExclusiveMaximum}) - v.ExclusiveMaximum = false - } - if v.ExclusiveMinimum { - done = append(done, clearedValidation{Validation: "exclusiveMinimum", Value: v.ExclusiveMinimum}) - v.ExclusiveMinimum = false - } - if v.MultipleOf != nil { - done = append(done, clearedValidation{Validation: "multipleOf", Value: v.MultipleOf}) - v.MultipleOf = nil - } -} - -// ClearStringValidations clears all string validations. -// -// Some callbacks may be set by the caller to capture changed values. -func (v *CommonValidations) ClearStringValidations(cbs ...func(string, interface{})) { - done := make(clearedValidations, 0, 3) - defer func() { - done.apply(cbs) - }() - - if v.Pattern != "" { - done = append(done, clearedValidation{Validation: "pattern", Value: v.Pattern}) - v.Pattern = "" - } - if v.MinLength != nil { - done = append(done, clearedValidation{Validation: "minLength", Value: v.MinLength}) - v.MinLength = nil - } - if v.MaxLength != nil { - done = append(done, clearedValidation{Validation: "maxLength", Value: v.MaxLength}) - v.MaxLength = nil - } -} - -// ClearArrayValidations clears all array validations. -// -// Some callbacks may be set by the caller to capture changed values. -func (v *CommonValidations) ClearArrayValidations(cbs ...func(string, interface{})) { - done := make(clearedValidations, 0, 3) - defer func() { - done.apply(cbs) - }() - - if v.MaxItems != nil { - done = append(done, clearedValidation{Validation: "maxItems", Value: v.MaxItems}) - v.MaxItems = nil - } - if v.MinItems != nil { - done = append(done, clearedValidation{Validation: "minItems", Value: v.MinItems}) - v.MinItems = nil - } - if v.UniqueItems { - done = append(done, clearedValidation{Validation: "uniqueItems", Value: v.UniqueItems}) - v.UniqueItems = false - } -} - -// Validations returns a clone of the validations for a simple schema. -// -// NOTE: in the context of simple schema objects, MinProperties, MaxProperties -// and PatternProperties remain unset. -func (v CommonValidations) Validations() SchemaValidations { - return SchemaValidations{ - CommonValidations: v, - } -} - -// HasNumberValidations indicates if the validations are for numbers or integers -func (v CommonValidations) HasNumberValidations() bool { - return v.Maximum != nil || v.Minimum != nil || v.MultipleOf != nil -} - -// HasStringValidations indicates if the validations are for strings -func (v CommonValidations) HasStringValidations() bool { - return v.MaxLength != nil || v.MinLength != nil || v.Pattern != "" -} - -// HasArrayValidations indicates if the validations are for arrays -func (v CommonValidations) HasArrayValidations() bool { - return v.MaxItems != nil || v.MinItems != nil || v.UniqueItems -} - -// HasEnum indicates if the validation includes some enum constraint -func (v CommonValidations) HasEnum() bool { - return len(v.Enum) > 0 -} - -// SchemaValidations describes the validation properties of a schema -// -// NOTE: at this moment, this is not embedded in SchemaProps because this would induce a breaking change -// in the exported members: all initializers using litterals would fail. -type SchemaValidations struct { - CommonValidations - - PatternProperties SchemaProperties `json:"patternProperties,omitempty"` - MaxProperties *int64 `json:"maxProperties,omitempty"` - MinProperties *int64 `json:"minProperties,omitempty"` -} - -// HasObjectValidations indicates if the validations are for objects -func (v SchemaValidations) HasObjectValidations() bool { - return v.MaxProperties != nil || v.MinProperties != nil || v.PatternProperties != nil -} - -// SetValidations for schema validations -func (v *SchemaValidations) SetValidations(val SchemaValidations) { - v.CommonValidations.SetValidations(val) - v.PatternProperties = val.PatternProperties - v.MaxProperties = val.MaxProperties - v.MinProperties = val.MinProperties -} - -// Validations for a schema -func (v SchemaValidations) Validations() SchemaValidations { - val := v.CommonValidations.Validations() - val.PatternProperties = v.PatternProperties - val.MinProperties = v.MinProperties - val.MaxProperties = v.MaxProperties - return val -} - -// ClearObjectValidations returns a clone of the validations with all object validations cleared. -// -// Some callbacks may be set by the caller to capture changed values. -func (v *SchemaValidations) ClearObjectValidations(cbs ...func(string, interface{})) { - done := make(clearedValidations, 0, 3) - defer func() { - done.apply(cbs) - }() - - if v.MaxProperties != nil { - done = append(done, clearedValidation{Validation: "maxProperties", Value: v.MaxProperties}) - v.MaxProperties = nil - } - if v.MinProperties != nil { - done = append(done, clearedValidation{Validation: "minProperties", Value: v.MinProperties}) - v.MinProperties = nil - } - if v.PatternProperties != nil { - done = append(done, clearedValidation{Validation: "patternProperties", Value: v.PatternProperties}) - v.PatternProperties = nil - } -} diff --git a/vendor/github.com/go-openapi/spec/xml_object.go b/vendor/github.com/go-openapi/spec/xml_object.go deleted file mode 100644 index 945a46703d..0000000000 --- a/vendor/github.com/go-openapi/spec/xml_object.go +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package spec - -// XMLObject a metadata object that allows for more fine-tuned XML model definitions. -// -// For more information: http://goo.gl/8us55a#xmlObject -type XMLObject struct { - Name string `json:"name,omitempty"` - Namespace string `json:"namespace,omitempty"` - Prefix string `json:"prefix,omitempty"` - Attribute bool `json:"attribute,omitempty"` - Wrapped bool `json:"wrapped,omitempty"` -} - -// WithName sets the xml name for the object -func (x *XMLObject) WithName(name string) *XMLObject { - x.Name = name - return x -} - -// WithNamespace sets the xml namespace for the object -func (x *XMLObject) WithNamespace(namespace string) *XMLObject { - x.Namespace = namespace - return x -} - -// WithPrefix sets the xml prefix for the object -func (x *XMLObject) WithPrefix(prefix string) *XMLObject { - x.Prefix = prefix - return x -} - -// AsAttribute flags this object as xml attribute -func (x *XMLObject) AsAttribute() *XMLObject { - x.Attribute = true - return x -} - -// AsElement flags this object as an xml node -func (x *XMLObject) AsElement() *XMLObject { - x.Attribute = false - return x -} - -// AsWrapped flags this object as wrapped, this is mostly useful for array types -func (x *XMLObject) AsWrapped() *XMLObject { - x.Wrapped = true - return x -} - -// AsUnwrapped flags this object as an xml node -func (x *XMLObject) AsUnwrapped() *XMLObject { - x.Wrapped = false - return x -} diff --git a/vendor/github.com/go-openapi/strfmt/.editorconfig b/vendor/github.com/go-openapi/strfmt/.editorconfig deleted file mode 100644 index 3152da69a5..0000000000 --- a/vendor/github.com/go-openapi/strfmt/.editorconfig +++ /dev/null @@ -1,26 +0,0 @@ -# top-most EditorConfig file -root = true - -# Unix-style newlines with a newline ending every file -[*] -end_of_line = lf -insert_final_newline = true -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true - -# Set default charset -[*.{js,py,go,scala,rb,java,html,css,less,sass,md}] -charset = utf-8 - -# Tab indentation (no size specified) -[*.go] -indent_style = tab - -[*.md] -trim_trailing_whitespace = false - -# Matches the exact files either package.json or .travis.yml -[{package.json,.travis.yml}] -indent_style = space -indent_size = 2 diff --git a/vendor/github.com/go-openapi/strfmt/.gitattributes b/vendor/github.com/go-openapi/strfmt/.gitattributes deleted file mode 100644 index d020be8ea4..0000000000 --- a/vendor/github.com/go-openapi/strfmt/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -*.go text eol=lf - diff --git a/vendor/github.com/go-openapi/strfmt/.gitignore b/vendor/github.com/go-openapi/strfmt/.gitignore deleted file mode 100644 index dd91ed6a04..0000000000 --- a/vendor/github.com/go-openapi/strfmt/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -secrets.yml -coverage.out diff --git a/vendor/github.com/go-openapi/strfmt/.golangci.yml b/vendor/github.com/go-openapi/strfmt/.golangci.yml deleted file mode 100644 index 22f8d21cca..0000000000 --- a/vendor/github.com/go-openapi/strfmt/.golangci.yml +++ /dev/null @@ -1,61 +0,0 @@ -linters-settings: - govet: - check-shadowing: true - golint: - min-confidence: 0 - gocyclo: - min-complexity: 45 - maligned: - suggest-new: true - dupl: - threshold: 200 - goconst: - min-len: 2 - min-occurrences: 3 - -linters: - enable-all: true - disable: - - maligned - - unparam - - lll - - gochecknoinits - - gochecknoglobals - - funlen - - godox - - gocognit - - whitespace - - wsl - - wrapcheck - - testpackage - - nlreturn - - gomnd - - exhaustivestruct - - goerr113 - - errorlint - - nestif - - godot - - gofumpt - - paralleltest - - tparallel - - thelper - - ifshort - - exhaustruct - - varnamelen - - gci - - depguard - - errchkjson - - inamedparam - - nonamedreturns - - musttag - - ireturn - - forcetypeassert - - cyclop - # deprecated linters - - deadcode - - interfacer - - scopelint - - varcheck - - structcheck - - golint - - nosnakecase diff --git a/vendor/github.com/go-openapi/strfmt/CODE_OF_CONDUCT.md b/vendor/github.com/go-openapi/strfmt/CODE_OF_CONDUCT.md deleted file mode 100644 index 9322b065e3..0000000000 --- a/vendor/github.com/go-openapi/strfmt/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,74 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, gender identity and expression, level of experience, -nationality, personal appearance, race, religion, or sexual identity and -orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery and unwelcome sexual attention or -advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at ivan+abuse@flanders.co.nz. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at [http://contributor-covenant.org/version/1/4][version] - -[homepage]: http://contributor-covenant.org -[version]: http://contributor-covenant.org/version/1/4/ diff --git a/vendor/github.com/go-openapi/strfmt/LICENSE b/vendor/github.com/go-openapi/strfmt/LICENSE deleted file mode 100644 index d645695673..0000000000 --- a/vendor/github.com/go-openapi/strfmt/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/vendor/github.com/go-openapi/strfmt/README.md b/vendor/github.com/go-openapi/strfmt/README.md deleted file mode 100644 index f6b39c6c56..0000000000 --- a/vendor/github.com/go-openapi/strfmt/README.md +++ /dev/null @@ -1,87 +0,0 @@ -# Strfmt [![Build Status](https://github.com/go-openapi/strfmt/actions/workflows/go-test.yml/badge.svg)](https://github.com/go-openapi/strfmt/actions?query=workflow%3A"go+test") [![codecov](https://codecov.io/gh/go-openapi/strfmt/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/strfmt) -[![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io) -[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/strfmt/master/LICENSE) -[![GoDoc](https://godoc.org/github.com/go-openapi/strfmt?status.svg)](http://godoc.org/github.com/go-openapi/strfmt) -[![Go Report Card](https://goreportcard.com/badge/github.com/go-openapi/strfmt)](https://goreportcard.com/report/github.com/go-openapi/strfmt) - -This package exposes a registry of data types to support string formats in the go-openapi toolkit. - -strfmt represents a well known string format such as credit card or email. The go toolkit for OpenAPI specifications knows how to deal with those. - -## Supported data formats -go-openapi/strfmt follows the swagger 2.0 specification with the following formats -defined [here](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types). - -It also provides convenient extensions to go-openapi users. - -- [x] JSON-schema draft 4 formats - - date-time - - email - - hostname - - ipv4 - - ipv6 - - uri -- [x] swagger 2.0 format extensions - - binary - - byte (e.g. base64 encoded string) - - date (e.g. "1970-01-01") - - password -- [x] go-openapi custom format extensions - - bsonobjectid (BSON objectID) - - creditcard - - duration (e.g. "3 weeks", "1ms") - - hexcolor (e.g. "#FFFFFF") - - isbn, isbn10, isbn13 - - mac (e.g "01:02:03:04:05:06") - - rgbcolor (e.g. "rgb(100,100,100)") - - ssn - - uuid, uuid3, uuid4, uuid5 - - cidr (e.g. "192.0.2.1/24", "2001:db8:a0b:12f0::1/32") - - ulid (e.g. "00000PP9HGSBSSDZ1JTEXBJ0PW", [spec](https://github.com/ulid/spec)) - -> NOTE: as the name stands for, this package is intended to support string formatting only. -> It does not provide validation for numerical values with swagger format extension for JSON types "number" or -> "integer" (e.g. float, double, int32...). - -## Type conversion - -All types defined here are stringers and may be converted to strings with `.String()`. -Note that most types defined by this package may be converted directly to string like `string(Email{})`. - -`Date` and `DateTime` may be converted directly to `time.Time` like `time.Time(Time{})`. -Similarly, you can convert `Duration` to `time.Duration` as in `time.Duration(Duration{})` - -## Using pointers - -The `conv` subpackage provides helpers to convert the types to and from pointers, just like `go-openapi/swag` does -with primitive types. - -## Format types -Types defined in strfmt expose marshaling and validation capabilities. - -List of defined types: -- Base64 -- CreditCard -- Date -- DateTime -- Duration -- Email -- HexColor -- Hostname -- IPv4 -- IPv6 -- CIDR -- ISBN -- ISBN10 -- ISBN13 -- MAC -- ObjectId -- Password -- RGBColor -- SSN -- URI -- UUID -- UUID3 -- UUID4 -- UUID5 -- [ULID](https://github.com/ulid/spec) diff --git a/vendor/github.com/go-openapi/strfmt/bson.go b/vendor/github.com/go-openapi/strfmt/bson.go deleted file mode 100644 index cfa9a526fe..0000000000 --- a/vendor/github.com/go-openapi/strfmt/bson.go +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package strfmt - -import ( - "database/sql/driver" - "fmt" - - "go.mongodb.org/mongo-driver/bson" - - "go.mongodb.org/mongo-driver/bson/bsontype" - bsonprim "go.mongodb.org/mongo-driver/bson/primitive" -) - -func init() { - var id ObjectId - // register this format in the default registry - Default.Add("bsonobjectid", &id, IsBSONObjectID) -} - -// IsBSONObjectID returns true when the string is a valid BSON.ObjectId -func IsBSONObjectID(str string) bool { - _, err := bsonprim.ObjectIDFromHex(str) - return err == nil -} - -// ObjectId represents a BSON object ID (alias to go.mongodb.org/mongo-driver/bson/primitive.ObjectID) -// -// swagger:strfmt bsonobjectid -type ObjectId bsonprim.ObjectID //nolint:revive,stylecheck - -// NewObjectId creates a ObjectId from a Hex String -func NewObjectId(hex string) ObjectId { //nolint:revive,stylecheck - oid, err := bsonprim.ObjectIDFromHex(hex) - if err != nil { - panic(err) - } - return ObjectId(oid) -} - -// MarshalText turns this instance into text -func (id ObjectId) MarshalText() ([]byte, error) { - oid := bsonprim.ObjectID(id) - if oid == bsonprim.NilObjectID { - return nil, nil - } - return []byte(oid.Hex()), nil -} - -// UnmarshalText hydrates this instance from text -func (id *ObjectId) UnmarshalText(data []byte) error { // validation is performed later on - if len(data) == 0 { - *id = ObjectId(bsonprim.NilObjectID) - return nil - } - oidstr := string(data) - oid, err := bsonprim.ObjectIDFromHex(oidstr) - if err != nil { - return err - } - *id = ObjectId(oid) - return nil -} - -// Scan read a value from a database driver -func (id *ObjectId) Scan(raw interface{}) error { - var data []byte - switch v := raw.(type) { - case []byte: - data = v - case string: - data = []byte(v) - default: - return fmt.Errorf("cannot sql.Scan() strfmt.URI from: %#v", v) - } - - return id.UnmarshalText(data) -} - -// Value converts a value to a database driver value -func (id ObjectId) Value() (driver.Value, error) { - return driver.Value(bsonprim.ObjectID(id).Hex()), nil -} - -func (id ObjectId) String() string { - return bsonprim.ObjectID(id).Hex() -} - -// MarshalJSON returns the ObjectId as JSON -func (id ObjectId) MarshalJSON() ([]byte, error) { - return bsonprim.ObjectID(id).MarshalJSON() -} - -// UnmarshalJSON sets the ObjectId from JSON -func (id *ObjectId) UnmarshalJSON(data []byte) error { - var obj bsonprim.ObjectID - if err := obj.UnmarshalJSON(data); err != nil { - return err - } - *id = ObjectId(obj) - return nil -} - -// MarshalBSON renders the object id as a BSON document -func (id ObjectId) MarshalBSON() ([]byte, error) { - return bson.Marshal(bson.M{"data": bsonprim.ObjectID(id)}) -} - -// UnmarshalBSON reads the objectId from a BSON document -func (id *ObjectId) UnmarshalBSON(data []byte) error { - var obj struct { - Data bsonprim.ObjectID - } - if err := bson.Unmarshal(data, &obj); err != nil { - return err - } - *id = ObjectId(obj.Data) - return nil -} - -// MarshalBSONValue is an interface implemented by types that can marshal themselves -// into a BSON document represented as bytes. The bytes returned must be a valid -// BSON document if the error is nil. -func (id ObjectId) MarshalBSONValue() (bsontype.Type, []byte, error) { - oid := bsonprim.ObjectID(id) - return bson.TypeObjectID, oid[:], nil -} - -// UnmarshalBSONValue is an interface implemented by types that can unmarshal a -// BSON value representation of themselves. The BSON bytes and type can be -// assumed to be valid. UnmarshalBSONValue must copy the BSON value bytes if it -// wishes to retain the data after returning. -func (id *ObjectId) UnmarshalBSONValue(_ bsontype.Type, data []byte) error { - var oid bsonprim.ObjectID - copy(oid[:], data) - *id = ObjectId(oid) - return nil -} - -// DeepCopyInto copies the receiver and writes its value into out. -func (id *ObjectId) DeepCopyInto(out *ObjectId) { - *out = *id -} - -// DeepCopy copies the receiver into a new ObjectId. -func (id *ObjectId) DeepCopy() *ObjectId { - if id == nil { - return nil - } - out := new(ObjectId) - id.DeepCopyInto(out) - return out -} diff --git a/vendor/github.com/go-openapi/strfmt/date.go b/vendor/github.com/go-openapi/strfmt/date.go deleted file mode 100644 index 3c93381c7c..0000000000 --- a/vendor/github.com/go-openapi/strfmt/date.go +++ /dev/null @@ -1,187 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package strfmt - -import ( - "database/sql/driver" - "encoding/json" - "errors" - "fmt" - "time" - - "go.mongodb.org/mongo-driver/bson" -) - -func init() { - d := Date{} - // register this format in the default registry - Default.Add("date", &d, IsDate) -} - -// IsDate returns true when the string is a valid date -func IsDate(str string) bool { - _, err := time.Parse(RFC3339FullDate, str) - return err == nil -} - -const ( - // RFC3339FullDate represents a full-date as specified by RFC3339 - // See: http://goo.gl/xXOvVd - RFC3339FullDate = "2006-01-02" -) - -// Date represents a date from the API -// -// swagger:strfmt date -type Date time.Time - -// String converts this date into a string -func (d Date) String() string { - return time.Time(d).Format(RFC3339FullDate) -} - -// UnmarshalText parses a text representation into a date type -func (d *Date) UnmarshalText(text []byte) error { - if len(text) == 0 { - return nil - } - dd, err := time.ParseInLocation(RFC3339FullDate, string(text), DefaultTimeLocation) - if err != nil { - return err - } - *d = Date(dd) - return nil -} - -// MarshalText serializes this date type to string -func (d Date) MarshalText() ([]byte, error) { - return []byte(d.String()), nil -} - -// Scan scans a Date value from database driver type. -func (d *Date) Scan(raw interface{}) error { - switch v := raw.(type) { - case []byte: - return d.UnmarshalText(v) - case string: - return d.UnmarshalText([]byte(v)) - case time.Time: - *d = Date(v) - return nil - case nil: - *d = Date{} - return nil - default: - return fmt.Errorf("cannot sql.Scan() strfmt.Date from: %#v", v) - } -} - -// Value converts Date to a primitive value ready to written to a database. -func (d Date) Value() (driver.Value, error) { - return driver.Value(d.String()), nil -} - -// MarshalJSON returns the Date as JSON -func (d Date) MarshalJSON() ([]byte, error) { - return json.Marshal(time.Time(d).Format(RFC3339FullDate)) -} - -// UnmarshalJSON sets the Date from JSON -func (d *Date) UnmarshalJSON(data []byte) error { - if string(data) == jsonNull { - return nil - } - var strdate string - if err := json.Unmarshal(data, &strdate); err != nil { - return err - } - tt, err := time.ParseInLocation(RFC3339FullDate, strdate, DefaultTimeLocation) - if err != nil { - return err - } - *d = Date(tt) - return nil -} - -func (d Date) MarshalBSON() ([]byte, error) { - return bson.Marshal(bson.M{"data": d.String()}) -} - -func (d *Date) UnmarshalBSON(data []byte) error { - var m bson.M - if err := bson.Unmarshal(data, &m); err != nil { - return err - } - - if data, ok := m["data"].(string); ok { - rd, err := time.ParseInLocation(RFC3339FullDate, data, DefaultTimeLocation) - if err != nil { - return err - } - *d = Date(rd) - return nil - } - - return errors.New("couldn't unmarshal bson bytes value as Date") -} - -// DeepCopyInto copies the receiver and writes its value into out. -func (d *Date) DeepCopyInto(out *Date) { - *out = *d -} - -// DeepCopy copies the receiver into a new Date. -func (d *Date) DeepCopy() *Date { - if d == nil { - return nil - } - out := new(Date) - d.DeepCopyInto(out) - return out -} - -// GobEncode implements the gob.GobEncoder interface. -func (d Date) GobEncode() ([]byte, error) { - return d.MarshalBinary() -} - -// GobDecode implements the gob.GobDecoder interface. -func (d *Date) GobDecode(data []byte) error { - return d.UnmarshalBinary(data) -} - -// MarshalBinary implements the encoding.BinaryMarshaler interface. -func (d Date) MarshalBinary() ([]byte, error) { - return time.Time(d).MarshalBinary() -} - -// UnmarshalBinary implements the encoding.BinaryUnmarshaler interface. -func (d *Date) UnmarshalBinary(data []byte) error { - var original time.Time - - err := original.UnmarshalBinary(data) - if err != nil { - return err - } - - *d = Date(original) - - return nil -} - -// Equal checks if two Date instances are equal -func (d Date) Equal(d2 Date) bool { - return time.Time(d).Equal(time.Time(d2)) -} diff --git a/vendor/github.com/go-openapi/strfmt/default.go b/vendor/github.com/go-openapi/strfmt/default.go deleted file mode 100644 index 2813714060..0000000000 --- a/vendor/github.com/go-openapi/strfmt/default.go +++ /dev/null @@ -1,2051 +0,0 @@ -// Copyright 2015 go-swagger maintainers -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package strfmt - -import ( - "database/sql/driver" - "encoding/base64" - "encoding/json" - "errors" - "fmt" - "net/mail" - "regexp" - "strings" - - "github.com/asaskevich/govalidator" - "github.com/google/uuid" - "go.mongodb.org/mongo-driver/bson" -) - -const ( - // HostnamePattern http://json-schema.org/latest/json-schema-validation.html#anchor114 - // A string instance is valid against this attribute if it is a valid - // representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034]. - // http://tools.ietf.org/html/rfc1034#section-3.5 - // ::= any one of the ten digits 0 through 9 - // var digit = /[0-9]/; - // ::= any one of the 52 alphabetic characters A through Z in upper case and a through z in lower case - // var letter = /[a-zA-Z]/; - // ::= | - // var letDig = /[0-9a-zA-Z]/; - // ::= | "-" - // var letDigHyp = /[-0-9a-zA-Z]/; - // ::= | - // var ldhStr = /[-0-9a-zA-Z]+/; - //