<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
h1
        {mso-style-priority:9;
        mso-style-link:"Otsikko 1 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:24.0pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
h2
        {mso-style-priority:9;
        mso-style-link:"Otsikko 2 Char";
        margin-top:2.0pt;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:0cm;
        page-break-after:avoid;
        font-size:13.0pt;
        font-family:"Calibri Light",sans-serif;
        color:#2F5496;
        mso-fareast-language:EN-US;
        font-weight:normal;}
h3
        {mso-style-priority:9;
        mso-style-link:"Otsikko 3 Char";
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:13.5pt;
        font-family:"Calibri",sans-serif;
        font-weight:bold;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML-esimuotoiltu Char";
        margin:0cm;
        font-size:10.0pt;
        font-family:"Courier New";}
span.Shkpostityyli18
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.Otsikko1Char
        {mso-style-name:"Otsikko 1 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 1";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:FI;
        font-weight:bold;}
span.Otsikko3Char
        {mso-style-name:"Otsikko 3 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 3";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:FI;
        font-weight:bold;}
span.Otsikko2Char
        {mso-style-name:"Otsikko 2 Char";
        mso-style-priority:9;
        mso-style-link:"Otsikko 2";
        font-family:"Calibri Light",sans-serif;
        color:#2F5496;}
span.HTML-esimuotoiltuChar
        {mso-style-name:"HTML-esimuotoiltu Char";
        mso-style-priority:99;
        mso-style-link:HTML-esimuotoiltu;
        font-family:"Courier New";
        mso-fareast-language:FI;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:144248511;
        mso-list-template-ids:-724812020;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:320083480;
        mso-list-template-ids:-1578588024;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2
        {mso-list-id:539442295;
        mso-list-template-ids:-1210790214;}
@list l2:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:674118141;
        mso-list-template-ids:-1571644720;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4
        {mso-list-id:683409887;
        mso-list-template-ids:-548896328;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5
        {mso-list-id:837157418;
        mso-list-template-ids:1801890916;}
@list l5:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l5:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l5:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l5:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6
        {mso-list-id:1546330746;
        mso-list-template-ids:-1538106850;}
@list l6:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l6:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l6:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l6:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7
        {mso-list-id:1549612698;
        mso-list-template-ids:-253584558;}
@list l7:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l7:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l7:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l7:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8
        {mso-list-id:1773356764;
        mso-list-template-ids:1990375050;}
@list l8:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l8:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l8:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l8:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9
        {mso-list-id:1836602665;
        mso-list-template-ids:-1692360940;}
@list l9:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l9:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l9:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l9:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10
        {mso-list-id:2068841920;
        mso-list-template-ids:2013427306;}
@list l10:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:36.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l10:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:72.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l10:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:108.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:144.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:180.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:216.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:252.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:288.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l10:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:324.0pt;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">Good news everyone,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">The latest and greatest version 2.11.0 of Oskari has been released! It is now available on GitHub (<a href="https://github.com/oskariorg">https://github.com/oskariorg</a>) and
 Oskari.org Maven repository. The sample application package has been updated on the download link in Oskari.org (<a href="https://oskari.org/download">https://oskari.org/download</a>) and
<a href="http://download.osgeo.org/oskari/">http://download.osgeo.org/oskari/</a>. As always you can take a peek at the latest release at
<a href="https://demo.oskari.org/">https://demo.oskari.org/</a>.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif">For end-users the biggest change is that styling for vector layers can now be saved. Previously the styles could be changed at runtime, but the styles were not stored. Now they
 can be used in embedded maps and links etc. For Oskari customization you can now replace the flyout based search with one that is directly on the map (as previously seen on embedded maps). This search is now fully fledged to work as geoportal search as well
 and since it’s the same tool the embedded maps benefit from these improvements as well. We have also taken first steps on making the geoportal UI more mobile friendly. And we have continued working out things under the hood to improve maintainability and developer
 experience when working with the publisher functionality and map plugins.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<h1 style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white">
<span lang="EN-US" style="font-size:22.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Release Notes<o:p></o:p></span></h1>
<h1 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);border-bottom:var(--color-border-muted);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:16.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Oskari-frontend<o:p></o:p></span></h1>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">For a full list of changes see: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><a href="https://github.com/oskariorg/oskari-frontend/milestone/42?closed=1"><span lang="EN-US">https://github.com/oskariorg/oskari-frontend/milestone/42?closed=1</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Vector layer styling<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">End-users can now save styles for vector layers! Defining styles for vector layers was possible before, but they were runtime only and lost on page refresh. Now the
 styles can be saved which means they are restored when logged in and can be used in embedded maps and links etc. End-users have a new tab on mydata to manage styles like other user generated content. Admins also have an improved UI for configuring styles.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Improved search UI<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">SearchPlugin</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> implementation
 has been improved to support functionalities that have been previously available only on the geoportal search UI. This means you can have the same search UI on geoportal apps and on embedded maps and provide users easier access to search. This also means that
 the search UI on embedded maps has been improved. The plugin is a bit larger than before to accommodate mobile users when it's showing the search input and minimizes to search icon when the map is used.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The plugin has new configuration options (for database/appsetup) on how to handle search result click and for enabling user to select channels (backend services) which
 are used for searching:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2166">#2166</a><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2126">#2126</a><o:p></o:p></span></li></ul>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The search results are now shown per channel which enables adding different kinds of channels for the search like searching for map layers, statistical indicators etc
 as the channel result can be handled differently based on result type. The channel with most results is shown first.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Metadata search has been improved to detect if the search flyout is present. The metadata search will create its own "tile"/menu item on the main menu if the flyout
 is not available and metadata search can't be injected into it.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Initial mobile support changes for geoportal<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The frontend now uses 650px as breaking point on both width and height for transforming to "mobile mode". The element size that is tracked is the root element of Oskari.
 Previously the measurements were 500px x 400px and the monitored element was the map element.<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Oskari.util.isSmallScreen()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> so
 mobile breakpoint is managed in one place. Oskari.util.isMobile() uses this in addition to determining user device.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Flyouts in mobile mode now cover the screen and are not draggable.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Flyouts in general respect the maximum screen space available and can't be bigger than the available screen space.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Search flyout now closes in mobile mode when search result is clicked so user can see the result on map.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Layer listing has been modified to allow elements of the UI to work with smaller screen.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Legend for statistical data now handles smaller screens by NOT growing out of screen.<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Publisher<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Map layer related tools and controls have been moved under the map layer accordion panel to make them easier to find.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Tools that are only valid for RPC-based apps are now grouped under a new RPC-tools panel.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">The publisher tools that are the under these new panels (RCP-tools and Map layers) have been rewritten as React-implementations.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">More tools can now be relocated on the publisher like the tools for statistical data functionalities.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Vector feature hover styles are now disabled when tools are dragged on publisher.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l5 level1 lfo3;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">The fiddly left/right hand toggle has been replaced with "switch sides" button that swaps tools from left to right and vice versa.<o:p></o:p></span></li></ul>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">On the developer side, the publisher tool interface/API has been streamlined and unnecessary functions have been removed. This might affect instances that have added
 their own application specific publisher tools:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Documentation added: <a href="https://oskari.org/documentation/features/publisher/tools">https://oskari.org/documentation/features/publisher/tools</a><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2164">#2164</a><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2180">#2180</a><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">publisher tool handlers can now implement onLayersChanged() function to get notified of layer changes: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2191"><span lang="EN-US">#2191</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">tool.isDiplayed() now receives the embedded map payload so it can determine if the tool should be shown or not based on the data<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l4 level1 lfo4;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">New base class for tools: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2218"><span lang="EN-US">#2218</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li></ul>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">ShowFilteredLayerListRequest</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> can now be used to open the selected
 layers tab of the geoportal layer listing UI. This is used by the publisher so we can use the existing UI for all layer related operations.<o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Other UI related changes<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Layer admin UI fixes for capabilities scheduling and handling for invalid scale limits<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Layer analytics UI for admins now includes quality of life improvements like searching<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">User admin (admin-users bundle) has been reimplemented with React.js and includes a small facelift and improves the functionality in instances with a lot of users.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Time series UI has been improved (and we'll continue working on theme support on these)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">The layer comparison control (swipe-tool) and the crosshair on map is now shown under the infobox-popup instead of on top of it.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed a bunch of broken tooltips<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Disabled statistical data histogram from being edited when classification is disabled.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Statistical regions are now sorted on the user data input form.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Some SVG-icons were not shown properly (mostly on Safari or zoomed in pages) - these have been fixed<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level1 lfo5;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Theming:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l3 level2 lfo5;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Badge component supports theming<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level2 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">User style forms like dataset import and adding additional layers for myplaces now uses theme color as default color<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l3 level2 lfo5;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Printout sidebar now respects theming colors<o:p></o:p></span></li></ul>
</ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Map plugin changes for developers<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Plugins no longer need to care if they are in publisher "drag mode". Previously disabling clicks were handled by plugins and the drag handle was added by plugins. Now
 the publisher handles all of this so creating new plugins is much easier and less error-prone. Overall they work much better out of the box with the publisher functionalities and makes developer experience more enjoyable.<o:p></o:p></span></p>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Changes to map plugin interface/API:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Documentation: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://oskari.org/documentation/features/map/mapplugin"><span lang="EN-US">https://oskari.org/documentation/features/map/mapplugin</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo6;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added new functions like:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l10 level2 lfo6;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">resetUI()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (to clean up any popups/menus for major UI changes)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l10 level2 lfo6;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">refresh()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> called when the UI needs to be updated (replaces changeToolStyle(), redrawUI() and several
 other similar functions for cleaner developer experience)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level2 lfo6;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">More details in <a href="https://github.com/oskariorg/oskari-frontend/pull/2200">#2200</a><o:p></o:p></span></li></ul>
<li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Removed old toolstyle references from plugins and mapmodule (using theme instead)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Removed unused functions from plugins and mapmodule (mostly relating to old "toolstyle"): </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2163"><span lang="EN-US">#2163</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l10 level1 lfo6;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Changes to how plugin visibility is handled: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2201"><span lang="EN-US">#2201</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Layer handling changes for developers<o:p></o:p></span></h3>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The layers loaded for listing purposes no longer includes all the data for the layer. Instead a </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">DescribeLayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> call
 to the server is done to load things like vector layer styles and WMTS tilematrices etc. Layers now have handleDescribeLayer() that can be overridden in layer types to add spcecific handling. Going forward DescribeLayer will be improved to make similar routes
 (like </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">GetWFSLayerFields</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">WFS</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> and </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">GetLayerCapabilities</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> for </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">WMTS</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">)
 unnecessary and this work has already started on this version.<o:p></o:p></span></p>
<p style="margin:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">The </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas;color:#1F2328">AbstractLayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> baseclass
 now has more developer friendly functions:<o:p></o:p></span></p>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo7;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">isVisible()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> returns the status if the layer visibility has been changed by the user<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l7 level1 lfo7;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">isVisibleOnMap()</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> can be used to detect if the layer is actually shown on the map.
</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">This takes into account:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l7 level2 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">if the user has hidden the layer<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l7 level2 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">if the map is out of the scale range for the layer<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l7 level2 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">if the layers coverage area is not on the map viewport<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l7 level2 lfo7;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">if the layer can't be shown (due not being supported like 3dtiles on non-3D map)<o:p></o:p></span></li></ul>
</ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Other changes for developers<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Upgraded dependencies to enable NodeJS 16<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">node-sass</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> prevents using NodeJS 18 at the moment<o:p></o:p></span></li></ul>
<li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Upgraded </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">AntD</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> -
 this might require changes to app specific code: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2165"><span lang="EN-US">#2165</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Changed </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">moment.js</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> to </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">day.js</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> -
 this might require changes to app specific code<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Upgraded D3 and it is now linked in </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">package.json</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">/used
 through </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">npm install</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">The printout code has been cleaned </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2144"><span lang="EN-US">#2144</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Table implementations are now more consistent: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2151"><span lang="EN-US">#2151</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Oskari.util.formatDate() is now used for time formatting through out the functionalities<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an error on coordinate tool (sometimes sending coordinates to server with separator </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">,</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> instead
 of </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">.</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue with markers where trying to hide an already hidden marker resulted in an error where the marker couldn't be restored on screen<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added error handling when a layer can't be shown on the map: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-frontend/pull/2234"><span lang="EN-US">#2234</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Popups are no longer attached to document body, but under Oskari root element.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Popup (and MovableContainer) now detects size changes and tries to keep the container on screen. So if the content grows beyond screen viewport the container is moved to accommodate
 content change.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Lots of popups opened by toolbar tools have been migrated from jQuery to React.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l9 level1 lfo8;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Added/improved components:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">MovableContainer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> (oskari-ui/window) acts like popups, but don't have the header part of popups.
 Can be used to add a draggable object on the screen. </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Used for example on the legend for statistical data.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Sidebar</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> for publisher, printout etc functionalities<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Flyout now has a new option </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">resizable</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> to
 make it resizable by user and<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">New (themed) </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">Header</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> component
 that is used for Popup and Sidebar<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">IconButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> component includes the common icons used on buttons with tooltips, confirmation dialogs
 etc.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l9 level2 lfo8;background:white;box-sizing: border-box">
<code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">CopyField</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> and </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">CopyButton</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"> for
 system clipboard handling<o:p></o:p></span></li></ul>
</ul>
<h2 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white">
<b><span lang="EN-US" style="font-size:16.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Oskari-server<o:p></o:p></span></b></h2>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">For a full list of changes see: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><a href="https://github.com/oskariorg/oskari-server/milestone/45?closed=1"><span lang="EN-US">https://github.com/oskariorg/oskari-server/milestone/45?closed=1</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><o:p></o:p></span></p>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Vector layer styles<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">End-users can now store styles for vector layers!<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">The styles users create are public/anyone can reference them. This makes them work with embedded maps in a way that users expect them to work. This doesn't mean that users styles
 are listed to other users in the geoportal UI.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">New table for storing styles: </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari_maplayer_style</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Styles have been migrated from </span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">oskari_maplayer</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">.</span><code><span lang="EN-US" style="font-size:10.0pt;font-family:Consolas">options</span></code><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Instance default style is also stored in the table: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><a href="https://github.com/oskariorg/oskari-server/pull/932"><span lang="EN-US">#932</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Styles have been removed from layer options from the layer listing functionality. Frontend is expected to fetch them by calling DescribeLayer route.<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo9;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Printing functionality has been migrated to use styles from the database<o:p></o:p></span></li></ul>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">User/role management<o:p></o:p></span></h3>
<ul type="disc">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">User listing is now fetched in pages so instances with lots of users can use this without crashing the browser<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Users can now be searched as well as listed<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Role names can now be edited<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Admin user management now uses the same rules to validate users as end-user registration<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Additional metadata about roles is sent for admin user interface to make admins life easier (can be used to hide guest role/disable edit and delete for built-in roles etc)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l8 level1 lfo10;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Instance admins can now configure oskari-ext.properties to disable editing user data. This is convenient if the user data in Oskari is updated using some external system.
</span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">User roles can still be assigned for users (<a href="https://github.com/oskariorg/oskari-server/pull/944">#944</a>):<o:p></o:p></span></li></ul>
<pre style="box-sizing: border-box;overflow-wrap: normal;color:var(--color-fg-default);background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span style="font-family:Consolas;color:#1F2328;border:none windowtext 1.0pt;padding:0cm">oskari.user.external=true<o:p></o:p></span></code></pre>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Search channel options<o:p></o:p></span></h3>
<p style="mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Search channels with code based adapters (non-WFS search channels) can now be configured with a localized name and desciption on oskari-ext.properties: </span><span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"><a href="https://github.com/oskariorg/oskari-server/pull/953"><span lang="EN-US">#953</span></a></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328"> Localization
 is not required/these can be configured with or without specific language:<o:p></o:p></span></p>
<pre style="box-sizing: border-box;overflow-wrap: normal;color:var(--color-fg-default);background-color:var(--color-canvas-subtle);border-radius: 6px;overflow:auto"><code><span lang="EN-US" style="font-family:Consolas;color:#1F2328;border:none windowtext 1.0pt;padding:0cm">search.channel.OPENSTREETMAP_CHANNEL.label=OpenStreetMap<o:p></o:p></span></code></pre>
<pre><code><span style="font-family:Consolas;color:#1F2328;border:none windowtext 1.0pt;padding:0cm">search.channel.OPENSTREETMAP_CHANNEL.desc.fi=Hae paikkoja ja/tai osoitteita<o:p></o:p></span></code></pre>
<pre><code><span lang="EN-US" style="font-family:Consolas;color:#1F2328;border:none windowtext 1.0pt;padding:0cm">search.channel.OPENSTREETMAP_CHANNEL.desc.en=Search addresses and/or points of interest<o:p></o:p></span></code></pre>
<h3 style="mso-margin-top-alt:18.0pt;margin-right:0cm;margin-bottom:12.0pt;margin-left:0cm;background:white;box-sizing: border-box;font-weight:var(--base-text-weight-semibold, 600);font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px">
<span style="font-size:14.0pt;font-family:"Segoe UI",sans-serif;color:#1F2328">Other changes<o:p></o:p></span></h3>
<ul style="margin-top:0cm;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" type="disc">
<li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">DescribeLayer route has been improved so it can function as a source for frontend to get additional metadata for layers that are added on the map. This enables us to remove unnecessary
 data from the layer listing response. This allows us to remove some of the layer specific routes that have been previously created and now returns:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">coverage area for the layer data<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">styles for vector layers<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">vector layer properties<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">tile matrix information for wmts layers<o:p></o:p></span></li></ul>
<li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue with email validation. The original change was meant to add support for domains with dashes, but this prevented users from registering if their email did NOT have a
 dash in the domain.<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue with proxying WMTS-layers through GetLayerTile<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue where searching for metadata with filters but not giving a free text query resulted in an error<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Fixed an issue in capabilities parsing where the service declared scale limit of 0<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Capabilities parsing now allows adding layers where the capabilities header and XML content declares conflicting character encoding<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Missing page (HTTP 404) is now handled in consistent way (and the page can be overridden in instances)<o:p></o:p></span></li><li style="color:#1F2328;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l6 level1 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Dependency updates:<o:p></o:p></span></li><ul type="circle">
<li class="MsoNormal" style="color:#1F2328;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Geotools 27.1 -> 28.2<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">JTS 1.18.2 -> 1.19.0<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">FlywayDB 6.5.7 -> 9.12.0 (Note! PostgreSQL 11 is now min supported version)<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Spring 5.3.20 -> 5.3.27<o:p></o:p></span></li><li class="MsoNormal" style="color:#1F2328;margin-top:3.0pt;mso-margin-bottom-alt:auto;mso-list:l6 level2 lfo11;background:white;box-sizing: border-box">
<span style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Spring security 5.7.0 -> 5.7.8<o:p></o:p></span></li></ul>
</ul>
<p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">Cheers and happy updating,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif">          Sami<o:p></o:p></span></p>
</div>
</body>
</html>