commit 8410782ab8f29ec39e4492a8ae64c62940e81008 Author: Michael Stapelberg Date: Sat Jun 20 08:01:02 2020 +0200 initial commit diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + 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/cmd/qrbill-example/example.go b/cmd/qrbill-example/example.go new file mode 100644 index 0000000..a0c73a6 --- /dev/null +++ b/cmd/qrbill-example/example.go @@ -0,0 +1,18 @@ +package main + +import ( + "log" + + "github.com/stapelberg/qrbill" +) + +func logic() error { + return qrbill.Generate() + //return nil +} + +func main() { + if err := logic(); err != nil { + log.Fatal(err) + } +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..565563b --- /dev/null +++ b/go.mod @@ -0,0 +1,10 @@ +module github.com/stapelberg/qrbill + +go 1.14 + +require ( + github.com/aaronarduino/goqrsvg v0.0.0-20170617203649-603647895681 + github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca + github.com/boombuler/barcode v1.0.0 + github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..3997f08 --- /dev/null +++ b/go.sum @@ -0,0 +1,8 @@ +github.com/aaronarduino/goqrsvg v0.0.0-20170617203649-603647895681 h1:eZrVcUgy0P6+B6Vu7SKPh3UZQS5nEuyjhbkFyfz7I2I= +github.com/aaronarduino/goqrsvg v0.0.0-20170617203649-603647895681/go.mod h1:dytw+5qs+pdi61fO/S4OmXR7AuEq/HvNCuG03KxQHT4= +github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca h1:kWzLcty5V2rzOqJM7Tp/MfSX0RMSI1x4IOLApEefYxA= +github.com/ajstarks/svgo v0.0.0-20200320125537-f189e35d30ca/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/boombuler/barcode v1.0.0 h1:s1TvRnXwL2xJRaccrdcBQMZxq6X7DvsMogtmJeHDdrc= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0= +github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M= diff --git a/qrbill.go b/qrbill.go new file mode 100644 index 0000000..38af90c --- /dev/null +++ b/qrbill.go @@ -0,0 +1,281 @@ +// Package qrbill implements the Swiss QR-bill standard. +// +// More specifically, the most recent standard version at the time of writing +// was the Swiss Payment Standards 2019 Swiss Implementation Guidelines QR-bill +// Version 2.1, to be found at: +// +// https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf (English) +// https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-de.pdf (German) +package qrbill + +import ( + "image" + "log" + "os" + "strings" + + "github.com/aaronarduino/goqrsvg" + svg "github.com/ajstarks/svgo" + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/qr" + + // We currently read the swiss cross PNG version. + _ "image/png" +) + +// As per section 4.1: In general: +// Oriented upon the Swiss Implementation Guidelines for Credit Transfers for +// the ISO 20022 Customer Credit Transfer Initiation message (pain.001). + +// Section 4.2.1: Character set: +// UTF-8 should be used for encoding + +// see also: +// https://github.com/codebude/QRCoder/wiki/Advanced-usage---Payload-generators#317-swissqrcode-iso-20022 + +const ( + // QRType is an unambiguous indicator for the Swiss QR Code. Fixed value + // "SPC". + QRType = "SPC" // Swiss Payments Code + + // Version contains the version of the specifications (Implementation + // Guidelines) in use on the date on which the Swiss QR Code was + // created. The first two positions indicate the main version, the following + // two positions the sub-version. Fixed value of "0200" for Version 2.0. + Version = "0200" // Version 2.0 + + // CodingType is the character set code. Fixed value "1". + CodingType = "1" // UTF-8 restricted to the Latin character set +) + +// AddressType corresponds to AdrTp in ISO20022. +type AddressType string + +const ( + AddressTypeStructured AddressType = "S" + AddressTypeCombined = "K" +) + +// - fixed length: 21 alphanumeric characters +// - only IBANs with CH or LI country code permitted +var iban = "CH0209000000870913543" + +type Address struct { + AdrTp AddressType + Name string // Name, max 70. chars, first name + last name, or company name + StrtNmOrAdrLine1 string // Street or address line 1 + BldgNbOrAdrLine2 string // Building number or address line 2 + PstCd string // Postal code, max 16 chars, must be provided without a country code prefix + TwnNm string // Town, max. 35 chars + Ctry string // Country, two-digit country code according to ISO 3166-1 +} + +type QRCHHeader struct { + QRType string + Version string + Coding string +} + +type QRCHCdtrInf struct { + IBAN string + Cdtr Address // Creditor +} + +type QRCHCcyAmt struct { + Amt string // Amount + Ccy string // Currency +} + +type QRCHRmtInfAddInf struct { + Ustrd string // Unstructured message + Trailer string // Trailer +} + +type QRCHRmtInf struct { + Tp string // Reference type + Ref string // Reference + AddInf QRCHRmtInfAddInf // Additional information +} + +type QRCH struct { + Header QRCHHeader // Header + CdtrInf QRCHCdtrInf // Creditor information (Account / Payable to) + UltmtCdtr Address // (must not be filled in, for Future Use) + CcyAmt QRCHCcyAmt // Paymount amount information + UltmtDbtr Address // Ultimate Debtor + RmtInf QRCHRmtInf // Payment reference +} + +func (q *QRCH) QRContents() string { + return strings.Join([]string{ + q.Header.QRType, + q.Header.Version, + q.Header.Coding, + + q.CdtrInf.IBAN, + + string(q.CdtrInf.Cdtr.AdrTp), + q.CdtrInf.Cdtr.Name, + q.CdtrInf.Cdtr.StrtNmOrAdrLine1, + q.CdtrInf.Cdtr.BldgNbOrAdrLine2, + q.CdtrInf.Cdtr.PstCd, + q.CdtrInf.Cdtr.TwnNm, + q.CdtrInf.Cdtr.Ctry, + + string(q.UltmtCdtr.AdrTp), + q.UltmtCdtr.Name, + q.UltmtCdtr.StrtNmOrAdrLine1, + q.UltmtCdtr.BldgNbOrAdrLine2, + q.UltmtCdtr.PstCd, + q.UltmtCdtr.TwnNm, + q.UltmtCdtr.Ctry, + + q.CcyAmt.Amt, + q.CcyAmt.Ccy, + + string(q.UltmtDbtr.AdrTp), + q.UltmtDbtr.Name, + q.UltmtDbtr.StrtNmOrAdrLine1, + q.UltmtDbtr.BldgNbOrAdrLine2, + q.UltmtDbtr.PstCd, + q.UltmtDbtr.TwnNm, + q.UltmtDbtr.Ctry, + + q.RmtInf.Tp, + q.RmtInf.Ref, + q.RmtInf.AddInf.Ustrd, + q.RmtInf.AddInf.Trailer, + }, "\n") +} + +// https://www.paymentstandards.ch/dam/downloads/qrcodegenerator.java +func generateSwissQrCode(content string) error { + // generate the qr code from the payload + code, err := qr.Encode(content, qr.M, qr.Auto) + if err != nil { + return err + } + + // overlay the qr code with a Swiss Cross + combined, err := overlayWithSwissCross(code) + if err != nil { + return err + } + _ = combined + + return nil +} + +func overlayWithSwissCross(code barcode.Barcode) (image.Image, error) { + // TODO: bundle a swiss cross image + const swissCrossPath = "/home/michael/go/src/github.com/stapelberg/qrbill/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.png" + + // TODO: read swiss cross image + f, err := os.Open(swissCrossPath) + if err != nil { + return nil, err + } + defer f.Close() + m, _, err := image.Decode(f) + if err != nil { + return nil, err + } + log.Printf("bounds: %+v", m.Bounds()) + return nil, nil +} + +func Generate() error { + log.Printf("hey!") + + content := (&QRCH{ + Header: QRCHHeader{ + QRType: QRType, + Version: Version, + Coding: CodingType, + }, + CdtrInf: QRCHCdtrInf{ + IBAN: iban, + Cdtr: Address{ + AdrTp: AddressTypeStructured, // CR AddressTyp + Name: "Legalize it!", // CR Name + StrtNmOrAdrLine1: "Quellenstrasse 25", // CR Street or address line 1 + BldgNbOrAdrLine2: "", // CR Building number or address line 2 + PstCd: "8005", // CR Postal code + TwnNm: "Zürich", // CR City + Ctry: "CH", // CR Country + }, + }, + CcyAmt: QRCHCcyAmt{ + Amt: "", + Ccy: "CHF", + }, + UltmtDbtr: Address{ + "S", // UD AddressTyp + "Michael Stapelberg", // UD Name + "Brahmsstrasse 21", // UD Street or address line 1 + "", // UD Building number or address line 2 + "8003", // Postal code + "Zürich", // City + "CH", // Country + }, + RmtInf: QRCHRmtInf{ + Tp: "NON", // Reference type + Ref: "", // Reference + AddInf: QRCHRmtInfAddInf{ + Ustrd: "Spende 6141", + Trailer: "EPD", + }, + }, + }).QRContents() + + // as per https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-en.pdf, section 5.1: + // Error correction level M (redundancy of around 15%) + + // TODO: data content must be no more than 997 characters + + // https://www.PaymentStandards.CH/FAQ) + // TODO: auf version 24 (46mm x 46mm) skalieren + + // version 25 with 117 x 117 modules + + // minimum module size of 0.4mm (recommended for printing) + + // TODO: overlay the swiss cross logo! + // TODO: verify dimensions when printed + + // TODO: ensure UTF-8 + code, err := qr.Encode(content, qr.M, qr.Auto) + if err != nil { + return err + } + f, err := os.Create("/tmp/code.svg") + if err != nil { + return err + } + defer f.Close() + s := svg.New(f) + qrsvg := goqrsvg.NewQrSVG(code, 5) + qrsvg.StartQrSVG(s) + if err := qrsvg.WriteQrSVG(s); err != nil { + return err + } + s.End() + if err := f.Close(); err != nil { + return err + } + + if err := generateSwissQrCode(content); err != nil { + return err + } + + /* + code, err := qrcode.NewWithForcedVersion(content, 25, qrcode.Medium) + if err != nil { + return err + } + log.Printf("code: %v", code) + const pixelsPerMillimeter = 10 + return code.WriteFile(-2, "/tmp/code.png") + */ + return nil +} diff --git a/third_party/swiss-cross.zip b/third_party/swiss-cross.zip new file mode 100644 index 0000000..4055b48 Binary files /dev/null and b/third_party/swiss-cross.zip differ diff --git a/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.ai b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.ai new file mode 100644 index 0000000..485bb86 --- /dev/null +++ b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.ai @@ -0,0 +1,219 @@ +%PDF-1.5 % +1 0 obj <>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream + + + + + Adobe Illustrator CC 2015.3 (Macintosh) + 2017-04-25T11:45:41+02:00 + 2017-04-25T11:45:41+02:00 + 2017-04-25T11:45:41+02:00 + + + + 256 + 256 + JPEG + /9j/4AAQSkZJRgABAgEBLAEsAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABABLAAAAAEA AQEsAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7F XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXzd+fP 58+ffJHn1tE0RrUWItYZwJ4fUfnJy5fFyG22AlXnX/Q2n5t/z6f/ANI3/N+C1d/0Np+bf8+n/wDS N/zfjau/6G0/Nv8An0//AKRv+b8bV3/Q2n5t/wA+n/8ASN/zfjau/wChtPzb/n0//pG/5vxtXf8A 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 + + + + 1 + False + False + + 7.000000 + 7.000000 + Millimeters + + + + Black + + + + + + Standard-Farbfeldgruppe + 0 + + + + C=0 M=0 Y=0 K=0 + CMYK + PROCESS + 0.000000 + 0.000000 + 0.000000 + 0.000000 + + + + + + + application/pdf + + + CH-Kreuz_7mm + + + Document + xmp.did:e0cc993f-3b86-4a60-bf8c-8cda8b2e233a + uuid:874974c6-0206-4346-baeb-e3564ef45a38 + xmp.did:e0cc993f-3b86-4a60-bf8c-8cda8b2e233a + proof:pdf + + + + + saved + xmp.iid:e0cc993f-3b86-4a60-bf8c-8cda8b2e233a + 2017-04-25T11:45:39+02:00 + Adobe Illustrator CC 2015.3 (Macintosh) + / + + + + Adobe PDF library 15.00 + + + + + + + + + + + + + + + + + + + + + + + + + endstream endobj 3 0 obj <> endobj 7 0 obj <>/Resources<>/Properties<>>>/Thumb 11 0 R/TrimBox[0.0 0.0 19.8425 19.8425]/Type/Page>> endobj 8 0 obj <>stream +HlRIn0 iRE_=A],@C_Z" g}~3c8uGu7WEcA;Rm9mMF'ڟbw↖(e=dCmq+>|˷43v1X:Pۇr@?Zx.OZ_UKsjJ.So?$I9?fvk+6)?D+5m]*uAmri/UW\n endstream endobj 11 0 obj <>stream +8;Xp,rVCYe!!<3,C'.`~> endstream endobj 12 0 obj [/Indexed/DeviceRGB 255 13 0 R] endobj 13 0 obj <>stream +8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0 +b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup` +E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn +6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O( +l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~> endstream endobj 5 0 obj <> endobj 14 0 obj [/View/Design] endobj 15 0 obj <>>> endobj 10 0 obj <> endobj 9 0 obj <> endobj 16 0 obj <> endobj 17 0 obj <>stream +%!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 17.0 %%AI8_CreatorVersion: 20.0.0 %%For: (Marc Zuberb\637hler) () %%Title: (CH-Kreuz_7mm.svg) %%CreationDate: 25.04.17 11:45 %%Canvassize: 16383 %%BoundingBox: 88 88 109 109 %%HiResBoundingBox: 88.4147853241648 88.4124352172239 108.262804092341 108.260462995371 %%DocumentProcessColors: Black %AI5_FileFormat 13.0 %AI12_BuildNumber: 141 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%CMYKProcessColor: 1 1 1 1 ([Passermarken]) %AI3_Cropmarks: 88.4172411340423 88.4172411340442 108.259760819081 108.259760819083 %AI3_TemplateBox: 97.5 97.5 97.5 97.5 %AI3_TileBox: -181.161499023438 -281.661499023438 377.838500976563 501.338500976563 %AI3_DocumentPreview: None %AI5_ArtSize: 14400 14400 %AI5_RulerUnits: 1 %AI9_ColorModel: 2 %AI5_ArtFlags: 0 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI17_Begin_Content_if_version_gt:17 1 %AI9_OpenToView: 59.25 119.25 32 2508 1290 18 0 0 46 133 0 0 0 1 1 0 1 1 0 1 %AI17_Alternate_Content %AI9_OpenToView: 59.25 119.25 32 2508 1290 18 0 0 46 133 0 0 0 1 1 0 1 1 0 1 %AI17_End_Versioned_Content %AI5_OpenViewLayers: 7 %%PageOrigin:-2737 -2737 %AI7_GridSettings: 13.9181098937988 10 13.9181098937988 10 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142 %AI9_Flatten: 1 %AI12_CMSettings: 00.MS %%EndComments endstream endobj 18 0 obj <>stream +%%BoundingBox: 88 88 109 109 %%HiResBoundingBox: 88.4147853241648 88.4124352172239 108.262804092341 108.260462995371 %AI7_Thumbnail: 128 128 8 %%BeginData: 22200 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FDFCFFFDFCFFFDFCFFFDFCFFFD99FF7DFD6C527DFD12FF5227F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F852FD12FF52F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F87DFD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF %5227F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F852FD12FF52F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F87DFD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD %12FF5227F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F852FD12FF52F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8272627F827 %F827F827F827F827F827F827F827F827F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %52FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F87DFD15FF52F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD %15FF2727F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F87DFD12FF52F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F87DFD15FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F87DFD15FF2DF826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %52FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F87DFD15FF52F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD %15FF2727F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F852FD12FF52F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F87DFD14FFA852F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F87DFD12FF %52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F87DFD15FF52F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8 %F852FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F87DFD15FF2DF8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F8277D %FD15FF2727F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F87DFD15FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F852FD12FF %52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F87DFD14FFA852F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F852FD12FF5227F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F8277DFD15FF2727F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F87DFD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F87DFD15FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %7DFD15FF2727F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F87DFD15FF2DF826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F8277DFD15FF2727F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F852FD12 %FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F87DFD15FF27F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F82652FD12FF5227F827F827F827F827F827F827F827F827F82726272727 %F8272727F8272727F8272727F8272727F82727277DFD15FF5227F8272727 %F8272727F8272727F8272727F8272727F8272727F827F827F827F827F827 %F827F827F827F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826 %52FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FD17FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F87DFD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD47FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD47FFF826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD47FFF826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD47FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F87DFD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD47FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD47FFF826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD47FFF826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD47FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F87DFD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD47FFF8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F87DFD47FF27F827F827F827F827F827F827F827F827F852FD12FF52 %F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD47FFF826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F8527D7D7DA87D7D7DA87D7D7DA87D7D7DA87D7D7DA8FD047DA8FD15 %FFFD057DA87D7D7DA87D7D7DA87D7D7DA87D7D7DA87D7D7D27F827F827F8 %27F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %7DFD15FF27F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %27F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F8277DFD15FF2727F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F852FD12FF52F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F87DFD14FFA852F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD %12FF5227F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F87DFD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F87DFD15FF52F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD15FF %2727F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F87DFD15FF2DF826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F852FD12FF52F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F87DFD15FF52F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652FD %12FF5227F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F87DFD14FFA852F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD15 %FF2727F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F87DFD12FF52F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F87DFD15FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F852FD12FF52F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F87DFD15FF2DF826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652 %FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F87DFD15FF52F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD15 %FF2727F827F827F827F827F827F827F827F827F827F827F827F827F827F8 %27F827F827F827F827F827F827F852FD12FF52F826F8F8F826F8F8F826F8 %F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F8 %26F87DFD14FFA852F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F8277DFD15FF2727F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F87DFD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F87DFD15FF52F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %52FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F8277DFD15FF2727F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F87DFD15FF2DF826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F8277DFD %15FF2727F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F8527D7D527D527D527D527D527D527D527D527D527D5227F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD12FF5227 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F87DFD12FF52F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF %5227F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F852FD12FF52F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F852FD %12FF5227F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F87DFD12FF52F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F852FD12FF5227F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F852FD12FF52F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %52FD12FF5227F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F852FD12FF52F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F82652FD12FF5227F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F852FD12FF52F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F852FD12FF5227F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F827F827F827 %F827F827F827F827F827F827F827F827F827F827F827F827F87DFD12FF52 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8 %F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826F8F8F826 %F8F8F826F8F8F826F8F8F826F8F8F826F8F827FD12FF7DFD6C527DFDFCFF %FDFCFFFDFCFFFDFCFFFD98FFFF %%EndData endstream endobj 19 0 obj <>stream +%AI12_CompressedDatax}b}@hR$F 8Vq@t6 ~g.uJXs^o0,4&XQ 6eP Y/2,4L1).i!L&2{a2Agi?jcslͰ|L1If\2f,I Ob?0u  ? T]--R)Ow^լ/i<"3 y[Xn 9KoATNINt3!/Y\Py@j?I>˃NP_RHI{WY/q +&F;T>(A4*-_o! F!eY?+8 Ip +[N-z !7wJ"? {Lk(̇SIph[=E; -6GDMf*ϖpA޿1>;\bj=CiKXh I#&WC ̱MOHaqA~ }խp!h!A$a( @Z42"0})BYO݈QQ$%lj?.wr+I,BGH0~쟍;/? ٟS_^[ ~{؟'?Ka6Ƨvn>Tk§݌o|~~Ww??Q%6ͨia~ʸ[Ir1_.\A9ڀYp{$PW?Ep<\(*ͥ2EwƋ}n9(|VT]L:L[8T׶]8BҜLF@C@M~! +PJUh[WT?d9uPLG)_DV;פ4FiHEqEc,csǒx6 >c9+J@HE=&42q ?**YZW +[eԟ&!g8NfT~_&T/'a{TlԖ:4%<.Kt13gXtzX0r R2sek0e3YB;蜜钎/Ԯd+eljӕm9}*ضy8Gր_Ӟ&S~ϥR r59\`86<_ {pkt."LQm<ج;qjϼkSG 3e8Y80\>:4ջJrp.]jE |U,a†)đYi[i ҈Pcb]Ki!Fd@6y4 3fVM怑qsLIWm_ñ{$0$d4 ҪMJ^z@ G~:`}c+Qȡܱǡcx 2!\* \6lڋ ٖ{m:BS\B=;`L)`xm |ZIg)MD>ƴ/zi;(mj>lx:5fY t:xMn2Yԛ.A3Ł;H+ sWDdi@.? V RRA{Atyo&դ'g cUπ3<>rtSh& +vنV v&j~YC{BϼA\z6>$xXXe ~!@T-}%4 QBYsBo-\ `Ms0¼E?9LI"bC1cg(f?˱ků"6G%ccR~9%FpJZ;8\U"gNai=unH&wƮ]X4q%c͑">߂tT$xA5,}',AC>M i`)wduV3edJnI@x1s`muyz&SRǼ0@hNVvG4NDĂ@UFR0/$WN0gJC08C`֌(bGASHs_#? +`aHD?_oLKqcZA!5/9Oz^}/߂K!?5v?E|Q ùɥNG ,' Usl%:'NN#P^sGS{q81l%P@DEU!wxn +BA63q,u+vg8KJNH&5=P.mzFXM(+z1:Es$4kyuB] }7T@3=q$wg)>6Ƽ0\⚚$KNّ֘jXN6'9 ʿwq4$ 8,')?[v:”fH3}SyO@*.lSPvEQ3Wbfo0)*sH1Y&ƬF<]nv&E;U#pʩr@A8Q97.go=qY*6s:iXȁvܹqI?l&*kNwnWK`-/x0>TVOX?:x | |/л.ʍF.] q39y&D*9,:-$' yr(Ug_bS.rtQ ػa |DC+, @1W8jtMIt:WNn>\2yL^cY)L#}AQ<>Ӌt>kcU|{a*/}xc٩%mhbD1>~4\,-8v@x8‹--c֝Y2-lS2YK3Zx)nTQvS|_Sen9> D'ܙ/-۟]٘+8Y|W`G F^R[\a"R`H2/hBMDOg@@Zfg̾{bIc֮3!Pw !CԘCN+o4~cj[;U7ë;2g۳K"ҽ[;HÀ-zJӋ=bjfαg}lխH<.i~'l~HB ЂYKT*D${GypC*Y; @J™XᬶZEUM;LBlkf;8^IHy,h) lۄTcb;z uMFZ} H_lH-H T_c|} H3QABZa&S8%^"m%H/V! }1Nx `E]~} l>MH[[EH!x1?Gz >NϷH;g[ mz<\T^W;HoF REAHr̻4#5sI[F dX`+ m?0i:8}UB +.lGAMM&r#qn%_(BQw=@{$E4=R.N"HKmaQQz8@qJ:„4rPHO؋iz?N|aD%?ߝBybQ{0BIAZȻ5>e&ɺHv?fi<{H~ z+FA/!kzɱ(g~:l=fF|>OǞDv}߾LO8ׁSDV['$O!2<[p?P3!kќ׉OG\BɨvAz M|zΥO{nLnmZ +ħKX1 uz:0=J'rм*gEhӓ)p0ϰ/Cfﵬ;gkV\3n=r vo=]y.q%+rS1EA\Co'?pͰՔM2;סo;1<ꆁl۪Bw'f8!}K@~_q_,)Sn!U T=B}i!]ZTwO|3yU Hm"R@#b#AkD`;|#ݪI)7Dw#= "_ #Y$D7̩WѣOcҟ8},'Svퟏ .a-yQc~+Fp?CcRDudpC{G*@ypŏ |}q_LJuTDf +d@ހ&Hz@?wFB yh+>Mu:s}:o +"y#y:D K>uiouT:Yֽr{'LCؘtݞL)Gc?ޫ nk'8 8ԕX +(h]X_57`4~ڜuLw=i1}@,?_XFEA>ƩM:շS=q"CGU#/7jTNZ3J\lۯJ˳Z۴*23Ἔ]~RЌJhwٷ0{ay= +>c}Q|wA+iY~gƁ@, +a"aYHQ@ȞƬ f\wVV(z]wq&^( 1T N:N=m  V30řmϺ '秌xHX0)XFq Q(' ŨJkuᨘK3Hт5)&jffYWWZts%VBgr7&h1W¸L%N:(0DRÍi4DwSB7I녂v۠sot5-I0ys5( "\iha|AJtaq= [i@#C0]talY@M9r2- 7 8*[ʠ7qُeނ\M!kT.=2.M +y#*=ZGPt7RX +"[pةС߳#3 +XN 2Jq%eW2UFՍ_ qq{|DRa@L6DFaDFh0?.n=?#LxlcAh[J0.M+> H44تp%{~Pq+8a&#cB֡$zYo ؕs&8M2X7ΒZ=ֶ~{N㊾q^༙ҚV +#8@2UKJo +^G )e? "fm~96lS-`{ 9sC|QXE̍YuϦ9Lk^&m(Ո"S~\u8CO)gjPǣ&o?lF>IdvՁF +u|K7䡎\mZKӶr)0tiM)VcEU!f`ژ'LmQEs+qqWss4W7@12Qs; +bs;fLughmY6F})wNp1r'?vkovghx0I(L{(3׌PxHkHsH~%nv{266?:7DR L;SUe$W.Gq9lW&-ܓ=րcЊ0x;{NmOcͰjtG%,sةSDƱ.!:ֽ:u[#2sbDca/v6I4 &2JϚSsє&PcywJvEz%GRjdS1nuN2~E!&3/B:LJ(Q-㠑 +]l|]s[̺ܰ6KsU $:tu-3'5}T+y?oz8^F uQ(,֬, q+W +yPQ`G{6 l#fQk jz1\*&|SE*ձ-#]" U>m"g&*Ra&*R!+R!sE*h'mHX5ȸ c69EmN)|)q^6Z +O㸯Z +gOMQk;N)%#bR8gn;mx;lJ0xuL;6 Ş FuR)'pJ3Vxa^*a9_m[ٯ$䴅CӴږ|g\>DtAlw*e97^vm+/UXܟK^\J\KZsUs2Vc9ԝ^7n McDXvл`?xݞ*줭Z?/S}\a/IH?+by >BDҐUڭx|_ȩ؍F& +OfFk:՝M*fvH.ATa'8>V_0_LiCBzka%\ٷoy@1vbQrKEu^flLQu֖c:u:K˶:Cܱ=V?Ν8wל+7YMrv +QGv9tNIo0G o+^"g +Y\/6urkKޯxMt)rz9\!ғ] +Tм~5]-Δ^]:yS5yrt$ijtv· 'YMg0Z:D5]-YomήN{X5bjlUqMU.Zo~Wttv]aL5ٞlV5]-J5(G`t;kVәAAŜmB:tvt&jo[fdj:,n fdj:;g>lj:Z:{EW!3WÇDrPߐwWL{Ot.98FfW&/vM%]-ػqWgo]l:{\﫣Y[Dyҩp6,'8\f,P%槹z-R؅N3NS)u 4zD'd +'ws޷ф\sG;|rnQ.ֺN[/NQ)󖟼5wS/v BkT]xѝy;skG'lШ_VN@,QuN; +]HG5ھZ;ުȊvq ex'w8RC=n*=lkT%g%"ej>/ ޫ`\pU'H϶_LHWaktߤ{i4NXuT iaxsP|q$ lSוOR=\Nư^nJ3;R9BߋG2jf4}RJ0G S;b֖2C/)f&)sւ]c:v2e$ j:l ЦMRbv\dT6cjKeۼ6&{. c ҥVVIAN BK}UEjmUK& ?-/^;,-ճp%O{PSS+C&LvoWյc̊ +`7(6 ]ʈOK*K0/Tu;&?(xUZaVZ8B$7X;6r tm>2_ &a)׬q~'c*˩ ~{)u!ٳ)ggDJ6ٵT韹ַV2z 96Q)qCxtPtRN"Y+vˌ0{]WB`֛Wer-`n<^(sb.;yz#RR.Ltf=ݨik s5ks3]< +vO7fCQWڟK[HKO;]I_H[H#;T9Wʽ|)h(< rKݥ|n'QlR>Y4~|~ӥ|7|)(R=oRSvFq?۽~ΆZ^?\DYo[l(ӽ~ɋ.U9-~fΆl|5j!ljW`o3ba[VHv~k_^ܒ^?;e9eG[_޽~` =^?$Um]Տ"Ou͂v׏>kމtgg:+Pn+KM\"G׿9ɈY^? ) 9 Sv~Cs6ݪ6Sީʍ=ys6l[^?(Q~3sa[݃tcV?_2$*mcU~r^q{h[^?[Ƿ1Ƿ~F(c+SgLtս~5:z9;\ֽ~NmZ^?S9i?kD[^oݜ+^?B8[IQ2U־׏skZ^?1ײb+˙춛WQ2ý~~Qe}04aY^?mbmoN_^?XKy F3\ن1缹r:~η%XyOY) BTr !gˉ7xo'ѦpO2Mɦ +g|Im $4r^0QVn;WǍ8y*)kb~(6 ~JL,eo|? >}ݫϨMSU9~˳gnpo]eu1$|<éʯ _pT>τ udo':^r 4G>Nc0wJ%;g2wR i#ӕצV +x9JĞZ+!Jo3x\~~P]zr{s(&[sm^}O6_<<#"bW;ǑB~|?ޙ 0/\{=\- ,5W@vdv>93sCkȪOu%v%kv8KMxFgϷUmKWORTN" /Xo~|fqzpѨ٥TxzDu 9âݨ""s: GN{'6bǀ&)Gu@4Q}ZU_qZVrlTe-To4ޠ  ^{\Fzڃ#+hybJ?z!U_Gߩ 7d; T ;l=VK"<?{ 9E<, +}E5/ J_]O~}S4'_!n.+n9X쁂}GX\2w |ʃL4m0o㸹;AQ4)u_ %dd`3Gra<^̋yQ_/py}Rgq`'KPw/:';y @HXo='@־Cuޗ ),4lCb=u3CbH)֛.@p>NK%h6cqYgQ%ä'6S7TUߊt +[:[f*5(MYY'wI>%؎%xBvmOUXdՇ5Z؝U +m!ڨ>ӯ{vRھ8l3ZVHj8 vvN ՟B\ozsȞJc2j1[BbS!{r`fl"ݖˠx$yqTl-_0S^ 3`-e78{/bxY; ,n/Gk.vBH]5.k0,B[oOwMs0\T*ggG}%X8 zJD_{Tgtvi)4"PZ*dTj?tSNڮxs:Z'Z7߇׭t֢x߫0VeLQ-Uz7'y:Ĕ~3] =Y]A!&V%v h hXOD >+-O\/Z? +A@W4!h|ˍ@ݙ>i2r4ڛU=b_Y¬3\Z=f,~ue15fi,7v^mylN!MFw6PL ŞǼp}A2*cF$ۭy[ZO̡7 >]&~CO)\Z/q[=K]11znS@h }q 6}o3 F=,崰)~1Hiy^ӟ?4^3`6B[ŵޏ>Ap*-o;f ܏Q}PG/H}As۠S}寣iɄ2)'_pN''Hm_pYJ+)Q͘KDy-2¬x暅fv_#詔|2Z[g[4eclbrAtKqv+̟Oo ?rrKb/F zI9$ \:VQ_?Ok{P~Yc!*"aw*%_XoڅD|]@^g&zͷnk.l +np'Yc&h'yqcn,/c ROu1:gNZ$>/FgKmx>T Ci jvmo:,pS8?YE'+zXшW(91r¯`i9vb~qkY3mԕ1Xg B;q _v +̈XWaEy} 4.񟈒bD%LC)({4'wo_1X]ON|*Tbu *aZIƘ5{n4\OZl3O(270) @)uWit]S~[ |]n4 xTIJ gċPZ0u|H`<*$!yz +)DOn D(H:)D\RЈPozl37#Ddq"nH|'60 s: tiiE89 " gH+mU:@K6 2ʝ:HG SX +r#•!_}uptg˕s%q¹@., t$Ia4U4v0s /(tdVW2 Ev_z~710*L +e%edeӰcՖβb8A`8+޹cA-=x_~F8g$8ӈN;Y-?|U 솁; ײCv?Z1mEmLn8 n˔9l~rjUU6kUkݝ{ypq}h>qzqpd/뼜Bx/(x\g|)Wr3WxB=|Ƚ)߿*^mڍbCt;J\-(:icb7MC业*/2Z$ \wܯ*/B +|'H,2+jY {s2Ε@gk.aӵ >λ0΢G@A;$nph@_Qaq: +1YnDcmPGc1И:V_r+H4A@ΐ0v y#1"Q%L=sօYLrL>q?q 8NQ߁/Qlô?p/zˉ0] DUn4rЛT j00ď0D*_Q}|1cs^8Y?I{wr) 0;/, -U Ę+c_2gm}J2}\u24ˎ"/O%X^K}_;*PxlS!vx+eOUXaR*]"j͙lZs(CI-x֝ +\!/r&yIk!S$zR@|=N_xQTTEGXyq9Yxr#?H|7nhegG`a 3@JEjwxAR'̧/w=J@{Z DÞM`սyP݇zḚF|qIS?@(S;ɇAgUe^~7~G$v"G Q솫2$CuRgm,uSXegi|YS_7zYJJA1uU +ece#e3p>XGk)ҵK-6G, g%'>rS̪mV ad7Z1hيA6 4dl+F=x.~=bvIoQ%~@N(ʭE)F{'- @- ѮFܢm=Nzx5JD}[$5 X|~Khy>E4씃8DmivBv6]B\gcpR zjL-)kbp'4ijOtL[4icejuqA0s"LAŜEhJ{ 29ciO6 F8X{^^52' {!K-uM8Ǎ.}`,eȴM:N YPkBcntu? a-%*#:/,(xG)vŽkmKǰAGu1vQ>"%vQ=|1vQ߆qtф:",naǵ(v\; R:aǵ4)2K973ϣo!ɒj䔤 +锜̥҅[u,[hiGFNۗ(xǞ}_ |i><e J\+]>>E .t׸XyQc&v~z:G?P:&C 0Z?aV@g\; .ԣإ8`NuǷ&} %,s ) % Xi6ˮ/T +SυS/V}N(.*b8Q ?zt@k( D;'sc#t<|9~;dY&Iq@lM%mضL>e]Lms-mlnD1|]F`# gR,sl.q6O2L2l DZlelچeRqM\Ms2L,m(yP9?3I8.35eI=kKk>f2ya/ ͘?24_8l + fSI@7|>ϲl@0@ʥHdLdT6*/%ph@Tٶ앂Ahۘlibm4dlӆ mĕ[K%eI@3 MR "?-~~:-0Oߢ -f?/9175+ endstream endobj 6 0 obj [5 0 R] endobj 20 0 obj <> endobj xref 0 21 0000000000 65535 f +0000000016 00000 n +0000000144 00000 n +0000014765 00000 n +0000000000 00000 f +0000016189 00000 n +0000060822 00000 n +0000014816 00000 n +0000015154 00000 n +0000016488 00000 n +0000016375 00000 n +0000015469 00000 n +0000015628 00000 n +0000015676 00000 n +0000016259 00000 n +0000016290 00000 n +0000016561 00000 n +0000016735 00000 n +0000018154 00000 n +0000040588 00000 n +0000060845 00000 n +trailer <]>> startxref 61042 %%EOF \ No newline at end of file diff --git a/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.png b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.png new file mode 100644 index 0000000..41d3c5f Binary files /dev/null and b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.png differ diff --git a/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.svg b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.svg new file mode 100644 index 0000000..bc7036c --- /dev/null +++ b/third_party/swiss-cross/CH-Kreuz_7mm/CH-Kreuz_7mm.svg @@ -0,0 +1,14 @@ + + + + + + + + +