@@ -, +, @@
---
.../unimarc/biblios/biblio-koha-indexdefs.xml | 1252 +++++++++++
.../unimarc/biblios/biblio-zebra-indexdefs.xsl | 2270 ++++++++++++++++++++
2 files changed, 3522 insertions(+), 0 deletions(-)
create mode 100644 etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
create mode 100644 etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
+++ a/etc/zebradb/marc_defs/unimarc/biblios/biblio-koha-indexdefs.xml
@@ -0,0 +1,1252 @@
+
+
+
+
+ Local-number:w
+
+
+ Local-number:n
+
+
+
+ Identifier-standard:w
+
+
+ Identifier-standard:n
+
+
+
+ Local-number:w
+ Local-number:n
+
+
+
+ date-entered-on-file:s
+ date-entered-on-file:n
+ date-entered-on-file:y
+ Date-of-acquisition:w
+ Date-of-acquisition:d
+ Date-of-acquisition:s
+
+
+
+ Date/time-last-modified:s
+ Date/time-last-modified:n
+ Date/time-last-modified:y
+
+
+
+ ccode:w
+
+
+
+ ISBN:w
+
+
+
+ ISBN:w
+ Identifier-standard:w
+
+
+
+ ISSN:w
+ Identifier-standard:w
+
+
+
+ ISSN:w
+ Identifier-standard:w
+
+
+
+ ISSN:w
+ Identifier-standard:w
+
+
+
+ itemtype:w
+ itemtype:p
+ itype:w
+ itype:p
+
+
+
+ itemtype:w
+ itemtype:p
+ itype:w
+ itype:p
+
+
+
+ Music-number:w
+ Identifier-standard:w
+
+
+
+ UPC:w
+ Identifier-standard:w
+
+
+
+ EAN:w
+ Identifier-standard:w
+
+
+
+ tpubdate:s
+ ta:w
+ ta:w
+ ta:w
+ Modified-code:n
+ ln:s
+ char-encoding:n
+ char-encoding:n
+ char-encoding:n
+ script-Title:n
+
+
+
+ ln:w
+
+
+
+ Country-heading:w
+
+
+
+ Illustration-code:w
+ Content-type:w
+ Content-type:w
+ Content-type:w
+ Content-type:w
+ Conference-code:w
+ Festschrift-indicator:w
+ Index-indicator:w
+ Literature-Code:w
+ Biography-Code:w
+
+
+
+ itype:w
+ itype:p
+
+
+
+ Type-Of-Serial:w
+ Frequency-code:w
+ Regularity-code:w
+ Content-type:w
+ Content-type:w
+ Conference-publication-Code:w
+ Title-Page-availability-Code:w
+ Index-availability-Code:w
+ Cumulative-Index-availability-Code:w
+
+
+
+ Video-mt:w
+
+
+
+ Graphics-type:w
+ Graphics-support:w
+ Graphics-support:w
+
+
+
+ LC-call-number:s
+
+
+
+ LC-call-number:w
+
+
+
+ itype:w
+ itype:p
+
+
+
+ Author:w
+ Author:p
+
+
+
+ Author:w
+ Author:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Personal-name:w
+ Author:p
+ Personal-name:p
+ Personal-name:w
+ Author:s
+
+
+
+ Author:w
+ Personal-name:w
+ Author:p
+ Personal-name:p
+ Personal-name:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Personal-name:w
+ Author:p
+ Personal-name:p
+ Personal-name:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Personal-name:w
+ Author:p
+ Personal-name:p
+ Personal-name:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Author-name-corporate:w
+ Author-name-conference:w
+ Corporate-name:w
+ Conference-name:w
+ Author:p
+ Author-name-corporate:p
+ Author-name-conference:p
+ Corporate-name:p
+ Conference-name:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Author-name-corporate:w
+ Author-name-conference:w
+ Corporate-name:w
+ Conference-name:w
+ Author:p
+ Author-name-corporate:p
+ Author-name-conference:p
+ Corporate-name:p
+ Conference-name:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Author:w
+ Author-name-corporate:w
+ Author-name-conference:w
+ Corporate-name:w
+ Conference-name:w
+ Author:p
+ Author-name-corporate:p
+ Author-name-conference:p
+ Corporate-name:p
+ Conference-name:p
+
+
+
+ Title:w
+ Title:p
+ Title:s
+ Title-cover:w
+ Title-cover:p
+ Title-cover:s
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+ Title-cover:w
+ Title-cover:p
+
+
+
+ title:w
+ title:p
+ Title-cover:w
+ Title-cover:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Serials:w
+ Serials:p
+
+
+
+ Printed-music:w
+ Printed-music:p
+
+
+
+ pl:w
+ pl:p
+
+
+
+ Publisher:w
+ Publisher:p
+
+
+
+ pubdate:n
+ pubdate:y
+ pubdate:s
+
+
+
+ Extent:w
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Author:w
+ Author:p
+ Name-and-title:w
+ Name-and-title:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ ISSN:w
+
+
+
+ Electronic-ressource:w
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Abstract:w
+ Note:w
+ Abstract:p
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Note:w
+ Note:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+ Title-Uniform:w
+ Title-Uniform:p
+
+
+
+ Title-series:w
+ Title-series:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title-host:w
+ title-host:p
+
+
+
+ Title:w
+ Title-host:w
+ title-host:p
+ Title:p
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ pubdate:n
+
+
+
+ Host-Item-Number:w
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Title:w
+ Title:p
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Koha-Auth-Number:w
+ Koha-Auth-Number:n
+
+
+
+ Personal-name:w
+ Personal-name:p
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Corporate-name:w
+ Conference-name:w
+ Corporate-name:p
+ Conference-name:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Personal-name:w
+ Personal-name:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Subject:w
+ Subject:p
+
+
+
+ Dewey-classification:w
+ Dewey-classification:s
+
+
+
+ lost:w
+ lost:n
+ item:w
+
+
+
+ homebranch:w
+ Host-item:w
+ item:w
+
+
+
+ homebranch:w
+ Host-item:w
+ item:w
+
+
+
+ holdingbranch:w
+ Record-Source:w
+ item:w
+
+
+
+ holdingbranch:w
+ Record-Source:w
+ item:w
+
+
+
+ location:w
+ item:w
+
+
+
+ barcode:w
+ item:w
+
+
+
+ ccode:w
+ item:w
+
+
+
+ LC-card-number:s
+ item:w
+
+
+
+ Call-Number:w
+ Local-classification:w
+ lcn:w
+ Call-Number:p
+ Local-classification:p
+ lcn:p
+ item:w
+ Local-classification:s
+
+
+
+ onloan:d
+ onloan:n
+ onloan:s
+ onloan:w
+ item:w
+
+
+
+ Note:w
+ Note:p
+ item:w
+
+
+
+ item # just to index every subfield:w
+
+
+
+ totalissues:n
+ totalissues:s
+
+
--- a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
+++ a/etc/zebradb/marc_defs/unimarc/biblios/biblio-zebra-indexdefs.xsl
@@ -0,0 +1,2270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--