]> source.dussan.org Git - poi.git/commitdiff
Changed CRLF to LF in remaining trunk/src files
authorJosh Micich <josh@apache.org>
Mon, 1 Jun 2009 23:21:13 +0000 (23:21 +0000)
committerJosh Micich <josh@apache.org>
Mon, 1 Jun 2009 23:21:13 +0000 (23:21 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@780878 13f79535-47bb-0310-9956-ffa450edef68

src/examples/src/org/apache/poi/hssf/usermodel/examples/Hyperlinks.java
src/examples/src/org/apache/poi/ss/examples/BusinessPlan.java
src/examples/src/org/apache/poi/ss/examples/CalendarDemo.java
src/examples/src/org/apache/poi/ss/examples/LoanCalculator.java
src/examples/src/org/apache/poi/ss/examples/TimesheetDemo.java
src/java/org/apache/poi/ss/formula/package.html
src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata-asGenerated.txt
src/resources/main/org/apache/poi/hssf/record/formula/function/functionMetadata.txt
src/testcases/org/apache/poi/hssf/data/BigSSTRecord

index 456df814865c0e56fd313d3cd5e8895ccd4f0c6f..0872749d0248da430a0ce11480769e83370e258b 100755 (executable)
@@ -1,89 +1,89 @@
-/* ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-==================================================================== */\r
-\r
-package org.apache.poi.hssf.usermodel.examples;\r
-\r
-import org.apache.poi.hssf.usermodel.*;\r
-import org.apache.poi.hssf.util.HSSFColor;\r
-\r
-import java.io.IOException;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * Demonstrates how to create hyperlinks.\r
- *\r
- * @author Yegor Kozlov (yegor at apach.org)\r
- */\r
-public class Hyperlinks {\r
-\r
-    public static void main(String[] args) throws IOException  {\r
-        HSSFWorkbook wb = new HSSFWorkbook();\r
-\r
-        //cell style for hyperlinks\r
-        //by default hyperlinks are blue and underlined\r
-        HSSFCellStyle hlink_style = wb.createCellStyle();\r
-        HSSFFont hlink_font = wb.createFont();\r
-        hlink_font.setUnderline(HSSFFont.U_SINGLE);\r
-        hlink_font.setColor(HSSFColor.BLUE.index);\r
-        hlink_style.setFont(hlink_font);\r
-\r
-        HSSFCell cell;\r
-        HSSFSheet sheet = wb.createSheet("Hyperlinks");\r
-\r
-        //URL\r
-        cell = sheet.createRow(0).createCell(0);\r
-        cell.setCellValue("URL Link");\r
-        HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);\r
-        link.setAddress("http://poi.apache.org/");\r
-        cell.setHyperlink(link);\r
-        cell.setCellStyle(hlink_style);\r
-\r
-        //link to a file in the current directory\r
-        cell = sheet.createRow(1).createCell(0);\r
-        cell.setCellValue("File Link");\r
-        link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);\r
-        link.setAddress("link1.xls");\r
-        cell.setHyperlink(link);\r
-        cell.setCellStyle(hlink_style);\r
-\r
-        //e-mail link\r
-        cell = sheet.createRow(2).createCell(0);\r
-        cell.setCellValue("Email Link");\r
-        link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);\r
-        //note, if subject contains white spaces, make sure they are url-encoded\r
-        link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");\r
-        cell.setHyperlink(link);\r
-        cell.setCellStyle(hlink_style);\r
-\r
-        //link to a place in this workbook\r
-\r
-        //create a target sheet and cell\r
-        HSSFSheet sheet2 = wb.createSheet("Target Sheet");\r
-        sheet2.createRow(0).createCell(0).setCellValue("Target Cell");\r
-\r
-        cell = sheet.createRow(3).createCell(0);\r
-        cell.setCellValue("Worksheet Link");\r
-        link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);\r
-        link.setAddress("'Target Sheet'!A1");\r
-        cell.setHyperlink(link);\r
-        cell.setCellStyle(hlink_style);\r
-\r
-        FileOutputStream out = new FileOutputStream("hssf-links.xls");\r
-        wb.write(out);\r
-        out.close();\r
-    }\r
-}\r
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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 org.apache.poi.hssf.usermodel.examples;
+
+import org.apache.poi.hssf.usermodel.*;
+import org.apache.poi.hssf.util.HSSFColor;
+
+import java.io.IOException;
+import java.io.FileOutputStream;
+
+/**
+ * Demonstrates how to create hyperlinks.
+ *
+ * @author Yegor Kozlov (yegor at apach.org)
+ */
+public class Hyperlinks {
+
+    public static void main(String[] args) throws IOException  {
+        HSSFWorkbook wb = new HSSFWorkbook();
+
+        //cell style for hyperlinks
+        //by default hyperlinks are blue and underlined
+        HSSFCellStyle hlink_style = wb.createCellStyle();
+        HSSFFont hlink_font = wb.createFont();
+        hlink_font.setUnderline(HSSFFont.U_SINGLE);
+        hlink_font.setColor(HSSFColor.BLUE.index);
+        hlink_style.setFont(hlink_font);
+
+        HSSFCell cell;
+        HSSFSheet sheet = wb.createSheet("Hyperlinks");
+
+        //URL
+        cell = sheet.createRow(0).createCell(0);
+        cell.setCellValue("URL Link");
+        HSSFHyperlink link = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
+        link.setAddress("http://poi.apache.org/");
+        cell.setHyperlink(link);
+        cell.setCellStyle(hlink_style);
+
+        //link to a file in the current directory
+        cell = sheet.createRow(1).createCell(0);
+        cell.setCellValue("File Link");
+        link = new HSSFHyperlink(HSSFHyperlink.LINK_FILE);
+        link.setAddress("link1.xls");
+        cell.setHyperlink(link);
+        cell.setCellStyle(hlink_style);
+
+        //e-mail link
+        cell = sheet.createRow(2).createCell(0);
+        cell.setCellValue("Email Link");
+        link = new HSSFHyperlink(HSSFHyperlink.LINK_EMAIL);
+        //note, if subject contains white spaces, make sure they are url-encoded
+        link.setAddress("mailto:poi@apache.org?subject=Hyperlinks");
+        cell.setHyperlink(link);
+        cell.setCellStyle(hlink_style);
+
+        //link to a place in this workbook
+
+        //create a target sheet and cell
+        HSSFSheet sheet2 = wb.createSheet("Target Sheet");
+        sheet2.createRow(0).createCell(0).setCellValue("Target Cell");
+
+        cell = sheet.createRow(3).createCell(0);
+        cell.setCellValue("Worksheet Link");
+        link = new HSSFHyperlink(HSSFHyperlink.LINK_DOCUMENT);
+        link.setAddress("'Target Sheet'!A1");
+        cell.setHyperlink(link);
+        cell.setCellStyle(hlink_style);
+
+        FileOutputStream out = new FileOutputStream("hssf-links.xls");
+        wb.write(out);
+        out.close();
+    }
+}
index 8d3fcf8224e3a90c6b5f686c7601d298147ff3c8..101eceda7bb1b6058557b72cc5b2aa93892d066f 100755 (executable)
-/* ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.util.Calendar;\r
-import java.io.FileOutputStream;\r
-import java.text.SimpleDateFormat;\r
-\r
-/**\r
- * A business plan demo\r
- * Usage:\r
- *  BusinessPlan -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class BusinessPlan {\r
-\r
-    private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");\r
-\r
-    private static final String[] titles = {\r
-            "ID", "Project Name", "Owner", "Days", "Start", "End"};\r
-\r
-    //sample data to fill the sheet.\r
-    private static final String[][] data = {\r
-            {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null,\r
-                "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},\r
-            null,\r
-            {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null,\r
-                "x", "x", null, null,  null, null, null, null, null, null, null},\r
-            {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null,\r
-                    "x", null, null, null,  null, null, null, null, null, null, null},\r
-            {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null,\r
-                "x", "x", null, null,  null, null, null, null, null, null, null},\r
-            {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null,\r
-                "x", "x", null, null,  null, null, null, null, null, null, null},\r
-            null,\r
-            {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null,\r
-                null, "x", "x", "x",  "x", null, null, null, null, null, null},\r
-            {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null,\r
-                null, "x", null, null,  null, null, null, null, null, null, null},\r
-            {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null,\r
-                null, "x", "x", null,  null, null, null, null, null, null, null},\r
-            {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null,\r
-                null, null, "x", "x",  null, null, null, null, null, null, null},\r
-            {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null,\r
-                null, null, null, "x",  "x", null, null, null, null, null, null},\r
-            {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null,\r
-                null, null, null, null,  "x", null, null, null, null, null, null},\r
-            null,\r
-            {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null,\r
-                null, null, null, null,  "x", "x", "x", "x", "x", "x", "x"},\r
-            {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null,\r
-                null, null, null, null,  "x", null, null, null, null, null, null},\r
-            {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null,\r
-                null, null, null, null,  "x", "x", null, null, null, null, null},\r
-            {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null,\r
-                null, null, null, null,  null, "x", null, null, null, null, null},\r
-    };\r
-\r
-    public static void main(String[] args) throws Exception {\r
-        Workbook wb;\r
-\r
-        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
-        else wb = new XSSFWorkbook();\r
-\r
-        Map<String, CellStyle> styles = createStyles(wb);\r
-\r
-        Sheet sheet = wb.createSheet("Business Plan");\r
-\r
-        //turn off gridlines\r
-        sheet.setDisplayGridlines(false);\r
-        sheet.setPrintGridlines(false);\r
-        sheet.setFitToPage(true);\r
-        sheet.setHorizontallyCenter(true);\r
-        PrintSetup printSetup = sheet.getPrintSetup();\r
-        printSetup.setLandscape(true);\r
-\r
-        //the following three statements are required only for HSSF\r
-        sheet.setAutobreaks(true);\r
-        printSetup.setFitHeight((short)1);\r
-        printSetup.setFitWidth((short)1);\r
-\r
-        //the header row: centered text in 48pt font\r
-        Row headerRow = sheet.createRow(0);\r
-        headerRow.setHeightInPoints(12.75f);\r
-        for (int i = 0; i < titles.length; i++) {\r
-            Cell cell = headerRow.createCell(i);\r
-            cell.setCellValue(titles[i]);\r
-            cell.setCellStyle(styles.get("header"));\r
-        }\r
-        //columns for 11 weeks starting from 9-Jul\r
-        Calendar calendar = Calendar.getInstance();\r
-        int year = calendar.get(Calendar.YEAR);\r
-\r
-        calendar.setTime(fmt.parse("9-Jul"));\r
-        calendar.set(Calendar.YEAR, year);\r
-        for (int i = 0; i < 11; i++) {\r
-            Cell cell = headerRow.createCell(titles.length + i);\r
-            cell.setCellValue(calendar);\r
-            cell.setCellStyle(styles.get("header_date"));\r
-            calendar.roll(Calendar.WEEK_OF_YEAR, true);\r
-        }\r
-        //freeze the first row\r
-        sheet.createFreezePane(0, 1);\r
-\r
-        Row row;\r
-        Cell cell;\r
-        int rownum = 1;\r
-        for (int i = 0; i < data.length; i++, rownum++) {\r
-            row = sheet.createRow(rownum);\r
-            if(data[i] == null) continue;\r
-\r
-            for (int j = 0; j < data[i].length; j++) {\r
-                cell = row.createCell(j);\r
-                String styleName;\r
-                boolean isHeader = i == 0 || data[i-1] == null;\r
-                switch(j){\r
-                    case 0:\r
-                        if(isHeader) {\r
-                            styleName = "cell_b";\r
-                            cell.setCellValue(Double.parseDouble(data[i][j]));\r
-                        } else {\r
-                            styleName = "cell_normal";\r
-                            cell.setCellValue(data[i][j]);\r
-                        }\r
-                        break;\r
-                    case 1:\r
-                        if(isHeader) {\r
-                            styleName = i == 0 ? "cell_h" : "cell_bb";\r
-                        } else {\r
-                            styleName = "cell_indented";\r
-                        }\r
-                        cell.setCellValue(data[i][j]);\r
-                        break;\r
-                    case 2:\r
-                        styleName = isHeader ? "cell_b" : "cell_normal";\r
-                        cell.setCellValue(data[i][j]);\r
-                        break;\r
-                    case 3:\r
-                        styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";\r
-                        cell.setCellValue(Integer.parseInt(data[i][j]));\r
-                        break;\r
-                    case 4: {\r
-                        calendar.setTime(fmt.parse(data[i][j]));\r
-                        calendar.set(Calendar.YEAR, year);\r
-                        cell.setCellValue(calendar);\r
-                        styleName = isHeader ? "cell_b_date" : "cell_normal_date";\r
-                        break;\r
-                    }\r
-                    case 5: {\r
-                        int r = rownum + 1;\r
-                        String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";\r
-                        cell.setCellFormula(fmla);\r
-                        styleName = isHeader ? "cell_bg" : "cell_g";\r
-                        break;\r
-                    }\r
-                    default:\r
-                        styleName = data[i][j] != null ? "cell_blue" : "cell_normal";\r
-                }\r
-\r
-                cell.setCellStyle(styles.get(styleName));\r
-            }\r
-        }\r
-\r
-        //group rows for each phase, row numbers are 0-based\r
-        sheet.groupRow(4, 6);\r
-        sheet.groupRow(9, 13);\r
-        sheet.groupRow(16, 18);\r
-\r
-        //set column widths, the width is measured in units of 1/256th of a character width\r
-        sheet.setColumnWidth(0, 256*6);\r
-        sheet.setColumnWidth(1, 256*33);\r
-        sheet.setColumnWidth(2, 256*20);\r
-        sheet.setZoom(3, 4);\r
-\r
-\r
-        // Write the output to a file\r
-        String file = "businessplan.xls";\r
-        if(wb instanceof XSSFWorkbook) file += "x";\r
-        FileOutputStream out = new FileOutputStream(file);\r
-        wb.write(out);\r
-        out.close();\r
-    }\r
-\r
-    /**\r
-     * create a library of cell styles\r
-     */\r
-    private static Map<String, CellStyle> createStyles(Workbook wb){\r
-        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-        DataFormat df = wb.createDataFormat();\r
-\r
-        CellStyle style;\r
-        Font headerFont = wb.createFont();\r
-        headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setFont(headerFont);\r
-        styles.put("header", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setFont(headerFont);\r
-        style.setDataFormat(df.getFormat("d-mmm"));\r
-        styles.put("header_date", style);\r
-\r
-        Font font1 = wb.createFont();\r
-        font1.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setFont(font1);\r
-        styles.put("cell_b", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setFont(font1);\r
-        styles.put("cell_b_centered", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(font1);\r
-        style.setDataFormat(df.getFormat("d-mmm"));\r
-        styles.put("cell_b_date", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(font1);\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setDataFormat(df.getFormat("d-mmm"));\r
-        styles.put("cell_g", style);\r
-\r
-        Font font2 = wb.createFont();\r
-        font2.setColor(IndexedColors.BLUE.getIndex());\r
-        font2.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setFont(font2);\r
-        styles.put("cell_bb", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(font1);\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setDataFormat(df.getFormat("d-mmm"));\r
-        styles.put("cell_bg", style);\r
-\r
-        Font font3 = wb.createFont();\r
-        font3.setFontHeightInPoints((short)14);\r
-        font3.setColor(IndexedColors.DARK_BLUE.getIndex());\r
-        font3.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setFont(font3);\r
-        style.setWrapText(true);\r
-        styles.put("cell_h", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setWrapText(true);\r
-        styles.put("cell_normal", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setWrapText(true);\r
-        styles.put("cell_normal_centered", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setWrapText(true);\r
-        style.setDataFormat(df.getFormat("d-mmm"));\r
-        styles.put("cell_normal_date", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setIndention((short)1);\r
-        style.setWrapText(true);\r
-        styles.put("cell_indented", style);\r
-\r
-        style = createBorderedStyle(wb);\r
-        style.setFillForegroundColor(IndexedColors.BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        styles.put("cell_blue", style);\r
-\r
-        return styles;\r
-    }\r
-\r
-    private static CellStyle createBorderedStyle(Workbook wb){\r
-        CellStyle style = wb.createCellStyle();\r
-        style.setBorderRight(CellStyle.BORDER_THIN);\r
-        style.setRightBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_THIN);\r
-        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_THIN);\r
-        style.setTopBorderColor(IndexedColors.BLACK.getIndex());\r
-        return style;\r
-    }\r
-}\r
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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 org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.util.Calendar;
+import java.io.FileOutputStream;
+import java.text.SimpleDateFormat;
+
+/**
+ * A business plan demo
+ * Usage:
+ *  BusinessPlan -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class BusinessPlan {
+
+    private static SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM");
+
+    private static final String[] titles = {
+            "ID", "Project Name", "Owner", "Days", "Start", "End"};
+
+    //sample data to fill the sheet.
+    private static final String[][] data = {
+            {"1.0", "Marketing Research Tactical Plan", "J. Dow", "70", "9-Jul", null,
+                "x", "x", "x", "x", "x", "x", "x", "x", "x", "x", "x"},
+            null,
+            {"1.1", "Scope Definition Phase", "J. Dow", "10", "9-Jul", null,
+                "x", "x", null, null,  null, null, null, null, null, null, null},
+            {"1.1.1", "Define research objectives", "J. Dow", "3", "9-Jul", null,
+                    "x", null, null, null,  null, null, null, null, null, null, null},
+            {"1.1.2", "Define research requirements", "S. Jones", "7", "10-Jul", null,
+                "x", "x", null, null,  null, null, null, null, null, null, null},
+            {"1.1.3", "Determine in-house resource or hire vendor", "J. Dow", "2", "15-Jul", null,
+                "x", "x", null, null,  null, null, null, null, null, null, null},
+            null,
+            {"1.2", "Vendor Selection Phase", "J. Dow", "19", "19-Jul", null,
+                null, "x", "x", "x",  "x", null, null, null, null, null, null},
+            {"1.2.1", "Define vendor selection criteria", "J. Dow", "3", "19-Jul", null,
+                null, "x", null, null,  null, null, null, null, null, null, null},
+            {"1.2.2", "Develop vendor selection questionnaire", "S. Jones, T. Wates", "2", "22-Jul", null,
+                null, "x", "x", null,  null, null, null, null, null, null, null},
+            {"1.2.3", "Develop Statement of Work", "S. Jones", "4", "26-Jul", null,
+                null, null, "x", "x",  null, null, null, null, null, null, null},
+            {"1.2.4", "Evaluate proposal", "J. Dow, S. Jones", "4", "2-Aug", null,
+                null, null, null, "x",  "x", null, null, null, null, null, null},
+            {"1.2.5", "Select vendor", "J. Dow", "1", "6-Aug", null,
+                null, null, null, null,  "x", null, null, null, null, null, null},
+            null,
+            {"1.3", "Research Phase", "G. Lee", "47", "9-Aug", null,
+                null, null, null, null,  "x", "x", "x", "x", "x", "x", "x"},
+            {"1.3.1", "Develop market research information needs questionnaire", "G. Lee", "2", "9-Aug", null,
+                null, null, null, null,  "x", null, null, null, null, null, null},
+            {"1.3.2", "Interview marketing group for market research needs", "G. Lee", "2", "11-Aug", null,
+                null, null, null, null,  "x", "x", null, null, null, null, null},
+            {"1.3.3", "Document information needs", "G. Lee, S. Jones", "1", "13-Aug", null,
+                null, null, null, null,  null, "x", null, null, null, null, null},
+    };
+
+    public static void main(String[] args) throws Exception {
+        Workbook wb;
+
+        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+        else wb = new XSSFWorkbook();
+
+        Map<String, CellStyle> styles = createStyles(wb);
+
+        Sheet sheet = wb.createSheet("Business Plan");
+
+        //turn off gridlines
+        sheet.setDisplayGridlines(false);
+        sheet.setPrintGridlines(false);
+        sheet.setFitToPage(true);
+        sheet.setHorizontallyCenter(true);
+        PrintSetup printSetup = sheet.getPrintSetup();
+        printSetup.setLandscape(true);
+
+        //the following three statements are required only for HSSF
+        sheet.setAutobreaks(true);
+        printSetup.setFitHeight((short)1);
+        printSetup.setFitWidth((short)1);
+
+        //the header row: centered text in 48pt font
+        Row headerRow = sheet.createRow(0);
+        headerRow.setHeightInPoints(12.75f);
+        for (int i = 0; i < titles.length; i++) {
+            Cell cell = headerRow.createCell(i);
+            cell.setCellValue(titles[i]);
+            cell.setCellStyle(styles.get("header"));
+        }
+        //columns for 11 weeks starting from 9-Jul
+        Calendar calendar = Calendar.getInstance();
+        int year = calendar.get(Calendar.YEAR);
+
+        calendar.setTime(fmt.parse("9-Jul"));
+        calendar.set(Calendar.YEAR, year);
+        for (int i = 0; i < 11; i++) {
+            Cell cell = headerRow.createCell(titles.length + i);
+            cell.setCellValue(calendar);
+            cell.setCellStyle(styles.get("header_date"));
+            calendar.roll(Calendar.WEEK_OF_YEAR, true);
+        }
+        //freeze the first row
+        sheet.createFreezePane(0, 1);
+
+        Row row;
+        Cell cell;
+        int rownum = 1;
+        for (int i = 0; i < data.length; i++, rownum++) {
+            row = sheet.createRow(rownum);
+            if(data[i] == null) continue;
+
+            for (int j = 0; j < data[i].length; j++) {
+                cell = row.createCell(j);
+                String styleName;
+                boolean isHeader = i == 0 || data[i-1] == null;
+                switch(j){
+                    case 0:
+                        if(isHeader) {
+                            styleName = "cell_b";
+                            cell.setCellValue(Double.parseDouble(data[i][j]));
+                        } else {
+                            styleName = "cell_normal";
+                            cell.setCellValue(data[i][j]);
+                        }
+                        break;
+                    case 1:
+                        if(isHeader) {
+                            styleName = i == 0 ? "cell_h" : "cell_bb";
+                        } else {
+                            styleName = "cell_indented";
+                        }
+                        cell.setCellValue(data[i][j]);
+                        break;
+                    case 2:
+                        styleName = isHeader ? "cell_b" : "cell_normal";
+                        cell.setCellValue(data[i][j]);
+                        break;
+                    case 3:
+                        styleName = isHeader ? "cell_b_centered" : "cell_normal_centered";
+                        cell.setCellValue(Integer.parseInt(data[i][j]));
+                        break;
+                    case 4: {
+                        calendar.setTime(fmt.parse(data[i][j]));
+                        calendar.set(Calendar.YEAR, year);
+                        cell.setCellValue(calendar);
+                        styleName = isHeader ? "cell_b_date" : "cell_normal_date";
+                        break;
+                    }
+                    case 5: {
+                        int r = rownum + 1;
+                        String fmla = "IF(AND(D"+r+",E"+r+"),E"+r+"+D"+r+",\"\")";
+                        cell.setCellFormula(fmla);
+                        styleName = isHeader ? "cell_bg" : "cell_g";
+                        break;
+                    }
+                    default:
+                        styleName = data[i][j] != null ? "cell_blue" : "cell_normal";
+                }
+
+                cell.setCellStyle(styles.get(styleName));
+            }
+        }
+
+        //group rows for each phase, row numbers are 0-based
+        sheet.groupRow(4, 6);
+        sheet.groupRow(9, 13);
+        sheet.groupRow(16, 18);
+
+        //set column widths, the width is measured in units of 1/256th of a character width
+        sheet.setColumnWidth(0, 256*6);
+        sheet.setColumnWidth(1, 256*33);
+        sheet.setColumnWidth(2, 256*20);
+        sheet.setZoom(3, 4);
+
+
+        // Write the output to a file
+        String file = "businessplan.xls";
+        if(wb instanceof XSSFWorkbook) file += "x";
+        FileOutputStream out = new FileOutputStream(file);
+        wb.write(out);
+        out.close();
+    }
+
+    /**
+     * create a library of cell styles
+     */
+    private static Map<String, CellStyle> createStyles(Workbook wb){
+        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+        DataFormat df = wb.createDataFormat();
+
+        CellStyle style;
+        Font headerFont = wb.createFont();
+        headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setFont(headerFont);
+        styles.put("header", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setFont(headerFont);
+        style.setDataFormat(df.getFormat("d-mmm"));
+        styles.put("header_date", style);
+
+        Font font1 = wb.createFont();
+        font1.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setFont(font1);
+        styles.put("cell_b", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setFont(font1);
+        styles.put("cell_b_centered", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(font1);
+        style.setDataFormat(df.getFormat("d-mmm"));
+        styles.put("cell_b_date", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(font1);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setDataFormat(df.getFormat("d-mmm"));
+        styles.put("cell_g", style);
+
+        Font font2 = wb.createFont();
+        font2.setColor(IndexedColors.BLUE.getIndex());
+        font2.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setFont(font2);
+        styles.put("cell_bb", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(font1);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setDataFormat(df.getFormat("d-mmm"));
+        styles.put("cell_bg", style);
+
+        Font font3 = wb.createFont();
+        font3.setFontHeightInPoints((short)14);
+        font3.setColor(IndexedColors.DARK_BLUE.getIndex());
+        font3.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setFont(font3);
+        style.setWrapText(true);
+        styles.put("cell_h", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setWrapText(true);
+        styles.put("cell_normal", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setWrapText(true);
+        styles.put("cell_normal_centered", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setWrapText(true);
+        style.setDataFormat(df.getFormat("d-mmm"));
+        styles.put("cell_normal_date", style);
+
+        style = createBorderedStyle(wb);
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setIndention((short)1);
+        style.setWrapText(true);
+        styles.put("cell_indented", style);
+
+        style = createBorderedStyle(wb);
+        style.setFillForegroundColor(IndexedColors.BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        styles.put("cell_blue", style);
+
+        return styles;
+    }
+
+    private static CellStyle createBorderedStyle(Workbook wb){
+        CellStyle style = wb.createCellStyle();
+        style.setBorderRight(CellStyle.BORDER_THIN);
+        style.setRightBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_THIN);
+        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderTop(CellStyle.BORDER_THIN);
+        style.setTopBorderColor(IndexedColors.BLACK.getIndex());
+        return style;
+    }
+}
index 5cdf79484129e51e7f2f8f428d21af51021ca84a..bb120861f6ddcf4875c1da428a921f9580802ca8 100755 (executable)
-/* ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.ss.usermodel.Font;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.io.FileOutputStream;\r
-import java.util.Calendar;\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-\r
-/**\r
- * A  monthly calendar created using Apache POI. Each month is on a separate sheet.\r
- * <pre>\r
- * Usage:\r
- * CalendarDemo -xls|xlsx <year>\r
- * </pre>\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class CalendarDemo {\r
-\r
-    private static final String[] days = {\r
-            "Sunday", "Monday", "Tuesday",\r
-            "Wednesday", "Thursday", "Friday", "Saturday"};\r
-\r
-    private static final String[]  months = {\r
-            "January", "February", "March","April", "May", "June","July", "August",\r
-            "September","October", "November", "December"};\r
-\r
-    public static void main(String[] args) throws Exception {\r
-\r
-        Calendar calendar = Calendar.getInstance();\r
-        boolean xlsx = true;\r
-        for (int i = 0; i < args.length; i++) {\r
-            if(args[i].charAt(0) == '-'){\r
-                xlsx = args[i].equals("-xlsx");\r
-            } else {\r
-              calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));\r
-            }\r
-        }\r
-        int year = calendar.get(Calendar.YEAR);\r
-\r
-        Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();\r
-\r
-        Map<String, CellStyle> styles = createStyles(wb);\r
-\r
-        for (int month = 0; month < 12; month++) {\r
-            calendar.set(Calendar.MONTH, month);\r
-            calendar.set(Calendar.DAY_OF_MONTH, 1);\r
-            //create a sheet for each month\r
-            Sheet sheet = wb.createSheet(months[month]);\r
-\r
-            //turn off gridlines\r
-            sheet.setDisplayGridlines(false);\r
-            sheet.setPrintGridlines(false);\r
-            sheet.setFitToPage(true);\r
-            sheet.setHorizontallyCenter(true);\r
-            PrintSetup printSetup = sheet.getPrintSetup();\r
-            printSetup.setLandscape(true);\r
-\r
-            //the following three statements are required only for HSSF\r
-            sheet.setAutobreaks(true);\r
-            printSetup.setFitHeight((short)1);\r
-            printSetup.setFitWidth((short)1);\r
-\r
-            //the header row: centered text in 48pt font\r
-            Row headerRow = sheet.createRow(0);\r
-            headerRow.setHeightInPoints(80);\r
-            Cell titleCell = headerRow.createCell(0);\r
-            titleCell.setCellValue(months[month] + " " + year);\r
-            titleCell.setCellStyle(styles.get("title"));\r
-            sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));\r
-\r
-            //header with month titles\r
-            Row monthRow = sheet.createRow(1);\r
-            for (int i = 0; i < days.length; i++) {\r
-                //set column widths, the width is measured in units of 1/256th of a character width\r
-                sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide\r
-                sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide\r
-                sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));\r
-                Cell monthCell = monthRow.createCell(i*2);\r
-                monthCell.setCellValue(days[i]);\r
-                monthCell.setCellStyle(styles.get("month"));\r
-            }\r
-\r
-            int cnt = 1, day=1;\r
-            int rownum = 2;\r
-            for (int j = 0; j < 6; j++) {\r
-                Row row = sheet.createRow(rownum++);\r
-                row.setHeightInPoints(100);\r
-                for (int i = 0; i < days.length; i++) {\r
-                    Cell dayCell_1 = row.createCell(i*2);\r
-                    Cell dayCell_2 = row.createCell(i*2 + 1);\r
-\r
-                    int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);\r
-                    if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) {\r
-                        dayCell_1.setCellValue(day);\r
-                        calendar.set(Calendar.DAY_OF_MONTH, ++day);\r
-\r
-                        if(i == 0 || i == days.length-1) {\r
-                            dayCell_1.setCellStyle(styles.get("weekend_left"));\r
-                            dayCell_2.setCellStyle(styles.get("weekend_right"));\r
-                        } else {\r
-                            dayCell_1.setCellStyle(styles.get("workday_left"));\r
-                            dayCell_2.setCellStyle(styles.get("workday_right"));\r
-                        }\r
-                    } else {\r
-                        dayCell_1.setCellStyle(styles.get("grey_left"));\r
-                        dayCell_2.setCellStyle(styles.get("grey_right"));\r
-                    }\r
-                    cnt++;\r
-                }\r
-                if(calendar.get(Calendar.MONTH) > month) break;\r
-            }\r
-        }\r
-\r
-        // Write the output to a file\r
-        String file = "calendar.xls";\r
-        if(wb instanceof XSSFWorkbook) file += "x";\r
-        FileOutputStream out = new FileOutputStream(file);\r
-        wb.write(out);\r
-        out.close();\r
-    }\r
-\r
-    /**\r
-     * cell styles used for formatting calendar sheets\r
-     */\r
-    private static Map<String, CellStyle> createStyles(Workbook wb){\r
-        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-\r
-        short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();\r
-\r
-        CellStyle style;\r
-        Font titleFont = wb.createFont();\r
-        titleFont.setFontHeightInPoints((short)48);\r
-        titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFont(titleFont);\r
-        styles.put("title", style);\r
-\r
-        Font monthFont = wb.createFont();\r
-        monthFont.setFontHeightInPoints((short)12);\r
-        monthFont.setColor(IndexedColors.WHITE.getIndex());\r
-        monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setFont(monthFont);\r
-        styles.put("month", style);\r
-\r
-        Font dayFont = wb.createFont();\r
-        dayFont.setFontHeightInPoints((short)14);\r
-        dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
-        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setBorderLeft(CellStyle.BORDER_THIN);\r
-        style.setLeftBorderColor(borderColor);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        style.setFont(dayFont);\r
-        styles.put("weekend_left", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
-        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setBorderRight(CellStyle.BORDER_THIN);\r
-        style.setRightBorderColor(borderColor);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        styles.put("weekend_right", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
-        style.setBorderLeft(CellStyle.BORDER_THIN);\r
-        style.setFillForegroundColor(IndexedColors.WHITE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setLeftBorderColor(borderColor);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        style.setFont(dayFont);\r
-        styles.put("workday_left", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);\r
-        style.setFillForegroundColor(IndexedColors.WHITE.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setBorderRight(CellStyle.BORDER_THIN);\r
-        style.setRightBorderColor(borderColor);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        styles.put("workday_right", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setBorderLeft(CellStyle.BORDER_THIN);\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        styles.put("grey_left", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setBorderRight(CellStyle.BORDER_THIN);\r
-        style.setRightBorderColor(borderColor);\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(borderColor);\r
-        styles.put("grey_right", style);\r
-\r
-        return styles;\r
-    }\r
-}\r
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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 org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.usermodel.Font;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.io.FileOutputStream;
+import java.util.Calendar;
+import java.util.Map;
+import java.util.HashMap;
+
+/**
+ * A  monthly calendar created using Apache POI. Each month is on a separate sheet.
+ * <pre>
+ * Usage:
+ * CalendarDemo -xls|xlsx <year>
+ * </pre>
+ *
+ * @author Yegor Kozlov
+ */
+public class CalendarDemo {
+
+    private static final String[] days = {
+            "Sunday", "Monday", "Tuesday",
+            "Wednesday", "Thursday", "Friday", "Saturday"};
+
+    private static final String[]  months = {
+            "January", "February", "March","April", "May", "June","July", "August",
+            "September","October", "November", "December"};
+
+    public static void main(String[] args) throws Exception {
+
+        Calendar calendar = Calendar.getInstance();
+        boolean xlsx = true;
+        for (int i = 0; i < args.length; i++) {
+            if(args[i].charAt(0) == '-'){
+                xlsx = args[i].equals("-xlsx");
+            } else {
+              calendar.set(Calendar.YEAR, Integer.parseInt(args[i]));
+            }
+        }
+        int year = calendar.get(Calendar.YEAR);
+
+        Workbook wb = xlsx ? new XSSFWorkbook() : new HSSFWorkbook();
+
+        Map<String, CellStyle> styles = createStyles(wb);
+
+        for (int month = 0; month < 12; month++) {
+            calendar.set(Calendar.MONTH, month);
+            calendar.set(Calendar.DAY_OF_MONTH, 1);
+            //create a sheet for each month
+            Sheet sheet = wb.createSheet(months[month]);
+
+            //turn off gridlines
+            sheet.setDisplayGridlines(false);
+            sheet.setPrintGridlines(false);
+            sheet.setFitToPage(true);
+            sheet.setHorizontallyCenter(true);
+            PrintSetup printSetup = sheet.getPrintSetup();
+            printSetup.setLandscape(true);
+
+            //the following three statements are required only for HSSF
+            sheet.setAutobreaks(true);
+            printSetup.setFitHeight((short)1);
+            printSetup.setFitWidth((short)1);
+
+            //the header row: centered text in 48pt font
+            Row headerRow = sheet.createRow(0);
+            headerRow.setHeightInPoints(80);
+            Cell titleCell = headerRow.createCell(0);
+            titleCell.setCellValue(months[month] + " " + year);
+            titleCell.setCellStyle(styles.get("title"));
+            sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$N$1"));
+
+            //header with month titles
+            Row monthRow = sheet.createRow(1);
+            for (int i = 0; i < days.length; i++) {
+                //set column widths, the width is measured in units of 1/256th of a character width
+                sheet.setColumnWidth(i*2, 5*256); //the column is 5 characters wide
+                sheet.setColumnWidth(i*2 + 1, 13*256); //the column is 13 characters wide
+                sheet.addMergedRegion(new CellRangeAddress(1, 1, i*2, i*2+1));
+                Cell monthCell = monthRow.createCell(i*2);
+                monthCell.setCellValue(days[i]);
+                monthCell.setCellStyle(styles.get("month"));
+            }
+
+            int cnt = 1, day=1;
+            int rownum = 2;
+            for (int j = 0; j < 6; j++) {
+                Row row = sheet.createRow(rownum++);
+                row.setHeightInPoints(100);
+                for (int i = 0; i < days.length; i++) {
+                    Cell dayCell_1 = row.createCell(i*2);
+                    Cell dayCell_2 = row.createCell(i*2 + 1);
+
+                    int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);
+                    if(cnt >= day_of_week && calendar.get(Calendar.MONTH) == month) {
+                        dayCell_1.setCellValue(day);
+                        calendar.set(Calendar.DAY_OF_MONTH, ++day);
+
+                        if(i == 0 || i == days.length-1) {
+                            dayCell_1.setCellStyle(styles.get("weekend_left"));
+                            dayCell_2.setCellStyle(styles.get("weekend_right"));
+                        } else {
+                            dayCell_1.setCellStyle(styles.get("workday_left"));
+                            dayCell_2.setCellStyle(styles.get("workday_right"));
+                        }
+                    } else {
+                        dayCell_1.setCellStyle(styles.get("grey_left"));
+                        dayCell_2.setCellStyle(styles.get("grey_right"));
+                    }
+                    cnt++;
+                }
+                if(calendar.get(Calendar.MONTH) > month) break;
+            }
+        }
+
+        // Write the output to a file
+        String file = "calendar.xls";
+        if(wb instanceof XSSFWorkbook) file += "x";
+        FileOutputStream out = new FileOutputStream(file);
+        wb.write(out);
+        out.close();
+    }
+
+    /**
+     * cell styles used for formatting calendar sheets
+     */
+    private static Map<String, CellStyle> createStyles(Workbook wb){
+        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+
+        short borderColor = IndexedColors.GREY_50_PERCENT.getIndex();
+
+        CellStyle style;
+        Font titleFont = wb.createFont();
+        titleFont.setFontHeightInPoints((short)48);
+        titleFont.setColor(IndexedColors.DARK_BLUE.getIndex());
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFont(titleFont);
+        styles.put("title", style);
+
+        Font monthFont = wb.createFont();
+        monthFont.setFontHeightInPoints((short)12);
+        monthFont.setColor(IndexedColors.WHITE.getIndex());
+        monthFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFillForegroundColor(IndexedColors.DARK_BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setFont(monthFont);
+        styles.put("month", style);
+
+        Font dayFont = wb.createFont();
+        dayFont.setFontHeightInPoints((short)14);
+        dayFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setBorderLeft(CellStyle.BORDER_THIN);
+        style.setLeftBorderColor(borderColor);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        style.setFont(dayFont);
+        styles.put("weekend_left", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+        style.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setBorderRight(CellStyle.BORDER_THIN);
+        style.setRightBorderColor(borderColor);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        styles.put("weekend_right", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+        style.setBorderLeft(CellStyle.BORDER_THIN);
+        style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setLeftBorderColor(borderColor);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        style.setFont(dayFont);
+        styles.put("workday_left", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_TOP);
+        style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setBorderRight(CellStyle.BORDER_THIN);
+        style.setRightBorderColor(borderColor);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        styles.put("workday_right", style);
+
+        style = wb.createCellStyle();
+        style.setBorderLeft(CellStyle.BORDER_THIN);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        styles.put("grey_left", style);
+
+        style = wb.createCellStyle();
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setBorderRight(CellStyle.BORDER_THIN);
+        style.setRightBorderColor(borderColor);
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(borderColor);
+        styles.put("grey_right", style);
+
+        return styles;
+    }
+}
index 3323c9e2d63797c34a93b62e1d127b42bed9f8f2..95984365897eb4ef24e06b27785ed06733e3a89f 100755 (executable)
-/* ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges.\r
- *\r
- * Usage:\r
- *   LoanCalculator -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class LoanCalculator {\r
-\r
-    public static void main(String[] args) throws Exception {\r
-        Workbook wb;\r
-\r
-        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
-        else wb = new XSSFWorkbook();\r
-\r
-        Map<String, CellStyle> styles = createStyles(wb);\r
-        Sheet sheet = wb.createSheet("Loan Calculator");\r
-        sheet.setPrintGridlines(false);\r
-        sheet.setDisplayGridlines(false);\r
-\r
-        PrintSetup printSetup = sheet.getPrintSetup();\r
-        printSetup.setLandscape(true);\r
-        sheet.setFitToPage(true);\r
-        sheet.setHorizontallyCenter(true);\r
-\r
-        sheet.setColumnWidth(0, 3*256);\r
-        sheet.setColumnWidth(1, 3*256);\r
-        sheet.setColumnWidth(2, 11*256);\r
-        sheet.setColumnWidth(3, 14*256);\r
-        sheet.setColumnWidth(4, 14*256);\r
-        sheet.setColumnWidth(5, 14*256);\r
-        sheet.setColumnWidth(6, 14*256);\r
-\r
-        createNames(wb);\r
-\r
-        Row titleRow = sheet.createRow(0);\r
-        titleRow.setHeightInPoints(35);\r
-        for (int i = 1; i <= 7; i++) {\r
-            titleRow.createCell(i).setCellStyle(styles.get("title"));\r
-        }\r
-        Cell titleCell = titleRow.getCell(2);\r
-        titleCell.setCellValue("Simple Loan Calculator");\r
-        sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));\r
-\r
-        Row row = sheet.createRow(2);\r
-        Cell cell = row.createCell(4);\r
-        cell.setCellValue("Enter values");\r
-        cell.setCellStyle(styles.get("item_right"));\r
-\r
-        row = sheet.createRow(3);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Loan amount");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellStyle(styles.get("input_$"));\r
-        cell.setAsActiveCell();\r
-\r
-        row = sheet.createRow(4);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Annual interest rate");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellStyle(styles.get("input_%"));\r
-\r
-        row = sheet.createRow(5);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Loan period in years");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellStyle(styles.get("input_i"));\r
-\r
-        row = sheet.createRow(6);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Start date of loan");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellStyle(styles.get("input_d"));\r
-\r
-        row = sheet.createRow(8);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Monthly payment");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");\r
-        cell.setCellStyle(styles.get("formula_$"));\r
-\r
-        row = sheet.createRow(9);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Number of payments");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");\r
-        cell.setCellStyle(styles.get("formula_i"));\r
-\r
-        row = sheet.createRow(10);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Total interest");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");\r
-        cell.setCellStyle(styles.get("formula_$"));\r
-\r
-        row = sheet.createRow(11);\r
-        cell = row.createCell(2);\r
-        cell.setCellValue("Total cost of loan");\r
-        cell.setCellStyle(styles.get("item_left"));\r
-        cell = row.createCell(4);\r
-        cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");\r
-        cell.setCellStyle(styles.get("formula_$"));\r
-\r
-\r
-        // Write the output to a file\r
-        String file = "loan-calculator.xls";\r
-        if(wb instanceof XSSFWorkbook) file += "x";\r
-        FileOutputStream out = new FileOutputStream(file);\r
-        wb.write(out);\r
-        out.close();\r
-    }\r
-\r
-    /**\r
-     * cell styles used for formatting calendar sheets\r
-     */\r
-    private static Map<String, CellStyle> createStyles(Workbook wb){\r
-        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-\r
-        CellStyle style;\r
-        Font titleFont = wb.createFont();\r
-        titleFont.setFontHeightInPoints((short)14);\r
-        titleFont.setFontName("Trebuchet MS");\r
-        style = wb.createCellStyle();\r
-        style.setFont(titleFont);\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        styles.put("title", style);\r
-\r
-        Font itemFont = wb.createFont();\r
-        itemFont.setFontHeightInPoints((short)9);\r
-        itemFont.setFontName("Trebuchet MS");\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_LEFT);\r
-        style.setFont(itemFont);\r
-        styles.put("item_left", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        styles.put("item_right", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        style.setBorderRight(CellStyle.BORDER_DOTTED);\r
-        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
-        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_DOTTED);\r
-        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"));\r
-        styles.put("input_$", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        style.setBorderRight(CellStyle.BORDER_DOTTED);\r
-        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
-        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_DOTTED);\r
-        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setDataFormat(wb.createDataFormat().getFormat("0.000%"));\r
-        styles.put("input_%", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        style.setBorderRight(CellStyle.BORDER_DOTTED);\r
-        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
-        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_DOTTED);\r
-        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setDataFormat(wb.createDataFormat().getFormat("0"));\r
-        styles.put("input_i", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setFont(itemFont);\r
-        style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));\r
-        styles.put("input_d", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        style.setBorderRight(CellStyle.BORDER_DOTTED);\r
-        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
-        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_DOTTED);\r
-        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        styles.put("formula_$", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_RIGHT);\r
-        style.setFont(itemFont);\r
-        style.setBorderRight(CellStyle.BORDER_DOTTED);\r
-        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_DOTTED);\r
-        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_DOTTED);\r
-        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setDataFormat(wb.createDataFormat().getFormat("0"));\r
-        style.setBorderBottom(CellStyle.BORDER_DOTTED);\r
-        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        styles.put("formula_i", style);\r
-\r
-        return styles;\r
-    }\r
-\r
-    //define named ranges for the inputs and formulas\r
-    public static void createNames(Workbook wb){\r
-        Name name;\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Interest_Rate");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$5");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Loan_Amount");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$4");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Loan_Start");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$7");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Loan_Years");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$6");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Number_of_Payments");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$10");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Monthly_Payment");\r
-        name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Total_Cost");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$12");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Total_Interest");\r
-        name.setRefersToFormula("'Loan Calculator'!$E$11");\r
-\r
-        name = wb.createName();\r
-        name.setNameName("Values_Entered");\r
-        name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");\r
-    }\r
-}\r
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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 org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.io.FileOutputStream;
+
+/**
+ * Simple Loan Calculator. Demonstrates advance usage of cell formulas and named ranges.
+ *
+ * Usage:
+ *   LoanCalculator -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class LoanCalculator {
+
+    public static void main(String[] args) throws Exception {
+        Workbook wb;
+
+        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+        else wb = new XSSFWorkbook();
+
+        Map<String, CellStyle> styles = createStyles(wb);
+        Sheet sheet = wb.createSheet("Loan Calculator");
+        sheet.setPrintGridlines(false);
+        sheet.setDisplayGridlines(false);
+
+        PrintSetup printSetup = sheet.getPrintSetup();
+        printSetup.setLandscape(true);
+        sheet.setFitToPage(true);
+        sheet.setHorizontallyCenter(true);
+
+        sheet.setColumnWidth(0, 3*256);
+        sheet.setColumnWidth(1, 3*256);
+        sheet.setColumnWidth(2, 11*256);
+        sheet.setColumnWidth(3, 14*256);
+        sheet.setColumnWidth(4, 14*256);
+        sheet.setColumnWidth(5, 14*256);
+        sheet.setColumnWidth(6, 14*256);
+
+        createNames(wb);
+
+        Row titleRow = sheet.createRow(0);
+        titleRow.setHeightInPoints(35);
+        for (int i = 1; i <= 7; i++) {
+            titleRow.createCell(i).setCellStyle(styles.get("title"));
+        }
+        Cell titleCell = titleRow.getCell(2);
+        titleCell.setCellValue("Simple Loan Calculator");
+        sheet.addMergedRegion(CellRangeAddress.valueOf("$C$1:$H$1"));
+
+        Row row = sheet.createRow(2);
+        Cell cell = row.createCell(4);
+        cell.setCellValue("Enter values");
+        cell.setCellStyle(styles.get("item_right"));
+
+        row = sheet.createRow(3);
+        cell = row.createCell(2);
+        cell.setCellValue("Loan amount");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellStyle(styles.get("input_$"));
+        cell.setAsActiveCell();
+
+        row = sheet.createRow(4);
+        cell = row.createCell(2);
+        cell.setCellValue("Annual interest rate");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellStyle(styles.get("input_%"));
+
+        row = sheet.createRow(5);
+        cell = row.createCell(2);
+        cell.setCellValue("Loan period in years");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellStyle(styles.get("input_i"));
+
+        row = sheet.createRow(6);
+        cell = row.createCell(2);
+        cell.setCellValue("Start date of loan");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellStyle(styles.get("input_d"));
+
+        row = sheet.createRow(8);
+        cell = row.createCell(2);
+        cell.setCellValue("Monthly payment");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellFormula("IF(Values_Entered,Monthly_Payment,\"\")");
+        cell.setCellStyle(styles.get("formula_$"));
+
+        row = sheet.createRow(9);
+        cell = row.createCell(2);
+        cell.setCellValue("Number of payments");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellFormula("IF(Values_Entered,Loan_Years*12,\"\")");
+        cell.setCellStyle(styles.get("formula_i"));
+
+        row = sheet.createRow(10);
+        cell = row.createCell(2);
+        cell.setCellValue("Total interest");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellFormula("IF(Values_Entered,Total_Cost-Loan_Amount,\"\")");
+        cell.setCellStyle(styles.get("formula_$"));
+
+        row = sheet.createRow(11);
+        cell = row.createCell(2);
+        cell.setCellValue("Total cost of loan");
+        cell.setCellStyle(styles.get("item_left"));
+        cell = row.createCell(4);
+        cell.setCellFormula("IF(Values_Entered,Monthly_Payment*Number_of_Payments,\"\")");
+        cell.setCellStyle(styles.get("formula_$"));
+
+
+        // Write the output to a file
+        String file = "loan-calculator.xls";
+        if(wb instanceof XSSFWorkbook) file += "x";
+        FileOutputStream out = new FileOutputStream(file);
+        wb.write(out);
+        out.close();
+    }
+
+    /**
+     * cell styles used for formatting calendar sheets
+     */
+    private static Map<String, CellStyle> createStyles(Workbook wb){
+        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+
+        CellStyle style;
+        Font titleFont = wb.createFont();
+        titleFont.setFontHeightInPoints((short)14);
+        titleFont.setFontName("Trebuchet MS");
+        style = wb.createCellStyle();
+        style.setFont(titleFont);
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        styles.put("title", style);
+
+        Font itemFont = wb.createFont();
+        itemFont.setFontHeightInPoints((short)9);
+        itemFont.setFontName("Trebuchet MS");
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_LEFT);
+        style.setFont(itemFont);
+        styles.put("item_left", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        styles.put("item_right", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        style.setBorderRight(CellStyle.BORDER_DOTTED);
+        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_DOTTED);
+        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderTop(CellStyle.BORDER_DOTTED);
+        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setDataFormat(wb.createDataFormat().getFormat("_($* #,##0.00_);_($* (#,##0.00);_($* \"-\"??_);_(@_)"));
+        styles.put("input_$", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        style.setBorderRight(CellStyle.BORDER_DOTTED);
+        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_DOTTED);
+        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderTop(CellStyle.BORDER_DOTTED);
+        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setDataFormat(wb.createDataFormat().getFormat("0.000%"));
+        styles.put("input_%", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        style.setBorderRight(CellStyle.BORDER_DOTTED);
+        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_DOTTED);
+        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderTop(CellStyle.BORDER_DOTTED);
+        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setDataFormat(wb.createDataFormat().getFormat("0"));
+        styles.put("input_i", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setFont(itemFont);
+        style.setDataFormat(wb.createDataFormat().getFormat("m/d/yy"));
+        styles.put("input_d", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        style.setBorderRight(CellStyle.BORDER_DOTTED);
+        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_DOTTED);
+        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderTop(CellStyle.BORDER_DOTTED);
+        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setDataFormat(wb.createDataFormat().getFormat("$##,##0.00"));
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        styles.put("formula_$", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_RIGHT);
+        style.setFont(itemFont);
+        style.setBorderRight(CellStyle.BORDER_DOTTED);
+        style.setRightBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_DOTTED);
+        style.setLeftBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setBorderTop(CellStyle.BORDER_DOTTED);
+        style.setTopBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setDataFormat(wb.createDataFormat().getFormat("0"));
+        style.setBorderBottom(CellStyle.BORDER_DOTTED);
+        style.setBottomBorderColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        styles.put("formula_i", style);
+
+        return styles;
+    }
+
+    //define named ranges for the inputs and formulas
+    public static void createNames(Workbook wb){
+        Name name;
+
+        name = wb.createName();
+        name.setNameName("Interest_Rate");
+        name.setRefersToFormula("'Loan Calculator'!$E$5");
+
+        name = wb.createName();
+        name.setNameName("Loan_Amount");
+        name.setRefersToFormula("'Loan Calculator'!$E$4");
+
+        name = wb.createName();
+        name.setNameName("Loan_Start");
+        name.setRefersToFormula("'Loan Calculator'!$E$7");
+
+        name = wb.createName();
+        name.setNameName("Loan_Years");
+        name.setRefersToFormula("'Loan Calculator'!$E$6");
+
+        name = wb.createName();
+        name.setNameName("Number_of_Payments");
+        name.setRefersToFormula("'Loan Calculator'!$E$10");
+
+        name = wb.createName();
+        name.setNameName("Monthly_Payment");
+        name.setRefersToFormula("-PMT(Interest_Rate/12,Number_of_Payments,Loan_Amount)");
+
+        name = wb.createName();
+        name.setNameName("Total_Cost");
+        name.setRefersToFormula("'Loan Calculator'!$E$12");
+
+        name = wb.createName();
+        name.setNameName("Total_Interest");
+        name.setRefersToFormula("'Loan Calculator'!$E$11");
+
+        name = wb.createName();
+        name.setNameName("Values_Entered");
+        name.setRefersToFormula("IF(Loan_Amount*Interest_Rate*Loan_Years*Loan_Start>0,1,0)");
+    }
+}
index aa036f6747d74c5462dc3d19eddb2c01aea0814c..8093f3c7ce4453b263803d3ecf62f029855cbcbe 100755 (executable)
-/* ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-==================================================================== */\r
-package org.apache.poi.ss.examples;\r
-\r
-import org.apache.poi.xssf.usermodel.*;\r
-import org.apache.poi.ss.util.CellRangeAddress;\r
-import org.apache.poi.ss.usermodel.*;\r
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;\r
-\r
-import java.util.Map;\r
-import java.util.HashMap;\r
-import java.io.FileOutputStream;\r
-\r
-/**\r
- * A weekly timesheet created using Apache POI.\r
- * Usage:\r
- *  TimesheetDemo -xls|xlsx\r
- *\r
- * @author Yegor Kozlov\r
- */\r
-public class TimesheetDemo {\r
-    private static final String[] titles = {\r
-            "Person",  "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",\r
-            "Total\nHrs", "Overtime\nHrs", "Regular\nHrs"\r
-    };\r
-\r
-    private static Object[][] sample_data = {\r
-            {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0},\r
-            {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},\r
-    };\r
-\r
-    public static void main(String[] args) throws Exception {\r
-        Workbook wb;\r
-\r
-        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();\r
-        else wb = new XSSFWorkbook();\r
-\r
-        Map<String, CellStyle> styles = createStyles(wb);\r
-\r
-        Sheet sheet = wb.createSheet("Timesheet");\r
-        PrintSetup printSetup = sheet.getPrintSetup();\r
-        printSetup.setLandscape(true);\r
-        sheet.setFitToPage(true);\r
-        sheet.setHorizontallyCenter(true);\r
-\r
-        //title row\r
-        Row titleRow = sheet.createRow(0);\r
-        titleRow.setHeightInPoints(45);\r
-        Cell titleCell = titleRow.createCell(0);\r
-        titleCell.setCellValue("Weekly Timesheet");\r
-        titleCell.setCellStyle(styles.get("title"));\r
-        sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));\r
-\r
-        //header row\r
-        Row headerRow = sheet.createRow(1);\r
-        headerRow.setHeightInPoints(40);\r
-        Cell headerCell;\r
-        for (int i = 0; i < titles.length; i++) {\r
-            headerCell = headerRow.createCell(i);\r
-            headerCell.setCellValue(titles[i]);\r
-            headerCell.setCellStyle(styles.get("header"));\r
-        }\r
-\r
-        int rownum = 2;\r
-        for (int i = 0; i < 10; i++) {\r
-            Row row = sheet.createRow(rownum++);\r
-            for (int j = 0; j < titles.length; j++) {\r
-                Cell cell = row.createCell(j);\r
-                if(j == 9){\r
-                    //the 10th cell contains sum over week days, e.g. SUM(C3:I3)\r
-                    String ref = "C" +rownum+ ":I" + rownum;\r
-                    cell.setCellFormula("SUM("+ref+")");\r
-                    cell.setCellStyle(styles.get("formula"));\r
-                } else if (j == 11){\r
-                    cell.setCellFormula("J" +rownum+ "-K" + rownum);\r
-                    cell.setCellStyle(styles.get("formula"));\r
-                } else {\r
-                    cell.setCellStyle(styles.get("cell"));\r
-                }\r
-            }\r
-        }\r
-\r
-        //row with totals below\r
-        Row sumRow = sheet.createRow(rownum++);\r
-        sumRow.setHeightInPoints(35);\r
-        Cell cell;\r
-        cell = sumRow.createCell(0);\r
-        cell.setCellStyle(styles.get("formula"));\r
-        cell = sumRow.createCell(1);\r
-        cell.setCellValue("Total Hrs:");\r
-        cell.setCellStyle(styles.get("formula"));\r
-\r
-        for (int j = 2; j < 12; j++) {\r
-            cell = sumRow.createCell(j);\r
-            String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";\r
-            cell.setCellFormula("SUM(" + ref + ")");\r
-            if(j >= 9) cell.setCellStyle(styles.get("formula_2"));\r
-            else cell.setCellStyle(styles.get("formula"));\r
-        }\r
-        rownum++;\r
-        sumRow = sheet.createRow(rownum++);\r
-        sumRow.setHeightInPoints(25);\r
-        cell = sumRow.createCell(0);\r
-        cell.setCellValue("Total Regular Hours");\r
-        cell.setCellStyle(styles.get("formula"));\r
-        cell = sumRow.createCell(1);\r
-        cell.setCellFormula("L13");\r
-        cell.setCellStyle(styles.get("formula_2"));\r
-        sumRow = sheet.createRow(rownum++);\r
-        sumRow.setHeightInPoints(25);\r
-        cell = sumRow.createCell(0);\r
-        cell.setCellValue("Total Overtime Hours");\r
-        cell.setCellStyle(styles.get("formula"));\r
-        cell = sumRow.createCell(1);\r
-        cell.setCellFormula("K13");\r
-        cell.setCellStyle(styles.get("formula_2"));\r
-\r
-        //set sample data\r
-        for (int i = 0; i < sample_data.length; i++) {\r
-            Row row = sheet.getRow(2 + i);\r
-            for (int j = 0; j < sample_data[i].length; j++) {\r
-                if(sample_data[i][j] == null) continue;\r
-\r
-                if(sample_data[i][j] instanceof String) {\r
-                    row.getCell(j).setCellValue((String)sample_data[i][j]);\r
-                } else {\r
-                    row.getCell(j).setCellValue((Double)sample_data[i][j]);\r
-                }\r
-            }\r
-        }\r
-\r
-        //finally set column widths, the width is measured in units of 1/256th of a character width\r
-        sheet.setColumnWidth(0, 30*256); //30 characters wide\r
-        for (int i = 2; i < 9; i++) {\r
-            sheet.setColumnWidth(i, 6*256);  //6 characters wide\r
-        }\r
-        sheet.setColumnWidth(10, 10*256); //10 characters wide\r
-\r
-        // Write the output to a file\r
-        String file = "timesheet.xls";\r
-        if(wb instanceof XSSFWorkbook) file += "x";\r
-        FileOutputStream out = new FileOutputStream(file);\r
-        wb.write(out);\r
-        out.close();\r
-    }\r
-\r
-    /**\r
-     * Create a library of cell styles\r
-     */\r
-    private static Map<String, CellStyle> createStyles(Workbook wb){\r
-        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();\r
-        CellStyle style;\r
-        Font titleFont = wb.createFont();\r
-        titleFont.setFontHeightInPoints((short)18);\r
-        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFont(titleFont);\r
-        styles.put("title", style);\r
-\r
-        Font monthFont = wb.createFont();\r
-        monthFont.setFontHeightInPoints((short)11);\r
-        monthFont.setColor(IndexedColors.WHITE.getIndex());\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setFont(monthFont);\r
-        style.setWrapText(true);\r
-        styles.put("header", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setWrapText(true);\r
-        style.setBorderRight(CellStyle.BORDER_THIN);\r
-        style.setRightBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderLeft(CellStyle.BORDER_THIN);\r
-        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderTop(CellStyle.BORDER_THIN);\r
-        style.setTopBorderColor(IndexedColors.BLACK.getIndex());\r
-        style.setBorderBottom(CellStyle.BORDER_THIN);\r
-        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());\r
-        styles.put("cell", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));\r
-        styles.put("formula", style);\r
-\r
-        style = wb.createCellStyle();\r
-        style.setAlignment(CellStyle.ALIGN_CENTER);\r
-        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);\r
-        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());\r
-        style.setFillPattern(CellStyle.SOLID_FOREGROUND);\r
-        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));\r
-        styles.put("formula_2", style);\r
-\r
-        return styles;\r
-    }\r
-}\r
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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 org.apache.poi.ss.examples;
+
+import org.apache.poi.xssf.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+
+import java.util.Map;
+import java.util.HashMap;
+import java.io.FileOutputStream;
+
+/**
+ * A weekly timesheet created using Apache POI.
+ * Usage:
+ *  TimesheetDemo -xls|xlsx
+ *
+ * @author Yegor Kozlov
+ */
+public class TimesheetDemo {
+    private static final String[] titles = {
+            "Person",  "ID", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun",
+            "Total\nHrs", "Overtime\nHrs", "Regular\nHrs"
+    };
+
+    private static Object[][] sample_data = {
+            {"Yegor Kozlov", "YK", 5.0, 8.0, 10.0, 5.0, 5.0, 7.0, 6.0},
+            {"Gisella Bronzetti", "GB", 4.0, 3.0, 1.0, 3.5, null, null, 4.0},
+    };
+
+    public static void main(String[] args) throws Exception {
+        Workbook wb;
+
+        if(args.length > 0 && args[0].equals("-xls")) wb = new HSSFWorkbook();
+        else wb = new XSSFWorkbook();
+
+        Map<String, CellStyle> styles = createStyles(wb);
+
+        Sheet sheet = wb.createSheet("Timesheet");
+        PrintSetup printSetup = sheet.getPrintSetup();
+        printSetup.setLandscape(true);
+        sheet.setFitToPage(true);
+        sheet.setHorizontallyCenter(true);
+
+        //title row
+        Row titleRow = sheet.createRow(0);
+        titleRow.setHeightInPoints(45);
+        Cell titleCell = titleRow.createCell(0);
+        titleCell.setCellValue("Weekly Timesheet");
+        titleCell.setCellStyle(styles.get("title"));
+        sheet.addMergedRegion(CellRangeAddress.valueOf("$A$1:$L$1"));
+
+        //header row
+        Row headerRow = sheet.createRow(1);
+        headerRow.setHeightInPoints(40);
+        Cell headerCell;
+        for (int i = 0; i < titles.length; i++) {
+            headerCell = headerRow.createCell(i);
+            headerCell.setCellValue(titles[i]);
+            headerCell.setCellStyle(styles.get("header"));
+        }
+
+        int rownum = 2;
+        for (int i = 0; i < 10; i++) {
+            Row row = sheet.createRow(rownum++);
+            for (int j = 0; j < titles.length; j++) {
+                Cell cell = row.createCell(j);
+                if(j == 9){
+                    //the 10th cell contains sum over week days, e.g. SUM(C3:I3)
+                    String ref = "C" +rownum+ ":I" + rownum;
+                    cell.setCellFormula("SUM("+ref+")");
+                    cell.setCellStyle(styles.get("formula"));
+                } else if (j == 11){
+                    cell.setCellFormula("J" +rownum+ "-K" + rownum);
+                    cell.setCellStyle(styles.get("formula"));
+                } else {
+                    cell.setCellStyle(styles.get("cell"));
+                }
+            }
+        }
+
+        //row with totals below
+        Row sumRow = sheet.createRow(rownum++);
+        sumRow.setHeightInPoints(35);
+        Cell cell;
+        cell = sumRow.createCell(0);
+        cell.setCellStyle(styles.get("formula"));
+        cell = sumRow.createCell(1);
+        cell.setCellValue("Total Hrs:");
+        cell.setCellStyle(styles.get("formula"));
+
+        for (int j = 2; j < 12; j++) {
+            cell = sumRow.createCell(j);
+            String ref = (char)('A' + j) + "3:" + (char)('A' + j) + "12";
+            cell.setCellFormula("SUM(" + ref + ")");
+            if(j >= 9) cell.setCellStyle(styles.get("formula_2"));
+            else cell.setCellStyle(styles.get("formula"));
+        }
+        rownum++;
+        sumRow = sheet.createRow(rownum++);
+        sumRow.setHeightInPoints(25);
+        cell = sumRow.createCell(0);
+        cell.setCellValue("Total Regular Hours");
+        cell.setCellStyle(styles.get("formula"));
+        cell = sumRow.createCell(1);
+        cell.setCellFormula("L13");
+        cell.setCellStyle(styles.get("formula_2"));
+        sumRow = sheet.createRow(rownum++);
+        sumRow.setHeightInPoints(25);
+        cell = sumRow.createCell(0);
+        cell.setCellValue("Total Overtime Hours");
+        cell.setCellStyle(styles.get("formula"));
+        cell = sumRow.createCell(1);
+        cell.setCellFormula("K13");
+        cell.setCellStyle(styles.get("formula_2"));
+
+        //set sample data
+        for (int i = 0; i < sample_data.length; i++) {
+            Row row = sheet.getRow(2 + i);
+            for (int j = 0; j < sample_data[i].length; j++) {
+                if(sample_data[i][j] == null) continue;
+
+                if(sample_data[i][j] instanceof String) {
+                    row.getCell(j).setCellValue((String)sample_data[i][j]);
+                } else {
+                    row.getCell(j).setCellValue((Double)sample_data[i][j]);
+                }
+            }
+        }
+
+        //finally set column widths, the width is measured in units of 1/256th of a character width
+        sheet.setColumnWidth(0, 30*256); //30 characters wide
+        for (int i = 2; i < 9; i++) {
+            sheet.setColumnWidth(i, 6*256);  //6 characters wide
+        }
+        sheet.setColumnWidth(10, 10*256); //10 characters wide
+
+        // Write the output to a file
+        String file = "timesheet.xls";
+        if(wb instanceof XSSFWorkbook) file += "x";
+        FileOutputStream out = new FileOutputStream(file);
+        wb.write(out);
+        out.close();
+    }
+
+    /**
+     * Create a library of cell styles
+     */
+    private static Map<String, CellStyle> createStyles(Workbook wb){
+        Map<String, CellStyle> styles = new HashMap<String, CellStyle>();
+        CellStyle style;
+        Font titleFont = wb.createFont();
+        titleFont.setFontHeightInPoints((short)18);
+        titleFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFont(titleFont);
+        styles.put("title", style);
+
+        Font monthFont = wb.createFont();
+        monthFont.setFontHeightInPoints((short)11);
+        monthFont.setColor(IndexedColors.WHITE.getIndex());
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFillForegroundColor(IndexedColors.GREY_50_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setFont(monthFont);
+        style.setWrapText(true);
+        styles.put("header", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setWrapText(true);
+        style.setBorderRight(CellStyle.BORDER_THIN);
+        style.setRightBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderLeft(CellStyle.BORDER_THIN);
+        style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderTop(CellStyle.BORDER_THIN);
+        style.setTopBorderColor(IndexedColors.BLACK.getIndex());
+        style.setBorderBottom(CellStyle.BORDER_THIN);
+        style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
+        styles.put("cell", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
+        styles.put("formula", style);
+
+        style = wb.createCellStyle();
+        style.setAlignment(CellStyle.ALIGN_CENTER);
+        style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);
+        style.setFillForegroundColor(IndexedColors.GREY_40_PERCENT.getIndex());
+        style.setFillPattern(CellStyle.SOLID_FOREGROUND);
+        style.setDataFormat(wb.createDataFormat().getFormat("0.00"));
+        styles.put("formula_2", style);
+
+        return styles;
+    }
+}
index 1af2f84ac716a2f1e67941e2fc4997bf0f21d823..3296708d5c5e87759026cfec43f7e428d79c64a6 100644 (file)
@@ -1,29 +1,29 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\r
-<!--\r
-   ====================================================================\r
-   Licensed to the Apache Software Foundation (ASF) under one or more\r
-   contributor license agreements.  See the NOTICE file distributed with\r
-   this work for additional information regarding copyright ownership.\r
-   The ASF licenses this file to You under the Apache License, Version 2.0\r
-   (the "License"); you may not use this file except in compliance with\r
-   the License.  You may obtain a copy of the License at\r
-\r
-       http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-   ====================================================================\r
--->\r
-<html>\r
-<head>\r
-</head>\r
-<body bgcolor="white">\r
-\r
-This package contains common internal POI code for manipulating formulas.\r
-Client applications should not refer to these classes directly.\r
-\r
-</body>\r
-</html>\r
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<!--
+   ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You 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.
+   ====================================================================
+-->
+<html>
+<head>
+</head>
+<body bgcolor="white">
+
+This package contains common internal POI code for manipulating formulas.
+Client applications should not refer to these classes directly.
+
+</body>
+</html>
index 8a85f42841a8405a4e591145d67cc359a6750462..b56f65e238d979e528af0426a3bba1451c322aa9 100644 (file)
-# Licensed to the Apache Software Foundation (ASF) under one or more\r
-# contributor license agreements.  See the NOTICE file distributed with\r
-# this work for additional information regarding copyright ownership.\r
-# The ASF licenses this file to You under the Apache License, Version 2.0\r
-# (the "License"); you may not use this file except in compliance with\r
-# the License.  You may obtain a copy of the License at\r
-# \r
-#     http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)\r
-# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)\r
-#\r
-#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )\r
-\r
-# Built-In Sheet Functions in BIFF2\r
-0      COUNT   0       30      V       R               \r
-1      IF      2       3       R       V R R           \r
-2      ISNA    1       1       V       V               \r
-3      ISERROR 1       1       V       V               \r
-4      SUM     0       30      V       R               \r
-5      AVERAGE 1       30      V       R               \r
-6      MIN     1       30      V       R               \r
-7      MAX     1       30      V       R               \r
-8      ROW     0       1       V       R               \r
-9      COLUMN  0       1       V       R               \r
-10     NA      0       0       V       -               \r
-11     NPV     2       30      V       V R             \r
-12     STDEV   1       30      V       R               \r
-13     DOLLAR  1       2       V       V V             \r
-14     FIXED   2       2       V       V V             x\r
-15     SIN     1       1       V       V               \r
-16     COS     1       1       V       V               \r
-17     TAN     1       1       V       V               \r
-18     ATAN    1       1       V       V               \r
-19     PI      0       0       V       -               \r
-20     SQRT    1       1       V       V               \r
-21     EXP     1       1       V       V               \r
-22     LN      1       1       V       V               \r
-23     LOG10   1       1       V       V               \r
-24     ABS     1       1       V       V               \r
-25     INT     1       1       V       V               \r
-26     SIGN    1       1       V       V               \r
-27     ROUND   2       2       V       V V             \r
-28     LOOKUP  2       3       V       V R R           \r
-29     INDEX   2       4       R       R V V V         \r
-30     REPT    2       2       V       V V             \r
-31     MID     3       3       V       V V V           \r
-32     LEN     1       1       V       V               \r
-33     VALUE   1       1       V       V               \r
-34     TRUE    0       0       V       -               \r
-35     FALSE   0       0       V       -               \r
-36     AND     1       30      V       R               \r
-37     OR      1       30      V       R               \r
-38     NOT     1       1       V       V               \r
-39     MOD     2       2       V       V V             \r
-40     DCOUNT  3       3       V       R R R           \r
-41     DSUM    3       3       V       R R R           \r
-42     DAVERAGE        3       3       V       R R R           \r
-43     DMIN    3       3       V       R R R           \r
-44     DMAX    3       3       V       R R R           \r
-45     DSTDEV  3       3       V       R R R           \r
-46     VAR     1       30      V       R               \r
-47     DVAR    3       3       V       R R R           \r
-48     TEXT    2       2       V       V V             \r
-49     LINEST  1       2       A       R R             x\r
-50     TREND   1       3       A       R R R           x\r
-51     LOGEST  1       2       A       R R             x\r
-52     GROWTH  1       3       A       R R R           x\r
-56     PV      3       5       V       V V V V V               \r
-# Built-In Sheet Functions in BIFF2\r
-57     FV      3       5       V       V V V V V               \r
-58     NPER    3       5       V       V V V V V               \r
-59     PMT     3       5       V       V V V V V               \r
-60     RATE    3       6       V       V V V V V V             \r
-61     MIRR    3       3       V       R V V           \r
-62     IRR     1       2       V       R V             \r
-63     RAND    0       0       V       -       x       \r
-64     MATCH   2       3       V       V R R           \r
-65     DATE    3       3       V       V V V           \r
-66     TIME    3       3       V       V V V           \r
-67     DAY     1       1       V       V               \r
-68     MONTH   1       1       V       V               \r
-69     YEAR    1       1       V       V               \r
-70     WEEKDAY 1       1       V       V               x\r
-71     HOUR    1       1       V       V               \r
-72     MINUTE  1       1       V       V               \r
-73     SECOND  1       1       V       V               \r
-74     NOW     0       0       V       -       x       \r
-75     AREAS   1       1       V       R               \r
-76     ROWS    1       1       V       R               \r
-77     COLUMNS 1       1       V       R               \r
-78     OFFSET  3       5       R       R V V V V       x       \r
-82     SEARCH  2       3       V       V V V           \r
-83     TRANSPOSE       1       1       A       A               \r
-86     TYPE    1       1       V       V               \r
-97     ATAN2   2       2       V       V V             \r
-98     ASIN    1       1       V       V               \r
-99     ACOS    1       1       V       V               \r
-100    CHOOSE  2       30      R       V R             \r
-101    HLOOKUP 3       3       V       V R R           x\r
-102    VLOOKUP 3       3       V       V R R           x\r
-105    ISREF   1       1       V       R               \r
-109    LOG     1       2       V       V V             \r
-111    CHAR    1       1       V       V               \r
-112    LOWER   1       1       V       V               \r
-113    UPPER   1       1       V       V               \r
-114    PROPER  1       1       V       V               \r
-115    LEFT    1       2       V       V V             \r
-116    RIGHT   1       2       V       V V             \r
-117    EXACT   2       2       V       V V             \r
-118    TRIM    1       1       V       V               \r
-119    REPLACE 4       4       V       V V V V         \r
-120    SUBSTITUTE      3       4       V       V V V V         \r
-121    CODE    1       1       V       V               \r
-124    FIND    2       3       V       V V V           \r
-125    CELL    1       2       V       V R     x       \r
-126    ISERR   1       1       V       V               \r
-127    ISTEXT  1       1       V       V               \r
-128    ISNUMBER        1       1       V       V               \r
-129    ISBLANK 1       1       V       V               \r
-130    T       1       1       V       R               \r
-131    N       1       1       V       R               \r
-140    DATEVALUE       1       1       V       V               \r
-141    TIMEVALUE       1       1       V       V               \r
-142    SLN     3       3       V       V V V           \r
-143    SYD     4       4       V       V V V V         \r
-144    DDB     4       5       V       V V V V V               \r
-148    INDIRECT        1       2       R       V V     x       \r
-162    CLEAN   1       1       V       V               \r
-163    MDETERM 1       1       V       A               \r
-164    MINVERSE        1       1       A       A               \r
-165    MMULT   2       2       A       A A             \r
-167    IPMT    4       6       V       V V V V V V             \r
-168    PPMT    4       6       V       V V V V V V             \r
-169    COUNTA  0       30      V       R               \r
-183    PRODUCT 0       30      V       R               \r
-184    FACT    1       1       V       V               \r
-189    DPRODUCT        3       3       V       R R R           \r
-190    ISNONTEXT       1       1       V       V               \r
-193    STDEVP  1       30      V       R               \r
-194    VARP    1       30      V       R               \r
-195    DSTDEVP 3       3       V       R R R           \r
-196    DVARP   3       3       V       R R R           \r
-197    TRUNC   1       1       V       V               x\r
-198    ISLOGICAL       1       1       V       V               \r
-199    DCOUNTA 3       3       V       R R R           \r
-# New Built-In Sheet Functions in BIFF3\r
-49     LINEST  1       4       A       R R V V         x\r
-50     TREND   1       4       A       R R R V         x\r
-51     LOGEST  1       4       A       R R V V         x\r
-52     GROWTH  1       4       A       R R R V         x\r
-197    TRUNC   1       2       V       V V             x\r
-204    YEN     1       2       V       V V             x\r
-205    FINDB   2       3       V       V V V           \r
-206    SEARCHB 2       3       V       V V V           \r
-207    REPLACEB        4       4       V       V V V V         \r
-208    LEFTB   1       2       V       V V             \r
-209    RIGHTB  1       2       V       V V             \r
-210    MIDB    3       3       V       V V V           \r
-211    LENB    1       1       V       V               \r
-212    ROUNDUP 2       2       V       V V             \r
-213    ROUNDDOWN       2       2       V       V V             \r
-214    ASC     1       1       V       V               \r
-215    JIS     1       1       V       V               x\r
-219    ADDRESS 2       5       V       V V V V V               \r
-220    DAYS360 2       2       V       V V             x\r
-221    TODAY   0       0       V       -       x       \r
-222    VDB     5       7       V       V V V V V V V           \r
-227    MEDIAN  1       30      V       R ...           \r
-228    SUMPRODUCT      1       30      V       A ...           \r
-229    SINH    1       1       V       V               \r
-230    COSH    1       1       V       V               \r
-231    TANH    1       1       V       V               \r
-232    ASINH   1       1       V       V               \r
-233    ACOSH   1       1       V       V               \r
-234    ATANH   1       1       V       V               \r
-235    DGET    3       3       V       R R R           \r
-244    INFO    1       1       V       V               \r
-# New Built-In Sheet Functions in BIFF4\r
-14     FIXED   2       3       V       V V V           x\r
-204    USDOLLAR        1       2       V       V V             x\r
-215    DBCS    1       1       V       V               x\r
-216    RANK    2       3       V       V R V           \r
-247    DB      4       5       V       V V V V V               \r
-252    FREQUENCY       2       2       A       R R             \r
-261    ERROR.TYPE      1       1       V       V               \r
-269    AVEDEV  1       30      V       R ...           \r
-270    BETADIST        3       5       V       V V V V V               \r
-271    GAMMALN 1       1       V       V               \r
-272    BETAINV 3       5       V       V V V V V               \r
-273    BINOMDIST       4       4       V       V V V V         \r
-274    CHIDIST 2       2       V       V V             \r
-275    CHIINV  2       2       V       V V             \r
-276    COMBIN  2       2       V       V V             \r
-277    CONFIDENCE      3       3       V       V V V           \r
-278    CRITBINOM       3       3       V       V V V           \r
-279    EVEN    1       1       V       V               \r
-280    EXPONDIST       3       3       V       V V V           \r
-281    FDIST   3       3       V       V V V           \r
-282    FINV    3       3       V       V V V           \r
-283    FISHER  1       1       V       V               \r
-284    FISHERINV       1       1       V       V               \r
-285    FLOOR   2       2       V       V V             \r
-286    GAMMADIST       4       4       V       V V V V         \r
-287    GAMMAINV        3       3       V       V V V           \r
-288    CEILING 2       2       V       V V             \r
-289    HYPGEOMDIST     4       4       V       V V V V         \r
-290    LOGNORMDIST     3       3       V       V V V           \r
-291    LOGINV  3       3       V       V V V           \r
-292    NEGBINOMDIST    3       3       V       V V V           \r
-293    NORMDIST        4       4       V       V V V V         \r
-294    NORMSDIST       1       1       V       V               \r
-295    NORMINV 3       3       V       V V V           \r
-296    NORMSINV        1       1       V       V               \r
-297    STANDARDIZE     3       3       V       V V V           \r
-298    ODD     1       1       V       V               \r
-299    PERMUT  2       2       V       V V             \r
-300    POISSON 3       3       V       V V V           \r
-301    TDIST   3       3       V       V V V           \r
-302    WEIBULL 4       4       V       V V V V         \r
-303    SUMXMY2 2       2       V       A A             \r
-304    SUMX2MY2        2       2       V       A A             \r
-305    SUMX2PY2        2       2       V       A A             \r
-306    CHITEST 2       2       V       A A             \r
-307    CORREL  2       2       V       A A             \r
-308    COVAR   2       2       V       A A             \r
-309    FORECAST        3       3       V       V A A           \r
-310    FTEST   2       2       V       A A             \r
-311    INTERCEPT       2       2       V       A A             \r
-312    PEARSON 2       2       V       A A             \r
-313    RSQ     2       2       V       A A             \r
-314    STEYX   2       2       V       A A             \r
-315    SLOPE   2       2       V       A A             \r
-316    TTEST   4       4       V       A A V V         \r
-317    PROB    3       4       V       A A V V         \r
-318    DEVSQ   1       30      V       R ...           \r
-319    GEOMEAN 1       30      V       R ...           \r
-320    HARMEAN 1       30      V       R ...           \r
-321    SUMSQ   0       30      V       R ...           \r
-322    KURT    1       30      V       R ...           \r
-323    SKEW    1       30      V       R ...           \r
-324    ZTEST   2       3       V       R V V           \r
-325    LARGE   2       2       V       R V             \r
-326    SMALL   2       2       V       R V             \r
-327    QUARTILE        2       2       V       R V             \r
-328    PERCENTILE      2       2       V       R V             \r
-329    PERCENTRANK     2       3       V       R V V           \r
-330    MODE    1       30      V       A               \r
-331    TRIMMEAN        2       2       V       R V             \r
-332    TINV    2       2       V       V V             \r
-# New Built-In Sheet Functions in BIFF5\r
-70     WEEKDAY 1       2       V       V V             x\r
-101    HLOOKUP 3       4       V       V R R V         x\r
-102    VLOOKUP 3       4       V       V R R V         x\r
-220    DAYS360 2       3       V       V V V           x\r
-336    CONCATENATE     0       30      V       V               \r
-337    POWER   2       2       V       V V             \r
-342    RADIANS 1       1       V       V               \r
-343    DEGREES 1       1       V       V               \r
-344    SUBTOTAL        2       30      V       V R             \r
-345    SUMIF   2       3       V       R V R           \r
-346    COUNTIF 2       2       V       R V             \r
-347    COUNTBLANK      1       1       V       R               \r
-350    ISPMT   4       4       V       V V V V         \r
-351    DATEDIF 3       3       V       V V V           \r
-352    DATESTRING      1       1       V       V               \r
-353    NUMBERSTRING    2       2       V       V V             \r
-354    ROMAN   1       2       V       V V             \r
-# New Built-In Sheet Functions in BIFF8\r
-358    GETPIVOTDATA    2       30                              \r
-359    HYPERLINK       1       2       V       V V             \r
-360    PHONETIC        1       1       V       R               \r
-361    AVERAGEA        1       30      V       R ...           \r
-362    MAXA    1       30      V       R ...           \r
-363    MINA    1       30      V       R ...           \r
-364    STDEVPA 1       30      V       R ...           \r
-365    VARPA   1       30      V       R ...           \r
-366    STDEVA  1       30      V       R ...           \r
-367    VARA    1       30      V       R ...           \r
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
+# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
+#
+#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
+
+# Built-In Sheet Functions in BIFF2
+0      COUNT   0       30      V       R               
+1      IF      2       3       R       V R R           
+2      ISNA    1       1       V       V               
+3      ISERROR 1       1       V       V               
+4      SUM     0       30      V       R               
+5      AVERAGE 1       30      V       R               
+6      MIN     1       30      V       R               
+7      MAX     1       30      V       R               
+8      ROW     0       1       V       R               
+9      COLUMN  0       1       V       R               
+10     NA      0       0       V       -               
+11     NPV     2       30      V       V R             
+12     STDEV   1       30      V       R               
+13     DOLLAR  1       2       V       V V             
+14     FIXED   2       2       V       V V             x
+15     SIN     1       1       V       V               
+16     COS     1       1       V       V               
+17     TAN     1       1       V       V               
+18     ATAN    1       1       V       V               
+19     PI      0       0       V       -               
+20     SQRT    1       1       V       V               
+21     EXP     1       1       V       V               
+22     LN      1       1       V       V               
+23     LOG10   1       1       V       V               
+24     ABS     1       1       V       V               
+25     INT     1       1       V       V               
+26     SIGN    1       1       V       V               
+27     ROUND   2       2       V       V V             
+28     LOOKUP  2       3       V       V R R           
+29     INDEX   2       4       R       R V V V         
+30     REPT    2       2       V       V V             
+31     MID     3       3       V       V V V           
+32     LEN     1       1       V       V               
+33     VALUE   1       1       V       V               
+34     TRUE    0       0       V       -               
+35     FALSE   0       0       V       -               
+36     AND     1       30      V       R               
+37     OR      1       30      V       R               
+38     NOT     1       1       V       V               
+39     MOD     2       2       V       V V             
+40     DCOUNT  3       3       V       R R R           
+41     DSUM    3       3       V       R R R           
+42     DAVERAGE        3       3       V       R R R           
+43     DMIN    3       3       V       R R R           
+44     DMAX    3       3       V       R R R           
+45     DSTDEV  3       3       V       R R R           
+46     VAR     1       30      V       R               
+47     DVAR    3       3       V       R R R           
+48     TEXT    2       2       V       V V             
+49     LINEST  1       2       A       R R             x
+50     TREND   1       3       A       R R R           x
+51     LOGEST  1       2       A       R R             x
+52     GROWTH  1       3       A       R R R           x
+56     PV      3       5       V       V V V V V               
+# Built-In Sheet Functions in BIFF2
+57     FV      3       5       V       V V V V V               
+58     NPER    3       5       V       V V V V V               
+59     PMT     3       5       V       V V V V V               
+60     RATE    3       6       V       V V V V V V             
+61     MIRR    3       3       V       R V V           
+62     IRR     1       2       V       R V             
+63     RAND    0       0       V       -       x       
+64     MATCH   2       3       V       V R R           
+65     DATE    3       3       V       V V V           
+66     TIME    3       3       V       V V V           
+67     DAY     1       1       V       V               
+68     MONTH   1       1       V       V               
+69     YEAR    1       1       V       V               
+70     WEEKDAY 1       1       V       V               x
+71     HOUR    1       1       V       V               
+72     MINUTE  1       1       V       V               
+73     SECOND  1       1       V       V               
+74     NOW     0       0       V       -       x       
+75     AREAS   1       1       V       R               
+76     ROWS    1       1       V       R               
+77     COLUMNS 1       1       V       R               
+78     OFFSET  3       5       R       R V V V V       x       
+82     SEARCH  2       3       V       V V V           
+83     TRANSPOSE       1       1       A       A               
+86     TYPE    1       1       V       V               
+97     ATAN2   2       2       V       V V             
+98     ASIN    1       1       V       V               
+99     ACOS    1       1       V       V               
+100    CHOOSE  2       30      R       V R             
+101    HLOOKUP 3       3       V       V R R           x
+102    VLOOKUP 3       3       V       V R R           x
+105    ISREF   1       1       V       R               
+109    LOG     1       2       V       V V             
+111    CHAR    1       1       V       V               
+112    LOWER   1       1       V       V               
+113    UPPER   1       1       V       V               
+114    PROPER  1       1       V       V               
+115    LEFT    1       2       V       V V             
+116    RIGHT   1       2       V       V V             
+117    EXACT   2       2       V       V V             
+118    TRIM    1       1       V       V               
+119    REPLACE 4       4       V       V V V V         
+120    SUBSTITUTE      3       4       V       V V V V         
+121    CODE    1       1       V       V               
+124    FIND    2       3       V       V V V           
+125    CELL    1       2       V       V R     x       
+126    ISERR   1       1       V       V               
+127    ISTEXT  1       1       V       V               
+128    ISNUMBER        1       1       V       V               
+129    ISBLANK 1       1       V       V               
+130    T       1       1       V       R               
+131    N       1       1       V       R               
+140    DATEVALUE       1       1       V       V               
+141    TIMEVALUE       1       1       V       V               
+142    SLN     3       3       V       V V V           
+143    SYD     4       4       V       V V V V         
+144    DDB     4       5       V       V V V V V               
+148    INDIRECT        1       2       R       V V     x       
+162    CLEAN   1       1       V       V               
+163    MDETERM 1       1       V       A               
+164    MINVERSE        1       1       A       A               
+165    MMULT   2       2       A       A A             
+167    IPMT    4       6       V       V V V V V V             
+168    PPMT    4       6       V       V V V V V V             
+169    COUNTA  0       30      V       R               
+183    PRODUCT 0       30      V       R               
+184    FACT    1       1       V       V               
+189    DPRODUCT        3       3       V       R R R           
+190    ISNONTEXT       1       1       V       V               
+193    STDEVP  1       30      V       R               
+194    VARP    1       30      V       R               
+195    DSTDEVP 3       3       V       R R R           
+196    DVARP   3       3       V       R R R           
+197    TRUNC   1       1       V       V               x
+198    ISLOGICAL       1       1       V       V               
+199    DCOUNTA 3       3       V       R R R           
+# New Built-In Sheet Functions in BIFF3
+49     LINEST  1       4       A       R R V V         x
+50     TREND   1       4       A       R R R V         x
+51     LOGEST  1       4       A       R R V V         x
+52     GROWTH  1       4       A       R R R V         x
+197    TRUNC   1       2       V       V V             x
+204    YEN     1       2       V       V V             x
+205    FINDB   2       3       V       V V V           
+206    SEARCHB 2       3       V       V V V           
+207    REPLACEB        4       4       V       V V V V         
+208    LEFTB   1       2       V       V V             
+209    RIGHTB  1       2       V       V V             
+210    MIDB    3       3       V       V V V           
+211    LENB    1       1       V       V               
+212    ROUNDUP 2       2       V       V V             
+213    ROUNDDOWN       2       2       V       V V             
+214    ASC     1       1       V       V               
+215    JIS     1       1       V       V               x
+219    ADDRESS 2       5       V       V V V V V               
+220    DAYS360 2       2       V       V V             x
+221    TODAY   0       0       V       -       x       
+222    VDB     5       7       V       V V V V V V V           
+227    MEDIAN  1       30      V       R ...           
+228    SUMPRODUCT      1       30      V       A ...           
+229    SINH    1       1       V       V               
+230    COSH    1       1       V       V               
+231    TANH    1       1       V       V               
+232    ASINH   1       1       V       V               
+233    ACOSH   1       1       V       V               
+234    ATANH   1       1       V       V               
+235    DGET    3       3       V       R R R           
+244    INFO    1       1       V       V               
+# New Built-In Sheet Functions in BIFF4
+14     FIXED   2       3       V       V V V           x
+204    USDOLLAR        1       2       V       V V             x
+215    DBCS    1       1       V       V               x
+216    RANK    2       3       V       V R V           
+247    DB      4       5       V       V V V V V               
+252    FREQUENCY       2       2       A       R R             
+261    ERROR.TYPE      1       1       V       V               
+269    AVEDEV  1       30      V       R ...           
+270    BETADIST        3       5       V       V V V V V               
+271    GAMMALN 1       1       V       V               
+272    BETAINV 3       5       V       V V V V V               
+273    BINOMDIST       4       4       V       V V V V         
+274    CHIDIST 2       2       V       V V             
+275    CHIINV  2       2       V       V V             
+276    COMBIN  2       2       V       V V             
+277    CONFIDENCE      3       3       V       V V V           
+278    CRITBINOM       3       3       V       V V V           
+279    EVEN    1       1       V       V               
+280    EXPONDIST       3       3       V       V V V           
+281    FDIST   3       3       V       V V V           
+282    FINV    3       3       V       V V V           
+283    FISHER  1       1       V       V               
+284    FISHERINV       1       1       V       V               
+285    FLOOR   2       2       V       V V             
+286    GAMMADIST       4       4       V       V V V V         
+287    GAMMAINV        3       3       V       V V V           
+288    CEILING 2       2       V       V V             
+289    HYPGEOMDIST     4       4       V       V V V V         
+290    LOGNORMDIST     3       3       V       V V V           
+291    LOGINV  3       3       V       V V V           
+292    NEGBINOMDIST    3       3       V       V V V           
+293    NORMDIST        4       4       V       V V V V         
+294    NORMSDIST       1       1       V       V               
+295    NORMINV 3       3       V       V V V           
+296    NORMSINV        1       1       V       V               
+297    STANDARDIZE     3       3       V       V V V           
+298    ODD     1       1       V       V               
+299    PERMUT  2       2       V       V V             
+300    POISSON 3       3       V       V V V           
+301    TDIST   3       3       V       V V V           
+302    WEIBULL 4       4       V       V V V V         
+303    SUMXMY2 2       2       V       A A             
+304    SUMX2MY2        2       2       V       A A             
+305    SUMX2PY2        2       2       V       A A             
+306    CHITEST 2       2       V       A A             
+307    CORREL  2       2       V       A A             
+308    COVAR   2       2       V       A A             
+309    FORECAST        3       3       V       V A A           
+310    FTEST   2       2       V       A A             
+311    INTERCEPT       2       2       V       A A             
+312    PEARSON 2       2       V       A A             
+313    RSQ     2       2       V       A A             
+314    STEYX   2       2       V       A A             
+315    SLOPE   2       2       V       A A             
+316    TTEST   4       4       V       A A V V         
+317    PROB    3       4       V       A A V V         
+318    DEVSQ   1       30      V       R ...           
+319    GEOMEAN 1       30      V       R ...           
+320    HARMEAN 1       30      V       R ...           
+321    SUMSQ   0       30      V       R ...           
+322    KURT    1       30      V       R ...           
+323    SKEW    1       30      V       R ...           
+324    ZTEST   2       3       V       R V V           
+325    LARGE   2       2       V       R V             
+326    SMALL   2       2       V       R V             
+327    QUARTILE        2       2       V       R V             
+328    PERCENTILE      2       2       V       R V             
+329    PERCENTRANK     2       3       V       R V V           
+330    MODE    1       30      V       A               
+331    TRIMMEAN        2       2       V       R V             
+332    TINV    2       2       V       V V             
+# New Built-In Sheet Functions in BIFF5
+70     WEEKDAY 1       2       V       V V             x
+101    HLOOKUP 3       4       V       V R R V         x
+102    VLOOKUP 3       4       V       V R R V         x
+220    DAYS360 2       3       V       V V V           x
+336    CONCATENATE     0       30      V       V               
+337    POWER   2       2       V       V V             
+342    RADIANS 1       1       V       V               
+343    DEGREES 1       1       V       V               
+344    SUBTOTAL        2       30      V       V R             
+345    SUMIF   2       3       V       R V R           
+346    COUNTIF 2       2       V       R V             
+347    COUNTBLANK      1       1       V       R               
+350    ISPMT   4       4       V       V V V V         
+351    DATEDIF 3       3       V       V V V           
+352    DATESTRING      1       1       V       V               
+353    NUMBERSTRING    2       2       V       V V             
+354    ROMAN   1       2       V       V V             
+# New Built-In Sheet Functions in BIFF8
+358    GETPIVOTDATA    2       30                              
+359    HYPERLINK       1       2       V       V V             
+360    PHONETIC        1       1       V       R               
+361    AVERAGEA        1       30      V       R ...           
+362    MAXA    1       30      V       R ...           
+363    MINA    1       30      V       R ...           
+364    STDEVPA 1       30      V       R ...           
+365    VARPA   1       30      V       R ...           
+366    STDEVA  1       30      V       R ...           
+367    VARA    1       30      V       R ...           
index 31694d5d76a9b8d482c48b827e1157fc65dfb5ba..277d229a825f5cf87113be1c60298f153f2c8f59 100644 (file)
-# Licensed to the Apache Software Foundation (ASF) under one or more\r
-# contributor license agreements.  See the NOTICE file distributed with\r
-# this work for additional information regarding copyright ownership.\r
-# The ASF licenses this file to You under the Apache License, Version 2.0\r
-# (the "License"); you may not use this file except in compliance with\r
-# the License.  You may obtain a copy of the License at\r
-# \r
-#     http://www.apache.org/licenses/LICENSE-2.0\r
-# \r
-# Unless required by applicable law or agreed to in writing, software\r
-# distributed under the License is distributed on an "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-# See the License for the specific language governing permissions and\r
-# limitations under the License.\r
-\r
-# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)\r
-# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)\r
-#  ! + some manual edits !\r
-#\r
-#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )\r
-\r
-# Built-In Sheet Functions in BIFF2\r
-0      COUNT   0       30      V       R               \r
-1      IF      2       3       R       V R R           \r
-2      ISNA    1       1       V       V               \r
-3      ISERROR 1       1       V       V               \r
-4      SUM     0       30      V       R               \r
-5      AVERAGE 1       30      V       R               \r
-6      MIN     1       30      V       R               \r
-7      MAX     1       30      V       R               \r
-8      ROW     0       1       V       R               \r
-9      COLUMN  0       1       V       R               \r
-10     NA      0       0       V       -               \r
-11     NPV     2       30      V       V R             \r
-12     STDEV   1       30      V       R               \r
-13     DOLLAR  1       2       V       V V             \r
-14     FIXED   2       2       V       V V             x\r
-15     SIN     1       1       V       V               \r
-16     COS     1       1       V       V               \r
-17     TAN     1       1       V       V               \r
-18     ATAN    1       1       V       V               \r
-19     PI      0       0       V       -               \r
-20     SQRT    1       1       V       V               \r
-21     EXP     1       1       V       V               \r
-22     LN      1       1       V       V               \r
-23     LOG10   1       1       V       V               \r
-24     ABS     1       1       V       V               \r
-25     INT     1       1       V       V               \r
-26     SIGN    1       1       V       V               \r
-27     ROUND   2       2       V       V V             \r
-28     LOOKUP  2       3       V       V R R           \r
-29     INDEX   2       4       R       R V V V         \r
-30     REPT    2       2       V       V V             \r
-31     MID     3       3       V       V V V           \r
-32     LEN     1       1       V       V               \r
-33     VALUE   1       1       V       V               \r
-34     TRUE    0       0       V       -               \r
-35     FALSE   0       0       V       -               \r
-36     AND     1       30      V       R               \r
-37     OR      1       30      V       R               \r
-38     NOT     1       1       V       V               \r
-39     MOD     2       2       V       V V             \r
-40     DCOUNT  3       3       V       R R R           \r
-41     DSUM    3       3       V       R R R           \r
-42     DAVERAGE        3       3       V       R R R           \r
-43     DMIN    3       3       V       R R R           \r
-44     DMAX    3       3       V       R R R           \r
-45     DSTDEV  3       3       V       R R R           \r
-46     VAR     1       30      V       R               \r
-47     DVAR    3       3       V       R R R           \r
-48     TEXT    2       2       V       V V             \r
-49     LINEST  1       2       A       R R             x\r
-50     TREND   1       3       A       R R R           x\r
-51     LOGEST  1       2       A       R R             x\r
-52     GROWTH  1       3       A       R R R           x\r
-56     PV      3       5       V       V V V V V               \r
-# Built-In Sheet Functions in BIFF2\r
-57     FV      3       5       V       V V V V V               \r
-58     NPER    3       5       V       V V V V V               \r
-59     PMT     3       5       V       V V V V V               \r
-60     RATE    3       6       V       V V V V V V             \r
-61     MIRR    3       3       V       A V V           \r
-62     IRR     1       2       V       A V             \r
-63     RAND    0       0       V       -       x       \r
-64     MATCH   2       3       V       V R R           \r
-65     DATE    3       3       V       V V V           \r
-66     TIME    3       3       V       V V V           \r
-67     DAY     1       1       V       V               \r
-68     MONTH   1       1       V       V               \r
-69     YEAR    1       1       V       V               \r
-70     WEEKDAY 1       1       V       V               x\r
-71     HOUR    1       1       V       V               \r
-72     MINUTE  1       1       V       V               \r
-73     SECOND  1       1       V       V               \r
-74     NOW     0       0       V       -       x       \r
-75     AREAS   1       1       V       R               \r
-76     ROWS    1       1       V       A               \r
-77     COLUMNS 1       1       V       A               \r
-78     OFFSET  3       5       R       R V V V V       x       \r
-82     SEARCH  2       3       V       V V V           \r
-83     TRANSPOSE       1       1       A       A               \r
-86     TYPE    1       1       V       V               \r
-97     ATAN2   2       2       V       V V             \r
-98     ASIN    1       1       V       V               \r
-99     ACOS    1       1       V       V               \r
-100    CHOOSE  2       30      R       V R             \r
-101    HLOOKUP 3       3       V       V R R           x\r
-102    VLOOKUP 3       3       V       V R R           x\r
-105    ISREF   1       1       V       R               \r
-109    LOG     1       2       V       V V             \r
-111    CHAR    1       1       V       V               \r
-112    LOWER   1       1       V       V               \r
-113    UPPER   1       1       V       V               \r
-114    PROPER  1       1       V       V               \r
-115    LEFT    1       2       V       V V             \r
-116    RIGHT   1       2       V       V V             \r
-117    EXACT   2       2       V       V V             \r
-118    TRIM    1       1       V       V               \r
-119    REPLACE 4       4       V       V V V V         \r
-120    SUBSTITUTE      3       4       V       V V V V         \r
-121    CODE    1       1       V       V               \r
-124    FIND    2       3       V       V V V           \r
-125    CELL    1       2       V       V R     x       \r
-126    ISERR   1       1       V       V               \r
-127    ISTEXT  1       1       V       V               \r
-128    ISNUMBER        1       1       V       V               \r
-129    ISBLANK 1       1       V       V               \r
-130    T       1       1       V       R               \r
-131    N       1       1       V       R               \r
-140    DATEVALUE       1       1       V       V               \r
-141    TIMEVALUE       1       1       V       V               \r
-142    SLN     3       3       V       V V V           \r
-143    SYD     4       4       V       V V V V         \r
-144    DDB     4       5       V       V V V V V               \r
-148    INDIRECT        1       2       R       V V     x       \r
-162    CLEAN   1       1       V       V               \r
-163    MDETERM 1       1       V       A               \r
-164    MINVERSE        1       1       A       A               \r
-165    MMULT   2       2       A       A A             \r
-167    IPMT    4       6       V       V V V V V V             \r
-168    PPMT    4       6       V       V V V V V V             \r
-169    COUNTA  0       30      V       R               \r
-183    PRODUCT 0       30      V       R               \r
-184    FACT    1       1       V       V               \r
-189    DPRODUCT        3       3       V       R R R           \r
-190    ISNONTEXT       1       1       V       V               \r
-193    STDEVP  1       30      V       R               \r
-194    VARP    1       30      V       R               \r
-195    DSTDEVP 3       3       V       R R R           \r
-196    DVARP   3       3       V       R R R           \r
-197    TRUNC   1       1       V       V               x\r
-198    ISLOGICAL       1       1       V       V               \r
-199    DCOUNTA 3       3       V       R R R           \r
-# New Built-In Sheet Functions in BIFF3\r
-49     LINEST  1       4       A       R R V V         x\r
-50     TREND   1       4       A       R R R V         x\r
-51     LOGEST  1       4       A       R R V V         x\r
-52     GROWTH  1       4       A       R R R V         x\r
-197    TRUNC   1       2       V       V V             x\r
-204    YEN     1       2       V       V V             x\r
-205    FINDB   2       3       V       V V V           \r
-206    SEARCHB 2       3       V       V V V           \r
-207    REPLACEB        4       4       V       V V V V         \r
-208    LEFTB   1       2       V       V V             \r
-209    RIGHTB  1       2       V       V V             \r
-210    MIDB    3       3       V       V V V           \r
-211    LENB    1       1       V       V               \r
-212    ROUNDUP 2       2       V       V V             \r
-213    ROUNDDOWN       2       2       V       V V             \r
-214    ASC     1       1       V       V               \r
-215    JIS     1       1       V       V               x\r
-219    ADDRESS 2       5       V       V V V V V               \r
-220    DAYS360 2       2       V       V V             x\r
-221    TODAY   0       0       V       -       x       \r
-222    VDB     5       7       V       V V V V V V V           \r
-227    MEDIAN  1       30      V       R ...           \r
-228    SUMPRODUCT      1       30      V       A ...           \r
-229    SINH    1       1       V       V               \r
-230    COSH    1       1       V       V               \r
-231    TANH    1       1       V       V               \r
-232    ASINH   1       1       V       V               \r
-233    ACOSH   1       1       V       V               \r
-234    ATANH   1       1       V       V               \r
-235    DGET    3       3       V       R R R           \r
-244    INFO    1       1       V       V               \r
-# New Built-In Sheet Functions in BIFF4\r
-14     FIXED   2       3       V       V V V           x\r
-204    USDOLLAR        1       2       V       V V             x\r
-215    DBCS    1       1       V       V               x\r
-216    RANK    2       3       V       V R V           \r
-247    DB      4       5       V       V V V V V               \r
-252    FREQUENCY       2       2       A       R R             \r
-261    ERROR.TYPE      1       1       V       V               \r
-269    AVEDEV  1       30      V       R ...           \r
-270    BETADIST        3       5       V       V V V V V               \r
-271    GAMMALN 1       1       V       V               \r
-272    BETAINV 3       5       V       V V V V V               \r
-273    BINOMDIST       4       4       V       V V V V         \r
-274    CHIDIST 2       2       V       V V             \r
-275    CHIINV  2       2       V       V V             \r
-276    COMBIN  2       2       V       V V             \r
-277    CONFIDENCE      3       3       V       V V V           \r
-278    CRITBINOM       3       3       V       V V V           \r
-279    EVEN    1       1       V       V               \r
-280    EXPONDIST       3       3       V       V V V           \r
-281    FDIST   3       3       V       V V V           \r
-282    FINV    3       3       V       V V V           \r
-283    FISHER  1       1       V       V               \r
-284    FISHERINV       1       1       V       V               \r
-285    FLOOR   2       2       V       V V             \r
-286    GAMMADIST       4       4       V       V V V V         \r
-287    GAMMAINV        3       3       V       V V V           \r
-288    CEILING 2       2       V       V V             \r
-289    HYPGEOMDIST     4       4       V       V V V V         \r
-290    LOGNORMDIST     3       3       V       V V V           \r
-291    LOGINV  3       3       V       V V V           \r
-292    NEGBINOMDIST    3       3       V       V V V           \r
-293    NORMDIST        4       4       V       V V V V         \r
-294    NORMSDIST       1       1       V       V               \r
-295    NORMINV 3       3       V       V V V           \r
-296    NORMSINV        1       1       V       V               \r
-297    STANDARDIZE     3       3       V       V V V           \r
-298    ODD     1       1       V       V               \r
-299    PERMUT  2       2       V       V V             \r
-300    POISSON 3       3       V       V V V           \r
-301    TDIST   3       3       V       V V V           \r
-302    WEIBULL 4       4       V       V V V V         \r
-303    SUMXMY2 2       2       V       A A             \r
-304    SUMX2MY2        2       2       V       A A             \r
-305    SUMX2PY2        2       2       V       A A             \r
-306    CHITEST 2       2       V       A A             \r
-307    CORREL  2       2       V       A A             \r
-308    COVAR   2       2       V       A A             \r
-309    FORECAST        3       3       V       V A A           \r
-310    FTEST   2       2       V       A A             \r
-311    INTERCEPT       2       2       V       A A             \r
-312    PEARSON 2       2       V       A A             \r
-313    RSQ     2       2       V       A A             \r
-314    STEYX   2       2       V       A A             \r
-315    SLOPE   2       2       V       A A             \r
-316    TTEST   4       4       V       A A V V         \r
-317    PROB    3       4       V       A A V V         \r
-318    DEVSQ   1       30      V       R ...           \r
-319    GEOMEAN 1       30      V       R ...           \r
-320    HARMEAN 1       30      V       R ...           \r
-321    SUMSQ   0       30      V       R ...           \r
-322    KURT    1       30      V       R ...           \r
-323    SKEW    1       30      V       R ...           \r
-324    ZTEST   2       3       V       R V V           \r
-325    LARGE   2       2       V       R V             \r
-326    SMALL   2       2       V       R V             \r
-327    QUARTILE        2       2       V       R V             \r
-328    PERCENTILE      2       2       V       R V             \r
-329    PERCENTRANK     2       3       V       R V V           \r
-330    MODE    1       30      V       A               \r
-331    TRIMMEAN        2       2       V       R V             \r
-332    TINV    2       2       V       V V             \r
-# New Built-In Sheet Functions in BIFF5\r
-70     WEEKDAY 1       2       V       V V             x\r
-101    HLOOKUP 3       4       V       V R R V         x\r
-102    VLOOKUP 3       4       V       V R R V         x\r
-220    DAYS360 2       3       V       V V V           x\r
-336    CONCATENATE     0       30      V       V               \r
-337    POWER   2       2       V       V V             \r
-342    RADIANS 1       1       V       V               \r
-343    DEGREES 1       1       V       V               \r
-344    SUBTOTAL        2       30      V       V R             \r
-345    SUMIF   2       3       V       R V R           \r
-346    COUNTIF 2       2       V       R V             \r
-347    COUNTBLANK      1       1       V       R               \r
-350    ISPMT   4       4       V       V V V V         \r
-351    DATEDIF 3       3       V       V V V           \r
-352    DATESTRING      1       1       V       V               \r
-353    NUMBERSTRING    2       2       V       V V             \r
-354    ROMAN   1       2       V       V V             \r
-# New Built-In Sheet Functions in BIFF8\r
-358    GETPIVOTDATA    2       30                              \r
-359    HYPERLINK       1       2       V       V V             \r
-360    PHONETIC        1       1       V       R               \r
-361    AVERAGEA        1       30      V       R ...           \r
-362    MAXA    1       30      V       R ...           \r
-363    MINA    1       30      V       R ...           \r
-364    STDEVPA 1       30      V       R ...           \r
-365    VARPA   1       30      V       R ...           \r
-366    STDEVA  1       30      V       R ...           \r
-367    VARA    1       30      V       R ...           \r
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+
+# Created by (org.apache.poi.hssf.record.formula.function.ExcelFileFormatDocFunctionExtractor)
+# from source file 'excelfileformat.odt' (size=356107, md5=0x8f789cb6e75594caf068f8e193004ef4)
+#  ! + some manual edits !
+#
+#Columns: (index, name, minParams, maxParams, returnClass, paramClasses, isVolatile, hasFootnote )
+
+# Built-In Sheet Functions in BIFF2
+0      COUNT   0       30      V       R               
+1      IF      2       3       R       V R R           
+2      ISNA    1       1       V       V               
+3      ISERROR 1       1       V       V               
+4      SUM     0       30      V       R               
+5      AVERAGE 1       30      V       R               
+6      MIN     1       30      V       R               
+7      MAX     1       30      V       R               
+8      ROW     0       1       V       R               
+9      COLUMN  0       1       V       R               
+10     NA      0       0       V       -               
+11     NPV     2       30      V       V R             
+12     STDEV   1       30      V       R               
+13     DOLLAR  1       2       V       V V             
+14     FIXED   2       2       V       V V             x
+15     SIN     1       1       V       V               
+16     COS     1       1       V       V               
+17     TAN     1       1       V       V               
+18     ATAN    1       1       V       V               
+19     PI      0       0       V       -               
+20     SQRT    1       1       V       V               
+21     EXP     1       1       V       V               
+22     LN      1       1       V       V               
+23     LOG10   1       1       V       V               
+24     ABS     1       1       V       V               
+25     INT     1       1       V       V               
+26     SIGN    1       1       V       V               
+27     ROUND   2       2       V       V V             
+28     LOOKUP  2       3       V       V R R           
+29     INDEX   2       4       R       R V V V         
+30     REPT    2       2       V       V V             
+31     MID     3       3       V       V V V           
+32     LEN     1       1       V       V               
+33     VALUE   1       1       V       V               
+34     TRUE    0       0       V       -               
+35     FALSE   0       0       V       -               
+36     AND     1       30      V       R               
+37     OR      1       30      V       R               
+38     NOT     1       1       V       V               
+39     MOD     2       2       V       V V             
+40     DCOUNT  3       3       V       R R R           
+41     DSUM    3       3       V       R R R           
+42     DAVERAGE        3       3       V       R R R           
+43     DMIN    3       3       V       R R R           
+44     DMAX    3       3       V       R R R           
+45     DSTDEV  3       3       V       R R R           
+46     VAR     1       30      V       R               
+47     DVAR    3       3       V       R R R           
+48     TEXT    2       2       V       V V             
+49     LINEST  1       2       A       R R             x
+50     TREND   1       3       A       R R R           x
+51     LOGEST  1       2       A       R R             x
+52     GROWTH  1       3       A       R R R           x
+56     PV      3       5       V       V V V V V               
+# Built-In Sheet Functions in BIFF2
+57     FV      3       5       V       V V V V V               
+58     NPER    3       5       V       V V V V V               
+59     PMT     3       5       V       V V V V V               
+60     RATE    3       6       V       V V V V V V             
+61     MIRR    3       3       V       A V V           
+62     IRR     1       2       V       A V             
+63     RAND    0       0       V       -       x       
+64     MATCH   2       3       V       V R R           
+65     DATE    3       3       V       V V V           
+66     TIME    3       3       V       V V V           
+67     DAY     1       1       V       V               
+68     MONTH   1       1       V       V               
+69     YEAR    1       1       V       V               
+70     WEEKDAY 1       1       V       V               x
+71     HOUR    1       1       V       V               
+72     MINUTE  1       1       V       V               
+73     SECOND  1       1       V       V               
+74     NOW     0       0       V       -       x       
+75     AREAS   1       1       V       R               
+76     ROWS    1       1       V       A               
+77     COLUMNS 1       1       V       A               
+78     OFFSET  3       5       R       R V V V V       x       
+82     SEARCH  2       3       V       V V V           
+83     TRANSPOSE       1       1       A       A               
+86     TYPE    1       1       V       V               
+97     ATAN2   2       2       V       V V             
+98     ASIN    1       1       V       V               
+99     ACOS    1       1       V       V               
+100    CHOOSE  2       30      R       V R             
+101    HLOOKUP 3       3       V       V R R           x
+102    VLOOKUP 3       3       V       V R R           x
+105    ISREF   1       1       V       R               
+109    LOG     1       2       V       V V             
+111    CHAR    1       1       V       V               
+112    LOWER   1       1       V       V               
+113    UPPER   1       1       V       V               
+114    PROPER  1       1       V       V               
+115    LEFT    1       2       V       V V             
+116    RIGHT   1       2       V       V V             
+117    EXACT   2       2       V       V V             
+118    TRIM    1       1       V       V               
+119    REPLACE 4       4       V       V V V V         
+120    SUBSTITUTE      3       4       V       V V V V         
+121    CODE    1       1       V       V               
+124    FIND    2       3       V       V V V           
+125    CELL    1       2       V       V R     x       
+126    ISERR   1       1       V       V               
+127    ISTEXT  1       1       V       V               
+128    ISNUMBER        1       1       V       V               
+129    ISBLANK 1       1       V       V               
+130    T       1       1       V       R               
+131    N       1       1       V       R               
+140    DATEVALUE       1       1       V       V               
+141    TIMEVALUE       1       1       V       V               
+142    SLN     3       3       V       V V V           
+143    SYD     4       4       V       V V V V         
+144    DDB     4       5       V       V V V V V               
+148    INDIRECT        1       2       R       V V     x       
+162    CLEAN   1       1       V       V               
+163    MDETERM 1       1       V       A               
+164    MINVERSE        1       1       A       A               
+165    MMULT   2       2       A       A A             
+167    IPMT    4       6       V       V V V V V V             
+168    PPMT    4       6       V       V V V V V V             
+169    COUNTA  0       30      V       R               
+183    PRODUCT 0       30      V       R               
+184    FACT    1       1       V       V               
+189    DPRODUCT        3       3       V       R R R           
+190    ISNONTEXT       1       1       V       V               
+193    STDEVP  1       30      V       R               
+194    VARP    1       30      V       R               
+195    DSTDEVP 3       3       V       R R R           
+196    DVARP   3       3       V       R R R           
+197    TRUNC   1       1       V       V               x
+198    ISLOGICAL       1       1       V       V               
+199    DCOUNTA 3       3       V       R R R           
+# New Built-In Sheet Functions in BIFF3
+49     LINEST  1       4       A       R R V V         x
+50     TREND   1       4       A       R R R V         x
+51     LOGEST  1       4       A       R R V V         x
+52     GROWTH  1       4       A       R R R V         x
+197    TRUNC   1       2       V       V V             x
+204    YEN     1       2       V       V V             x
+205    FINDB   2       3       V       V V V           
+206    SEARCHB 2       3       V       V V V           
+207    REPLACEB        4       4       V       V V V V         
+208    LEFTB   1       2       V       V V             
+209    RIGHTB  1       2       V       V V             
+210    MIDB    3       3       V       V V V           
+211    LENB    1       1       V       V               
+212    ROUNDUP 2       2       V       V V             
+213    ROUNDDOWN       2       2       V       V V             
+214    ASC     1       1       V       V               
+215    JIS     1       1       V       V               x
+219    ADDRESS 2       5       V       V V V V V               
+220    DAYS360 2       2       V       V V             x
+221    TODAY   0       0       V       -       x       
+222    VDB     5       7       V       V V V V V V V           
+227    MEDIAN  1       30      V       R ...           
+228    SUMPRODUCT      1       30      V       A ...           
+229    SINH    1       1       V       V               
+230    COSH    1       1       V       V               
+231    TANH    1       1       V       V               
+232    ASINH   1       1       V       V               
+233    ACOSH   1       1       V       V               
+234    ATANH   1       1       V       V               
+235    DGET    3       3       V       R R R           
+244    INFO    1       1       V       V               
+# New Built-In Sheet Functions in BIFF4
+14     FIXED   2       3       V       V V V           x
+204    USDOLLAR        1       2       V       V V             x
+215    DBCS    1       1       V       V               x
+216    RANK    2       3       V       V R V           
+247    DB      4       5       V       V V V V V               
+252    FREQUENCY       2       2       A       R R             
+261    ERROR.TYPE      1       1       V       V               
+269    AVEDEV  1       30      V       R ...           
+270    BETADIST        3       5       V       V V V V V               
+271    GAMMALN 1       1       V       V               
+272    BETAINV 3       5       V       V V V V V               
+273    BINOMDIST       4       4       V       V V V V         
+274    CHIDIST 2       2       V       V V             
+275    CHIINV  2       2       V       V V             
+276    COMBIN  2       2       V       V V             
+277    CONFIDENCE      3       3       V       V V V           
+278    CRITBINOM       3       3       V       V V V           
+279    EVEN    1       1       V       V               
+280    EXPONDIST       3       3       V       V V V           
+281    FDIST   3       3       V       V V V           
+282    FINV    3       3       V       V V V           
+283    FISHER  1       1       V       V               
+284    FISHERINV       1       1       V       V               
+285    FLOOR   2       2       V       V V             
+286    GAMMADIST       4       4       V       V V V V         
+287    GAMMAINV        3       3       V       V V V           
+288    CEILING 2       2       V       V V             
+289    HYPGEOMDIST     4       4       V       V V V V         
+290    LOGNORMDIST     3       3       V       V V V           
+291    LOGINV  3       3       V       V V V           
+292    NEGBINOMDIST    3       3       V       V V V           
+293    NORMDIST        4       4       V       V V V V         
+294    NORMSDIST       1       1       V       V               
+295    NORMINV 3       3       V       V V V           
+296    NORMSINV        1       1       V       V               
+297    STANDARDIZE     3       3       V       V V V           
+298    ODD     1       1       V       V               
+299    PERMUT  2       2       V       V V             
+300    POISSON 3       3       V       V V V           
+301    TDIST   3       3       V       V V V           
+302    WEIBULL 4       4       V       V V V V         
+303    SUMXMY2 2       2       V       A A             
+304    SUMX2MY2        2       2       V       A A             
+305    SUMX2PY2        2       2       V       A A             
+306    CHITEST 2       2       V       A A             
+307    CORREL  2       2       V       A A             
+308    COVAR   2       2       V       A A             
+309    FORECAST        3       3       V       V A A           
+310    FTEST   2       2       V       A A             
+311    INTERCEPT       2       2       V       A A             
+312    PEARSON 2       2       V       A A             
+313    RSQ     2       2       V       A A             
+314    STEYX   2       2       V       A A             
+315    SLOPE   2       2       V       A A             
+316    TTEST   4       4       V       A A V V         
+317    PROB    3       4       V       A A V V         
+318    DEVSQ   1       30      V       R ...           
+319    GEOMEAN 1       30      V       R ...           
+320    HARMEAN 1       30      V       R ...           
+321    SUMSQ   0       30      V       R ...           
+322    KURT    1       30      V       R ...           
+323    SKEW    1       30      V       R ...           
+324    ZTEST   2       3       V       R V V           
+325    LARGE   2       2       V       R V             
+326    SMALL   2       2       V       R V             
+327    QUARTILE        2       2       V       R V             
+328    PERCENTILE      2       2       V       R V             
+329    PERCENTRANK     2       3       V       R V V           
+330    MODE    1       30      V       A               
+331    TRIMMEAN        2       2       V       R V             
+332    TINV    2       2       V       V V             
+# New Built-In Sheet Functions in BIFF5
+70     WEEKDAY 1       2       V       V V             x
+101    HLOOKUP 3       4       V       V R R V         x
+102    VLOOKUP 3       4       V       V R R V         x
+220    DAYS360 2       3       V       V V V           x
+336    CONCATENATE     0       30      V       V               
+337    POWER   2       2       V       V V             
+342    RADIANS 1       1       V       V               
+343    DEGREES 1       1       V       V               
+344    SUBTOTAL        2       30      V       V R             
+345    SUMIF   2       3       V       R V R           
+346    COUNTIF 2       2       V       R V             
+347    COUNTBLANK      1       1       V       R               
+350    ISPMT   4       4       V       V V V V         
+351    DATEDIF 3       3       V       V V V           
+352    DATESTRING      1       1       V       V               
+353    NUMBERSTRING    2       2       V       V V             
+354    ROMAN   1       2       V       V V             
+# New Built-In Sheet Functions in BIFF8
+358    GETPIVOTDATA    2       30                              
+359    HYPERLINK       1       2       V       V V             
+360    PHONETIC        1       1       V       R               
+361    AVERAGEA        1       30      V       R ...           
+362    MAXA    1       30      V       R ...           
+363    MINA    1       30      V       R ...           
+364    STDEVPA 1       30      V       R ...           
+365    VARPA   1       30      V       R ...           
+366    STDEVA  1       30      V       R ...           
+367    VARA    1       30      V       R ...           
index 3dd8f9ebd9f33e4ed92c8fc98cbc40b95b81a437..6cebff51ba28c8ccf66c079e61455fd9c7041bb9 100755 (executable)
-FC 00 20\r
-20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75\r
-66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20\r
-4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00\r
-00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43\r
-6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52\r
-54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33\r
-32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08\r
-00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F\r
-77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11\r
-00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63\r
-6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69\r
-72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61\r
-73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A\r
-00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E\r
-69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35\r
-35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D\r
-61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20\r
-50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73\r
-63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61\r
-7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00\r
-00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72\r
-75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50\r
-61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C\r
-69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69\r
-74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69\r
-65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44\r
-6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27\r
-73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20\r
-47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A\r
-61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20\r
-42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74\r
-65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D\r
-61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F\r
-32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32\r
-36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43\r
-20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00\r
-31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B\r
-20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72\r
-6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34\r
-63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20\r
-5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65\r
-20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34\r
-32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D\r
-31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F\r
-56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44\r
-65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33\r
-0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04\r
-00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61\r
-20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00\r
-00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00\r
-00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00\r
-00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65\r
-72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44\r
-72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31\r
-2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52\r
-6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D\r
-6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33\r
-34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C\r
-69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72\r
-07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32\r
-30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73\r
-65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65\r
-65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00\r
-30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61\r
-75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74\r
-65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65\r
-72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31\r
-19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53\r
-70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52\r
-65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D\r
-00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09\r
-00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72\r
-61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F\r
-6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C\r
-65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33\r
-30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76\r
-79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E\r
-65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61\r
-72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61\r
-03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32\r
-35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A\r
-61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72\r
-65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20\r
-4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00\r
-00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53\r
-54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20\r
-53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39\r
-30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63\r
-6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61\r
-63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36\r
-34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61\r
-72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63\r
-65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F\r
-70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73\r
-6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53\r
-6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38\r
-31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65\r
-72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45\r
-6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C\r
-65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32\r
-30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63\r
-65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74\r
-69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74\r
-6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64\r
-73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69\r
-74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31\r
-42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E\r
-20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33\r
-04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F\r
-20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69\r
-6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04\r
-00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65\r
-72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75\r
-6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00\r
-38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E\r
-67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36\r
-30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00\r
-00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72\r
-74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73\r
-20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65\r
-72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05\r
-00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E\r
-20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00\r
-00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75\r
-70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53\r
-68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00\r
-00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72\r
-74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30\r
-13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43\r
-61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73\r
-03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00\r
-4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52\r
-20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72\r
-67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C\r
-63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42\r
-6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20\r
-6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45\r
-6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F\r
-72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18\r
-00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31\r
-20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32\r
-30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69\r
-65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75\r
-61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34\r
-30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43\r
-7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30\r
-36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35\r
-35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30\r
-37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33\r
-33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73\r
-68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D\r
-00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03\r
-00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C\r
-20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D\r
-00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08\r
-00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44\r
-6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62\r
-6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67\r
-61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27\r
-05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75\r
-73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72\r
-74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20\r
-22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37\r
-0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04\r
-00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F\r
-72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73\r
-74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69\r
-6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53\r
-65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76\r
-65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67\r
-68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72\r
-6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72\r
-74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00\r
-00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68\r
-65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65\r
-72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35\r
-2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61\r
-63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30\r
-30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75\r
-6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B\r
-05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20\r
-52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00\r
-00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56\r
-69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F\r
-53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31\r
-32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61\r
-6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54\r
-68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47\r
-75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72\r
-69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E\r
-73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34\r
-20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00\r
-57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53\r
-6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E\r
-06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79\r
-73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E\r
-20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48\r
-31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79\r
-20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69\r
-6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F\r
-77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32\r
-30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73\r
-74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32\r
-20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00\r
-00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38\r
-35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76\r
-79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17\r
-00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72\r
-66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73\r
-65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45\r
-20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37\r
-1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66\r
-69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00\r
-00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39\r
-42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35\r
-31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D\r
-35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48\r
-65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62\r
-65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E\r
-69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00\r
-4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E\r
-69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00\r
-00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D\r
-33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41\r
-69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B\r
-20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20\r
-4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C\r
-64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35\r
-55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61\r
-6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20\r
-27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00\r
-53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F\r
-72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50\r
-61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00\r
-31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74\r
-6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64\r
-65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B\r
-44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61\r
-72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20\r
-4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73\r
-74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F\r
-6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54\r
-36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61\r
-65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20\r
-4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00\r
-41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00\r
-00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00\r
-38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65\r
-20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20\r
-53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00\r
-00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61\r
-67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E\r
-74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47\r
-72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35\r
-2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20\r
-4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00\r
-4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00\r
-47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C\r
-69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39\r
-19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F\r
-77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32\r
-32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72\r
-74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C\r
-79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30\r
-31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56\r
-2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65\r
-07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D\r
-37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34\r
-35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16\r
-00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C\r
-20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B\r
-00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00\r
-48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65\r
-20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04\r
-00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70\r
-61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42\r
-6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50\r
-2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30\r
-34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20\r
-53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53\r
-75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76\r
-65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37\r
-39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F\r
-6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38\r
-10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73\r
-74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61\r
-62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E\r
-20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72\r
-6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70\r
-69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32\r
-34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A\r
-61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30\r
-33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66\r
-20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31\r
-37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20\r
-53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36\r
-36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72\r
-20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C\r
-69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00\r
-00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20\r
-47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00\r
-43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43\r
-5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68\r
-69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31\r
-2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B\r
-20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67\r
-73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04\r
-00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69\r
-6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E\r
-67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74\r
-65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F\r
-00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61\r
-6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E\r
-61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F\r
-6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61\r
-6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43\r
-61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37\r
-20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65\r
-74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D\r
-37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72\r
-65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20\r
-22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20\r
-52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18\r
-00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61\r
-6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D\r
-37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50\r
-61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00\r
-31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E\r
-65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31\r
-23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20\r
-59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69\r
-6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00\r
-00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04\r
-00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F\r
-72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32\r
-37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75\r
-74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D\r
-6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72\r
-63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72\r
-74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65\r
-72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48\r
-20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32\r
-0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67\r
-04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73\r
-74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42\r
-6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20\r
-42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30\r
-6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33\r
-1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65\r
-72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F\r
-6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69\r
-61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00\r
-00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65\r
-6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35\r
-30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20\r
-52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38\r
-35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50\r
-72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69\r
-6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72\r
-76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72\r
-74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65\r
-74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20\r
-4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C\r
-00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00\r
-00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75\r
-6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C\r
-79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F\r
-75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20\r
-45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65\r
-31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20\r
-6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C\r
-20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43\r
-75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20\r
-61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F\r
-61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53\r
-6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20\r
-43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24\r
-00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65\r
-72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72\r
-61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00\r
-53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00\r
-48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61\r
-20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73\r
-76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54\r
-72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00\r
-00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20\r
-39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D\r
-62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63\r
-68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61\r
-72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41\r
-6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74\r
-69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00\r
-00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44\r
-20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37\r
-31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63\r
-65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00\r
-00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53\r
-65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00\r
-36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C\r
-61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D\r
-6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00\r
-38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42\r
-6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D\r
-36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79\r
-69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65\r
-6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37\r
-35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72\r
-6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D\r
-6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61\r
-74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34\r
-43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00\r
-36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46\r
-34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00\r
-38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69\r
-6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F\r
-62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20\r
-43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69\r
-72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69\r
-6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30\r
-35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F\r
-64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36\r
-30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20\r
-4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36\r
-33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00\r
-00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20\r
-43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68\r
-6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00\r
-53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D\r
-32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69\r
-67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39\r
-12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20\r
-54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15\r
-00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65\r
-65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A\r
-00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43\r
-68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38\r
-35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72\r
-69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00\r
-00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73\r
-20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35\r
-2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75\r
-6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35\r
-2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63\r
-68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32\r
-04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00\r
-00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00\r
-4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54\r
-31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77\r
-6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F\r
-73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58\r
-2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69\r
-6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33\r
-33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20\r
-54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27\r
-00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69\r
-65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72\r
-70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73\r
-69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00\r
-00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73\r
-74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00\r
-44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61\r
-70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07\r
-00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79\r
-6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74\r
-69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61\r
-72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41\r
-64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38\r
-37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53\r
-74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74\r
-69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65\r
-72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03\r
-00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00\r
-56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69\r
-6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39\r
-20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68\r
-65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D\r
-31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31\r
-2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47\r
-75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72\r
-69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20\r
-43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68\r
-65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00\r
-00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00\r
-77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64\r
-20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72\r
-65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49\r
-43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B\r
-2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D\r
-69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34\r
-0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00\r
-46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61\r
-6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62\r
-61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43\r
-6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75\r
-67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53\r
-74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E\r
-20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C\r
-69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50\r
-6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74\r
-20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00\r
-44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79\r
-72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20\r
-46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36\r
-39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D\r
-30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E\r
-53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00\r
-36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20\r
-48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00\r
-36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00\r
-43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32\r
-34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65\r
-20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61\r
-69\r
+FC 00 20
+20 B8 05 00 00 B0 02 00 00 0C 00 00 4D 61 6E 75
+66 61 63 74 75 72 65 72 0B 00 00 50 61 72 74 20
+4E 75 6D 62 65 72 05 00 00 53 63 61 6C 65 04 00
+00 54 79 70 65 04 00 00 4E 61 6D 65 08 00 00 43
+6F 6D 6D 65 6E 74 73 08 00 00 41 4D 54 2D 45 52
+54 4C 07 00 00 48 6F 74 20 52 6F 64 10 00 00 33
+32 20 46 6F 72 64 20 52 6F 61 64 73 74 65 72 08
+00 00 4D 6F 6E 6F 67 72 61 6D 08 00 00 53 68 6F
+77 20 52 6F 64 07 00 00 48 61 6E 67 6D 61 6E 11
+00 00 50 65 74 65 72 62 69 6C 74 20 57 72 65 63
+6B 65 72 15 00 00 45 61 73 74 65 72 6E 20 41 69
+72 6C 69 6E 65 73 20 44 43 2D 33 11 00 00 4D 61
+73 65 72 61 74 69 20 4D 65 72 61 6B 20 53 53 1A
+00 00 44 6F 75 67 6C 61 73 20 50 2D 37 30 20 4E
+69 67 68 74 20 46 69 67 68 74 65 72 17 00 00 35
+35 20 43 68 65 76 79 20 53 74 72 65 65 74 20 4D
+61 63 68 69 6E 65 0C 00 00 54 77 65 65 64 79 20
+50 69 65 20 32 13 00 00 48 75 65 79 20 52 65 73
+63 75 65 20 43 68 6F 70 70 65 72 10 00 00 4D 61
+7A 64 61 20 4D 58 2D 35 20 4D 69 61 74 61 0A 00
+00 53 70 6F 72 74 73 20 43 61 72 05 00 00 54 72
+75 63 6B 06 00 00 52 6F 63 6B 65 74 09 00 00 50
+61 72 74 73 20 4B 69 74 0E 00 00 43 69 76 69 6C
+69 61 6E 20 50 6C 61 6E 65 0E 00 00 4D 69 6C 69
+74 61 72 79 20 50 6C 61 6E 65 0F 00 00 53 63 69
+65 6E 63 65 20 46 69 63 74 69 6F 6E 1A 00 00 44
+6F 6E 20 47 61 72 6C 69 74 73 20 57 79 6E 6E 27
+73 20 43 68 61 72 67 65 72 19 00 00 44 6F 6E 20
+47 61 72 6C 69 74 73 20 57 79 6E 6E 27 73 20 4A
+61 6D 6D 65 72 1A 00 00 50 61 63 6B 61 72 64 20
+42 6F 61 74 74 61 69 6C 20 53 70 65 65 64 73 74
+65 72 0E 00 00 52 65 76 65 6C 6C 20 47 65 72 6D
+61 6E 79 05 00 00 30 34 31 34 36 04 00 00 31 2F
+32 34 04 00 00 31 2F 37 32 0E 00 00 4D 65 20 32
+36 32 20 41 2D 31 61 2F 55 33 09 00 00 53 54 43
+20 53 74 61 72 74 04 00 00 34 63 2D 39 05 00 00
+31 2F 32 38 38 0C 00 00 50 72 6F 74 6F 6E 2D 4B
+20 4D 69 72 04 00 00 34 63 2D 37 0E 00 00 50 72
+6F 74 6F 6E 2D 4B 20 41 73 74 72 61 05 00 00 34
+63 2D 31 37 0E 00 00 50 72 6F 74 6F 6E 2D 4B 20
+5A 61 72 79 61 13 00 00 41 63 63 75 72 61 74 65
+20 4D 69 6E 69 61 74 75 72 65 73 04 00 00 33 34
+32 30 04 00 00 31 2F 34 38 0F 00 00 53 42 44 2D
+31 20 44 61 75 6E 74 6C 65 73 73 1B 00 00 77 2F
+56 65 72 6C 69 6E 64 65 6E 20 31 33 37 38 20 44
+65 74 61 69 6C 20 53 65 74 04 00 00 38 32 38 33
+0C 00 00 54 72 6F 75 62 6C 65 6D 61 6B 65 72 04
+00 00 32 37 33 37 0E 00 00 44 61 79 74 6F 6E 61
+20 53 70 69 64 65 72 04 00 00 38 31 32 36 04 00
+00 31 2F 32 35 06 00 00 48 65 6C 6C 65 72 05 00
+00 38 30 34 34 33 05 00 00 31 2F 31 34 34 12 00
+00 42 72 65 69 74 6C 69 6E 20 4F 72 62 69 74 65
+72 20 33 0F 00 00 53 68 61 6E 67 68 61 69 20 44
+72 61 67 6F 6E 04 00 00 31 39 39 38 04 00 00 31
+2F 39 36 0F 00 00 41 72 69 61 6E 65 20 35 20 52
+6F 63 6B 65 74 0F 00 00 52 65 76 65 6C 6C 2D 4D
+6F 6E 6F 67 72 61 6D 07 00 00 38 35 2D 35 39 33
+34 0F 00 00 50 42 59 2D 35 41 20 43 61 74 61 6C
+69 6E 61 0A 00 00 50 72 6F 4D 6F 64 65 6C 65 72
+07 00 00 47 6C 65 6E 63 6F 65 05 00 00 30 35 32
+30 32 04 00 00 31 2F 33 35 16 00 00 50 69 61 73
+65 63 6B 69 20 5A 56 2D 38 50 20 41 69 72 67 65
+65 70 08 00 00 48 61 73 65 67 61 77 61 05 00 00
+30 39 31 36 39 20 00 00 53 42 44 2D 33 20 44 61
+75 6E 74 6C 65 73 73 20 27 55 53 53 20 45 6E 74
+65 72 70 72 69 73 65 27 0C 00 00 53 69 6C 76 65
+72 20 43 6C 6F 75 64 06 00 00 53 43 34 38 30 31
+19 00 00 53 75 70 65 72 6D 61 72 69 6E 65 20 53
+70 69 74 65 66 75 6C 20 46 2E 31 34 06 00 00 52
+65 76 65 6C 6C 07 00 00 38 35 2D 31 36 35 34 0D
+00 00 50 2D 35 31 42 20 4D 75 73 74 61 6E 67 09
+00 00 50 72 6F 46 69 6E 69 73 68 06 00 00 44 72
+61 67 6F 6E 04 00 00 35 39 30 31 0B 00 00 46 6F
+6B 6B 65 72 20 44 72 2E 31 07 00 00 49 74 61 6C
+65 72 69 03 00 00 38 34 36 25 00 00 43 2D 31 33
+30 4A 20 48 65 72 63 75 6C 65 73 20 48 65 61 76
+79 20 54 72 61 6E 73 70 6F 72 74 20 50 6C 61 6E
+65 04 00 00 37 36 31 30 15 00 00 46 65 72 72 61
+72 69 20 46 35 30 20 42 61 72 63 68 65 74 74 61
+03 00 00 41 4D 54 08 00 00 54 33 37 34 2D 32 32
+35 0D 00 00 43 6F 72 76 61 69 72 20 4D 6F 6E 7A
+61 04 00 00 35 30 30 33 0B 00 00 4D 63 4C 61 72
+65 6E 20 4D 38 42 0D 00 00 52 65 76 65 6C 6C 20
+4C 6F 64 65 6C 61 05 00 00 48 2D 32 36 33 03 00
+00 75 6E 6B 23 00 00 42 6F 65 69 6E 67 20 53 53
+54 20 50 61 6E 41 6D 20 43 6C 69 70 70 65 72 20
+53 75 70 65 72 73 6F 6E 69 63 05 00 00 30 35 39
+30 39 05 00 00 31 2F 33 30 30 1D 00 00 4E 75 63
+6C 65 61 72 20 50 6F 77 65 72 65 64 20 53 70 61
+63 65 20 53 74 61 74 69 6F 6E 04 00 00 38 37 36
+34 06 00 00 31 2F 32 35 30 30 19 00 00 53 74 61
+72 20 54 72 65 6B 20 44 65 65 70 20 53 70 61 63
+65 20 4E 69 6E 65 23 00 00 46 69 62 65 72 2D 6F
+70 74 69 63 20 4C 69 67 68 74 69 6E 67 2C 20 73
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 0D 00 00 53
+6B 69 6C 6C 20 6C 65 76 65 6C 20 33 04 00 00 38
+31 35 38 16 00 00 42 6C 75 65 70 72 69 6E 74 65
+72 20 50 61 72 74 73 20 50 61 63 6B 13 00 00 45
+6E 67 69 6E 65 73 20 61 6E 64 20 67 72 69 6C 6C
+65 73 05 00 00 33 30 30 33 37 05 00 00 31 2F 32
+30 30 1E 00 00 4D 61 6E 20 49 6E 20 53 70 61 63
+65 20 52 6F 63 6B 65 74 20 43 6F 6C 6C 65 63 74
+69 6F 6E 53 00 00 4D 65 72 63 75 72 79 20 41 74
+6C 61 73 2C 20 4D 65 72 63 75 72 79 20 52 65 64
+73 74 6F 6E 65 2C 20 47 65 6D 69 6E 69 20 54 69
+74 61 6E 20 49 49 2C 20 53 61 74 75 72 6E 20 31
+42 20 41 70 6F 6C 6C 6F 2C 20 53 61 74 75 72 6E
+20 56 20 41 70 6F 6C 6C 6F 04 00 00 35 30 38 33
+04 00 00 31 2F 33 32 11 00 00 41 70 6F 6C 6C 6F
+20 53 70 61 63 65 63 72 61 66 74 09 00 00 4D 69
+6E 69 63 72 61 66 74 05 00 00 31 31 32 32 30 04
+00 00 31 2F 31 36 24 00 00 31 39 35 35 20 4D 65
+72 63 65 64 65 73 20 33 30 30 53 4C 20 22 47 75
+6C 6C 77 69 6E 67 22 20 43 6F 75 70 65 07 00 00
+38 35 2D 36 38 35 39 24 00 00 4D 75 73 74 61 6E
+67 20 4D 75 73 63 6C 65 20 54 72 69 6F 20 27 36
+30 73 2C 20 27 37 30 73 2C 20 27 38 30 73 35 00
+00 31 39 36 34 20 31 2F 32 20 43 6F 6E 76 65 72
+74 69 62 6C 65 2C 20 31 39 37 30 20 42 6F 73 73
+20 33 30 32 2C 20 31 39 38 39 20 43 6F 6E 76 65
+72 74 69 62 6C 65 06 00 00 54 61 6D 69 79 61 05
+00 00 32 34 31 37 30 0A 00 00 4D 6F 72 67 61 6E
+20 34 2F 34 07 00 00 38 35 2D 32 34 39 31 11 00
+00 36 37 20 43 6F 72 76 65 74 74 65 20 43 6F 75
+70 65 07 00 00 38 35 2D 32 35 33 34 0F 00 00 53
+68 65 6C 62 79 20 53 65 72 69 65 73 20 31 03 00
+00 35 36 32 11 00 00 41 73 74 6F 6E 20 4D 61 72
+74 69 6E 20 44 42 20 34 05 00 00 30 37 33 32 30
+13 00 00 50 6F 72 73 63 68 65 20 39 31 31 20 43
+61 72 72 65 72 61 07 00 00 54 65 73 74 6F 72 73
+03 00 00 33 38 36 04 00 00 32 39 37 32 16 00 00
+4D 65 72 63 65 64 65 73 20 33 30 30 20 53 4C 52
+20 22 37 32 32 22 08 00 00 4C 69 6E 64 62 65 72
+67 05 00 00 37 30 39 35 36 19 00 00 48 65 6C 6C
+63 61 74 73 20 76 73 2E 20 42 65 74 74 79 20 42
+6F 6D 62 65 72 0C 00 00 48 65 6C 6C 63 61 74 20
+6F 6E 6C 79 05 00 00 30 34 36 30 39 18 00 00 45
+6B 72 61 6E 6F 70 6C 61 6E 20 41 2D 39 30 20 4F
+72 6C 6A 6F 6E 6F 6B 05 00 00 31 31 36 32 36 18
+00 00 47 72 75 6D 6D 61 6E 20 58 46 35 46 2D 31
+20 53 6B 79 72 6F 63 6B 65 74 04 00 00 35 34 32
+30 0E 00 00 48 61 77 6B 65 72 20 48 61 72 72 69
+65 72 05 00 00 41 56 2D 38 41 06 00 00 65 64 75
+61 72 64 04 00 00 38 30 36 31 0F 00 00 50 2D 34
+30 30 20 41 69 72 61 63 6F 62 72 61 0B 00 00 43
+7A 65 63 68 20 4D 6F 64 65 6C 04 00 00 34 38 30
+36 16 00 00 43 75 72 74 69 73 73 20 58 50 2D 35
+35 20 41 73 63 65 6E 64 65 72 05 00 00 36 31 30
+37 34 14 00 00 44 6F 72 6E 69 65 72 20 44 6F 33
+33 35 41 20 50 66 69 65 6C 13 00 00 4B 79 75 73
+68 75 20 4A 37 57 31 20 53 68 69 6E 64 65 6E 0D
+00 00 50 6C 61 6E 65 74 20 4D 6F 64 65 6C 73 03
+00 00 30 34 33 0F 00 00 48 65 6E 73 63 68 65 6C
+20 48 73 20 50 38 37 05 00 00 52 65 73 69 6E 0D
+00 00 53 70 65 63 69 61 6C 20 48 6F 62 62 79 08
+00 00 53 48 20 34 38 30 30 33 16 00 00 4D 63 44
+6F 6E 6E 65 6C 6C 20 58 46 2D 38 35 20 47 6F 62
+6C 69 6E 2A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 31 30 39 45 20 27 42 75 6C 67
+61 72 69 61 6E 20 41 69 72 20 46 6F 72 63 65 27
+05 00 00 30 34 32 30 36 2D 00 00 41 69 72 62 75
+73 20 53 75 70 65 72 20 54 72 61 6E 73 70 6F 72
+74 65 72 20 41 33 30 30 2D 36 30 30 20 53 54 20
+22 42 65 6C 75 67 61 22 05 00 00 33 30 30 38 37
+0C 00 00 33 39 20 57 61 67 6F 6E 20 52 6F 64 04
+00 00 37 31 32 31 1A 00 00 31 39 33 32 20 46 6F
+72 64 20 48 69 67 68 62 6F 79 20 52 6F 61 64 73
+74 65 72 2E 00 00 4C 69 6E 63 6F 6C 6E 20 4D 69
+6E 74 20 55 6C 74 72 61 20 4D 65 74 61 6C 20 53
+65 72 69 65 73 2C 20 53 6B 69 6C 6C 20 6C 65 76
+65 6C 20 33 0C 00 00 50 6F 6C 61 72 20 4C 69 67
+68 74 73 04 00 00 35 30 31 34 21 00 00 43 61 72
+6C 20 43 61 73 70 65 72 27 73 20 55 6E 64 65 72
+74 61 6B 65 72 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 32 35 39 32 20 00 00 33 39 20 43 68
+65 76 79 20 53 65 64 61 6E 20 44 65 6C 69 76 65
+72 79 20 4C 6F 77 72 69 64 65 72 07 00 00 38 35
+2D 35 39 30 34 12 00 00 4E 41 53 41 20 53 70 61
+63 65 20 53 68 75 74 74 6C 65 04 00 00 32 34 30
+30 1C 00 00 31 39 32 36 20 4D 61 63 6B 20 42 75
+6C 6C 64 6F 67 20 44 75 6D 70 20 54 72 75 63 6B
+05 00 00 43 31 31 32 38 13 00 00 32 33 20 54 20
+52 6F 61 64 73 74 65 72 20 46 72 61 6D 65 05 00
+00 33 31 32 31 36 11 00 00 44 6F 64 67 65 20 56
+69 70 65 72 20 52 54 2D 31 30 07 00 00 50 72 6F
+53 68 6F 70 04 00 00 32 33 30 31 05 00 00 31 31
+32 31 32 26 00 00 31 39 33 35 20 4D 6F 72 67 61
+6E 20 53 75 70 65 72 20 53 70 6F 72 74 73 20 54
+68 72 65 65 20 57 68 65 65 6C 65 72 0C 00 00 47
+75 6E 7A 65 20 53 61 6E 67 79 6F 13 00 00 54 72
+69 75 6D 70 68 20 54 52 32 20 4C 65 20 4D 61 6E
+73 07 00 00 38 35 2D 31 39 31 31 0F 00 00 33 34
+20 46 6F 72 64 20 48 69 67 68 62 6F 79 17 00 00
+57 68 65 65 6C 73 20 6F 66 20 46 69 72 65 20 53
+6E 61 70 54 69 74 65 06 00 00 4A 6F 2D 48 61 6E
+06 00 00 47 43 2D 33 30 30 20 00 00 43 68 72 79
+73 6C 65 72 20 43 6F 72 70 6F 72 61 74 69 6F 6E
+20 54 75 72 62 69 6E 65 20 43 61 72 09 00 00 48
+31 32 38 35 3A 31 39 38 2B 00 00 54 6F 6D 6D 79
+20 49 76 6F 27 73 20 46 6F 75 72 20 45 6E 67 69
+6E 65 20 44 72 61 67 73 74 65 72 20 22 53 68 6F
+77 62 6F 61 74 22 09 00 00 48 31 32 32 34 3A 32
+30 30 17 00 00 32 32 20 4A 52 20 52 6F 61 64 73
+74 65 72 20 44 72 61 67 73 74 65 72 0F 00 00 32
+20 63 6F 6D 70 6C 65 74 65 20 63 61 72 73 04 00
+00 36 34 33 35 04 00 00 36 34 33 38 07 00 00 38
+35 2D 37 36 36 38 0F 00 00 34 31 20 43 68 65 76
+79 20 50 69 63 6B 75 70 04 00 00 36 35 38 35 17
+00 00 42 61 62 79 6C 6F 6E 20 35 20 53 74 61 72
+66 75 72 79 20 4D 6B 2E 31 1C 00 00 4D 65 73 73
+65 72 73 63 68 6D 69 74 74 20 42 66 31 30 39 45
+20 47 61 6C 6C 61 6E 64 05 00 00 36 31 30 36 37
+1B 00 00 42 72 69 73 74 6F 6C 20 42 65 61 75 66
+69 67 68 74 65 72 20 54 46 2E 4D 6B 2E 58 12 00
+00 48 65 6E 73 63 68 65 6C 20 48 73 20 31 32 39
+42 2D 32 04 00 00 33 34 31 39 0D 00 00 50 2D 35
+31 43 20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D
+35 35 30 39 1B 00 00 48 65 69 6E 6B 65 6C 20 48
+65 31 31 31 20 47 65 72 6D 61 6E 20 42 6F 6D 62
+65 72 11 00 00 41 63 61 64 65 6D 79 20 4D 69 6E
+69 63 72 61 66 74 04 00 00 32 31 34 35 1E 00 00
+4C 6F 63 6B 68 65 65 64 20 50 2D 33 38 4D 20 4E
+69 67 68 74 20 4C 69 67 68 74 6E 69 6E 67 07 00
+00 38 35 2D 30 31 33 35 11 00 00 4F 53 32 55 2D
+33 20 4B 69 6E 67 66 69 73 68 65 72 3B 00 00 41
+69 63 68 69 20 42 37 41 32 20 41 74 74 61 63 6B
+20 42 6F 6D 62 65 72 20 20 52 79 75 73 65 69 20
+4B 61 69 20 28 47 72 61 63 65 29 20 27 46 6F 6C
+64 69 6E 67 20 57 69 6E 67 27 15 00 00 58 46 35
+55 2D 31 20 46 6C 79 69 6E 67 20 50 61 6E 63 61
+6B 65 04 00 00 36 37 35 37 07 00 00 49 63 65 20
+27 54 27 07 00 00 38 35 2D 35 31 30 32 04 00 00
+53 68 69 70 15 00 00 55 2E 53 2E 53 2E 20 4E 6F
+72 74 68 20 43 61 72 6F 6C 69 6E 61 0E 00 00 50
+61 72 74 73 20 62 79 20 50 61 72 6B 73 04 00 00
+31 30 30 34 0F 00 00 44 69 73 74 72 69 62 75 74
+6F 72 20 4B 69 74 12 00 00 50 53 46 20 4D 6F 64
+65 6C 20 53 75 70 70 6C 69 65 73 07 00 00 45 4B
+44 31 30 30 30 1B 00 00 4D 6F 64 65 6C 20 43 61
+72 20 45 6E 67 69 6E 65 20 44 65 74 61 69 6C 20
+4B 69 74 04 00 00 38 34 33 35 1F 00 00 43 75 73
+74 6F 6D 20 26 20 43 6F 6D 70 65 74 69 74 69 6F
+6E 20 50 61 72 74 73 20 50 61 63 6B 04 00 00 54
+36 34 32 27 00 00 22 57 69 6E 6E 69 65 20 4D 61
+65 22 20 57 69 6C 65 79 20 50 6F 73 74 27 73 20
+4C 6F 63 6B 68 65 65 64 20 56 65 67 61 06 00 00
+41 69 72 66 69 78 05 00 00 30 34 31 37 36 0C 00
+00 44 48 20 43 6F 6D 65 74 20 34 20 42 07 00 00
+38 35 2D 34 31 36 32 1B 00 00 4F 72 61 6E 67 65
+20 43 72 61 74 65 20 27 33 32 20 46 6F 72 64 20
+53 65 64 61 6E 06 00 00 38 36 30 35 50 4F 14 00
+00 46 69 61 74 20 44 6F 75 62 6C 65 20 44 72 61
+67 73 74 65 72 0B 00 00 42 6C 75 65 70 72 69 6E
+74 65 72 06 00 00 48 2D 31 33 32 31 0C 00 00 47
+72 61 6E 20 54 75 72 69 73 6D 6F 07 00 00 38 35
+2D 37 36 33 37 15 00 00 33 31 20 46 6F 72 64 20
+4D 6F 64 65 6C 20 41 20 57 6F 6F 64 79 03 00 00
+4D 50 43 07 00 00 32 30 30 2D 32 30 30 16 00 00
+47 61 6E 67 62 75 73 74 65 72 73 20 32 38 20 4C
+69 6E 63 6F 6C 6E 07 00 00 38 35 2D 32 35 36 39
+19 00 00 43 68 65 76 79 20 53 2D 31 30 20 4C 6F
+77 72 69 64 65 72 20 33 27 6E 20 31 04 00 00 32
+32 31 31 04 00 00 35 35 30 35 1C 00 00 48 6F 72
+74 65 6E 20 48 6F 20 32 32 39 41 2D 31 20 46 6C
+79 69 6E 67 20 57 69 6E 67 05 00 00 30 35 32 30
+31 1C 00 00 4D 63 44 6F 6E 6E 65 6C 6C 20 58 56
+2D 31 20 43 6F 6E 76 65 72 74 69 70 6C 61 6E 65
+07 00 00 38 35 2D 35 38 31 30 0F 00 00 53 52 2D
+37 31 20 42 6C 61 63 6B 62 69 72 64 04 00 00 34
+35 32 32 19 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 42 66 2D 31 30 39 20 47 2D 31 30 16
+00 00 50 72 65 6D 69 75 6D 2C 20 73 6B 69 6C 6C
+20 6C 65 76 65 6C 20 34 04 00 00 38 36 34 36 0B
+00 00 48 6F 62 62 79 20 43 72 61 66 74 06 00 00
+48 43 31 35 34 39 16 00 00 56 61 6D 70 69 72 65
+20 46 33 20 4A 65 74 20 46 69 67 68 74 65 72 04
+00 00 33 34 30 31 0B 00 00 41 2D 33 36 20 41 70
+61 63 68 65 05 00 00 30 34 33 33 35 15 00 00 42
+6C 6F 68 6D 20 26 20 56 6F 73 73 20 42 56 20 50
+2D 31 39 34 09 00 00 30 31 33 30 4D 30 31 30 30
+34 00 00 43 6F 72 64 20 50 68 61 65 74 6F 6E 20
+53 65 64 61 6E 20 31 39 33 37 20 38 31 32 20 53
+75 70 65 72 63 68 61 72 67 65 64 20 43 6F 6E 76
+65 72 74 69 62 6C 65 07 00 00 38 35 2D 32 35 37
+39 15 00 00 56 57 20 42 65 65 74 6C 65 20 43 6F
+6E 76 65 72 74 69 62 6C 65 04 00 00 37 34 33 38
+10 00 00 42 4D 57 20 5A 2D 31 20 52 6F 61 64 73
+74 65 72 04 00 00 36 31 34 38 0B 00 00 44 69 61
+62 6C 6F 20 41 65 72 6F 0B 00 00 55 6E 69 6F 6E
+20 4D 6F 64 65 6C 2B 00 00 50 65 74 65 20 42 72
+6F 63 6B 27 73 20 53 43 43 41 20 43 68 61 6D 70
+69 6F 6E 20 42 52 45 2F 44 61 74 73 75 6E 20 32
+34 30 2D 5A 05 00 00 32 34 31 32 39 0D 00 00 4A
+61 67 75 61 72 20 58 4A 20 32 32 30 05 00 00 30
+33 31 30 31 13 00 00 53 70 69 72 69 74 20 6F 66
+20 53 74 2E 20 4C 6F 75 69 73 05 00 00 30 36 31
+37 31 15 00 00 4F 72 69 6F 6E 20 32 30 30 31 20
+53 70 61 63 65 63 72 61 66 74 04 00 00 38 37 36
+36 05 00 00 31 2F 36 35 30 18 00 00 53 74 61 72
+20 54 72 65 6B 20 55 2E 53 2E 53 2E 20 52 65 6C
+69 61 6E 74 07 00 00 38 35 2D 31 38 33 35 15 00
+00 4E 41 53 41 2F 4D 63 44 6F 6E 6E 65 6C 6C 20
+47 65 6D 69 6E 69 04 00 00 31 39 39 37 24 00 00
+43 68 61 6E 67 20 5A 68 65 6E 67 20 32 20 28 43
+5A 2D 32 45 29 20 4C 61 75 6E 63 68 20 56 65 68
+69 63 6C 65 05 00 00 31 31 32 31 30 04 00 00 31
+2F 32 30 13 00 00 4D 61 6B 6F 20 53 68 61 72 6B
+20 53 68 6F 77 20 43 61 72 08 00 00 44 72 61 67
+73 74 65 72 08 00 00 4C 6F 77 72 69 64 65 72 04
+00 00 36 30 36 36 2F 00 00 57 69 6C 64 20 57 69
+6C 6C 69 65 20 42 6F 72 73 63 68 20 22 57 69 6E
+67 65 64 20 45 78 70 72 65 73 73 22 20 41 6C 74
+65 72 65 64 20 52 6F 64 04 00 00 36 31 38 32 0F
+00 00 31 39 33 33 20 57 69 6C 6C 79 73 20 56 61
+6E 07 00 00 38 35 2D 30 35 34 30 34 00 00 49 6E
+61 75 67 75 72 61 6C 20 4D 41 54 43 4F 20 54 6F
+6F 6C 73 20 53 75 70 65 72 6E 61 74 69 6F 6E 61
+6C 73 20 4E 69 74 72 6F 20 46 75 6E 6E 79 20 43
+61 72 04 00 00 36 33 35 35 1E 00 00 31 39 35 37
+20 43 68 65 76 72 6F 6C 65 74 20 43 6F 72 76 65
+74 74 65 20 47 61 73 73 65 72 07 00 00 38 35 2D
+37 36 37 35 04 00 00 50 43 36 31 2A 00 00 47 72
+65 65 6E 20 48 6F 72 6E 65 74 20 46 6F 72 64 20
+22 54 22 20 53 68 6F 77 20 61 6E 64 20 47 6F 20
+52 6F 61 64 73 74 65 72 04 00 00 38 32 31 35 18
+00 00 31 39 34 30 20 46 6F 72 64 20 53 65 64 61
+6E 20 44 65 6C 69 76 65 72 79 07 00 00 38 35 2D
+37 36 32 38 16 00 00 33 37 20 46 6F 72 64 20 50
+61 6E 65 6C 20 44 65 6C 69 76 65 72 79 04 00 00
+31 32 39 34 10 00 00 47 79 70 73 79 20 44 75 6E
+65 20 42 75 67 67 79 06 00 00 48 2D 31 32 33 31
+23 00 00 43 68 72 79 73 6C 65 72 20 4E 65 77 20
+59 6F 72 6B 65 72 20 43 75 73 74 6F 6D 69 7A 69
+6E 67 20 4B 69 74 05 00 00 33 30 30 38 31 0E 00
+00 36 32 20 54 68 75 6E 64 65 72 62 69 72 64 04
+00 00 36 38 39 39 11 00 00 31 39 33 32 20 46 6F
+72 64 20 50 68 61 65 74 6F 6E 05 00 00 33 30 32
+37 30 0D 00 00 31 39 36 38 20 50 6C 79 6D 6F 75
+74 68 04 00 00 38 38 34 32 17 00 00 47 72 75 6D
+6D 61 6E 20 46 37 46 2D 33 4E 20 54 69 67 65 72
+63 61 74 04 00 00 48 32 34 34 14 00 00 4D 61 72
+74 69 6E 20 50 36 4D 20 53 65 61 6D 61 73 74 65
+72 04 00 00 35 35 30 30 0E 00 00 42 2D 32 35 48
+20 4D 69 74 63 68 65 6C 6C 04 00 00 33 34 30 32
+0D 00 00 50 2D 35 31 41 20 4D 75 73 74 61 6E 67
+04 00 00 36 34 32 31 3E 00 00 44 61 6D 62 75 73
+74 65 72 20 47 72 61 6E 64 20 53 6C 61 6D 20 42
+6F 6D 62 65 72 20 4C 61 6E 63 61 73 74 65 72 20
+42 49 20 53 70 65 63 69 61 6C 20 32 32 30 30 30
+6C 62 2E 20 42 6F 6D 62 05 00 00 31 34 34 34 33
+1E 00 00 4C 6F 63 6B 68 65 65 64 20 53 75 70 65
+72 2D 47 20 43 6F 6E 73 74 65 6C 6C 61 74 69 6F
+6E 04 00 00 35 36 31 30 13 00 00 57 69 6C 6C 69
+61 6D 73 20 42 72 6F 73 2E 20 49 6E 63 2E 07 00
+00 34 38 2D 33 31 39 31 10 00 00 43 6F 72 62 65
+6E 20 53 75 70 65 72 2D 41 63 65 05 00 00 30 35
+30 30 32 10 00 00 52 65 74 72 69 65 76 65 72 20
+52 6F 63 6B 65 74 03 00 00 43 61 72 04 00 00 38
+35 38 38 1D 00 00 50 6C 79 6D 6F 75 74 68 20 50
+72 6F 77 6C 65 72 20 77 69 74 68 20 54 72 61 69
+6C 65 72 04 00 00 35 30 30 31 14 00 00 43 6F 72
+76 65 74 74 65 20 47 72 61 6E 64 20 53 70 6F 72
+74 04 00 00 37 31 30 38 1D 00 00 43 6F 72 76 65
+74 74 65 20 49 6E 64 79 20 22 44 72 65 61 6D 20
+4D 61 63 68 69 6E 65 22 04 00 00 38 30 35 39 0C
+00 00 54 68 65 20 4D 75 6E 73 74 65 72 73 20 00
+00 42 6C 75 65 70 72 69 6E 74 65 72 3B 20 4D 75
+6E 73 74 65 72 73 20 4B 6F 61 63 68 20 6F 6E 6C
+79 07 00 00 38 35 2D 34 31 36 36 05 00 00 43 6F
+75 6E 74 3C 00 00 77 2F 43 75 74 74 69 6E 67 20
+45 64 67 65 20 43 45 43 34 38 30 38 36 20 48 65
+31 31 31 5A 20 22 5A 77 69 6C 6C 69 6E 67 22 20
+6B 69 74 2C 20 73 6B 69 6C 6C 20 6C 65 76 65 6C
+20 33 07 00 00 38 35 2D 37 36 36 36 23 00 00 43
+75 73 74 6F 6D 20 53 69 6C 76 65 72 61 64 6F 20
+61 6E 64 20 57 61 76 65 72 69 64 65 72 20 42 6F
+61 74 07 00 00 38 35 2D 36 38 35 38 16 00 00 53
+6E 61 6B 65 20 26 20 4D 6F 6E 67 6F 6F 73 65 20
+43 6F 6D 62 6F 07 00 00 38 35 2D 34 31 35 39 24
+00 00 4A 6F 65 20 41 6D 61 74 6F 20 53 75 70 65
+72 6D 61 6E 20 54 6F 70 20 46 75 65 6C 20 44 72
+61 67 73 74 65 72 04 00 00 37 35 34 31 0D 00 00
+53 6B 69 6C 6C 20 6C 65 76 65 6C 20 35 09 00 00
+48 38 32 35 2D 31 30 44 30 28 00 00 43 6F 63 61
+20 43 6F 6C 61 20 46 6F 72 64 20 4C 6F 75 69 73
+76 69 6C 6C 65 20 44 65 6C 69 76 65 72 79 20 54
+72 75 63 6B 07 00 00 38 35 2D 32 31 35 36 04 00
+00 32 39 35 34 0B 00 00 50 6F 72 73 63 68 65 20
+39 30 34 04 00 00 32 39 33 35 25 00 00 4C 61 6D
+62 6F 72 67 68 69 6E 69 20 43 6F 75 6E 74 61 63
+68 20 32 35 74 68 20 41 6E 6E 69 76 65 72 73 61
+72 79 07 00 00 38 35 2D 37 36 31 36 1F 00 00 41
+6D 65 72 69 63 61 6E 20 49 6E 74 65 72 6E 61 74
+69 6F 6E 61 6C 20 44 72 61 67 73 74 65 72 07 00
+00 38 35 2D 35 32 34 31 0D 00 00 50 2D 35 31 44
+20 4D 75 73 74 61 6E 67 07 00 00 38 35 2D 35 37
+31 30 11 00 00 52 42 2D 33 36 48 20 50 65 61 63
+65 6D 61 6B 65 72 05 00 00 30 35 31 30 34 14 00
+00 52 65 70 75 62 6C 69 63 20 52 43 2E 33 20 53
+65 61 62 65 65 05 00 00 50 41 31 35 32 05 00 00
+36 31 30 36 36 25 00 00 44 65 48 61 76 69 6C 6C
+61 6E 64 20 4D 6F 73 71 75 69 74 6F 20 42 20 4D
+6B 2E 49 56 2F 50 52 20 4D 6B 2E 49 56 07 00 00
+38 35 2D 37 35 34 36 10 00 00 50 2D 36 31 20 42
+6C 61 63 6B 20 57 69 64 6F 77 07 00 00 38 35 2D
+36 36 35 32 25 00 00 42 2D 31 37 46 20 46 6C 79
+69 6E 67 20 46 6F 72 74 72 65 73 73 20 22 4D 65
+6D 70 68 69 73 20 42 65 6C 6C 65 22 04 00 00 37
+35 30 30 0D 00 00 47 61 74 65 73 20 4C 65 61 72
+6A 65 74 03 00 00 35 31 39 15 00 00 47 72 75 6D
+6D 61 6E 20 46 38 46 2D 32 20 42 65 61 72 63 61
+74 04 00 00 37 35 32 33 12 00 00 46 2D 31 30 34
+43 20 53 74 61 72 66 69 67 68 74 65 72 05 00 00
+36 31 30 37 30 15 00 00 56 6F 75 67 68 74 20 46
+34 55 2D 31 41 20 43 6F 72 73 61 69 72 07 00 00
+38 35 2D 37 36 36 34 19 00 00 42 61 6C 64 77 69
+6E 2D 4D 6F 74 69 6F 6E 20 44 72 61 67 20 43 6F
+62 72 61 04 00 00 38 34 35 35 14 00 00 35 37 20
+43 68 65 76 72 6F 6C 65 74 20 42 65 6C 20 41 69
+72 16 00 00 50 72 6F 53 68 6F 70 2C 20 73 6B 69
+6C 6C 20 6C 65 76 65 6C 20 33 05 00 00 33 30 30
+35 32 0D 00 00 34 31 20 46 6F 72 64 20 57 6F 6F
+64 79 07 00 00 38 35 2D 32 35 35 37 19 00 00 36
+30 20 43 68 65 76 79 20 48 61 72 64 74 6F 70 20
+4C 6F 77 72 69 64 65 72 07 00 00 38 35 2D 37 36
+33 38 09 00 00 41 65 72 6F 76 65 74 74 65 07 00
+00 38 35 2D 30 30 39 34 1B 00 00 4C 69 27 6C 20
+43 6F 66 66 69 6E 20 43 75 73 74 6F 6D 20 53 68
+6F 77 20 52 6F 64 04 00 00 38 32 39 30 0A 00 00
+53 27 43 6F 6F 6C 20 42 75 73 07 00 00 38 35 2D
+32 35 39 37 12 00 00 53 74 72 65 65 74 20 46 69
+67 68 74 65 72 20 54 77 6F 04 00 00 37 36 30 39
+12 00 00 54 68 61 6D 65 73 20 50 61 6E 65 6C 20
+54 72 75 63 6B 07 00 00 38 35 2D 37 36 30 36 15
+00 00 44 61 6E 20 46 69 6E 6B 27 73 20 53 70 65
+65 64 77 61 67 6F 6E 05 00 00 30 35 35 30 35 1A
+00 00 4D 61 72 74 69 6E 20 4D 2D 31 33 30 20 43
+68 69 6E 61 20 43 6C 69 70 70 65 72 07 00 00 38
+35 2D 30 30 31 35 0E 00 00 46 6F 72 64 20 54 72
+69 2D 4D 6F 74 6F 72 04 00 00 50 41 33 30 1A 00
+00 57 72 69 67 68 74 20 42 72 6F 74 68 65 72 73
+20 4B 69 74 74 79 20 48 61 77 6B 07 00 00 38 35
+2D 35 30 38 31 13 00 00 46 69 72 73 74 20 4C 75
+6E 61 72 20 4C 61 6E 64 69 6E 67 07 00 00 38 35
+2D 35 38 33 39 18 00 00 4D 65 73 73 65 72 73 63
+68 6D 69 74 74 20 42 66 20 31 31 30 20 47 2D 32
+04 00 00 43 48 34 31 04 00 00 4A 30 30 34 05 00
+00 4A 54 31 32 33 04 00 00 4A 54 32 32 04 00 00
+4A 54 37 31 04 00 00 53 50 36 33 04 00 00 42 54
+31 36 0C 00 00 4F 56 2D 31 42 20 4D 6F 68 61 77
+6B 03 00 00 30 36 38 0B 00 00 56 2D 32 32 20 4F
+73 70 72 65 79 04 00 00 38 36 31 35 13 00 00 58
+2F 59 42 2D 33 35 20 46 6C 79 69 6E 67 20 57 69
+6E 67 05 00 00 31 31 32 30 38 1B 00 00 31 39 33
+33 20 43 61 64 69 6C 6C 61 63 20 56 2D 31 36 20
+54 6F 77 6E 20 43 61 72 04 00 00 36 36 31 38 27
+00 00 53 74 61 72 20 54 72 65 6B 20 33 20 50 69
+65 63 65 20 55 2E 53 2E 53 2E 20 45 6E 74 65 72
+70 72 69 73 65 20 53 65 74 12 00 00 4D 69 73 73
+69 6E 67 20 54 56 20 76 65 72 73 69 6F 6E 04 00
+00 38 39 31 35 0E 00 00 53 74 61 72 20 44 65 73
+74 72 6F 79 65 72 04 00 00 38 31 39 33 0A 00 00
+44 65 61 74 68 20 53 74 61 72 08 00 00 53 6E 61
+70 54 69 74 65 07 00 00 38 35 2D 33 36 32 31 07
+00 00 38 35 2D 33 36 32 32 17 00 00 42 61 62 79
+6C 6F 6E 20 35 20 53 70 61 63 65 20 53 74 61 74
+69 6F 6E 04 00 00 36 38 35 38 1F 00 00 53 74 61
+72 20 54 72 65 6B 20 33 20 50 69 65 63 65 20 41
+64 76 65 72 73 61 72 79 20 53 65 74 04 00 00 38
+37 36 32 06 00 00 31 2F 31 30 30 30 29 00 00 53
+74 61 72 20 54 72 65 6B 20 47 65 6E 65 72 61 74
+69 6F 6E 73 20 55 2E 53 2E 53 2E 20 45 6E 74 65
+72 70 72 69 73 65 20 42 04 00 00 38 38 38 33 03
+00 00 31 2F 34 05 00 00 4F 74 68 65 72 12 00 00
+56 69 73 69 62 6C 65 20 56 2D 38 20 45 6E 67 69
+6E 65 04 00 00 37 31 32 30 1C 00 00 31 39 36 39
+20 50 6F 6E 74 69 61 63 20 47 54 4F 20 22 54 68
+65 20 4A 75 64 67 65 22 09 00 00 31 2F 32 34 2D
+31 2F 32 35 05 00 00 31 2F 31 33 30 05 00 00 31
+2F 35 37 30 05 00 00 54 6F 20 64 6F 33 00 00 47
+75 73 20 47 72 69 73 73 6F 6D 20 4D 65 6D 6F 72
+69 61 6C 20 43 6F 6D 62 6F 20 77 2F 54 77 6F 20
+43 6F 6C 6C 65 63 74 6F 72 73 20 50 61 74 63 68
+65 73 09 00 00 46 69 72 65 20 49 72 6F 6E 0C 00
+00 77 2F 64 65 74 61 69 6C 20 73 65 74 2C 00 00
+77 2F 64 65 74 61 69 6C 20 73 65 74 20 61 6E 64
+20 69 6E 74 65 72 69 6F 72 20 73 65 74 2C 20 72
+65 73 69 6E 20 65 6E 67 69 6E 65 73 03 00 00 49
+43 4D 0E 00 00 53 70 69 74 66 69 72 65 20 4D 6B
+2E 49 58 1A 00 00 4D 65 73 73 65 72 73 63 68 6D
+69 74 74 20 4D 65 20 34 31 30 42 2D 32 2F 55 34
+0A 00 00 4D 6F 64 65 6C 63 72 61 66 74 12 00 00
+46 2D 38 32 42 20 54 77 69 6E 20 4D 75 73 74 61
+6E 67 1F 00 00 31 39 35 33 20 53 74 75 64 65 62
+61 6B 65 72 20 53 74 61 72 6C 69 6E 65 72 20 43
+6F 75 70 65 04 00 00 32 34 33 36 0E 00 00 42 75
+67 61 74 74 69 20 45 42 20 31 31 30 2D 00 00 53
+74 61 72 20 54 72 65 6B 20 4B 6C 69 6E 67 6F 6E
+20 42 69 72 64 20 6F 66 20 50 72 65 79 20 46 6C
+69 67 68 74 20 44 69 73 70 6C 61 79 16 00 00 50
+6F 72 73 63 68 65 20 39 31 31 20 53 6C 61 6E 74
+20 4E 6F 73 65 05 00 00 36 31 30 37 33 25 00 00
+44 6F 75 67 6C 61 73 20 41 2D 31 4A 20 53 6B 79
+72 61 69 64 65 72 20 55 2E 53 2E 20 41 69 72 20
+46 6F 72 63 65 04 00 00 36 33 33 39 04 00 00 36
+39 35 35 04 00 00 37 35 33 30 06 00 00 34 38 2D
+30 32 30 05 00 00 31 2F 34 35 30 0F 00 00 55 2E
+53 2E 53 2E 20 4D 69 73 73 6F 75 72 69 05 00 00
+36 31 30 35 37 15 00 00 48 65 69 6E 6B 65 6C 20
+48 65 32 31 39 20 41 2D 37 20 55 48 55 05 00 00
+36 31 30 34 31 05 00 00 31 31 36 32 34 32 00 00
+43 6F 6E 73 6F 6C 69 64 61 74 65 64 20 42 2D 32
+34 4A 20 4C 69 62 65 72 61 74 6F 72 20 54 68 65
+20 44 72 61 67 6F 6E 20 26 20 48 69 73 20 54 61
+69